pcp updates: pcp-tapestat initial checkin

"Nikhil Kshirsagar" <[email protected]> Tue, 28 Feb 2017 11:22:47 +0530
Newsgroups gmane.comp.sysutils.pcp
Message-ID <[email protected]>
--001a114dade047e240054990ce00
Content-Type: multipart/alternative; boundary=001a114dade047e23a054990cefe

--001a114dade047e23a054990cefe
Content-Type: text/plain; charset=UTF-8

Hi Nathan,

Here is the initial commit for pcp-tapestat. I'm attaching the
pcp-tapestat.py file along with the man page. These are good to merge.

Mark Goodwin and I have tested this on a device with a real tape, and the
figures looked correct.

We have an archive to use for qa tests against pmrep and other pcp tools. I
will be working on the qa tests after this commit.

Regards,
Nikhil.

--001a114dade047e23a054990cefe
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Nathan,<div><br></div><div>Here is the initial commit f=
or pcp-tapestat. I&#39;m attaching the pcp-tapestat.py file along with the =
man page. These are good to merge.</div><div><br></div><div>Mark Goodwin an=
d I have tested this on a device with a real tape, and the figures looked c=
orrect.</div><div><br></div><div>We have an archive to use for qa tests aga=
inst pmrep and other pcp tools. I will be working on the qa tests after thi=
s commit.</div><div><br></div><div>Regards,</div><div>Nikhil.</div><div><br=
></div></div>

<div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>

You receive all messages sent to this group.


<p>

<a target=3D"_blank" href=3D"https://groups.io/g/pcp/message/15274">View/R=
eply Online (#15274)</a> |


  <a target=3D"_blank" href=3D"mailto:[email protected]?subject=3DRe:%20%5Bpcp=
%5D%20pcp%20updates%3A%20pcp-tapestat%20initial%20checkin">Reply To Group</=
a>
  
    | <a target=3D"_blank" href=3D"mailto:[email protected]?subject=3DRe=
:%20%5Bpcp%5D%20pcp%20updates%3A%20pcp-tapestat%20initial%20checkin">Reply =
To Sender</a>
  


|


  <a target=3D"_blank" href=3D"https://groups.io/mt/4429952?uid=3D174580">=
Mute This Topic</a>
=20
| <a href=3D"https://groups.io/g/pcp/post">New Topic</a><br>




<p>pcp mailing list<br />[email protected]<br /><a href=3D"https://groups.io/g=
/pcp/messages" target=3D"_blank">https://groups.io/g/pcp/messages</a></p>

<a href=3D"https://groups.io/g/pcp/editsub?uid=3D174580">Change Your Subsc=
ription</a><br>
<a href=3D"https://groups.io/g/pcp">Group Home</a><br>
<a href=3D"mailto:[email protected]">Contact Group Owner</a><br>
<a href=3D"https://groups.io/static/tos">Terms Of Service</a><br>
<a href=3D"https://groups.io/g/pcp/leave/354243/563757577/xyzzy">Unsubscri=
be From This Group</a><br>

<div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div>


--001a114dade047e23a054990cefe--


--001a114dade047e240054990ce00
Content-Type: text/x-python; charset=US-ASCII; name="pcp-tapestat.py"
Content-Disposition: attachment; filename="pcp-tapestat.py"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_izp45xix0

IyEvdXNyL2Jpbi9lbnYgcG1weXRob24KIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBSZWQgSGF0
LgojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkgaXQKIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKIyB0YXBlc3RhdCBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgoj
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiMgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC
SUxJVFkKIyBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBmb3IgbW9yZSBkZXRhaWxzLgojCiMgcHlsaW50OiBk
aXNhYmxlPUMwMTAzLFIwOTE0LFIwOTAyCiIiIiBEaXNwbGF5IHRhcGUgSS9PIHN0YXRpc3RpY3Mg
IiIiCgppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgc2lnbmFsCmZyb20gcGNwIGltcG9ydCBw
bWFwaSwgcG1jYwpmcm9tIGNwbWFwaSBpbXBvcnQgUE1fVFlQRV9VNjQsIFBNX0NPTlRFWFRfQVJD
SElWRSwgUE1fU1BBQ0VfS0JZVEUsIFBNX01PREVfRk9SVwoKIyB1c2UgZGVmYXVsdCBTSUdQSVBF
IGhhbmRsZXIgdG8gYXZvaWQgYnJva2VuIHBpcGUgZXhjZXB0aW9ucwpzaWduYWwuc2lnbmFsKHNp
Z25hbC5TSUdQSVBFLCBzaWduYWwuU0lHX0RGTCkKCiMgVGFwZTogci9zIHcvcyBrQl9yZWFkL3Mg
a0Jfd3J0bi9zICVSZCAlV3IgJU9hIFJzL3MgT3QvcwojIFRoZXNlIGFyZSB0aGUgbWV0cmljcyB0
YXBlc3RhdCAoc3lzc3RhdCkgc2hvd3MgYW5kIHdlIHdpbGwgZG8gdGhlIHNhbWUKIyBmb3Igc3Rh
cnRlcnMKCgojICAgICAgIFtyb290QG5rc2hpcnNhIHN5c3N0YXRdIyBscyAvc3lzL2NsYXNzL3Nj
c2lfdGFwZS9zdDAvc3RhdHMvIC1sCiMgICAgICAgdG90YWwgMAojICAgICAgIGluX2ZsaWdodAoj
ICAgICAgIGlvX25zCiMgICAgICAgb3RoZXJfY250CiMgICAgICAgcmVhZF9ieXRlX2NudAojICAg
ICAgIHJlYWRfY250CiMgICAgICAgcmVhZF9ucwojICAgICAgIHJlc2lkX2NudAojICAgICAgIHdy
aXRlX2J5dGVfY250CiMgICAgICAgd3JpdGVfY250CiMgICAgICAgd3JpdGVfbnMKCgpUQVBFU1RB
VF9NRVRSSUNTID0gWyAndGFwZS5kZXYuaW5fZmxpZ2h0JywgJ3RhcGUuZGV2LmlvX25zJywKICAg
ICAgICAgICAgICAgICAndGFwZS5kZXYub3RoZXJfY250JywgJ3RhcGUuZGV2LnJlYWRfYnl0ZV9j
bnQnLAogICAgICAgICAgICAgICAgICd0YXBlLmRldi5yZWFkX2NudCcsICd0YXBlLmRldi5yZWFk
X25zJywKICAgICAgICAgICAgICAgICAndGFwZS5kZXYucmVzaWRfY250JywgJ3RhcGUuZGV2Lndy
aXRlX2J5dGVfY250JywKICAgICAgICAgICAgICAgICAndGFwZS5kZXYud3JpdGVfY250JywgJ3Rh
cGUuZGV2LndyaXRlX25zJ10KCgpkZWYgYWdncmVnYXRlKG1ldGhvZCwgYWdncl92YWx1ZSwgdmFs
dWUpOgogICAgaWYgbWV0aG9kID09ICdzdW0nOgogICAgICAgIGFnZ3JfdmFsdWUgKz0gdmFsdWUK
ICAgIGVsaWYgbWV0aG9kID09ICdhdmcnOgogICAgICAgIGFnZ3JfdmFsdWUgKz0gdmFsdWUKICAg
IGVsaWYgbWV0aG9kID09ICdtaW4nOgogICAgICAgIGlmIGFnZ3JfdmFsdWUgPiB2YWx1ZToKICAg
ICAgICAgICAgYWdncl92YWx1ZSA9IHZhbHVlCiAgICBlbGlmIG1ldGhvZCA9PSAnbWF4JzoKICAg
ICAgICBpZiBhZ2dyX3ZhbHVlIDwgdmFsdWU6CiAgICAgICAgICAgIGFnZ3JfdmFsdWUgPSB2YWx1
ZQogICAgZWxzZToKICAgICAgIHJhaXNlIHBtYXBpLnBtVXNhZ2VFcnIKICAgIHJldHVybiBhZ2dy
X3ZhbHVlCgpjbGFzcyBUYXBlc3RhdFJlcG9ydChwbWNjLk1ldHJpY0dyb3VwUHJpbnRlcik6CiAg
ICBIY291bnQgPSAwCiAgICBkZWYgdGltZVN0YW1wRGVsdGEoc2VsZiwgZ3JvdXApOgogICAgICAg
IHMgPSBncm91cC50aW1lc3RhbXAudHZfc2VjIC0gZ3JvdXAucHJldlRpbWVzdGFtcC50dl9zZWMK
ICAgICAgICB1ID0gZ3JvdXAudGltZXN0YW1wLnR2X3VzZWMgLSBncm91cC5wcmV2VGltZXN0YW1w
LnR2X3VzZWMKICAgICAgICAjIHUgbWF5IGJlIG5lZ2F0aXZlIGhlcmUsIGNhbGN1bGF0aW9uIGlz
IHN0aWxsIGNvcnJlY3QuCiAgICAgICAgcmV0dXJuIChzICsgdSAvIDEwMDAwMDAuMCkKICAgIGRl
ZiBpbnN0bGlzdChzZWxmLCBncm91cCwgbmFtZSk6CiAgICAgICAgcmV0dXJuIGRpY3QobWFwKGxh
bWJkYSB4OiAoeFsxXSwgeFsyXSksIGdyb3VwW25hbWVdLm5ldFZhbHVlcykpLmtleXMoKQoKICAg
IGRlZiBjdXJWYWxzKHNlbGYsIGdyb3VwLCBuYW1lKToKICAgICAgICByZXR1cm4gZGljdChtYXAo
bGFtYmRhIHg6ICh4WzFdLCB4WzJdKSwgZ3JvdXBbbmFtZV0ubmV0VmFsdWVzKSkKCiAgICBkZWYg
cHJldlZhbHMoc2VsZiwgZ3JvdXAsIG5hbWUpOgogICAgICAgIHJldHVybiBkaWN0KG1hcChsYW1i
ZGEgeDogKHhbMV0sIHhbMl0pLCBncm91cFtuYW1lXS5uZXRQcmV2VmFsdWVzKSkKICAgIGRlZiBy
ZXBvcnQoc2VsZiwgbWFuYWdlcik6CiAgICAgICAgcmVnZXggPSBUYXBlc3RhdE9wdGlvbnMuUmZs
YWcKICAgICAgICBpZiByZWdleCA9PSAnJzoKICAgICAgICAgICAgcmVnZXggPSAnLionCgogICAg
ICAgIGFnZ3IgPSBUYXBlc3RhdE9wdGlvbnMuR2ZsYWcKICAgICAgICBpZiBhZ2dyIGFuZCBhZ2dy
IG5vdCBpbiAoJ3N1bScsICdhdmcnLCAnbWluJywgJ21heCcpOgogICAgICAgICAgIHByaW50KCJF
cnJvciwgLUcgYWdncmVnYXRpb24gbWV0aG9kIG11c3QgYmUgb25lIG9mICdzdW0nLCAnYXZnJywg
J21pbicgb3IgJ21heCciKQogICAgICAgICAgIHJhaXNlIHBtYXBpLnBtVXNhZ2VFcnIKCiAgICAg
ICAgcHJlY2lzaW9uID0gVGFwZXN0YXRPcHRpb25zLlBmbGFnCiAgICAgICAgaWYgcHJlY2lzaW9u
IDwgMCBvciBwcmVjaXNpb24gPiAxMCA6CiAgICAgICAgICAgcHJpbnQoIlByZWNpc2lvbiB2YWx1
ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAiKQogICAgICAgICAgIHJhaXNlIHBtYXBpLnBtVXNh
Z2VFcnIKCiAgICAgICAgc3VidHJlZSA9ICd0YXBlLmRldicKICAgICAgICBncm91cCA9IG1hbmFn
ZXJbInRhcGVzdGF0Il0KCiAgICAgICAgaWYgZ3JvdXBbc3VidHJlZSArICcucmVhZF9jbnQnXS5u
ZXRQcmV2VmFsdWVzID09IE5vbmU6CiAgICAgICAgICAgICMgbmVlZCB0d28gZmV0Y2hlcyB0byBy
ZXBvcnQgcmF0ZSBjb252ZXJ0ZWQgY291bnRlciBtZXRyaWNzCiAgICAgICAgICAgICNwcmludCAi
Zm91bmQgbm9uZSwgcmV0dXJuaW5nIgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpbnN0bGlz
dCA9IHNlbGYuaW5zdGxpc3QoZ3JvdXAsIHN1YnRyZWUgKyAnLnJlYWRfY250JykKICAgICAgICBk
dCA9IHNlbGYudGltZVN0YW1wRGVsdGEoZ3JvdXApCiAgICAgICAgdGltZXN0YW1wID0gZ3JvdXAu
Y29udGV4dENhY2hlLnBtQ3RpbWUoaW50KGdyb3VwLnRpbWVzdGFtcCkpLnJzdHJpcCgpCgogICAg
ICAgIGNfciA9IHNlbGYuY3VyVmFscyhncm91cCwgc3VidHJlZSArICcucmVhZF9jbnQnKQogICAg
ICAgIHBfciA9IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLnJlYWRfY250JykKCiAg
ICAgICAgY193ID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBzdWJ0cmVlICsgJy53cml0ZV9jbnQnKQog
ICAgICAgIHBfdyA9IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLndyaXRlX2NudCcp
CgogICAgICAgIGNfcmtiID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBzdWJ0cmVlICsgJy5yZWFkX2J5
dGVfY250JykKICAgICAgICBwX3JrYiA9IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAn
LnJlYWRfYnl0ZV9jbnQnKQogICAgICAgIGNfd2tiID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBzdWJ0
cmVlICsgJy53cml0ZV9ieXRlX2NudCcpCiAgICAgICAgcF93a2IgPSBzZWxmLnByZXZWYWxzKGdy
b3VwLCBzdWJ0cmVlICsgJy53cml0ZV9ieXRlX2NudCcpCiAKICAgICAgICAjIGNhbGN1bGF0ZSB0
aGUgcGVyY2VudGFnZSB3YWl0cwogICAgICAgIGNfcnB3ID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBz
dWJ0cmVlICsgJy5yZWFkX25zJykKICAgICAgICBwX3JwdyA9IHNlbGYucHJldlZhbHMoZ3JvdXAs
IHN1YnRyZWUgKyAnLnJlYWRfbnMnKQogICAgICAgIGNfd3B3ID0gc2VsZi5jdXJWYWxzKGdyb3Vw
LCBzdWJ0cmVlICsgJy53cml0ZV9ucycpCiAgICAgICAgcF93cHcgPSBzZWxmLnByZXZWYWxzKGdy
b3VwLCBzdWJ0cmVlICsgJy53cml0ZV9ucycpCiAgICAgICAgY19vcHcgPSAgc2VsZi5jdXJWYWxz
KGdyb3VwLCBzdWJ0cmVlICsgJy5pb19ucycpCiAgICAgICAgcF9vcHcgPSBzZWxmLnByZXZWYWxz
KGdyb3VwLCBzdWJ0cmVlICsgJy5pb19ucycpCgogICAgICAgIHBfcmVzaWQgPSBzZWxmLnByZXZW
YWxzKGdyb3VwLCBzdWJ0cmVlICsgJy5yZXNpZF9jbnQnKQogICAgICAgIGNfcmVzaWQgPSBzZWxm
LmN1clZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLnJlc2lkX2NudCcpCiAgICAgICAgcF9vdGhlciA9
IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLm90aGVyX2NudCcpCiAgICAgICAgY19v
dGhlciA9IHNlbGYuY3VyVmFscyhncm91cCwgc3VidHJlZSArICcub3RoZXJfY250JykKCgoKICAg
ICAgICBpZiBwcmVjaXNpb24gPT0gMToKICAgICAgICAgICB1dGlsc3BhY2U9cHJlY2lzaW9uKzUK
ICAgICAgICAgICBhdmdycXN6c3BhY2U9cHJlY2lzaW9uKzcKICAgICAgICAgICBhd2FpdHNwYWNl
PXByZWNpc2lvbis2CiAgICAgICAgICAgcnJxbXNwYWNlPXByZWNpc2lvbis1CiAgICAgICAgICAg
d3JxbXNwYWNlPXByZWNpc2lvbis1CiAgICAgICAgICAgaGVhZGZtdGF2Z3NwYWNlPXByZWNpc2lv
bis3CiAgICAgICAgICAgaGVhZGZtdHF1c3BhY2U9cHJlY2lzaW9uKzcKICAgICAgICBlbGlmIHBy
ZWNpc2lvbiA9PSAwOgogICAgICAgICAgIHV0aWxzcGFjZT1wcmVjaXNpb24rNQogICAgICAgICAg
IGF2Z3Jxc3pzcGFjZT1wcmVjaXNpb24rOAogICAgICAgICAgIGF3YWl0c3BhY2U9cHJlY2lzaW9u
KzcKICAgICAgICAgICBycnFtc3BhY2U9cHJlY2lzaW9uKzYKICAgICAgICAgICB3cnFtc3BhY2U9
cHJlY2lzaW9uKzYKICAgICAgICAgICBoZWFkZm10YXZnc3BhY2U9YXZncnFzenNwYWNlCiAgICAg
ICAgICAgaGVhZGZtdHF1c3BhY2U9cHJlY2lzaW9uKzgKICAgICAgICBlbHNlOgogICAgICAgICAg
IHV0aWxzcGFjZT1wcmVjaXNpb24rNQogICAgICAgICAgIGF2Z3Jxc3pzcGFjZT1wcmVjaXNpb24r
NgogICAgICAgICAgIGF3YWl0c3BhY2U9cHJlY2lzaW9uKzUKICAgICAgICAgICBycnFtc3BhY2U9
cHJlY2lzaW9uKzUKICAgICAgICAgICB3cnFtc3BhY2U9cHJlY2lzaW9uKzUKICAgICAgICAgICBo
ZWFkZm10YXZnc3BhY2U9YXZncnFzenNwYWNlCiAgICAgICAgICAgaGVhZGZtdHF1c3BhY2U9cHJl
Y2lzaW9uKzYKCiAgICAgICAgaWYgInQiIGluIFRhcGVzdGF0T3B0aW9ucy54ZmxhZzoKICAgICAg
ICAgICAgaGVhZGZtdCA9ICIlLTI0cyAlLTEycyAgJSpzICUqcyAlKnMgJSpzICUqcyAlKnMgJSpz
ICUqcyAlKnMiCiAgICAgICAgICAgIHZhbGZtdCA9ICIlLTI0cyAlLTEycyAlKi4qZiAlKi4qZiAl
KmQgJSpkICUqLipmICUqLipmICUqLipmICUqLipmICUqLipmIgogICAgICAgIGVsc2U6CiAgICAg
ICAgICAgIGhlYWRmbXQgPSAiJS0xMnMgJSpzICUqcyAlKnMgJSpzICUqcyAlKnMgJSpzICUqcyAl
KnMiCiAgICAgICAgICAgIHZhbGZtdCA9ICIlLTEycyAlKi4qZiAlKi4qZiAlKmQgJSpkICUqLipm
ICUqLipmICUqLipmICUqLipmICUqLipmIgoKCiAgICAgICAgdG1wc3BhY2UgPSBwcmVjaXNpb24r
NQogCiAgICAgICAgaWYgcHJlY2lzaW9uID09IDAgOgogICAgICAgICAgdG1wc3BhY2UgPSB0bXBz
cGFjZSAgKzEKCiAgICAgICAgaWYgImgiIG5vdCBpbiBUYXBlc3RhdE9wdGlvbnMueGZsYWc6CiAg
ICAgICAgICAgIHNlbGYuSGNvdW50ICs9IDEKICAgICAgICAgICAgaWYgc2VsZi5IY291bnQgPT0g
MjQ6CiAgICAgICAgICAgICAgICBzZWxmLkhjb3VudCA9IDEKICAgICAgICAgICAgaWYgc2VsZi5I
Y291bnQgPT0gMToKICAgICAgICAgICAgICAgIGlmICJ0IiBpbiBUYXBlc3RhdE9wdGlvbnMueGZs
YWc6CiAgICAgICAgICAgICAgICAgICAgaGVhZGluZyA9ICgnIyBUaW1lc3RhbXAnLCAnRGV2aWNl
Jyx0bXBzcGFjZSAtIDEsICdyL3MnLHRtcHNwYWNlLCAndy9zJyx0bXBzcGFjZSwgJ2tiX3Ivcycs
dG1wc3BhY2UsICdrYl93L3MnLCB0bXBzcGFjZSwgJ3JfcGN0Jyx0bXBzcGFjZSwnd19wY3QnLHRt
cHNwYWNlLCAnb19wY3QnLHRtcHNwYWNlLCdScy9zJyx0bXBzcGFjZSwnb19jbnQnKQogICAgICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBoZWFkaW5nID0gKCcjIERldmljZScs
dG1wc3BhY2UsICdyL3MnLHRtcHNwYWNlLCAndy9zJyx0bXBzcGFjZSwgJ2tiX3IvcycsdG1wc3Bh
Y2UsICdrYl93L3MnLCB0bXBzcGFjZSwgJ3JfcGN0Jyx0bXBzcGFjZSwnd19wY3QnLHRtcHNwYWNl
LCAnb19wY3QnLHRtcHNwYWNlLCdScy9zJyx0bXBzcGFjZSwnb19jbnQnKQogICAgICAgICAgICAg
ICAgcHJpbnQoaGVhZGZtdCAlIGhlYWRpbmcpCgogICAgICAgIGlmIHBfciA9PSB7fSBvciBwX3cg
PT0ge30gb3IgcF9ya2IgPT0ge30gb3IgcF93a2IgPT0ge30gb3IgXAogICAgICAgICAgIHBfcnB3
ID09IHt9IG9yIHBfd3B3ID09IHt9IG9yIHBfb3B3ID09IHt9IG9yIFwKICAgICAgICAgICBwX3Jl
c2lkID09IHt9IG9yIHBfb3RoZXIgPT0ge306CiAgICAgICAgICAgICMgbm8gdmFsdWVzIGZvciBz
b21lIG1ldHJpYyAoZS5nLiBuZWFyIHN0YXJ0IG9mIGFyY2hpdmUpCiAgICAgICAgICAgIGlmICJ0
IiBpbiBUYXBlc3RhdE9wdGlvbnMueGZsYWc6CiAgICAgICAgICAgICAgICBwcmludChoZWFkZm10
ICUgKHRpbWVzdGFtcCwgJ05PREFUQScscnJxbXNwYWNlIC0xLCAnPycsd3JxbXNwYWNlLCAnPycs
cHJlY2lzaW9uKzUsICc/JyxwcmVjaXNpb24rNSwgJz8nLHByZWNpc2lvbis1LFwKICAgICAgICAg
ICAgICAgJz8nLHByZWNpc2lvbis1LCAnPycsaGVhZGZtdGF2Z3NwYWNlIC0xICwgJz8nLGhlYWRm
bXRxdXNwYWNlIC0xLCAnPycsIHByZWNpc2lvbis1LCAnPycpKQogICAgICAgICAgICByZXR1cm4K
ICAgIAogICAgICAgICAgICAjZG9uJ3Qgd2UgbmVlZCBhbiBlbHNlIGhlcmUgdG8gcHJpbnQgPydz
IGZvciBub24gdGltZXN0YW1wIGZsYWcgdG9vID8KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBp
ZiBUYXBlc3RhdE9wdGlvbnMuR2ZsYWc6CiAgICAgICAgICAgICAgICBhZ2dyX3IgPSBhZ2dyX3cg
PSBhZ2dyX3JrYiA9IGFnZ3Jfd2tiID0gYWdncl9hY3R1YWxfcnB3ID0gYWdncl9hY3R1YWxfd3B3
ID0gIDAuMAogICAgICAgICAgICAgICAgYWdncl9hY3R1YWxfb3B3ID0gYWdncl9yZXNpZF9jbnQg
PSBhZ2dyX29fY250ID0gMC4wCiAgICAgICAgICAgICAgICBhZ2dyX2NvdW50ID0gMAoKICAgICAg
ICAgICAgZm9yIGluc3QgaW4gc29ydGVkKGluc3RsaXN0KToKICAgICAgICAgICAgICAgICMgYmFz
aWMgc3RhdHMKICAgICAgICAgICAgICAgIHIgPSAoY19yW2luc3RdIC0gcF9yW2luc3RdKSAvIGR0
CiAgICAgICAgICAgICAgICB3ID0gKGNfd1tpbnN0XSAtIHBfd1tpbnN0XSkgLyBkdAogICAgICAg
ICAgICAgICAgcmtiID0gKGNfcmtiW2luc3RdIC0gcF9ya2JbaW5zdF0pIC8gZHQgLyAxMDAwICMg
Ynl0ZXMgdG8ga2IKICAgICAgICAgICAgICAgIHdrYiA9IChjX3drYltpbnN0XSAtIHBfd2tiW2lu
c3RdKSAvIGR0IC8gMTAwMAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgI2NhbGN1bGF0ZSBhbmQgY29udmVydCBmcm9tIG5hbm8gc2Vjb25kcwogICAgICAg
ICAgICAgICAgcnB3ID0gMTAwICogKGNfcnB3W2luc3RdIC0gcF9ycHdbaW5zdF0pLyAxMDAwMDAw
MDAwIC8gZHQKICAgICAgICAgICAgICAgIHdwdyA9IDEwMCAqIChjX3dwd1tpbnN0XSAtIHBfd3B3
W2luc3RdKSAvIDEwMDAwMDAwMDAgLyBkdAogICAKICAgICAgICAgICAgICAgIGFjdHVhbF9ycHcg
PSBycHcgCiAgICAgICAgICAgICAgICBhY3R1YWxfd3B3ID0gd3B3IAoKICAgICAgICAgICAgICAg
IG9wdyA9IDEwMCAqIChjX29wd1tpbnN0XSAtIHBfb3B3W2luc3RdKSAvIDEwMDAwMDAwMDAgLyBk
dAogICAgICAgICAgICAgICAgYWN0dWFsX29wdyA9IG9wdyAKIAogICAgICAgICAgICAgICAgcmVz
aWRfY250ID0gKGNfcmVzaWRbaW5zdF0gLSBwX3Jlc2lkW2luc3RdKSAvIGR0IC8gMTAwMAogCiAg
ICAgICAgICAgICAgICAjVGhlICBudW1iZXIgb2YgSS9PcywgZXhwcmVzc2VkIGFzIHRoZSBudW1i
ZXIgcGVyIHNlY29uZCBhdmVyYWdlZCBvdmVyIHRoZSBpbnRlcnZhbCwgdGhhdCB3ZXJlIGluY2x1
ZGVkIGFzICJvdGhlciIgaXMgb19jbnQKICAgICAgICAgICAgICAgIG9fY250ID0gKGNfb3RoZXJb
aW5zdF0gLSBwX290aGVyW2luc3RdKSAvIGR0IC8gMTAwMAoKCiAgICAgICAgICAgICAgICBkZXZp
Y2UgPSBpbnN0ICAgIyBwcmVwYXJlIG5hbWUgZm9yIHByaW50aW5nCiAgICAgICAgICAgICAgICBi
YWRjb3VudGVycyA9IHIgPCAwIG9yIHcgPCAwIG9yIHJrYiA8IDAgb3Igd2tiIDwgMCBvciBycHcg
PCAwIG9yIHdwdyA8IDAgb3Igb3B3IDwgMCBvciByZXNpZF9jbnQgPCAwIG9yIG9fY250IDwgMAoK
ICAgICAgICAgICAgICAgIGlmICJ0IiBpbiBUYXBlc3RhdE9wdGlvbnMueGZsYWc6CiAgICAgICAg
ICAgICAgICAgICAgaWYgYmFkY291bnRlcnM6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
KGhlYWRmbXQgJSAodGltZXN0YW1wLCBkZXZpY2UscnJxbXNwYWNlLCAnPycsd3JxbXNwYWNlLCAn
PycscHJlY2lzaW9uKzUsICc/JyxwcmVjaXNpb24rNCwgJz8nLHByZWNpc2lvbis2LFwKICAgICAg
ICAgICAgICAgICAgICAgICAgJz8nLHByZWNpc2lvbis2LCAnPycsaGVhZGZtdGF2Z3NwYWNlLCAn
PycsaGVhZGZtdHF1c3BhY2UsICc/JywgcHJlY2lzaW9uKzUsICc/JykpCgogICAgICAgICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFRhcGVzdGF0T3B0aW9ucy5S
ZmxhZyBhbmQgcmUuc2VhcmNoKHJlZ2V4LGRldmljZSkgPT0gTm9uZToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBUYXBlc3Rh
dE9wdGlvbnMuR2ZsYWc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyX2NvdW50ICs9
IDEKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICJub2lkbGUiIGluIFRhcGVzdGF0T3B0aW9u
cy54ZmxhZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJrYiA9PSAwIGFuZCB3a2Ig
PT0gMCBhbmQgciA9PSAwIGFuZCB3ID09IDAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgVGFwZXN0YXRPcHRp
b25zLkdmbGFnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQodmFsZm10ICUgKHRp
bWVzdGFtcCwgZGV2aWNlLHRtcHNwYWNlLHByZWNpc2lvbixyLHRtcHNwYWNlLCBwcmVjaXNpb24s
IHcsdG1wc3BhY2UscmtiLHRtcHNwYWNlLCB3a2IsIHRtcHNwYWNlLHByZWNpc2lvbixhY3R1YWxf
cnB3LHRtcHNwYWNlLHByZWNpc2lvbixhY3R1YWxfd3B3LCB0bXBzcGFjZSxwcmVjaXNpb24sYWN0
dWFsX29wdyx0bXBzcGFjZSxwcmVjaXNpb24scmVzaWRfY250LHRtcHNwYWNlLHByZWNpc2lvbixv
X2NudCkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIGJhZGNv
dW50ZXJzOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludChoZWFkZm10ICUgKGRldmljZSxy
cnFtc3BhY2UsICc/Jyx3cnFtc3BhY2UsICc/JyxwcmVjaXNpb24rNSwgJz8nLHByZWNpc2lvbis0
LCAnPycscHJlY2lzaW9uKzYsXAogICAgICAgICAgICAgICAgICAgICAgICAnPycscHJlY2lzaW9u
KzYsICc/JyxoZWFkZm10YXZnc3BhY2UsICc/JyxoZWFkZm10cXVzcGFjZSwgJz8nLCBwcmVjaXNp
b24rNSwgJz8nLGF3YWl0c3BhY2UsICc/JyxcCiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0
c3BhY2UsICc/Jyx1dGlsc3BhY2UsICc/JykpCgogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIFRhcGVzdGF0T3B0aW9ucy5SZmxhZyBhbmQgcmUuc2Vh
cmNoKHJlZ2V4LGRldmljZSkgPT0gTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBUYXBlc3RhdE9wdGlvbnMuR2ZsYWc6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyX2NvdW50ICs9IDEKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICJub2lkbGUiIGluIFRhcGVzdGF0T3B0aW9ucy54ZmxhZzoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIHJrYiA9PSAwIGFuZCB3a2IgPT0gMCBhbmQgciA9PSAw
IGFuZCB3ID09IDAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgVGFwZXN0YXRPcHRpb25zLkdmbGFnOgojICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQodmFsZm10ICUgKGRldmljZSx0bXBzcGFjZSwg
cHJlY2lzaW9uLCBhZ2dyX3IsdG1wc3BhY2UscHJlY2lzaW9uLCBhZ2dyX3csdG1wc3BhY2UsIGFn
Z3JfcmtiLHRtcHNwYWNlLCBhZ2dyX3drYiwgdG1wc3BhY2UscHJlY2lzaW9uLGFjdHVhbF9ycHcs
dG1wc3BhY2UscHJlY2lzaW9uLGFjdHVhbF93cHcpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnQodmFsZm10ICUgKGRldmljZSx0bXBzcGFjZSxwcmVjaXNpb24scix0bXBzcGFjZSwg
cHJlY2lzaW9uLCB3LHRtcHNwYWNlLHJrYix0bXBzcGFjZSwgd2tiLCB0bXBzcGFjZSxwcmVjaXNp
b24sYWN0dWFsX3Jwdyx0bXBzcGFjZSxwcmVjaXNpb24sYWN0dWFsX3dwdywgdG1wc3BhY2UscHJl
Y2lzaW9uLGFjdHVhbF9vcHcsdG1wc3BhY2UscHJlY2lzaW9uLHJlc2lkX2NudCx0bXBzcGFjZSxw
cmVjaXNpb24sb19jbnQpKQoKICAgICAgICAgICAgICAgIGlmIFRhcGVzdGF0T3B0aW9ucy5HZmxh
ZyBhbmQgbm90IGJhZGNvdW50ZXJzOgogICAgICAgICAgICAgICAgICAgIGFnZ3JfciA9IGFnZ3Jl
Z2F0ZShhZ2dyLCBhZ2dyX3IsIHIpCiAgICAgICAgICAgICAgICAgICAgYWdncl93ID0gYWdncmVn
YXRlKGFnZ3IsIGFnZ3JfdywgdykKICAgICAgICAgICAgICAgICAgICBhZ2dyX3JrYiA9IGFnZ3Jl
Z2F0ZShhZ2dyLCBhZ2dyX3JrYiwgcmtiKQogICAgICAgICAgICAgICAgICAgIGFnZ3Jfd2tiID0g
YWdncmVnYXRlKGFnZ3IsIGFnZ3Jfd2tiLCB3a2IpCiAgICAgICAgICAgICAgICAgICAgYWdncl9h
Y3R1YWxfcnB3ID0gYWdncmVnYXRlKGFnZ3IsIGFnZ3JfYWN0dWFsX3JwdywgYWN0dWFsX3JwdykK
ICAgICAgICAgICAgICAgICAgICBhZ2dyX2FjdHVhbF93cHcgPSBhZ2dyZWdhdGUoYWdnciwgYWdn
cl9hY3R1YWxfd3B3LCBhY3R1YWxfd3B3KQogICAgICAgICAgICAgICAgICAgIGFnZ3JfYWN0dWFs
X29wdyA9IGFnZ3JlZ2F0ZShhZ2dyLCBhZ2dyX2FjdHVhbF9vcHcsIGFjdHVhbF9vcHcpCiAgICAg
ICAgICAgICAgICAgICAgYWdncl9yZXNpZF9jbnQgPSBhZ2dyZWdhdGUoYWdnciwgYWdncl9yZXNp
ZF9jbnQsIHJlc2lkX2NudCkKICAgICAgICAgICAgICAgICAgICBhZ2dyX29fY250ID0gYWdncmVn
YXRlKGFnZ3IsIGFnZ3Jfb19jbnQsIG9fY250KQogICAgICAgICAgICAjIGVuZCBvZiBsb29wCgog
ICAgICAgICAgICBpZiBUYXBlc3RhdE9wdGlvbnMuR2ZsYWc6CiAgICAgICAgICAgICAgICBpZiBU
YXBlc3RhdE9wdGlvbnMuR2ZsYWcgPT0gJ2F2ZycgYW5kIGFnZ3JfY291bnQgPiAwOgogICAgICAg
ICAgICAgICAgICAgIGFnZ3JfciAvPSBhZ2dyX2NvdW50CiAgICAgICAgICAgICAgICAgICAgYWdn
cl93IC89IGFnZ3JfY291bnQKICAgICAgICAgICAgICAgICAgICBhZ2dyX3JrYiAvPSBhZ2dyX2Nv
dW50CiAgICAgICAgICAgICAgICAgICAgYWdncl93a2IgLz0gYWdncl9jb3VudAogICAgICAgICAg
ICAgICAgICAgIGFnZ3JfYWN0dWFsX3JwdyAvPSBhZ2dyX2NvdW50CiAgICAgICAgICAgICAgICAg
ICAgYWdncl9hY3R1YWxfd3B3IC89IGFnZ3JfY291bnQKICAgICAgICAgICAgICAgICAgICBhZ2dy
X2FjdHVhbF9vcHcgLz0gYWdncl9jb3VudAogICAgICAgICAgICAgICAgICAgIGFnZ3JfcmVzaWRf
Y250IC89IGFnZ3JfY291bnQKICAgICAgICAgICAgICAgICAgICBhZ2dyX29fY250IC89IGFnZ3Jf
Y291bnQKCgogICAgICAgICAgICAgICAgIyByZXBvcnQgYWdncmVnYXRlIHZhbHVlcyAtIHRoZSAn
ZGV2aWNlJyBoZXJlIGlzIHJlcG9ydGVkIGFzIHRoZSByZWdleCB1c2VkIGZvciB0aGUgYWdncmVn
YXRpb24KICAgICAgICAgICAgICAgIGRldmljZSA9ICclcyglcyknICUgKGFnZ3IsIHJlZ2V4KQog
ICAgICAgICAgICAgICAgaWYgInQiIGluIFRhcGVzdGF0T3B0aW9ucy54ZmxhZzoKICAgICAgICAg
ICAgICAgICAgICBwcmludCh2YWxmbXQgJSAodGltZXN0YW1wLCBkZXZpY2UsdG1wc3BhY2UsIHBy
ZWNpc2lvbiwgYWdncl9yLHRtcHNwYWNlLHByZWNpc2lvbiwgYWdncl93LHRtcHNwYWNlLCBhZ2dy
X3JrYix0bXBzcGFjZSwgYWdncl93a2IsIHRtcHNwYWNlLHByZWNpc2lvbixhZ2dyX2FjdHVhbF9y
cHcsdG1wc3BhY2UscHJlY2lzaW9uLGFnZ3JfYWN0dWFsX3dwdyx0bXBzcGFjZSxwcmVjaXNpb24s
YWdncl9hY3R1YWxfb3B3ICwgdG1wc3BhY2UscHJlY2lzaW9uLGFnZ3JfcmVzaWRfY250LHRtcHNw
YWNlLHByZWNpc2lvbixhZ2dyX29fY250KSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgICAgcHJpbnQodmFsZm10ICUgKGRldmljZSx0bXBzcGFjZSwgcHJlY2lzaW9uLCBh
Z2dyX3IsdG1wc3BhY2UscHJlY2lzaW9uLCBhZ2dyX3csdG1wc3BhY2UsIGFnZ3JfcmtiLHRtcHNw
YWNlLCBhZ2dyX3drYiwgdG1wc3BhY2UscHJlY2lzaW9uLGFnZ3JfYWN0dWFsX3Jwdyx0bXBzcGFj
ZSxwcmVjaXNpb24sYWdncl9hY3R1YWxfd3B3LHRtcHNwYWNlLHByZWNpc2lvbixhZ2dyX2FjdHVh
bF9vcHcgLCB0bXBzcGFjZSxwcmVjaXNpb24sYWdncl9yZXNpZF9jbnQsdG1wc3BhY2UscHJlY2lz
aW9uLGFnZ3Jfb19jbnQpKQoKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICMg
aW5zdGFuY2UgbWlzc2luZyBmcm9tIHByZXZpb3VzIHNhbXBsZQogICAgICAgICAgICBwYXNzCgpj
bGFzcyBUYXBlc3RhdE9wdGlvbnMocG1hcGkucG1PcHRpb25zKToKICAgICMgY2xhc3MgYXR0cmli
dXRlcwogICAgeGZsYWcgPSBbXQogICAgdWZsYWcgPSBOb25lCiAgICBQZmxhZyA9IDIKICAgIFJm
bGFnID0gIiIKICAgIEdmbGFnID0gIiIKICAgIGRlZiBjaGVja09wdGlvbnMoc2VsZiwgbWFuYWdl
cik6CiAgICAgICAgaWYgVGFwZXN0YXRPcHRpb25zLnVmbGFnOgogICAgICAgICAgICBpZiBtYW5h
Z2VyLl9vcHRpb25zLnBtR2V0T3B0aW9uSW50ZXJ2YWwoKToKICAgICAgICAgICAgICAgIHByaW50
KCJFcnJvcjogLXQgaW5jb21wYXRpYmxlIHdpdGggLXUiKQogICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAgICAgICAgICAgIGlmIG1hbmFnZXIudHlwZSAhPSBQTV9DT05URVhUX0FSQ0hJVkU6
CiAgICAgICAgICAgICAgICBwcmludCgiRXJyb3I6IC11IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB3
aXRoIC1hIGFyY2hpdmUiKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0
dXJuIFRydWUKCiAgICBkZWYgZXh0cmFPcHRpb25zKHNlbGYsIG9wdCwgb3B0YXJnLCBpbmRleCk6
CiAgICAgICAgaWYgb3B0ID09ICJ4IjoKICAgICAgICAgICAgVGFwZXN0YXRPcHRpb25zLnhmbGFn
ICs9IG9wdGFyZy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgnICcpCiAgICAgICAgZWxpZiBvcHQg
PT0gInUiOgogICAgICAgICAgICBUYXBlc3RhdE9wdGlvbnMudWZsYWcgPSBUcnVlCiAgICAgICAg
ZWxpZiBvcHQgPT0gIlAiOgogICAgICAgICAgICBUYXBlc3RhdE9wdGlvbnMuUGZsYWcgPSBpbnQo
b3B0YXJnKQogICAgICAgIGVsaWYgb3B0ID09ICJSIjoKICAgICAgICAgICAgVGFwZXN0YXRPcHRp
b25zLlJmbGFnID0gb3B0YXJnCiAgICAgICAgZWxpZiBvcHQgPT0gIkciOgogICAgICAgICAgICBU
YXBlc3RhdE9wdGlvbnMuR2ZsYWcgPSBvcHRhcmcKCiMgICBhbGwgdGhpcyBzdHVmZiBuZWVkcyBj
aGFuZ2VzIGJ1dCBsZWF2aW5nIGl0IGFzIGl0IGlzIGZvciBub3csIGFueXdheSB3ZSB3aWxsIGZp
cnN0IGdldAojICAgaXQgd29ya2luZyB3aXRob3V0IGFueSBhcmd1bWVudHMKCiAgICBkZWYgX19p
bml0X18oc2VsZik6CiAgICAgICAgcG1hcGkucG1PcHRpb25zLl9faW5pdF9fKHNlbGYsICJBOmE6
RDpHOmg6TzpQOlI6UzpzOlQ6dDp1Vlo6ej94OiIpCiAgICAgICAgc2VsZi5wbVNldE9wdGlvbkNh
bGxiYWNrKHNlbGYuZXh0cmFPcHRpb25zKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uSGVh
ZGVyKCJHZW5lcmFsIG9wdGlvbnMiKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uQWxpZ24o
KQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uQXJjaGl2ZSgpCiAgICAgICAgc2VsZi5wbVNl
dExvbmdPcHRpb25EZWJ1ZygpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRpb24oImFnZ3JlZ2F0
ZSIsIDEsICJHIiwgIm1ldGhvZCIsICJhZ2dyZWdhdGUgdmFsdWVzIGZvciBkZXZpY2VzIG1hdGNo
aW5nIC1SIHJlZ2V4IHVzaW5nICdtZXRob2QnIChzdW0sIGF2ZywgbWluIG9yIG1heCkiKQogICAg
ICAgIHNlbGYucG1TZXRMb25nT3B0aW9uSG9zdCgpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRp
b25PcmlnaW4oKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uKCJwcmVjaXNpb24iLCAxLCAi
UCIsICJOIiwgIk4gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHNlcGFyYXRvciIpCiAgICAgICAg
c2VsZi5wbVNldExvbmdPcHRpb24oInJlZ2V4IiwgMSwgIlIiLCAicGF0dGVybiIsICJvbmx5IHJl
cG9ydCBmb3IgZGV2aWNlcyBuYW1lcyBtYXRjaGluZyBwYXR0ZXJuLCBlLmcuICdzZFthLXpBLVpd
KycuIFNlZSBhbHNvIC1HLiIpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRpb25TdGFydCgpCiAg
ICAgICAgc2VsZi5wbVNldExvbmdPcHRpb25TYW1wbGVzKCkKICAgICAgICBzZWxmLnBtU2V0TG9u
Z09wdGlvbkZpbmlzaCgpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRpb25JbnRlcnZhbCgpCiAg
ICAgICAgc2VsZi5wbVNldExvbmdPcHRpb24oIm5vLWludGVycG9sYXRpb24iLCAwLCAidSIsICIi
LCAiZGlzYWJsZSBpbnRlcnBvbGF0aW9uIG1vZGUgd2l0aCBhcmNoaXZlcyIpCiAgICAgICAgc2Vs
Zi5wbVNldExvbmdPcHRpb25WZXJzaW9uKCkKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvblRp
bWVab25lKCkKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvbkhvc3Rab25lKCkKICAgICAgICBz
ZWxmLnBtU2V0TG9uZ09wdGlvbkhlbHAoKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uSGVh
ZGVyKCJFeHRlbmRlZCBvcHRpb25zIikKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvbigiIiwg
MSwgJ3gnLCAiTElTVCIsICJjb21tYSBzZXBhcmF0ZWQgZXh0ZW5kZWQgb3B0aW9uczogW1t0XSxb
aF0sW25vaWRsZV1dIikKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvblRleHQoIlx0XHR0XHRw
cmVjZWRlIGV2ZXJ5IGxpbmUgd2l0aCBhIHRpbWVzdGFtcCBpbiBjdGltZSBmb3JtYXQiKTsKICAg
ICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvblRleHQoIlx0XHRoXHRzdXBwcmVzcyBoZWFkaW5ncyIp
OwogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uVGV4dCgiXHRcdG5vaWRsZVx0ZG8gbm90IGRp
c3BsYXkgaWRsZSBkZXZpY2VzIik7CgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgdHJ5
OgogICAgICAgIG9wdHMgPSBUYXBlc3RhdE9wdGlvbnMoKQogICAgICAgIG1hbmFnZXIgPSBwbWNj
Lk1ldHJpY0dyb3VwTWFuYWdlci5idWlsZGVyKG9wdHMsIHN5cy5hcmd2KQogICAgICAgIGlmIG5v
dCBvcHRzLmNoZWNrT3B0aW9ucyhtYW5hZ2VyKToKICAgICAgICAgICAgcmFpc2UgcG1hcGkucG1V
c2FnZUVycgoKICAgICAgICBpZiBUYXBlc3RhdE9wdGlvbnMudWZsYWc6CiAgICAgICAgICAgICMg
LXUgdHVybnMgb2ZmIGludGVycG9sYXRpb24KICAgICAgICAgICAgbWFuYWdlci5wbVNldE1vZGUo
UE1fTU9ERV9GT1JXLCBtYW5hZ2VyLl9vcHRpb25zLnBtR2V0T3B0aW9uT3JpZ2luKCksIDApCgog
ICAgICAgIG1hbmFnZXJbInRhcGVzdGF0Il0gPSBUQVBFU1RBVF9NRVRSSUNTCiAgICAgICAgI3By
aW50ICJjYWxsaW5nIFRhcGVzdGF0UmVwb3J0KCkiCiAgICAgICAgbWFuYWdlci5wcmludGVyID0g
VGFwZXN0YXRSZXBvcnQoKQogICAgICAgIHN0cyA9IG1hbmFnZXIucnVuKCkKICAgICAgICBzeXMu
ZXhpdChzdHMpCiAgICBleGNlcHQgcG1hcGkucG1FcnIgYXMgZXJyb3I6CiAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnJXM6ICVzXG4nICUgKGVycm9yLnByb2duYW1lKCksIGVycm9yLm1lc3NhZ2Uo
KSkpCiAgICBleGNlcHQgcG1hcGkucG1Vc2FnZUVyciBhcyB1c2FnZToKICAgICAgICB1c2FnZS5t
ZXNzYWdlKCkKICAgICAgICBzeXMuZXhpdCgxKQogICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0
OgogICAgICAgIHBhc3MKCgoK

--001a114dade047e240054990ce00
Content-Type: application/octet-stream; name="pcp-tapestat.1"
Content-Disposition: attachment; filename="pcp-tapestat.1"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_izp461i01

J1wiISB0YmwgfCBtbWRvYwonXCJtYWNybyBzdGRtYWNybwouXCIKLlwiIENvcHlyaWdodCAoYykg
MjAxNC0yMDE2IFJlZCBIYXQuICBBbGwgUmlnaHRzIFJlc2VydmVkLgouXCIgCi5cIiBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeSBpdAouXCIgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi5cIiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCi5cIiBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgouXCIgCi5cIiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci5cIiBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU
WQouXCIgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi5cIiBmb3IgbW9yZSBkZXRhaWxzLgouXCIKLlRIIFBDUC1U
QVBFU1RBVCAxICJQQ1AiICJQZXJmb3JtYW5jZSBDby1QaWxvdCIKLlNIIE5BTUUKXGYzcGNwLXRh
cGVzdGF0XGYxIFwtIHBlcmZvcm1hbmNlIG1ldHJpY3MgaS9vIHRhcGUgc3RhdGlzdGljcyB0b29s
Ci5cIiBsaXRlcmFscyB1c2UgLkIgb3IgXGYzCi5cIiBhcmd1bWVudHMgdXNlIC5JIG9yIFxmMgou
U0ggU1lOT1BTSVMKXGYzcGNwLXRhcGVzdGF0XGYxCltcZjNcLUFcZjEgXGYyYWxpZ25cZjEgXGYz
LS1hbGlnbj1cZjJUSU1FXGYxXQpbXGYzXC1hXGYxIFxmMmFyY2hpdmVcZjEgXGYzLS1hcmNoaXZl
PVxmMkZJTEVcZjFdCltcZjNcLUdcZjEgXGYybWV0aG9kXGYxIFxmMy0tYWdncmVnYXRlPVxmMm1l
dGhvZFxmMV0KW1xmM1wtaFxmMSBcZjJob3N0XGYxIFxmMy0taG9zdD1cZjJIT1NUXGYxXQpbXGYz
XC1PXGYxIFxmMm9mZnNldFxmMSBcZjMtLW9yaWdpbj1cZjJUSU1FXGYxXQpbXGYzXC1TXGYxIFxm
MnN0YXJ0dGltZVxmMSBcZjMtLXN0YXJ0PVxmMlRJTUVcZjFdCltcZjNcLXNcZjEgXGYyc2FtcGxl
c1xmMSBcZjMtLXNhbXBsZXM9XGYyTlxmMV0KW1xmM1wtVFxmMSBcZjJlbmR0aW1lXGYxIFxmMy0t
ZmluaXNoPVxmMlRJTUVcZjFdCltcZjNcLXRcZjEgXGYyaW50ZXJ2YWxcZjEgXGYzLS1pbnRlcnZh
bD1cZjJERUxUQVxmMV0KW1xmM1wtUFxmMSBcZjJwcmVjaXNpb25cZjEgXGYzLS1wcmVjaXNpb249
XGYyTlxmMV0KW1xmM1wtUlxmMSBcZjJwYXR0ZXJuXGYxIFxmMy0tcmVnZXg9XGYycGF0dGVyblxm
MV0KW1xmM1wtdVxmMSBcZjMtLW5vLWludGVycG9sYXRlXGYxXQpbXGYzXC1aXGYxIFxmMnRpbWV6
b25lXGYxIFxmMy0tdGltZXpvbmU9XGYyVFpcZjFdCltcZjNcLXpcZjEgXGYzLS1ob3N0em9uZVxm
MV0KW1xmM1wtP1xmMSBcZjMtLWhlbHBcZjFdCltcZjNcLXhcZjEgW3RdWyxoXVssbm9pZGxlXVxm
MV0KLlNIIERFU0NSSVBUSU9OCi5kZSBFWAouaW4gKzAuNWkKLmllIHQgLmZ0IENCCi5lbCAuZnQg
QgouaWUgdCAuc3AgLjV2Ci5lbCAuc3AKLnRhIFxcdycgJ3UqOAoubmYKLi4KLmRlIEVFCi5maQou
aWUgdCAuc3AgLjV2Ci5lbCAuc3AKLmZ0IFIKLmluCi4uCi5CIHBjcC10YXBlc3RhdApyZXBvcnRz
IEkvTyBzdGF0aXN0aWNzIGZvciB0YXBlIGRldmljZXMgCkJ5IGRlZmF1bHQKLkIgcGNwLXRhcGVz
dGF0CnJlcG9ydHMgbGl2ZSBkYXRhIGZvciB0aGUgbG9jYWwgaG9zdCBidXQgY2FuIGFsc28gcmVw
b3J0IGZvciBhIHJlbW90ZSBob3N0IChcZjMtaFxmUCkgb3IgZnJvbSBhIHByZXZpb3VzbHkgY2Fw
dHVyZWQgUENQIGFyY2hpdmUgKFxmMy1hXGZQKS4KLlBQClRoZQouQlIgXC1TICwKLkJSIFwtVCAs
Ci5CUiBcLU8KYW5kCi5CIFwtQQpvcHRpb25zIG1heSBiZSB1c2VkIHRvIGRlZmluZSBhIHRpbWUg
d2luZG93IHRvIHJlc3RyaWN0IHRoZQpzYW1wbGVzIHJldHJpZXZlZCwgc2V0IGFuIGluaXRpYWwg
b3JpZ2luIHdpdGhpbiB0aGUgdGltZSB3aW5kb3csCm9yIHNwZWNpZnkgYSBgYG5hdHVyYWwnJyBh
bGlnbm1lbnQgb2YgdGhlIHNhbXBsZSB0aW1lczsgcmVmZXIgdG8KLkJSIFBDUEludHJvICgxKQpm
b3IgYSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBvcHRpb25zLgouUFAKVGhlIG90aGVy
IG9wdGlvbnMgd2hpY2ggY29udHJvbCB0aGUgc291cmNlLCB0aW1pbmcgYW5kIGxheW91dCBvZiB0
aGUgaW5mb3JtYXRpb24KcmVwb3J0ZWQgYnkKLkIgcGNwLXRhcGVzdGF0CmFyZSBhcyBmb2xsb3dz
OgouVFAgNQouQiBcLWEKUGVyZm9ybWFuY2UgbWV0cmljIHZhbHVlcyBhcmUgcmV0cmlldmVkIGZy
b20gdGhlIFBlcmZvcm1hbmNlIENvLVBpbG90IChQQ1ApCmFyY2hpdmUgbG9nIGZpbGVzIGlkZW50
aWZpZWQgYnkgdGhlIGFyZ3VtZW50Ci5JUiBhcmNoaXZlICwKd2hpY2ggaXMgYSBjb21tYS1zZXBh
cmF0ZWQgbGlzdCBvZgpuYW1lcywgZWFjaCBvZiB3aGljaCBtYXkgYmUgdGhlIGJhc2UgbmFtZSBv
ZiBhbiBhcmNoaXZlIG9yIHRoZSBuYW1lIG9mIGEKZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25lIG9y
IG1vcmUgYXJjaGl2ZXMuIFNlZSBhbHNvCi5CUiBcLXUgLgouVFAKLkIgXC1HClNwZWNpZmllcyB0
aGF0IHN0YXRpc3RpY3MgZm9yIGRldmljZSBuYW1lcyBtYXRjaGluZyB0aGUgcmVndWxhciBleHBy
ZXNzaW9uIHNwZWNpZmllZCB3aXRoIHRoZQouQiBcLVIKLkkgcmVnZXgKb3B0aW9uIHNob3VsZCBi
ZSBhZ2dyZWdhdGVkIGFjY29yZGluZyB0bwouSVIgbWV0aG9kIC4KTm90ZSB0aGlzIGlzIGFnZ3Jl
Z2F0aW9uIGJhc2VkIG9uIG1hdGNoaW5nIGRldmljZSBuYW1lcyAobm90IHRlbXBvcmFsIGFnZ3Jl
Z2F0aW9uKS4KV2hlbgouQiBcLUcKaXMgdXNlZCwKdGhlIGRldmljZSBuYW1lIGNvbHVtbiBpcyBy
ZXBvcnRlZCBhcwouSVIgbWV0aG9kIChcZklyZWdleFxmUiksCmUuZy4KaWYKLkIgXC1HIHN1bQou
QiBcLVIgJ3N0KDB8MSkkJwppcyBzcGVjaWZpZWQsIHRoZSBkZXZpY2UgY29sdW1uIHdpbGwgYmUK
LkJSIHN1bSAoXGZCc3QoMHwxKSQpXGZSCmFuZApzdW1tZWQgc3RhdGlzdGljcyBmb3IKLkIgc3Qw
CmFuZAouQiBzdDEKd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgcmVtYWluaW5nIGNvbHVtbnMuCklm
Ci5CIFwtRwppcyBzcGVjaWZpZWQgYnV0Ci5CIFwtUgppcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRo
ZSBkZWZhdWx0Ci5JIHJlZ2V4CmlzCi5CUiAuKiAsCmkuZS4gbWF0Y2hpbmcgYWxsIGRldmljZSBu
YW1lcy4KSWYKLkkgbWV0aG9kCmlzCi5CIHN1bQp0aGVuIHRoZSBzdGF0aXN0aWNzIGFyZSBzdW1t
ZWQuCklmCi5JIG1ldGhvZAppcwouQiBhdmcKdGhlbiB0aGUgc3RhdGlzdGljcyBhcmUgc3VtbWVk
IGFuZCB0aGVuIGF2ZXJhZ2VkIGJ5IGRpdmlkaW5nIGJ5IHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcg
ZGV2aWNlIG5hbWVzLgpJZgouSSBtZXRob2QKaXMKLkIgbWluCm9yCi5CUiBtYXggLAp0aGUgbWlu
aW11bSBvciBtYXhpbXVtIHN0YXRpc3RpY3MgZm9yIG1hdGNoaW5nIGRldmljZXMgYXJlIHJlcG9y
dGVkLCByZXNwZWN0ZnVsbHkuCi5UUAouQiBcLWgKQ3VycmVudCBwZXJmb3JtYW5jZSBtZXRyaWMg
dmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbSB0aGUgbm9taW5hdGVkCi5JIGhvc3QKbWFjaGluZS4K
LlRQCi5CIFwtcwpUaGUgYXJndW1lbnQKLkkgc2FtcGxlcwpkZWZpbmVzIHRoZSBudW1iZXIgb2Yg
c2FtcGxlcyB0byBiZSByZXRyaWV2ZWQgYW5kIHJlcG9ydGVkLgpJZgouSSBzYW1wbGVzCmlzIDAg
b3IKLkIgXC1zCmlzIG5vdCBzcGVjaWZpZWQsIAouQiBwY3AtdGFwZXN0YXQKd2lsbCBzYW1wbGUg
YW5kIHJlcG9ydCBjb250aW51b3VzbHkgKGluIHJlYWwgdGltZSBtb2RlKSBvciB1bnRpbCB0aGUg
ZW5kCm9mIHRoZSBzZXQgb2YgUENQIGFyY2hpdmVzIChpbiBhcmNoaXZlIG1vZGUpLgouVFAKLkIg
XC10ClRoZSBkZWZhdWx0IHVwZGF0ZSBcZjJpbnRlcnZhbFxmMSBtYXkgYmUgc2V0IHRvIHNvbWV0
aGluZyBvdGhlciB0aGFuIHRoZQpkZWZhdWx0IDEgc2Vjb25kLgpUaGUKLkkgaW50ZXJ2YWwKYXJn
dW1lbnQgZm9sbG93cyB0aGUgc3ludGF4IGRlc2NyaWJlZCBpbgouQlIgUENQSW50cm8gKDEpLAph
bmQgaW4gdGhlIHNpbXBsZXN0IGZvcm0gbWF5IGJlIGFuIHVuc2lnbmVkIGludGVnZXIgKHRoZSBp
bXBsaWVkCnVuaXRzIGluIHRoaXMgY2FzZSBhcmUgc2Vjb25kcykuClRoZSBcZjMtdFxmUCBvcHRp
b24gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHJlcGxheWluZyBsYXJnZSBzZXRzIG9mCmFy
Y2hpdmVzIChcZjMtYVxmUCBvcHRpb24pIHRoYXQgc3BhbiBzZXZlcmFsIGhvdXJzIG9yIGV2ZW4g
ZGF5cy4KSW4gdGhpcyBjYXNlIHNwZWNpZnlpbmcgYSBsYXJnZQouSSBpbnRlcnZhbAooZS5nLiAx
aCBmb3IgMSBob3VyKQp3aWxsIHJlZHVjZSB0aGUgdm9sdW1lIG9mIGRhdGEgcmVwb3J0ZWQgYW5k
IHRoZSB0YXBlIGkvbyBzdGF0aXN0aWNzIHdpbGwgYmUgYXZlcmFnZWQgKGludGVycG9sYXRlZCkg
b3Zlcgp0aGUgcmVwb3J0aW5nIGludGVydmFsICh1bmxlc3MgdGhlCi5CIFwtdQpvcHRpb24gaXMg
c3BlY2lmaWVkLCBzZWUgYmVsb3cpLgouVFAKLkIgXC1SClRoaXMgcmVzdHJpY3RzIHRoZSByZXBv
cnQgdG8gZGV2aWNlIG5hbWVzIG1hdGNoaW5nCi5JUiByZWdleCAuClRoZQouSSByZWdleApwYXR0
ZXJuIGlzIHNlYXJjaGVkIGFzIGEgcGVybCBzdHlsZSByZWd1bGFyIGV4cHJlc3Npb24sIGFuZCB3
aWxsIG1hdGNoIGFueSBwb3J0aW9uIG9mIGEgZGV2aWNlIG5hbWUuCmUuZy4gJ15zdFswLTldKycg
d2lsbCBtYXRjaCBhbGwgZGV2aWNlIG5hbWVzIHN0YXJ0aW5nIHdpdGggJ3N0JyBmb2xsb3dlZCBi
eSBvbmUgb3IgbW9yZSBudW1iZXJzLgplLmcuICdec3QoMHwxKSQnIHdpbGwgb25seSBtYXRjaCAn
c3QwJyBhbmQgJ3N0MScuCmUuZy4gJ3N0MCQnIHdpbGwgbWF0Y2ggJ3N0MCcgYnV0IG5vdCAnc3Qx
Jy4KU2VlIGFsc28gdGhlCi5CIC1HCm9wdGlvbiBmb3IgYWdncmVnYXRpb24gb3B0aW9ucy4KLlRQ
Ci5CIFwtUApUaGlzIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRvIHByaW50LiBU
aGUgZGVmYXVsdCBwcmVjaXNpb24gXGYyTlxmMQptYXkgYmUgc2V0IHRvIHNvbWV0aGluZyBvdGhl
ciB0aGFuIHRoZSBkZWZhdWx0IDIgZGVjaW1hbHMuCk5vdGUgdGhhdCB0aGUKLkIgYXZncnEtc3oK
YW5kCi5CIGF2Z3F1LXN6CmZpZWxkcyBhcmUgYWx3YXlzIHJlcG9ydGVkIHdpdGggXGYyTlxmMSsx
IGRlY2ltYWxzIG9mIHByZWNpc2lvbi4KVGhlc2UgZmllbGRzIHR5cGljYWxseSBoYXZlIHZhbHVl
cyBsZXNzIHRoYW4gMS4wLgouVFAKLkIgXC11CldoZW4gcmVwbGF5aW5nIGEgc2V0IG9mIGFyY2hp
dmVzLCBieSBkZWZhdWx0IHZhbHVlcyBhcmUgcmVwb3J0ZWQKYWNjb3JkaW5nIHRvIHRoZSBzZWxl
Y3RlZCBzYW1wbGUgaW50ZXJ2YWwgKFxjCi5CIFwtdApvcHRpb24pLCBub3QgYWNjb3JkaW5nIHRv
IHRoZSBhY3R1YWwgcmVjb3JkIGludGVydmFscyBpbiB0aGUgc2V0IG9mIGFyY2hpdmVzLgpUbyB0
aGlzIGVmZmVjdCBQQ1AgaW50ZXJwb2xhdGVzIHRoZSB2YWx1ZXMgdG8gYmUgcmVwb3J0ZWQgYmFz
ZWQgb24gdGhlCnJlY29yZHMgaW4gdGhlIHNldCBvZiBhcmNoaXZlcywgYW5kIGlzIHBhcnRpY3Vs
YXJseSB1c2VmdWwgd2hlbiB0aGUKLkIgXC10Cm9wdGlvbiBpcyB1c2VkIHRvIHJlcGxheSBhIHNl
dCBvZiBhcmNoaXZlcyB3aXRoIGEgbG9uZ2VyIHNhbXBsaW5nIGludGVydmFsIHRoYW4KdGhlIHVu
ZGVybHlpbmcgaW50ZXJ2YWwgdGhlIHNldCBvZiBhcmNoaXZlcyB3YXMgb3JpZ2luYWxseSByZWNv
cmRlZCB3aXRoLgpXaXRoIHRoZQouQiBcLXUKb3B0aW9uLAp1bmludGVycG9sYXRlZCByZXBvcnRp
bmcgaXMgZW5hYmxlZCAtIGV2ZXJ5IHZhbHVlIGlzIHJlcG9ydGVkCmFjY29yZGluZyB0byB0aGUg
bmF0aXZlIHJlY29yZGluZyBpbnRlcnZhbCBpbiB0aGUgc2V0IG9mIGFyY2hpdmVzLgpXaGVuIHRo
ZQouQiBcLXUKb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlCi5CIFwtdApvcHRpb24gbWFrZXMgbm8g
c2Vuc2UgYW5kIGlzIGluY29tcGF0aWJsZSBiZWNhdXNlIHRoZSByZXBsYXkgaW50ZXJ2YWwKaXMg
YWx3YXlzIHRoZSBzYW1lIGFzIHRoZSByZWNvcmRpbmcgaW50ZXJ2YWwgaW4gdGhlIHNldCBvZiBh
cmNoaXZlLgpJbiBhZGRpdGlvbiwKLkIgXC11Cm9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiByZXBsYXlp
bmcgYSBzZXQgb2YgYXJjaGl2ZXMsIHNlZQouQiBcLWEKYWJvdmUsCmFuZCBzbyBpZgouQiBcLXUK
aXMgc3BlY2lmaWVkIHRoZW4KLkIgXC1hCm11c3QgYWxzbyBiZSBzcGVjaWZpZWQuCi5UUAouQiBc
LVoKQnkgZGVmYXVsdCwKLkIgcGNwLXRhcGVzdGF0CnJlcG9ydHMgdGhlIHRpbWUgb2YgZGF5IGFj
Y29yZGluZyB0byB0aGUgbG9jYWwgdGltZXpvbmUgb24gdGhlCnN5c3RlbSB3aGVyZQouQiBwY3At
dGFwZXN0YXQKaXMgcnVuLgpUaGUKLkIgXC1aCm9wdGlvbiBjaGFuZ2VzIHRoZSB0aW1lem9uZSB0
bwouSSB0aW1lem9uZQppbiB0aGUgZm9ybWF0IG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQou
QiBUWgphcyBkZXNjcmliZWQgaW4KLkJSIGVudmlyb24gKDcpLgouVFAKLkIgXC16CkNoYW5nZSB0
aGUgcmVwb3J0aW5nIHRpbWV6b25lIHRvIHRoZSBsb2NhbCB0aW1lem9uZSBhdCB0aGUgaG9zdCB0
aGF0IGlzCnRoZSBzb3VyY2Ugb2YgdGhlIHBlcmZvcm1hbmNlIG1ldHJpY3MsIGFzIGlkZW50aWZp
ZWQgdmlhIGVpdGhlciB0aGUKLkIgXC1oCm9yCi5CIFwtYQpvcHRpb25zLgpXaGVuIHJlcGxheWlu
ZyBhIFBDUCBhcmNoaXZlIHRoYXQgd2FzIGNhcHR1cmVkIGluIGEgZm9yZWlnbiB0aW1lem9uZSwg
dGhlCi5CIFwtegpvcHRpb24gd291bGQgYWxtb3N0IGFsd2F5cyBiZSB1c2VkICh0aGUgZGVmYXVs
dCByZXBvcnRpbmcgdGltZXpvbmUgaXMgdGhlIGxvY2FsIHRpbWV6b25lLAp3aGljaCBtYXkgbm90
IGJlIHRoZSBzYW1lIGFzIHRoZSB0aW1lem9uZSBvZiB0aGUgUENQIGFyY2hpdmUpLgouVFAKLkIg
XC14ClNwZWNpZmllcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIG9uZSBvciBtb3JlIGV4dGVu
ZGVkIHJlcG9ydGluZyBvcHRpb25zIGFzIGZvbGxvd3M6Ci5icgpcZjN0XGZQIC0gcHJlZml4IGV2
ZXJ5IGxpbmUgaW4gdGhlIHJlcG9ydCB3aXRoIGEgdGltZXN0YW1wIGluIFxmMmN0aW1lXGZQKDMp
IGZvcm1hdCwKLmJyClxmM2hcZlAgLSBvbWl0IHRoZSBoZWFkaW5nLCB3aGljaCBpcyBvdGhlcndp
c2UgcmVwb3J0ZWQgZXZlcnkgMjQgc2FtcGxlcywKLmJyClxmM25vaWRsZVxmUCAtIERvIG5vdCBk
aXNwbGF5IHN0YXRpc3RpY3MgZm9yIGlkbGUgZGV2aWNlcy4KLlNIIFJFUE9SVApUaGUgY29sdW1u
cyBpbiB0aGUKLkIgcGNwLXRhcGVzdGF0CnJlcG9ydCBoYXZlIHRoZSBmb2xsb3dpbmcgaW50ZXJw
cmV0YXRpb24gOgouVFAKLkIgVGltZXN0YW1wCldoZW4gdGhlIFxmMy14IHRcZlAgb3B0aW9uIGlz
IHNwZWNpZmllZCwgdGhpcyBjb2x1bW4gaXMgdGhlIHRpbWVzdGFtcCBpbiBcZjNjdGltZVxmUCgz
KSBmb3JtYXQuCi5UUAouQiBEZXZpY2UKU3BlY2lmaWVzIHRoZSB0YXBlIGRldmljZSBuYW1lCldo
ZW4KLkIgXC1HCmlzIHNwZWNpZmllZCwgdGhpcyBpcyByZXBsYWNlZCBieSB0aGUgYWdncmVnYXRp
b24gbWV0aG9kIGFuZCByZWd1bGFyIGV4cHJlc3Npb24gLSBzZWUgdGhlCi5CIFwtRwphbmQKLkIg
XC1SCm9wdGlvbnMgYWJvdmUuCi5UUAouQiByL3MKVGhlIG51bWJlciBvZiByZWFkcyBpc3N1ZWQg
ZXhwcmVzc2VkIGFzIHRoZSBudW1iZXIgcGVyIHNlY29uZCBhdmVyYWdlZCBvdmVyIHRoZSBpbnRl
cnZhbC4KLlRQCi5CIHcvcwpUaGUgbnVtYmVyIG9mIHdyaXRlcyBpc3N1ZWQgZXhwcmVzc2VkIGFz
IHRoZSBudW1iZXIgcGVyIHNlY29uZCBhdmVyYWdlZCBvdmVyIHRoZSBpbnRlcnZhbC4gCi5UUAou
QiBrYl9yL3MKVGhlIGFtb3VudCBvZiBkYXRhIHJlYWQgZXhwcmVzc2VkIGluIGtpbG9ieXRlcyBw
ZXIgc2Vjb25kIGF2ZXJhZ2VkIG92ZXIgdGhlIGludGVydmFsLgouVFAKLkIga2Jfdy9zClRoZSBh
bW91bnQgb2YgZGF0YSB3cml0dGVuIGV4cHJlc3NlZCBpbiBraWxvYnl0ZXMgcGVyIHNlY29uZCBh
dmVyYWdlZCBvdmVyIHRoZSBpbnRlcnZhbC4KLlRQCi5CIHJfcGN0ClJlYWQgcGVyY2VudGFnZSB3
YWl0IC0gVGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSBvdmVyIHRoZSBpbnRlcnZhbCBzcGVudCB3YWl0
aW5nIGZvciByZWFkIHJlcXVlc3RzIHRvIGNvbXBsZXRlLiAKVGhlIHRpbWUgaXMgbWVhc3VyZWQg
ZnJvbSB3aGVuIHRoZSByZXF1ZXN0IGlzIGRpc3BhdGNoZWQgdG8gdGhlIFNDU0kgbWlkLWxheWVy
IHVudGlsIGl0IHNpZ25hbHMgdGhhdCBpdCBjb21wbGV0ZWQuCi5UUAouQiB3X3BjdCAKV3JpdGUg
cGVyY2VudGFnZSB3YWl0IC0gVGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSBvdmVyIHRoZSBpbnRlcnZh
bCBzcGVudCB3YWl0aW5nIGZvciB3cml0ZSByZXF1ZXN0cyB0byBjb21wbGV0ZS4gClRoZSB0aW1l
IGlzIG1lYXN1cmVkIGZyb20gd2hlbiB0aGUgcmVxdWVzdCBpcyBkaXNwYXRjaGVkIHRvIHRoZSBT
Q1NJIG1pZC1sYXllciB1bnRpbCBpdCBzaWduYWxzIHRoYXQgaXQgY29tcGxldGVkLgouVFAKLkIg
b19wY3QKT3ZlcmFsbCBwZXJjZW50YWdlIHdhaXQgIC0gVGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSBv
dmVyIHRoZSBpbnRlcnZhbCBzcGVudCB3YWl0aW5nIGZvciBhbnkgSS9PIHJlcXVlc3QgdG8gCmNv
bXBsZXRlIChyZWFkLCB3cml0ZSwgYW5kIG90aGVyKS4KLlRQCi5CIFJzL3MKVGhlIG51bWJlciBv
ZiBJL09zLCBleHByZXNzZWQgYXMgdGhlIG51bWJlciBwZXIgc2Vjb25kIGF2ZXJhZ2VkIG92ZXIg
dGhlIGludGVydmFsLCB3aGVyZSBhIG5vbi16ZXJvIHJlc2lkdWFsIHZhbHVlIHdhcyBlbmNvdW50
ZXJlZC4KLlRQCi5CIG9fY250ClRoZSAgbnVtYmVyIG9mIEkvT3MsIGV4cHJlc3NlZCBhcyB0aGUg
bnVtYmVyIHBlciBzZWNvbmQgYXZlcmFnZWQgb3ZlciB0aGUgaW50ZXJ2YWwsIHRoYXQgd2VyZSBp
bmNsdWRlZCBhcyAib3RoZXIiLiAKT3RoZXIgSS9PIGluY2x1ZGVzIGlvY3RsIGNhbGxzIG1hZGUg
dG8gdGhlIHRhcGUgZHJpdmVyIGFuZCBpbXBsaWNpdCBvcGVyYXRpb25zIHBlcmZvcm1lZCBieSB0
aGUgdGFwZSBkcml2ZXIgc3VjaCBhcyAKcmV3aW5kIG9uIGNsb3NlIChmb3IgdGFwZSBkZXZpY2Vz
IHRoYXQgaW1wbGVtZW50IHJld2luZCBvbiBjbG9zZSkuIApJdCBkb2VzIG5vdCBpbmNsdWRlIGFu
eSBJL08gcGVyZm9ybWVkIHVzaW5nIG1ldGhvZHMgb3V0c2lkZSBvZiB0aGUgdGFwZSBkcml2ZXIg
KGUuZy4gdmlhIHNnIGlvY3RscykuCi5TSCBGSUxFUwouUEQgMAouVFAgMTAKLkJJICRQQ1BfVkFS
X0RJUi9wbW5zLyAqCmRlZmF1bHQgUE1OUyBzcGVjaWZpY2F0aW9uIGZpbGVzCi5QRAouU0ggIlBD
UCBFTlZJUk9OTUVOVCIKRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggdGhlIHByZWZpeAouQiBQ
Q1BfCmFyZSB1c2VkIHRvIHBhcmFtZXRlcml6ZSB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVz
CnVzZWQgYnkgUENQLgpPbiBlYWNoIGluc3RhbGxhdGlvbiwgdGhlIGZpbGUKLkkgL2V0Yy9wY3Au
Y29uZgpjb250YWlucyB0aGUgbG9jYWwgdmFsdWVzIGZvciB0aGVzZSB2YXJpYWJsZXMuClRoZQou
QiAkUENQX0NPTkYKdmFyaWFibGUgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2
ZQpjb25maWd1cmF0aW9uIGZpbGUsCmFzIGRlc2NyaWJlZCBpbgouQlIgcGNwLmNvbmYgKDUpLgou
U0ggU0VFIEFMU08KLkJSIHBjcCAoMSksCi5CUiBQQ1BJbnRybyAoMSksCi5CUiBwbWNkICgxKSwK
LkJSIHBtY2hhcnQgKDEpLAouQlIgcG1sb2dnZXIgKDEpLAouQlIgcGNwLmNvbmYgKDUpCmFuZAou
QlIgcGNwLmVudiAoNSkuCi5TSCBESUFHTk9TVElDUwpBbGwgYXJlIGdlbmVyYXRlZCBvbiBzdGFu
ZGFyZCBlcnJvciBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHNlbGYtZXhwbGFuYXRvcnkuCg==

--001a114dade047e240054990ce00--