<?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>179980</bug_id>
          
          <creation_ts>2017-11-23 09:47:40 -0800</creation_ts>
          <short_desc>Move unsafe jsc shell test functions to the $vm object.</short_desc>
          <delta_ts>2017-11-24 02:59:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374442</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-23 09:47:40 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374446</commentid>
    <comment_count>1</comment_count>
      <attachid>327507</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-23 10:06:05 -0800</bug_when>
    <thetext>Created attachment 327507
proposed patch.

Let&apos;s get some EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374534</commentid>
    <comment_count>2</comment_count>
      <attachid>327507</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-24 02:38:24 -0800</bug_when>
    <thetext>Comment on attachment 327507
proposed patch.

Great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374538</commentid>
    <comment_count>3</comment_count>
      <attachid>327507</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-24 02:58:21 -0800</bug_when>
    <thetext>Comment on attachment 327507
proposed patch.

Clearing flags on attachment: 327507

Committed r225129: &lt;https://trac.webkit.org/changeset/225129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374539</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-24 02:58:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374540</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-24 02:59:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/35681981&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327507</attachid>
            <date>2017-11-23 10:06:05 -0800</date>
            <delta_ts>2017-11-24 02:58:21 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-179980.patch</filename>
            <type>text/plain</type>
            <size>224323</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDExMiBAQAorMjAxNy0xMS0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSB1bnNhZmUganNjIHNoZWxsIHRlc3QgZnVuY3Rpb25zIHRvIHRo
ZSAkdm0gb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc5OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBjb250cm9sRmxvd1Byb2ZpbGVyL2RyaXZlci9kcml2ZXIuanM6CisgICAgICAgICog
Y29udHJvbEZsb3dQcm9maWxlci9leGVjdXRpb24tY291bnQuanM6CisgICAgICAgICogY29udHJv
bEZsb3dQcm9maWxlci9pZi1zdGF0ZW1lbnQuanM6CisgICAgICAgICogY29udHJvbEZsb3dQcm9m
aWxlci9sb29wLXN0YXRlbWVudHMuanM6CisgICAgICAgICogY29udHJvbEZsb3dQcm9maWxlci9z
d2l0Y2gtc3RhdGVtZW50cy5qczoKKyAgICAgICAgKiBjb250cm9sRmxvd1Byb2ZpbGVyL3Rlc3Qt
aml0LmpzOgorICAgICAgICAqIGV4Y2VwdGlvbkZ1enovM2QtY3ViZS5qczoKKyAgICAgICAgKiBl
eGNlcHRpb25GdXp6L2RhdGUtZm9ybWF0LXhwYXJiLmpzOgorICAgICAgICAqIGV4Y2VwdGlvbkZ1
enovZWFybGV5LWJveWVyLmpzOgorICAgICAgICAqIGhlYXBQcm9maWxlci9iYXNpYy1lZGdlcy5q
czoKKyAgICAgICAgKiBoZWFwUHJvZmlsZXIvcHJvcGVydHktZWRnZS10eXBlcy5qczoKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5qczoKKyAgICAgICAgKiBt
aWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYy5qczoKKyAgICAgICAgKiBt
b2R1bGVzL25hbWVzcGFjZS1vYmplY3QtdHJ5LWdldC5qczoKKyAgICAgICAgKiBzdHJlc3MvYXJn
dW1lbnQtY291bnQtYnl0ZWNvZGUuanM6CisgICAgICAgICogc3RyZXNzL2FyZ3VtZW50LWludHJp
bnNpYy1iYXNpYy5qczoKKyAgICAgICAgKiBzdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLWlubGlu
aW5nLXVzZS1jYWxsZXItYXJnLmpzOgorICAgICAgICAqIHN0cmVzcy9hcmd1bWVudC1pbnRyaW5z
aWMtaW5saW5pbmctd2l0aC1yZXN1bHQtZXNjYXBlLmpzOgorICAgICAgICAqIHN0cmVzcy9hcmd1
bWVudC1pbnRyaW5zaWMtaW5saW5pbmctd2l0aC12YXJhcmctd2l0aC1lbm91Z2gtYXJndW1lbnRz
LmpzOgorICAgICAgICAqIHN0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtaW5saW5pbmctd2l0aC12
YXJhcmcuanM6CisgICAgICAgICogc3RyZXNzL2FyZ3VtZW50LWludHJpbnNpYy1uZXN0ZWQtaW5s
aW5pbmcuanM6CisgICAgICAgICogc3RyZXNzL2FyZ3VtZW50LWludHJpbnNpYy1ub3QtY29udmVy
dC10by1nZXQtYXJndW1lbnQuanM6CisgICAgICAgICogc3RyZXNzL2FyZ3VtZW50LWludHJpbnNp
Yy13aXRoLXN0YWNrLXdyaXRlLmpzOgorICAgICAgICAqIHN0cmVzcy9hcml0eS1taXNtYXRjaC1n
ZXQtYXJndW1lbnQuanM6CisgICAgICAgICogc3RyZXNzL2FycmF5LW1lc3NhZ2UtcGFzc2luZy5q
czoKKyAgICAgICAgKiBzdHJlc3MvYXJyYXktcHVzaC13aXRoLWZvcmNlLWV4aXQuanM6CisgICAg
ICAgICogc3RyZXNzL2NoZWNrLWRvbS13aXRoLXNpZ25hdHVyZS5qczoKKyAgICAgICAgKiBzdHJl
c3MvY2hlY2stc3ViLWNsYXNzLmpzOgorICAgICAgICAqIHN0cmVzcy9jb21wYXJlLWVxLWluY29t
cGxldGUtcHJvZmlsZS5qczoKKyAgICAgICAgKiBzdHJlc3MvY3VzdG9tLWdldC1zZXQtaW5saW5l
LWNhY2hpbmctb25lLWxldmVsLXVwLXByb3RvLWNoYWluLmpzOgorICAgICAgICAqIHN0cmVzcy9k
by1ldmFsLXZpcnR1YWwtY2FsbC1jb3JyZWN0bHkuanM6CisgICAgICAgICogc3RyZXNzL2RvbS1q
aXQtd2l0aC1wb2x5LXByb3RvLmpzOgorICAgICAgICAqIHN0cmVzcy9kb21qaXQtZXhjZXB0aW9u
LWljLmpzOgorICAgICAgICAqIHN0cmVzcy9kb21qaXQtZXhjZXB0aW9uLmpzOgorICAgICAgICAq
IHN0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXgtd2l0aC1pbmNvcnJlY3Qtb2JqZWN0LmpzOgor
ICAgICAgICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanM6CisgICAgICAgICogc3Ry
ZXNzL2RvbWppdC1nZXR0ZXItcG9seS5qczoKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRl
ci1wcm90by5qczoKKyAgICAgICAgKiBzdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1wb2x5Lmpz
OgorICAgICAgICAqIHN0cmVzcy9kb21qaXQtZ2V0dGVyLXRyeS1jYXRjaC1nZXR0ZXItYXMtZ2V0
LWJ5LWlkLXJlZ2lzdGVyLXJlc3RvcmF0aW9uLmpzOgorICAgICAgICAqIHN0cmVzcy9kb21qaXQt
Z2V0dGVyLXR5cGUtY2hlY2suanM6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXIuanM6
CisgICAgICAgICogc3RyZXNzL2V4aXQtZHVyaW5nLWlubGluZWQtYXJpdHktZml4dXAtcmVjb3Zl
ci1wcm9wZXItZnJhbWUuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1pbi1wcm94eS10YXJnZXQt
Y2hhbmdlZC1zdHJ1Y3R1cmUuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1pbi1wcm94eS5qczoK
KyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdGlvbmFsLW9wYXF1ZS1yb290cy5qczoKKyAgICAgICAg
KiBzdHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0dGluZy0yLmpzOgorICAgICAg
ICAqIHN0cmVzcy9nbG9iYWwtY29uc3QtcmVkZWNsYXJhdGlvbi1zZXR0aW5nLTMuanM6CisgICAg
ICAgICogc3RyZXNzL2dsb2JhbC1jb25zdC1yZWRlY2xhcmF0aW9uLXNldHRpbmctNC5qczoKKyAg
ICAgICAgKiBzdHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0dGluZy01LmpzOgor
ICAgICAgICAqIHN0cmVzcy9nbG9iYWwtY29uc3QtcmVkZWNsYXJhdGlvbi1zZXR0aW5nLmpzOgor
ICAgICAgICAqIHN0cmVzcy9pbXBvcnQtYmFzaWMuanM6CisgICAgICAgICogc3RyZXNzL2ltcG9y
dC1mcm9tLWV2YWwuanM6CisgICAgICAgICogc3RyZXNzL2ltcG9ydC1yZWplY3Qtd2l0aC1leGNl
cHRpb24uanM6CisgICAgICAgICogc3RyZXNzL2ltcG9ydC1zeW50YXguanM6CisgICAgICAgICog
c3RyZXNzL2ltcHVyZS1nZXQtb3duLXByb3BlcnR5LXNsb3QtaW5saW5lLWNhY2hlLmpzOgorICAg
ICAgICAqIHN0cmVzcy9pcy1jb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKiBzdHJlc3MvaXN0eXBl
ZGFycmF5dmlldy1pbnRyaW5zaWMuanM6CisgICAgICAgICogc3RyZXNzL2pzYy1zZXRJbXB1cmVH
ZXR0ZXJEZWxlZ2F0ZS1vbi1iYWQtdHlwZS5qczoKKyAgICAgICAgKiBzdHJlc3MvanNjLXRlc3Qt
ZnVuY3Rpb25zLXNob3VsZC1iZS1tb3JlLXJvYnVzdC5qczoKKyAgICAgICAgKiBzdHJlc3Mvb2Jq
ZWN0LXRvU3RyaW5nLXdpdGgtcHJveHkuanM6CisgICAgICAgICogc3RyZXNzL3BvbHktcHJvdG8t
Y3VzdG9tLXZhbHVlLWFuZC1hY2Nlc3Nvci5qczoKKyAgICAgICAgKiBzdHJlc3MvcHJveHktaW5s
aW5lLWNhY2hlLmpzOgorICAgICAgICAqIHN0cmVzcy9yZS1leGVjdXRlLWVycm9yLW1vZHVsZS5q
czoKKyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy0xNTA1MzIuanM6CisgICAgICAgICogc3RyZXNz
L3JlZ3Jlc3MtMTU2OTkyLmpzOgorICAgICAgICAqIHN0cmVzcy9yZWdyZXNzLTE3OTYxOS5qczoK
KyAgICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL3NoYWRvdy1jaGlja2VuLXN1cHBvcnQuanM6Cisg
ICAgICAgICogc3RyZXNzL3J1bnRpbWUtYXJyYXkuanM6CisgICAgICAgICogc3RyZXNzL3NhbXBs
aW5nLXByb2ZpbGVyLW1pY3JvdGFza3MuanM6CisgICAgICAgICogc3RyZXNzL3NoYWRvdy1jaGlj
a2VuLWVuYWJsZWQuanM6CisgICAgICAgICogc3RyZXNzL3NwcmVhZC1jb3JyZWN0LWdsb2JhbC1v
YmplY3Qtb24tZXhjZXB0aW9uLmpzOgorICAgICAgICAqIHN0cmVzcy9zdXBlci1nZXQtYnktaWQu
anM6CisgICAgICAgICogc3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cy5qczoKKyAgICAg
ICAgKiBzdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1ib29sZWFuLWVkZ2UuanM6CisgICAgICAg
ICogc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVsbC1vci11bmRlZmluZWQtZWRnZS5qczoK
KyAgICAgICAgKiBzdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1udW1iZXItZWRnZS5qczoKKyAg
ICAgICAgKiBzdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1vYmplY3QtZWRnZS5qczoKKyAgICAg
ICAgKiBzdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1zdHJpbmctZWRnZS5qczoKKyAgICAgICAg
KiBzdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1zeW1ib2wtZWRnZS5qczoKKyAgICAgICAgKiBz
dHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy5qczoKKyAgICAgICAgKiBzdHJlc3MvdHJ5LWNhdGNo
LWN1c3RvbS1nZXR0ZXItYXMtZ2V0LWJ5LWlkLmpzOgorICAgICAgICAqIHN0cmVzcy90cnktZ2V0
LWJ5LWlkLXBvbHktcHJvdG8uanM6CisgICAgICAgICogc3RyZXNzL3RyeS1nZXQtYnktaWQtc2hv
dWxkLXNwaWxsLXJlZ2lzdGVycy1kZmcuanM6CisgICAgICAgICogc3RyZXNzL3RyeS1nZXQtYnkt
aWQuanM6CisgICAgICAgICogdHlwZVByb2ZpbGVyL2Fycm93LWZ1bmN0aW9ucy5qczoKKyAgICAg
ICAgKiB0eXBlUHJvZmlsZXIvYmFzaWMuanM6CisgICAgICAgICogdHlwZVByb2ZpbGVyL2NhcHR1
cmVkLmpzOgorICAgICAgICAqIHR5cGVQcm9maWxlci9jbGFzc2VzLmpzOgorICAgICAgICAqIHR5
cGVQcm9maWxlci9kZmctaml0LW9wdGltaXphdGlvbnMuanM6CisgICAgICAgICogdHlwZVByb2Zp
bGVyL2RpY3Rpb25hcnktbW9kZS5qczoKKyAgICAgICAgKiB0eXBlUHJvZmlsZXIvZXM2LWJsb2Nr
LXNjb3BpbmcuanM6CisgICAgICAgICogdHlwZVByb2ZpbGVyL2VzNi1jbGFzc2VzLmpzOgorICAg
ICAgICAqIHR5cGVQcm9maWxlci9pbmhlcml0YW5jZS5qczoKKyAgICAgICAgKiB0eXBlUHJvZmls
ZXIvaW50NTItZGZnLmpzOgorICAgICAgICAqIHR5cGVQcm9maWxlci9sb29wLmpzOgorICAgICAg
ICAqIHR5cGVQcm9maWxlci9vcHRpb25hbC1maWVsZHMuanM6CisgICAgICAgICogdHlwZVByb2Zp
bGVyL292ZXJmbG93LmpzOgorICAgICAgICAqIHR5cGVQcm9maWxlci9yZXR1cm4uanM6CisgICAg
ICAgICogdHlwZVByb2ZpbGVyL3N5bWJvbC5qczoKKyAgICAgICAgKiB0eXBlUHJvZmlsZXIvd2Vp
cmQtcHJvdG90eXBlLWNoYWluLmpzOgorCiAyMDE3LTExLTIxICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtERkddW0ZUTF0gU3VwcG9ydCBNYXBTZXQg
LyBTZXRBZGQgaW50cmluc2ljcwpJbmRleDogSlNUZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2V4
ZWN1dGlvbi1jb3VudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL2NvbnRyb2xGbG93UHJvZmls
ZXIvZXhlY3V0aW9uLWNvdW50LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL2NvbnRy
b2xGbG93UHJvZmlsZXIvZXhlY3V0aW9uLWNvdW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNSBAQAordmFyIGJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCA9ICR2bS5iYXNpY0Jsb2NrRXhl
Y3V0aW9uQ291bnQ7CisKIGxvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOwogCiBmdW5jdGlvbiBu
b29wKCkgeyA7IH0KSW5kZXg6IEpTVGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9pZi1zdGF0ZW1l
bnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2lmLXN0YXRl
bWVudC5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVy
L2lmLXN0YXRlbWVudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBoYXNC
YXNpY0Jsb2NrRXhlY3V0ZWQgPSAkdm0uaGFzQmFzaWNCbG9ja0V4ZWN1dGVkOworCiBsb2FkKCIu
L2RyaXZlci9kcml2ZXIuanMiKTsKIAogdmFyIGEsIGIsIGMsIGQ7CkluZGV4OiBKU1Rlc3RzL2Nv
bnRyb2xGbG93UHJvZmlsZXIvbG9vcC1zdGF0ZW1lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvY29udHJvbEZsb3dQcm9maWxlci9sb29wLXN0YXRlbWVudHMuanMJKHJldmlzaW9uIDIyNTA5
NykKKysrIEpTVGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9sb29wLXN0YXRlbWVudHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgaGFzQmFzaWNCbG9ja0V4ZWN1dGVkID0g
JHZtLmhhc0Jhc2ljQmxvY2tFeGVjdXRlZDsKKwogbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7
CiAKIGZ1bmN0aW9uIGZvclJlZ3VsYXIobGltaXQpIHsKSW5kZXg6IEpTVGVzdHMvY29udHJvbEZs
b3dQcm9maWxlci9zd2l0Y2gtc3RhdGVtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL2Nv
bnRyb2xGbG93UHJvZmlsZXIvc3dpdGNoLXN0YXRlbWVudHMuanMJKHJldmlzaW9uIDIyNTA5NykK
KysrIEpTVGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9zd2l0Y2gtc3RhdGVtZW50cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQgPSAk
dm0uaGFzQmFzaWNCbG9ja0V4ZWN1dGVkOworCiBsb2FkKCIuL2RyaXZlci9kcml2ZXIuanMiKTsK
IAogdmFyIGEsIGIsIGM7CkluZGV4OiBKU1Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvdGVzdC1q
aXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL3Rlc3Qtaml0
LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvdGVz
dC1qaXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgaGFzQmFzaWNCbG9j
a0V4ZWN1dGVkID0gJHZtLmhhc0Jhc2ljQmxvY2tFeGVjdXRlZDsKKwogbG9hZCgiLi9kcml2ZXIv
ZHJpdmVyLmpzIik7CiAKIGZ1bmN0aW9uIHRpZXJVcFRvQmFzZWxpbmUoZnVuYywgYXJnKSAKSW5k
ZXg6IEpTVGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9kcml2ZXIvZHJpdmVyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9kcml2ZXIvZHJpdmVyLmpzCShyZXZp
c2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvZHJpdmVyL2RyaXZl
ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBoYXNCYXNpY0Jsb2NrRXhl
Y3V0ZWQgPSAkdm0uaGFzQmFzaWNCbG9ja0V4ZWN1dGVkOworCiBmdW5jdGlvbiBhc3NlcnQoY29u
ZGl0aW9uLCByZWFzb24pIHsKICAgICBpZiAoIWNvbmRpdGlvbikKICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKHJlYXNvbik7CkluZGV4OiBKU1Rlc3RzL2V4Y2VwdGlvbkZ1enovM2QtY3ViZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL2V4Y2VwdGlvbkZ1enovM2QtY3ViZS5qcwkocmV2aXNpb24g
MjI1MDk3KQorKysgSlNUZXN0cy9leGNlcHRpb25GdXp6LzNkLWN1YmUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1IEBACit2YXIgZW5hYmxlRXhjZXB0aW9uRnV6eiA9ICR2bS5lbmFibGVF
eGNlcHRpb25GdXp6OworCiB0cnkgewogCiAvLyAzRCBDdWJlIFJvdGF0aW9uCkluZGV4OiBKU1Rl
c3RzL2V4Y2VwdGlvbkZ1enovZGF0ZS1mb3JtYXQteHBhcmIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9leGNlcHRpb25GdXp6L2RhdGUtZm9ybWF0LXhwYXJiLmpzCShyZXZpc2lvbiAyMjUwOTcp
CisrKyBKU1Rlc3RzL2V4Y2VwdGlvbkZ1enovZGF0ZS1mb3JtYXQteHBhcmIuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgZW5hYmxlRXhjZXB0aW9uRnV6eiA9ICR2bS5lbmFi
bGVFeGNlcHRpb25GdXp6OworCiB0cnkgewogCiAvKgpJbmRleDogSlNUZXN0cy9leGNlcHRpb25G
dXp6L2VhcmxleS1ib3llci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL2V4Y2VwdGlvbkZ1enov
ZWFybGV5LWJveWVyLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL2V4Y2VwdGlvbkZ1
enovZWFybGV5LWJveWVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGVu
YWJsZUV4Y2VwdGlvbkZ1enogPSAkdm0uZW5hYmxlRXhjZXB0aW9uRnV6ejsKKwogdHJ5IHsKIC8v
IFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBzY2hlbWUyanMsIGV4Y2Vw
dCBmb3IgdGhlCiAvLyBiZW5jaG1hcmsgaGFybmVzcyBjb2RlIGF0IHRoZSBiZWdpbm5pbmcgYW5k
IGVuZCBvZiB0aGUgZmlsZS4KSW5kZXg6IEpTVGVzdHMvaGVhcFByb2ZpbGVyL2Jhc2ljLWVkZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvaGVhcFByb2ZpbGVyL2Jhc2ljLWVkZ2VzLmpzCShy
ZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL2hlYXBQcm9maWxlci9iYXNpYy1lZGdlcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYgQEAKK3ZhciBTaW1wbGVPYmplY3QgPSAkdm0uU2lt
cGxlT2JqZWN0OwordmFyIHNldEhpZGRlblZhbHVlID0gJHZtLnNldEhpZGRlblZhbHVlOworCiBs
b2FkKCIuL2RyaXZlci9kcml2ZXIuanMiKTsKIAogZnVuY3Rpb24gZXhjbHVkZVN0cnVjdHVyZShl
ZGdlcykgewpJbmRleDogSlNUZXN0cy9oZWFwUHJvZmlsZXIvcHJvcGVydHktZWRnZS10eXBlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL2hlYXBQcm9maWxlci9wcm9wZXJ0eS1lZGdlLXR5cGVz
LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL2hlYXBQcm9maWxlci9wcm9wZXJ0eS1l
ZGdlLXR5cGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNiBAQAordmFyIFNpbXBsZU9i
amVjdCA9ICR2bS5TaW1wbGVPYmplY3Q7Cit2YXIgc2V0SGlkZGVuVmFsdWUgPSAkdm0uc2V0SGlk
ZGVuVmFsdWU7CisKIGxvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOwogCiBsZXQgc2ltcGxlT2Jq
ZWN0ID0gbmV3IFNpbXBsZU9iamVjdDsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3Ry
eS1nZXQtYnktaWQtYmFzaWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1iYXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDcgQEAKIC8vIFRlc3QgdHJ5R2V0QnlJZCdzIHZhbHVlIHByb2ZpbGluZyBmZWVkYmFj
ayB3aXRob3V0IGdvaW5nIHRvbyBwb2x5bW9ycGhpYy4KIAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAk
dm0uY3JlYXRlQnVpbHRpbjsKKwogdmFyIGl0ID0gMWU1OwogCiBjb25zdCBjaGVjayA9IChnb3Qs
IGV4cGVjdCkgPT4geyBpZiAoZ290ICE9IGV4cGVjdCkgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
IGdvdCAiICsgZ290ICsgIiBleHBlY3RlZCAiICsgZXhwZWN0OyB9OwpJbmRleDogSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy90cnktZ2V0LWJ5LWlkLXBvbHltb3JwaGljLmpzCShy
ZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy90cnktZ2V0LWJ5LWlk
LXBvbHltb3JwaGljLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNyBAQAogLy8gVGVzdCB0
cnlHZXRCeUlkJ3MgdmFsdWUgcHJvZmlsaW5nIGZlZWRiYWNrIGFmdGVyIGl0J3MgdG9vIHBvbHlt
b3JwaGljLgogCit2YXIgY3JlYXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiB2YXIg
aXQgPSAxZTU7CiAKIGNvbnN0IGNoZWNrID0gKGdvdCwgZXhwZWN0KSA9PiB7IGlmIChnb3QgIT0g
ZXhwZWN0KSB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgZ290ICIgKyBnb3QgKyAiIGV4cGVjdGVk
ICIgKyBleHBlY3Q7IH07CkluZGV4OiBKU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC10
cnktZ2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0
LXRyeS1nZXQuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvbW9kdWxlcy9uYW1lc3Bh
Y2Utb2JqZWN0LXRyeS1nZXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIg
Y3JlYXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiBpbXBvcnQgeyBzaG91bGRCZSB9
IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CiBpbXBvcnQgKiBhcyBucyBmcm9tICIuL25h
bWVzcGFjZS1vYmplY3QtdHJ5LWdldC5qcyIKIApJbmRleDogSlNUZXN0cy9zdHJlc3MvYXJndW1l
bnQtY291bnQtYnl0ZWNvZGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJndW1l
bnQtY291bnQtYnl0ZWNvZGUuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNz
L2FyZ3VtZW50LWNvdW50LWJ5dGVjb2RlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBA
QAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKKwogY291bnQgPSBjcmVh
dGVCdWlsdGluKCIoZnVuY3Rpb24gKCkgeyByZXR1cm4gQGFyZ3VtZW50Q291bnQoKTsgfSkiKTsK
IGNvdW50Tm9JbmxpbmUgPSBjcmVhdGVCdWlsdGluKCIoZnVuY3Rpb24gKCkgeyByZXR1cm4gQGFy
Z3VtZW50Q291bnQoKTsgfSkiKTsKIG5vSW5saW5lKGNvdW50Tm9JbmxpbmUpOwpJbmRleDogSlNU
ZXN0cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLWJhc2ljLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvc3RyZXNzL2FyZ3VtZW50LWludHJpbnNpYy1iYXNpYy5qcwkocmV2aXNpb24gMjI1MDk3
KQorKysgSlNUZXN0cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLWJhc2ljLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVp
bHRpbjsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtaW5s
aW5pbmctdXNlLWNhbGxlci1hcmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJn
dW1lbnQtaW50cmluc2ljLWlubGluaW5nLXVzZS1jYWxsZXItYXJnLmpzCShyZXZpc2lvbiAyMjUw
OTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtaW5saW5pbmctdXNlLWNh
bGxlci1hcmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3JlYXRlQnVp
bHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCiAgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2Fy
Z3VtZW50LWludHJpbnNpYy1pbmxpbmluZy13aXRoLXJlc3VsdC1lc2NhcGUuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLWlubGluaW5nLXdpdGgtcmVz
dWx0LWVzY2FwZS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvYXJndW1l
bnQtaW50cmluc2ljLWlubGluaW5nLXdpdGgtcmVzdWx0LWVzY2FwZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47
CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLWlubGluaW5n
LXdpdGgtdmFyYXJnLXdpdGgtZW5vdWdoLWFyZ3VtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtaW5saW5pbmctd2l0aC12YXJhcmctd2l0aC1l
bm91Z2gtYXJndW1lbnRzLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9h
cmd1bWVudC1pbnRyaW5zaWMtaW5saW5pbmctd2l0aC12YXJhcmctd2l0aC1lbm91Z2gtYXJndW1l
bnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4g
PSAkdm0uY3JlYXRlQnVpbHRpbjsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgewogICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVu
dC1pbnRyaW5zaWMtaW5saW5pbmctd2l0aC12YXJhcmcuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLWlubGluaW5nLXdpdGgtdmFyYXJnLmpzCShyZXZp
c2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtaW5saW5p
bmctd2l0aC12YXJhcmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3Jl
YXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiBmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCiAgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL2FyZ3VtZW50LWludHJpbnNpYy1uZXN0ZWQtaW5saW5pbmcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLW5lc3RlZC1pbmxpbmluZy5qcwkocmV2
aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvYXJndW1lbnQtaW50cmluc2ljLW5lc3Rl
ZC1pbmxpbmluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVC
dWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
YXJndW1lbnQtaW50cmluc2ljLW5vdC1jb252ZXJ0LXRvLWdldC1hcmd1bWVudC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtbm90LWNvbnZlcnQtdG8t
Z2V0LWFyZ3VtZW50LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9hcmd1
bWVudC1pbnRyaW5zaWMtbm90LWNvbnZlcnQtdG8tZ2V0LWFyZ3VtZW50LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRp
bjsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVudC1pbnRyaW5zaWMtd2l0aC1z
dGFjay13cml0ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hcmd1bWVudC1pbnRy
aW5zaWMtd2l0aC1zdGFjay13cml0ZS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9z
dHJlc3MvYXJndW1lbnQtaW50cmluc2ljLXdpdGgtc3RhY2std3JpdGUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3JlYXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGlu
OworCiBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21hdGNoLWdldC1hcmd1bWVu
dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hcml0eS1taXNtYXRjaC1nZXQtYXJn
dW1lbnQuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL2FyaXR5LW1pc21h
dGNoLWdldC1hcmd1bWVudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBj
cmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpCiB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9hcnJheS1tZXNzYWdlLXBhc3NpbmcuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9zdHJlc3MvYXJyYXktbWVzc2FnZS1wYXNzaW5nLmpzCShyZXZpc2lvbiAyMjUwOTcpCisr
KyBKU1Rlc3RzL3N0cmVzcy9hcnJheS1tZXNzYWdlLXBhc3NpbmcuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw4IEBACiAvLyBUaGlzIHRlc3Qgd2FzIG9yaWdpbmFsbHkgZm9yIG1lc3NhZ2Ug
cGFzc2luZyBvZiB0eXBlZCBhcnJheXMuIEJ1dCBpdCB0dXJucyBvdXQgdGhhdCBpdCBpcyBhIGdv
b2QKIC8vIHN0cmVzcyBvZiBKU0MgaW5saW5lIGNhY2hlcyBhcyB3ZWxsLiBTbywgdGhpcyBpcyBh
IERPTWxlc3MgdmVyc2lvbiBvZiB0aGUgdGVzdC4KIAordmFyIGFib3J0ID0gJHZtLmFib3J0Owor
CiB2YXIgd2luZG93OwogCiAoZnVuY3Rpb24oKSB7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcnJh
eS1wdXNoLXdpdGgtZm9yY2UtZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9h
cnJheS1wdXNoLXdpdGgtZm9yY2UtZXhpdC5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0
cy9zdHJlc3MvYXJyYXktcHVzaC13aXRoLWZvcmNlLWV4aXQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1IEBACit2YXIgY3JlYXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiB2
YXIgdGFyZ2V0ID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uKGFycmF5KQogewogICAgIGlmIChh
cnJheSkgewpJbmRleDogSlNUZXN0cy9zdHJlc3MvY2hlY2stZG9tLXdpdGgtc2lnbmF0dXJlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NoZWNrLWRvbS13aXRoLXNpZ25hdHVyZS5q
cwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvY2hlY2stZG9tLXdpdGgtc2ln
bmF0dXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZURPTUpJ
VEZ1bmN0aW9uT2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVEZ1bmN0aW9uT2JqZWN0OworCiBmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NoZWNrLXN1Yi1jbGFzcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9jaGVjay1zdWItY2xhc3MuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpT
VGVzdHMvc3RyZXNzL2NoZWNrLXN1Yi1jbGFzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDYgQEAKK3ZhciBjcmVhdGVET01KSVROb2RlT2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVE5vZGVP
YmplY3Q7Cit2YXIgY3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCA9ICR2bS5jcmVhdGVE
T01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OworCiBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCiAgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2Nv
bXBhcmUtZXEtaW5jb21wbGV0ZS1wcm9maWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3Ry
ZXNzL2NvbXBhcmUtZXEtaW5jb21wbGV0ZS1wcm9maWxlLmpzCShyZXZpc2lvbiAyMjUwOTcpCisr
KyBKU1Rlc3RzL3N0cmVzcy9jb21wYXJlLWVxLWluY29tcGxldGUtcHJvZmlsZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1
aWx0aW47CisKIGNvbnN0IHRlc3QgPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKGFyZykgewog
ICAgIGxldCBvdGhlciA9IEB1bmRlZmluZWQ7CiAgICAgQGlkV2l0aFByb2ZpbGUob3RoZXIsICJT
cGVjT2JqZWN0Iik7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1pbmxpbmUt
Y2FjaGluZy1vbmUtbGV2ZWwtdXAtcHJvdG8tY2hhaW4uanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtaW5saW5lLWNhY2hpbmctb25lLWxldmVsLXVwLXByb3Rv
LWNoYWluLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0
LXNldC1pbmxpbmUtY2FjaGluZy1vbmUtbGV2ZWwtdXAtcHJvdG8tY2hhaW4uanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3JlYXRlQ3VzdG9tVGVzdEdldHRlclNldHRlciA9
ICR2bS5jcmVhdGVDdXN0b21UZXN0R2V0dGVyU2V0dGVyOworCiBmdW5jdGlvbiBhc3NlcnQoYiwg
bSkgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQ6IiArIG0pOwpJ
bmRleDogSlNUZXN0cy9zdHJlc3MvZG8tZXZhbC12aXJ0dWFsLWNhbGwtY29ycmVjdGx5LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RvLWV2YWwtdmlydHVhbC1jYWxsLWNvcnJlY3Rs
eS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZG8tZXZhbC12aXJ0dWFs
LWNhbGwtY29ycmVjdGx5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGFi
b3J0ID0gJHZtLmFib3J0OworCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikgewog
ICAgICAgICBhYm9ydCgpOyAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbS1qaXQtd2l0aC1wb2x5
LXByb3RvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RvbS1qaXQtd2l0aC1wb2x5
LXByb3RvLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9kb20taml0LXdp
dGgtcG9seS1wcm90by5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVh
dGVET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QgPSAgJHZtLmNyZWF0ZURPTUpJVEdldHRlckJhc2VK
U09iamVjdDsKKwogZnVuY3Rpb24gYXNzZXJ0KGIsIG0pIHsKICAgICBpZiAoIWIpCiAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkOiIgKyBtKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbWpp
dC1leGNlcHRpb24taWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9taml0LWV4
Y2VwdGlvbi1pYy5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZG9taml0
LWV4Y2VwdGlvbi1pYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVh
dGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVEdldHRlckNvbXBs
ZXhPYmplY3Q7CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kb21qaXQtZXhj
ZXB0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RvbWppdC1leGNlcHRpb24u
anMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL2RvbWppdC1leGNlcHRpb24u
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3JlYXRlRE9NSklUR2V0dGVy
Q29tcGxleE9iamVjdCA9ICR2bS5jcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0OworCiBm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhh
Y3R1YWwpfWApOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4LXdp
dGgtaW5jb3JyZWN0LW9iamVjdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9kb21q
aXQtZ2V0dGVyLWNvbXBsZXgtd2l0aC1pbmNvcnJlY3Qtb2JqZWN0LmpzCShyZXZpc2lvbiAyMjUw
OTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXgtd2l0aC1pbmNvcnJl
Y3Qtb2JqZWN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZURP
TUpJVEdldHRlckNvbXBsZXhPYmplY3QgPSAkdm0uY3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9i
amVjdDsKKwogZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CiAgICAg
dmFyIGVycm9yVGhyb3duID0gZmFsc2U7CiAgICAgdmFyIGVycm9yID0gbnVsbDsKSW5kZXg6IEpT
VGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanMJKHJldmlzaW9uIDIyNTA5NykKKysr
IEpTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0ID0gJHZt
LmNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3Q7CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvZG9taml0LWdldHRlci1wb2x5LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rl
c3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXBvbHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw1IEBACit2YXIgY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVEdl
dHRlck9iamVjdDsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbWppdC1n
ZXR0ZXItcHJvdG8uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRl
ci1wcm90by5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZG9taml0LWdl
dHRlci1wcm90by5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVE
T01KSVROb2RlT2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVE5vZGVPYmplY3Q7CisKIGZ1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9
YCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBvbHkuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1zdXBlci1wb2x5LmpzCShy
ZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXN1cGVyLXBv
bHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3JlYXRlRE9NSklUR2V0
dGVyT2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVEdldHRlck9iamVjdDsKKwogZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQog
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItdHJ5LWNhdGNoLWdldHRlci1hcy1n
ZXQtYnktaWQtcmVnaXN0ZXItcmVzdG9yYXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9z
dHJlc3MvZG9taml0LWdldHRlci10cnktY2F0Y2gtZ2V0dGVyLWFzLWdldC1ieS1pZC1yZWdpc3Rl
ci1yZXN0b3JhdGlvbi5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZG9t
aml0LWdldHRlci10cnktY2F0Y2gtZ2V0dGVyLWFzLWdldC1ieS1pZC1yZWdpc3Rlci1yZXN0b3Jh
dGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVET01KSVRH
ZXR0ZXJDb21wbGV4T2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3Q7
CisKIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3IoImJh
ZCB2YWx1ZSIpOwogfQpJbmRleDogSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci10eXBlLWNo
ZWNrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItdHlwZS1j
aGVjay5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRl
ci10eXBlLWNoZWNrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0
ZURPTUpJVEdldHRlck9iamVjdCA9ICR2bS5jcmVhdGVET01KSVRHZXR0ZXJPYmplY3Q7CisKIGZ1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFj
dHVhbCl9YCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMJKHJldmlzaW9uIDIyNTA5NykK
KysrIEpTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw1IEBACit2YXIgY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0ID0gJHZtLmNyZWF0ZURPTUpJ
VEdldHRlck9iamVjdDsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewog
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2V4aXQt
ZHVyaW5nLWlubGluZWQtYXJpdHktZml4dXAtcmVjb3Zlci1wcm9wZXItZnJhbWUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZXhpdC1kdXJpbmctaW5saW5lZC1hcml0eS1maXh1cC1y
ZWNvdmVyLXByb3Blci1mcmFtZS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJl
c3MvZXhpdC1kdXJpbmctaW5saW5lZC1hcml0eS1maXh1cC1yZWNvdmVyLXByb3Blci1mcmFtZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVCdWlsdGluID0gJHZt
LmNyZWF0ZUJ1aWx0aW47CisKIGxldCBpOwogZnVuY3Rpb24gdmVyaWZ5KGEsIGIsIGMsIGQsIGUs
IGYpIHsKICAgICBmdW5jdGlvbiBhc3NlcnQoYiwgbSkgewpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
Zm9yLWluLXByb3h5LXRhcmdldC1jaGFuZ2VkLXN0cnVjdHVyZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9mb3ItaW4tcHJveHktdGFyZ2V0LWNoYW5nZWQtc3RydWN0dXJlLmpzCShy
ZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9mb3ItaW4tcHJveHktdGFyZ2V0LWNo
YW5nZWQtc3RydWN0dXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNy
ZWF0ZVByb3h5ID0gJHZtLmNyZWF0ZVByb3h5OworCiB2YXIgdGhlTzsKIAogZnVuY3Rpb24gZGVs
ZXRlQWxsKCkgewpJbmRleDogSlNUZXN0cy9zdHJlc3MvZm9yLWluLXByb3h5LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2Zvci1pbi1wcm94eS5qcwkocmV2aXNpb24gMjI1MDk3KQor
KysgSlNUZXN0cy9zdHJlc3MvZm9yLWluLXByb3h5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNSBAQAordmFyIGNyZWF0ZVByb3h5ID0gJHZtLmNyZWF0ZVByb3h5OworCiBmdW5jdGlvbiBm
b28ob18pIHsKICAgICB2YXIgbyA9IG9fOwogICAgIHZhciByZXN1bHQgPSAwOwpJbmRleDogSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdGlvbmFsLW9wYXF1ZS1yb290cy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0aW9uYWwtb3BhcXVlLXJvb3RzLmpzCShyZXZpc2lvbiAyMjUw
OTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9nZW5lcmF0aW9uYWwtb3BhcXVlLXJvb3RzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsOSBAQAogLy8gVGVzdHMgdGhhdCBvcGFxdWUgcm9vdHMgYmVo
YXZlIGNvcnJlY3RseSBkdXJpbmcgeW91bmcgZ2VuZXJhdGlvbiBjb2xsZWN0aW9ucwogCit2YXIg
RWxlbWVudCA9ICR2bS5FbGVtZW50OwordmFyIFJvb3QgPSAkdm0uUm9vdDsKK3ZhciBnZXRFbGVt
ZW50ID0gJHZtLmdldEVsZW1lbnQ7CisKIHRyeSB7CiAgICAgLy8gcmVncmVzc2lvbiB0ZXN0IGZv
ciBidWcgMTYwNzczLiAgVGhpcyBzaG91bGQgbm90IGNyYXNoLgogICAgIG5ldyAoRWxlbWVudC5i
aW5kKCkpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24t
c2V0dGluZy0yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1jb25zdC1y
ZWRlY2xhcmF0aW9uLXNldHRpbmctMi5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9z
dHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0dGluZy0yLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIHNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3Vs
ZE5vdFRocm93ID0gJHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93
OworCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJCYWQgYXNzZXJ0aW9uLiIpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWNv
bnN0LXJlZGVjbGFyYXRpb24tc2V0dGluZy0zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3Ry
ZXNzL2dsb2JhbC1jb25zdC1yZWRlY2xhcmF0aW9uLXNldHRpbmctMy5qcwkocmV2aXNpb24gMjI1
MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0dGlu
Zy0zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIHNldEdsb2JhbENvbnN0
UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93ID0gJHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJh
dGlvblNob3VsZE5vdFRocm93OworCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikK
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uLiIpOwpJbmRleDogSlNUZXN0
cy9zdHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0dGluZy00LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1jb25zdC1yZWRlY2xhcmF0aW9uLXNldHRpbmct
NC5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWNvbnN0LXJl
ZGVjbGFyYXRpb24tc2V0dGluZy00LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAor
dmFyIHNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93ID0gJHZtLnNldEds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93OworCiBmdW5jdGlvbiBhc3NlcnQo
YikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9u
LiIpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0
dGluZy01LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1jb25zdC1yZWRl
Y2xhcmF0aW9uLXNldHRpbmctNS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJl
c3MvZ2xvYmFsLWNvbnN0LXJlZGVjbGFyYXRpb24tc2V0dGluZy01LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNSBAQAordmFyIHNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5v
dFRocm93ID0gJHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93Owor
CiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgYXNzZXJ0aW9uLiIpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWNvbnN0
LXJlZGVjbGFyYXRpb24tc2V0dGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9n
bG9iYWwtY29uc3QtcmVkZWNsYXJhdGlvbi1zZXR0aW5nLmpzCShyZXZpc2lvbiAyMjUwOTcpCisr
KyBKU1Rlc3RzL3N0cmVzcy9nbG9iYWwtY29uc3QtcmVkZWNsYXJhdGlvbi1zZXR0aW5nLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIHNldEdsb2JhbENvbnN0UmVkZWNsYXJh
dGlvblNob3VsZE5vdFRocm93ID0gJHZtLnNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3Vs
ZE5vdFRocm93OworCiBmdW5jdGlvbiBhc3NlcnQoYikgewogICAgIGlmICghYikKICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uLiIpOwpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
aW1wb3J0LWJhc2ljLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2ltcG9ydC1iYXNp
Yy5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvaW1wb3J0LWJhc2ljLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGFib3J0ID0gJHZtLmFib3J0Owor
CiAoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHsgc2hvdWxkQmUgfSA9IGF3YWl0IGlt
cG9ydCgnLi9pbXBvcnQtdGVzdHMvc2hvdWxkLmpzJyk7CiAgICAgewpJbmRleDogSlNUZXN0cy9z
dHJlc3MvaW1wb3J0LWZyb20tZXZhbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9p
bXBvcnQtZnJvbS1ldmFsLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9p
bXBvcnQtZnJvbS1ldmFsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGFi
b3J0ID0gJHZtLmFib3J0OworCiAoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHsgc2hv
dWxkQmUsIHNob3VsZFRocm93IH0gPSBhd2FpdCBpbXBvcnQoIi4vaW1wb3J0LXRlc3RzL3Nob3Vs
ZC5qcyIpOwogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9pbXBvcnQtcmVqZWN0LXdpdGgtZXhjZXB0
aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2ltcG9ydC1yZWplY3Qtd2l0aC1l
eGNlcHRpb24uanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL2ltcG9ydC1y
ZWplY3Qtd2l0aC1leGNlcHRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2
YXIgYWJvcnQgPSAkdm0uYWJvcnQ7CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCiB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCkluZGV4OiBKU1Rlc3RzL3N0cmVz
cy9pbXBvcnQtc3ludGF4LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2ltcG9ydC1z
eW50YXguanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50
YXguanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgYWJvcnQgPSAkdm0uYWJv
cnQ7CisKIGZ1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKICAgICB2
YXIgZXJyb3IgPSBudWxsOwogICAgIHRyeSB7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9pbXB1cmUt
Z2V0LW93bi1wcm9wZXJ0eS1zbG90LWlubGluZS1jYWNoZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9pbXB1cmUtZ2V0LW93bi1wcm9wZXJ0eS1zbG90LWlubGluZS1jYWNoZS5qcwko
cmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvaW1wdXJlLWdldC1vd24tcHJvcGVy
dHktc2xvdC1pbmxpbmUtY2FjaGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACi0K
K3ZhciBjcmVhdGVJbXB1cmVHZXR0ZXIgPSAkdm0uY3JlYXRlSW1wdXJlR2V0dGVyOwordmFyIHNl
dEltcHVyZUdldHRlckRlbGVnYXRlID0gJHZtLnNldEltcHVyZUdldHRlckRlbGVnYXRlOwogCiB2
YXIgaWcgPSBjcmVhdGVJbXB1cmVHZXR0ZXIobnVsbCk7CiBpZy54ID0gNDI7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9pcy1jb25zdHJ1Y3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVz
cy9pcy1jb25zdHJ1Y3Rvci5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3Mv
aXMtY29uc3RydWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3Jl
YXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiBmdW5jdGlvbiBhc3NlcnQoeCkgewog
ICAgIGlmICgheCkKICAgICAgICAgdGhyb3cgRXJyb3IoIkJhZCIpOwpJbmRleDogSlNUZXN0cy9z
dHJlc3MvaXN0eXBlZGFycmF5dmlldy1pbnRyaW5zaWMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvaXN0eXBlZGFycmF5dmlldy1pbnRyaW5zaWMuanMJKHJldmlzaW9uIDIyNTA5NykK
KysrIEpTVGVzdHMvc3RyZXNzL2lzdHlwZWRhcnJheXZpZXctaW50cmluc2ljLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVp
bHRpbjsKKwogbGV0IHR5cGVkQXJyYXlzID0gW0ludDhBcnJheSwgVWludDhBcnJheSwgVWludDhD
bGFtcGVkQXJyYXksIEludDE2QXJyYXksIFVpbnQxNkFycmF5LCBJbnQzMkFycmF5LCBVaW50MzJB
cnJheSwgRmxvYXQzMkFycmF5LCBGbG9hdDY0QXJyYXldOwogCiBmdW5jdGlvbiBtYWtlRm4oZG9u
dElubGluZSkgewpJbmRleDogSlNUZXN0cy9zdHJlc3MvanNjLXNldEltcHVyZUdldHRlckRlbGVn
YXRlLW9uLWJhZC10eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2pzYy1zZXRJ
bXB1cmVHZXR0ZXJEZWxlZ2F0ZS1vbi1iYWQtdHlwZS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysg
SlNUZXN0cy9zdHJlc3MvanNjLXNldEltcHVyZUdldHRlckRlbGVnYXRlLW9uLWJhZC10eXBlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsOCBAQAogLy9AIHJ1bkZUTE5vQ0pJVAogLy8gVGhp
cyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaCBvciB0cmlnZ2VyIGFueSBhc3NlcnRp
b24gZmFpbHVyZXMuCiAKK3ZhciBzZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSA9ICR2bS5zZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZTsKKwogZnVuY3Rpb24gc2hvdWxkRXF1YWwoYWN0dWFsLCBleHBlY3Rl
ZCkgewogICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIHsKICAgICAgICAgdGhyb3cgIkVSUk9S
OiBleHBlY3QgIiArIGV4cGVjdGVkICsgIiwgYWN0dWFsICIgKyBhY3R1YWw7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9qc2MtdGVzdC1mdW5jdGlvbnMtc2hvdWxkLWJlLW1vcmUtcm9idXN0LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2pzYy10ZXN0LWZ1bmN0aW9ucy1zaG91bGQtYmUt
bW9yZS1yb2J1c3QuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL2pzYy10
ZXN0LWZ1bmN0aW9ucy1zaG91bGQtYmUtbW9yZS1yb2J1c3QuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw5IEBACiAvL0AgcnVuRlRMTm9DSklUCiAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0
IGRvZXMgbm90IGNyYXNoIG9yIHRyaWdnZXIgYW55IGFzc2VydGlvbiBmYWlsdXJlcy4KIAordmFy
IGdldEhpZGRlblZhbHVlID0gICR2bS5nZXRIaWRkZW5WYWx1ZTsKK3ZhciBzZXRIaWRkZW5WYWx1
ZSA9ICAkdm0uc2V0SGlkZGVuVmFsdWU7CisKIGZ1bmN0aW9uIHNob3VsZEVxdWFsKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKSB7CiAgICAgICAgIHRocm93
ICJFUlJPUjogZXhwZWN0ICIgKyBleHBlY3RlZCArICIsIGFjdHVhbCAiICsgYWN0dWFsOwpJbmRl
eDogSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXRvU3RyaW5nLXdpdGgtcHJveHkuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXRvU3RyaW5nLXdpdGgtcHJveHkuanMJKHJldmlz
aW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL29iamVjdC10b1N0cmluZy13aXRoLXByb3h5
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZVByb3h5ID0gJHZt
LmNyZWF0ZVByb3h5OworCiBsZXQgZm9vID0ge307CiBsZXQgcHJvcGVydGllcyA9IFtdOwogbGV0
IHAgPSBuZXcgUHJveHkoZm9vLCB7IGdldDoodGFyZ2V0LCBwcm9wZXJ0eSkgPT4gewpJbmRleDog
SlNUZXN0cy9zdHJlc3MvcG9seS1wcm90by1jdXN0b20tdmFsdWUtYW5kLWFjY2Vzc29yLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3BvbHktcHJvdG8tY3VzdG9tLXZhbHVlLWFuZC1h
Y2Nlc3Nvci5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvcG9seS1wcm90
by1jdXN0b20tdmFsdWUtYW5kLWFjY2Vzc29yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NSBAQAordmFyIGNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIgPSAkdm0uY3JlYXRlQ3VzdG9t
VGVzdEdldHRlclNldHRlcjsKKwogZnVuY3Rpb24gYXNzZXJ0KGIsIG0pIHsKICAgICBpZiAoIWIp
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkOiIgKyBtKTsKSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL3Byb3h5LWlubGluZS1jYWNoZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9w
cm94eS1pbmxpbmUtY2FjaGUuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNz
L3Byb3h5LWlubGluZS1jYWNoZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3Zh
ciBjcmVhdGVQcm94eSA9ICR2bS5jcmVhdGVQcm94eTsKKwogdmFyIG5pdGVycyA9IDEwMDAwMDsK
IAogLy8gcHJveHkgLT4gdGFyZ2V0IC0+IHgKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3JlLWV4ZWN1
dGUtZXJyb3ItbW9kdWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3JlLWV4ZWN1
dGUtZXJyb3ItbW9kdWxlLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9y
ZS1leGVjdXRlLWVycm9yLW1vZHVsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAK
K3ZhciBhYm9ydCA9ICR2bS5hYm9ydDsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkKIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL3JlZ3Jlc3MtMTUwNTMyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3JlZ3Jl
c3MtMTUwNTMyLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNz
LTE1MDUzMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDggQEAKIC8vIE1ha2VzIHN1cmUg
d2UgZG9uJ3QgdXNlIGJhc2UncyB0YWcgcmVnaXN0ZXIgb24gMzItYml0IHdoZW4gYW4gaW5saW5l
IGNhY2hlIGZhaWxzIGFuZCBqdW1wcyB0byB0aGUgc2xvdyBwYXRoCiAvLyBiZWNhdXNlIHRoZSBz
bG93IHBhdGggZGVwZW5kcyBvbiB0aGUgYmFzZSBiZWluZyBwcmVzZW50LgogCit2YXIgY3JlYXRl
Q3VzdG9tR2V0dGVyT2JqZWN0ID0gJHZtLmNyZWF0ZUN1c3RvbUdldHRlck9iamVjdDsKKwogZnVu
Y3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkZGQiKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtMTU2OTkyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtMTU2OTkyLmpzCShyZXZpc2lvbiAyMjUwOTcp
CisrKyBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE1Njk5Mi5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDcgQEAKIC8vIFZlcmlmeSB0aGF0IERGRyBUcnlHZXRCeUlkIG5vZGVzIHByb3Blcmx5
IHNhdmUgbGl2ZSByZWdpc3RlcnMuICBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC4KIAordmFy
IGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKKwogZnVuY3Rpb24gdHJ5TXVsdGlw
bGVHZXRCeUlkcygpIHsgcmV0dXJuICcoZnVuY3Rpb24gKGJhc2UpIHsgcmV0dXJuIEB0cnlHZXRC
eUlkKGJhc2UsICJ2YWx1ZTEiKSArIEB0cnlHZXRCeUlkKGJhc2UsICJ2YWx1ZTIiKSArIEB0cnlH
ZXRCeUlkKGJhc2UsICJ2YWx1ZTMiKTsgfSknOyB9IAogCiAKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L3JlZ3Jlc3MtMTc5NjE5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3JlZ3Jlc3Mt
MTc5NjE5LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE3
OTYxOS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKIC8vQCBydW5EZWZhdWx0CiAK
K3ZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47Cit2YXIgbG9hZEdldHRlckZy
b21HZXR0ZXJTZXR0ZXIgPSAkdm0ubG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXI7CisKIHZhciBl
eGNlcHRpb247CiB2YXIgZ2V0dGVyOwogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9ydW50aW1lLWFy
cmF5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3J1bnRpbWUtYXJyYXkuanMJKHJl
dmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL3J1bnRpbWUtYXJyYXkuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgY3JlYXRlUnVudGltZUFycmF5ID0gJHZtLmNy
ZWF0ZVJ1bnRpbWVBcnJheTsKKwogZnVuY3Rpb24gdGVzdEFycmF5Q29uY2F0KCkgewogICAgIHZh
ciBhcnJheSA9IGNyZWF0ZVJ1bnRpbWVBcnJheSgxLCAyLCAzKTsKICAgICB2YXIgcmVzdWx0ID0g
YXJyYXkuY29uY2F0KCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1t
aWNyb3Rhc2tzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3NhbXBsaW5nLXByb2Zp
bGVyLW1pY3JvdGFza3MuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3RyZXNzL3Nh
bXBsaW5nLXByb2ZpbGVyLW1pY3JvdGFza3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
IEBACit2YXIgYWJvcnQgPSAkdm0uYWJvcnQ7CisKIGlmIChwbGF0Zm9ybVN1cHBvcnRzU2FtcGxp
bmdQcm9maWxlcigpKSB7CiAgICAgbG9hZCgiLi9zYW1wbGluZy1wcm9maWxlci9zYW1wbGluZ1By
b2ZpbGVyLmpzIik7CiAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3NoYWRvdy1jaGlja2VuLWVuYWJs
ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvc2hhZG93LWNoaWNrZW4tZW5hYmxl
ZC5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3Mvc2hhZG93LWNoaWNrZW4t
ZW5hYmxlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDggQEAKIAogInVzZSBzdHJpY3Qi
OwogCit2YXIgc2hhZG93Q2hpY2tlbkZ1bmN0aW9uc09uU3RhY2sgPSAkdm0uc2hhZG93Q2hpY2tl
bkZ1bmN0aW9uc09uU3RhY2s7CisKIHZhciB2ZXJib3NlID0gZmFsc2U7CiAKIGxvYWQoInJlc291
cmNlcy9zaGFkb3ctY2hpY2tlbi1zdXBwb3J0LmpzIik7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9z
cHJlYWQtY29ycmVjdC1nbG9iYWwtb2JqZWN0LW9uLWV4Y2VwdGlvbi5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL3N0cmVzcy9zcHJlYWQtY29ycmVjdC1nbG9iYWwtb2JqZWN0LW9uLWV4Y2VwdGlv
bi5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3Mvc3ByZWFkLWNvcnJlY3Qt
Z2xvYmFsLW9iamVjdC1vbi1leGNlcHRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
IEBACit2YXIgZ2xvYmFsT2JqZWN0Rm9yT2JqZWN0ID0gJHZtLmdsb2JhbE9iamVjdEZvck9iamVj
dDsKKwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOwpJbmRleDogSlNUZXN0cy9zdHJlc3Mvc3VwZXItZ2V0
LWJ5LWlkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3N1cGVyLWdldC1ieS1pZC5q
cwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3Mvc3VwZXItZ2V0LWJ5LWlkLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNyBAQAogInVzZSBzdHJpY3QiOwogCit2YXIgY3Jl
YXRlQ3VzdG9tR2V0dGVyT2JqZWN0ID0gJHZtLmNyZWF0ZUN1c3RvbUdldHRlck9iamVjdDsKKwog
ZnVuY3Rpb24gYXNzZXJ0KGEpIHsKICAgICBpZiAoIWEpCiAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiQmFkISIpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50
cy5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvdGFpbENhbGxGb3J3YXJk
QXJndW1lbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1
aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKKwogLy8gVGhpcyBpcyBwcmV0dHkgYmFkIGJ1dCBJ
IG5lZWQgYSBwcml2YXRlIG5hbWUuCiB2YXIgcHV0RnVuY1RvUHJpdmF0ZU5hbWUgPSBjcmVhdGVC
dWlsdGluKGAoZnVuY3Rpb24oZnVuYykgeyBAYXJyYXlJdGVyYXRvcklzRG9uZSA9IGZ1bmMgfSlg
KQogcHV0RnVuY1RvUHJpdmF0ZU5hbWUoZnVuY3Rpb24gKGEsYikgeyByZXR1cm4gYjsgfSkKSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtYm9vbGVhbi1lZGdlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtYm9vbGVhbi1l
ZGdlLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy90by1vYmplY3QtaW50
cmluc2ljLWJvb2xlYW4tZWRnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3Zh
ciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CisKIGZ1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwpJbmRleDogSlNUZXN0
cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1udWxsLW9yLXVuZGVmaW5lZC1lZGdlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVsbC1vci11
bmRlZmluZWQtZWRnZS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvdG8t
b2JqZWN0LWludHJpbnNpYy1udWxsLW9yLXVuZGVmaW5lZC1lZGdlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsK
KwogZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CiAgICAgdmFyIGVy
cm9yVGhyb3duID0gZmFsc2U7CiAgICAgdmFyIGVycm9yID0gbnVsbDsKSW5kZXg6IEpTVGVzdHMv
c3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVtYmVyLWVkZ2UuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1udW1iZXItZWRnZS5qcwkocmV2aXNp
b24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1udW1iZXIt
ZWRnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVCdWlsdGlu
ID0gJHZtLmNyZWF0ZUJ1aWx0aW47CisKIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvdG8tb2Jq
ZWN0LWludHJpbnNpYy1vYmplY3QtZWRnZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVz
cy90by1vYmplY3QtaW50cmluc2ljLW9iamVjdC1lZGdlLmpzCShyZXZpc2lvbiAyMjUwOTcpCisr
KyBKU1Rlc3RzL3N0cmVzcy90by1vYmplY3QtaW50cmluc2ljLW9iamVjdC1lZGdlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRl
QnVpbHRpbjsKKwogZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy90by1vYmplY3QtaW50cmluc2lj
LXN0cmluZy1lZGdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1p
bnRyaW5zaWMtc3RyaW5nLWVkZ2UuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvc3Ry
ZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtc3RyaW5nLWVkZ2UuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1IEBACit2YXIgY3JlYXRlQnVpbHRpbiA9ICR2bS5jcmVhdGVCdWlsdGluOworCiBm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtc3ltYm9sLWVkZ2Uu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1zeW1i
b2wtZWRnZS5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0
LWludHJpbnNpYy1zeW1ib2wtZWRnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAK
K3ZhciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47CisKIGZ1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwpJbmRleDogSlNU
ZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L3N0cmVzcy90by1vYmplY3QtaW50cmluc2ljLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rl
c3RzL3N0cmVzcy90by1vYmplY3QtaW50cmluc2ljLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNSBAQAordmFyIGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKKwogZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cklu
ZGV4OiBKU1Rlc3RzL3N0cmVzcy90cnktY2F0Y2gtY3VzdG9tLWdldHRlci1hcy1nZXQtYnktaWQu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvdHJ5LWNhdGNoLWN1c3RvbS1nZXR0ZXIt
YXMtZ2V0LWJ5LWlkLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy90cnkt
Y2F0Y2gtY3VzdG9tLWdldHRlci1hcy1nZXQtYnktaWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw1IEBACit2YXIgY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0ID0gJHZtLmNyZWF0ZUN1c3Rv
bUdldHRlck9iamVjdDsKKwogZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICBpZiAoIWIpIHRocm93
IG5ldyBFcnJvcigiYiIpOwogfQpJbmRleDogSlNUZXN0cy9zdHJlc3MvdHJ5LWdldC1ieS1pZC1w
b2x5LXByb3RvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3RyeS1nZXQtYnktaWQt
cG9seS1wcm90by5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9zdHJlc3MvdHJ5LWdl
dC1ieS1pZC1wb2x5LXByb3RvLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNiBAQAordmFy
IGNyZWF0ZUJ1aWx0aW4gPSAkdm0uY3JlYXRlQnVpbHRpbjsKK3ZhciBsb2FkR2V0dGVyRnJvbUdl
dHRlclNldHRlciA9ICR2bS5sb2FkR2V0dGVyRnJvbUdldHRlclNldHRlcjsKKwogZnVuY3Rpb24g
YXNzZXJ0KGIsIG0pIHsKICAgICBpZiAoIWIpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFk
OiIgKyBtKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3RyeS1nZXQtYnktaWQtc2hvdWxkLXNwaWxs
LXJlZ2lzdGVycy1kZmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvdHJ5LWdldC1i
eS1pZC1zaG91bGQtc3BpbGwtcmVnaXN0ZXJzLWRmZy5qcwkocmV2aXNpb24gMjI1MDk3KQorKysg
SlNUZXN0cy9zdHJlc3MvdHJ5LWdldC1ieS1pZC1zaG91bGQtc3BpbGwtcmVnaXN0ZXJzLWRmZy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBjcmVhdGVCdWlsdGluID0gJHZt
LmNyZWF0ZUJ1aWx0aW47CisKIGxldCBmID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uIChhcmcp
IHsgCiAgICAgbGV0IHIgPSBAdHJ5R2V0QnlJZChhcmcsICJwcm90b3R5cGUiKTsKICAgICBpZiAo
YXJnICE9PSB0cnVlKSB0aHJvdyBuZXcgQEVycm9yKCJCYWQgY2xvYmJlciBvZiBhcmciKTsKSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL3RyeS1nZXQtYnktaWQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvdHJ5LWdldC1ieS1pZC5qcwkocmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy9z
dHJlc3MvdHJ5LWdldC1ieS1pZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYgQEAKK3Zh
ciBjcmVhdGVCdWlsdGluID0gJHZtLmNyZWF0ZUJ1aWx0aW47Cit2YXIgZ2V0R2V0dGVyU2V0dGVy
ID0gJHZtLmdldEdldHRlclNldHRlcjsKKwogZnVuY3Rpb24gdHJ5R2V0QnlJZFRleHQocHJvcGVy
dHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9uIChiYXNlKSB7IHJldHVybiBAdHJ5R2V0QnlJZChi
YXNlLCAnJHtwcm9wZXJ0eU5hbWV9Jyk7IH0pYDsgfQogCiBmdW5jdGlvbiB0cnlHZXRCeUlkVGV4
dFN0cmljdChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rpb24gKGJhc2UpIHsgInVzZSBz
dHJpY3QiOyByZXR1cm4gQHRyeUdldEJ5SWQoYmFzZSwgJyR7cHJvcGVydHlOYW1lfScpOyB9KWA7
IH0KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctY2hpY2tlbi1zdXBwb3J0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctY2hpY2tl
bi1zdXBwb3J0LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZXNvdXJj
ZXMvc2hhZG93LWNoaWNrZW4tc3VwcG9ydC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDcg
QEAKICJ1c2Ugc3RyaWN0IjsKIAordmFyIHNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrID0g
JHZtLnNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrOworCiBmdW5jdGlvbiBkZXNjcmliZUZ1
bmN0aW9uKGYpCiB7CiAgICAgdmFyIG5hbWU7CkluZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9h
cnJvdy1mdW5jdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90eXBlUHJvZmlsZXIvYXJy
b3ctZnVuY3Rpb25zLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3R5cGVQcm9maWxl
ci9hcnJvdy1mdW5jdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2IEBACit2YXIg
ZmluZFR5cGVGb3JFeHByZXNzaW9uID0gJHZtLmZpbmRUeXBlRm9yRXhwcmVzc2lvbjsKK3ZhciBy
ZXR1cm5UeXBlRm9yID0gJHZtLnJldHVyblR5cGVGb3I7CisKIGxvYWQoIi4vZHJpdmVyL2RyaXZl
ci5qcyIpOwogCiBsZXQgZm9vID0gKHgpID0+IHg7CkluZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxl
ci9iYXNpYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3R5cGVQcm9maWxlci9iYXNpYy5qcwko
cmV2aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy90eXBlUHJvZmlsZXIvYmFzaWMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgZmluZFR5cGVGb3JFeHByZXNzaW9uID0gJHZt
LmZpbmRUeXBlRm9yRXhwcmVzc2lvbjsKKwogbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CiAK
IGZ1bmN0aW9uIHdyYXBwZXIoKSB7CkluZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9jYXB0dXJl
ZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3R5cGVQcm9maWxlci9jYXB0dXJlZC5qcwkocmV2
aXNpb24gMjI1MDk3KQorKysgSlNUZXN0cy90eXBlUHJvZmlsZXIvY2FwdHVyZWQuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgZmluZFR5cGVGb3JFeHByZXNzaW9uID0gJHZt
LmZpbmRUeXBlRm9yRXhwcmVzc2lvbjsKKwogbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CiAK
IHZhciBjaGFuZ2VGb287CkluZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9jbGFzc2VzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvdHlwZVByb2ZpbGVyL2NsYXNzZXMuanMJKHJldmlzaW9uIDIy
NTA5NykKKysrIEpTVGVzdHMvdHlwZVByb2ZpbGVyL2NsYXNzZXMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw1IEBACit2YXIgZmluZFR5cGVGb3JFeHByZXNzaW9uID0gJHZtLmZpbmRUeXBl
Rm9yRXhwcmVzc2lvbjsKKwogbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CiAKIGZ1bmN0aW9u
IHdyYXBwZXIoKSB7CkluZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9kZmctaml0LW9wdGltaXph
dGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90eXBlUHJvZmlsZXIvZGZnLWppdC1vcHRp
bWl6YXRpb25zLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3R5cGVQcm9maWxlci9k
Zmctaml0LW9wdGltaXphdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2
YXIgZmluZFR5cGVGb3JFeHByZXNzaW9uID0gJHZtLmZpbmRUeXBlRm9yRXhwcmVzc2lvbjsKKwog
bG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CiAKIGZ1bmN0aW9uIHRpZXJVcFRvREZHKGZ1bmMs
IGFyZykgCkluZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9kaWN0aW9uYXJ5LW1vZGUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy90eXBlUHJvZmlsZXIvZGljdGlvbmFyeS1tb2RlLmpzCShyZXZp
c2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3R5cGVQcm9maWxlci9kaWN0aW9uYXJ5LW1vZGUuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgZmluZFR5cGVGb3JFeHByZXNzaW9u
ID0gJHZtLmZpbmRUeXBlRm9yRXhwcmVzc2lvbjsKKwogbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpz
Iik7CiAKIGZ1bmN0aW9uIHdyYXBwZXIoKQpJbmRleDogSlNUZXN0cy90eXBlUHJvZmlsZXIvZXM2
LWJsb2NrLXNjb3BpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90eXBlUHJvZmlsZXIvZXM2
LWJsb2NrLXNjb3BpbmcuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvdHlwZVByb2Zp
bGVyL2VzNi1ibG9jay1zY29waW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBAQAor
dmFyIGZpbmRUeXBlRm9yRXhwcmVzc2lvbiA9ICR2bS5maW5kVHlwZUZvckV4cHJlc3Npb247CisK
IGxvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOwogCiBsZXQgY2hhbmdlRm9vOwpJbmRleDogSlNU
ZXN0cy90eXBlUHJvZmlsZXIvZXM2LWNsYXNzZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90
eXBlUHJvZmlsZXIvZXM2LWNsYXNzZXMuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMv
dHlwZVByb2ZpbGVyL2VzNi1jbGFzc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNSBA
QAordmFyIGZpbmRUeXBlRm9yRXhwcmVzc2lvbiA9ICR2bS5maW5kVHlwZUZvckV4cHJlc3Npb247
CisKIGxvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOwogCiBsZXQgY2hhbmdlRm9vOwpJbmRleDog
SlNUZXN0cy90eXBlUHJvZmlsZXIvaW5oZXJpdGFuY2UuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy90eXBlUHJvZmlsZXIvaW5oZXJpdGFuY2UuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVz
dHMvdHlwZVByb2ZpbGVyL2luaGVyaXRhbmNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NSBAQAordmFyIGZpbmRUeXBlRm9yRXhwcmVzc2lvbiA9ICR2bS5maW5kVHlwZUZvckV4cHJlc3Np
b247CisKIGxvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOwogCiBmdW5jdGlvbiB3cmFwcGVyKCkK
SW5kZXg6IEpTVGVzdHMvdHlwZVByb2ZpbGVyL2ludDUyLWRmZy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3R5cGVQcm9maWxlci9pbnQ1Mi1kZmcuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpT
VGVzdHMvdHlwZVByb2ZpbGVyL2ludDUyLWRmZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDUgQEAKK3ZhciBmaW5kVHlwZUZvckV4cHJlc3Npb24gPSAkdm0uZmluZFR5cGVGb3JFeHByZXNz
aW9uOworCiBsb2FkKCIuL2RyaXZlci9kcml2ZXIuanMiKTsKIAogZnVuY3Rpb24gdGVzdCgpCklu
ZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMv
dHlwZVByb2ZpbGVyL2xvb3AuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvdHlwZVBy
b2ZpbGVyL2xvb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIgZmluZFR5
cGVGb3JFeHByZXNzaW9uID0gJHZtLmZpbmRUeXBlRm9yRXhwcmVzc2lvbjsKKwogbG9hZCgiLi9k
cml2ZXIvZHJpdmVyLmpzIik7CiAKIGZ1bmN0aW9uIHRlc3RGb3JJbih4KSB7CkluZGV4OiBKU1Rl
c3RzL3R5cGVQcm9maWxlci9vcHRpb25hbC1maWVsZHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy90eXBlUHJvZmlsZXIvb3B0aW9uYWwtZmllbGRzLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBK
U1Rlc3RzL3R5cGVQcm9maWxlci9vcHRpb25hbC1maWVsZHMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1IEBACit2YXIgZmluZFR5cGVGb3JFeHByZXNzaW9uID0gICR2bS5maW5kVHlwZUZv
ckV4cHJlc3Npb247CisKIGxvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOwogCiB2YXIgZnVuYzsK
SW5kZXg6IEpTVGVzdHMvdHlwZVByb2ZpbGVyL292ZXJmbG93LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvdHlwZVByb2ZpbGVyL292ZXJmbG93LmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rl
c3RzL3R5cGVQcm9maWxlci9vdmVyZmxvdy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUg
QEAKK3ZhciBmaW5kVHlwZUZvckV4cHJlc3Npb24gPSAkdm0uZmluZFR5cGVGb3JFeHByZXNzaW9u
OworCiBsb2FkKCIuL2RyaXZlci9kcml2ZXIuanMiKTsKIAogZnVuY3Rpb24gd3JhcHBlcigpCklu
ZGV4OiBKU1Rlc3RzL3R5cGVQcm9maWxlci9yZXR1cm4uanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy90eXBlUHJvZmlsZXIvcmV0dXJuLmpzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBKU1Rlc3RzL3R5
cGVQcm9maWxlci9yZXR1cm4uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1IEBACit2YXIg
cmV0dXJuVHlwZUZvciA9ICR2bS5yZXR1cm5UeXBlRm9yOworCiBsb2FkKCIuL2RyaXZlci9kcml2
ZXIuanMiKTsKIAogZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIHg7IH0KSW5kZXg6IEpTVGVzdHMv
dHlwZVByb2ZpbGVyL3N5bWJvbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3R5cGVQcm9maWxl
ci9zeW1ib2wuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIEpTVGVzdHMvdHlwZVByb2ZpbGVyL3N5
bWJvbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBmaW5kVHlwZUZvckV4
cHJlc3Npb24gPSAkdm0uZmluZFR5cGVGb3JFeHByZXNzaW9uOworCiBsb2FkKCIuL2RyaXZlci9k
cml2ZXIuanMiKTsKIAogZnVuY3Rpb24gd3JhcHBlcigpIHsKSW5kZXg6IEpTVGVzdHMvdHlwZVBy
b2ZpbGVyL3dlaXJkLXByb3RvdHlwZS1jaGFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3R5
cGVQcm9maWxlci93ZWlyZC1wcm90b3R5cGUtY2hhaW4uanMJKHJldmlzaW9uIDIyNTA5NykKKysr
IEpTVGVzdHMvdHlwZVByb2ZpbGVyL3dlaXJkLXByb3RvdHlwZS1jaGFpbi5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDUgQEAKK3ZhciBmaW5kVHlwZUZvckV4cHJlc3Npb24gPSAkdm0uZmlu
ZFR5cGVGb3JFeHByZXNzaW9uOworCiBsb2FkKCIuL2RyaXZlci9kcml2ZXIuanMiKTsKIAogZnVu
Y3Rpb24gd3JhcHBlcigpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjI1MDk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI4NSBAQAorMjAxNy0xMS0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSB1bnNhZmUganNjIHNoZWxsIHRlc3QgZnVuY3Rpb25zIHRv
IHRoZSAkdm0gb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxzbyByZW1vdmVkIHNldEVsZW1lbnRSb290KCkgd2hpY2ggd2FzIG5vdCB1c2Vk
LgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoV1RGOjpFbGVtZW50OjpFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6RWxlbWVudDo6cm9vdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkVs
ZW1lbnQ6OnNldFJvb3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFbGVtZW50OjpjcmVhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpFbGVtZW50Ojp2aXNpdENoaWxkcmVuKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6RWxlbWVudDo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Um9vdDo6Um9vdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJvb3Q6OmVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSb290OjpzZXRFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6Um9vdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
Um9vdDo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Um9vdDo6dmlz
aXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkltcHVyZUdldHRlcjo6SW1wdXJl
R2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6SW1wdXJlR2V0dGVyOjpjcmVhdGVTdHJ1
Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpJbXB1cmVHZXR0ZXI6OmNyZWF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkltcHVyZUdldHRlcjo6ZmluaXNoQ3JlYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpJbXB1cmVHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkltcHVyZUdldHRlcjo6dmlzaXRDaGlsZHJlbik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OkltcHVyZUdldHRlcjo6c2V0RGVsZWdhdGUpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OkN1c3RvbUdldHRlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OkN1c3RvbUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Q3VzdG9tR2V0dGVyOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpD
dXN0b21HZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OkN1c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Q3Vz
dG9tR2V0dGVyOjpjdXN0b21HZXR0ZXJBY2Vzc29yKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
UnVudGltZUFycmF5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW50aW1lQXJy
YXk6On5SdW50aW1lQXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6
OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJh
eTo6cHV0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpkZWxldGVQcm9w
ZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6Z2V0TGVuZ3RoIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpjcmVhdGVQcm90b3R5
cGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmNyZWF0ZVN0cnVjdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6ZmluaXNoQ3JlYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OlJ1bnRpbWVBcnJheSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6U2ltcGxlT2JqZWN0OjpTaW1wbGVPYmplY3QpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpTaW1wbGVPYmplY3Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlNpbXBsZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OlNpbXBsZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
U2ltcGxlT2JqZWN0OjpoaWRkZW5WYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNpbXBs
ZU9iamVjdDo6c2V0SGlkZGVuVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRO
b2RlOjpET01KSVROb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6Y3Jl
YXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6Y2hlY2tT
dWJDbGFzc1NuaXBwZXQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjp2YWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVE5vZGU6Om9mZnNldE9mVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OkRPTUpJVEdldHRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpET01KSVRHZXR0ZXI6OkRPTUpJVEF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpET01KSVRBdHRyaWJ1dGU6OnNsb3dDYWxs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpET01KSVRBdHRyaWJ1dGU6
OmNhbGxET01HZXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmN1
c3RvbUdldHRlcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6ZmluaXNo
Q3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpE
T01KSVRHZXR0ZXJDb21wbGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVy
Q29tcGxleDo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklU
R2V0dGVyQ29tcGxleDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUR2V0
dGVyQ29tcGxleDo6RE9NSklUQXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpET01KSVRBdHRyaWJ1dGU6OnNsb3dD
YWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklU
QXR0cmlidXRlOjpjYWxsRE9NR2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklU
R2V0dGVyQ29tcGxleDo6ZnVuY3Rpb25FbmFibGVFeGNlcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OkRPTUpJVEZ1bmN0aW9uT2JqZWN0OjpET01KSVRGdW5jdGlvbk9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRGdW5jdGlvbk9iamVjdDo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklURnVuY3Rpb25PYmplY3Q6OnNh
ZmVGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEZ1bmN0aW9uT2JqZWN0
Ojp1bnNhZmVGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEZ1bmN0aW9u
T2JqZWN0OjpjaGVja1N1YkNsYXNzU25pcHBldCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRP
TUpJVEZ1bmN0aW9uT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OkRPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OkRPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Qp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRDaGVja1N1YkNsYXNz
T2JqZWN0OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRDaGVja1N1YkNs
YXNzT2JqZWN0OjpzYWZlRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRD
aGVja1N1YkNsYXNzT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OkRPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpET01KSVRHZXR0ZXJCYXNl
SlNPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJCYXNlSlNPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEdldHRl
ckJhc2VKU09iamVjdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RE9NSklUR2V0
dGVyQmFzZUpTT2JqZWN0OjpET01KSVRBdHRyaWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckJhc2VKU09iamVjdDo6RE9NSklUQXR0cmli
dXRlOjpzbG93Q2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckJhc2VK
U09iamVjdDo6RE9NSklUQXR0cmlidXRlOjpjYWxsRE9NR2V0dGVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjdXN0b21HZXR0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RWxlbWVudDo6aGFuZGxlT3duZXIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpFbGVtZW50OjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OkpTVGVzdEN1c3RvbUdldHRlclNldHRlcik6
IERlbGV0ZWQuCisgICAgICAgIChKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChjdXN0b21HZXRBY2Nlc3Nvcik6IERlbGV0ZWQuCisgICAg
ICAgIChjdXN0b21HZXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChjdXN0b21TZXRBY2Nlc3Nv
cik6IERlbGV0ZWQuCisgICAgICAgIChjdXN0b21TZXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEdsb2JhbE9iamVjdDo6YWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlUm9vdCk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlv
bkNyZWF0ZUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoZnVuY3Rpb25HZXRFbGVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uU2V0RWxlbWVudFJvb3QpOiBEZWxldGVkLgorICAg
ICAgICAoZnVuY3Rpb25DcmVhdGVTaW1wbGVPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoZnVu
Y3Rpb25HZXRIaWRkZW5WYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlvblNldEhpZGRl
blZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlUHJveHkpOiBEZWxldGVk
LgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkpOiBEZWxldGVkLgorICAgICAg
ICAoZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAoZnVuY3Rp
b25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoZnVuY3Rpb25D
cmVhdGVET01KSVROb2RlT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRl
RE9NSklUR2V0dGVyT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9N
SklUR2V0dGVyQ29tcGxleE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZURPTUpJVEZ1bmN0aW9uT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRl
RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlvbkNy
ZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlv
blNldEltcHVyZUdldHRlckRlbGVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uR2V0
R2V0dGVyU2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uU2hhZG93Q2hpY2tlbkZ1
bmN0aW9uc09uU3RhY2spOiBEZWxldGVkLgorICAgICAgICAoZnVuY3Rpb25TZXRHbG9iYWxDb25z
dFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlv
bkdsb2JhbE9iamVjdEZvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlvbkxvYWRH
ZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRl
Q3VzdG9tVGVzdEdldHRlclNldHRlcik6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlvbkFib3J0
KTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKGZ1bmN0aW9uUmV0dXJuVHlwZUZvcik6IERlbGV0ZWQuCisgICAgICAg
IChmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGZ1
bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGZ1bmN0
aW9uRW5hYmxlRXhjZXB0aW9uRnV6eik6IERlbGV0ZWQuCisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZUJ1aWx0aW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogdG9vbHMv
SlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChXVEY6OkVsZW1lbnQ6OkVsZW1lbnQpOgorICAgICAg
ICAoV1RGOjpFbGVtZW50Ojpyb290IGNvbnN0KToKKyAgICAgICAgKFdURjo6RWxlbWVudDo6c2V0
Um9vdCk6CisgICAgICAgIChXVEY6OkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkVs
ZW1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV1RGOjpFbGVtZW50OjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoV1RGOjpSb290OjpSb290KToKKyAgICAgICAgKFdURjo6Um9vdDo6
ZWxlbWVudCk6CisgICAgICAgIChXVEY6OlJvb3Q6OnNldEVsZW1lbnQpOgorICAgICAgICAoV1RG
OjpSb290OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSb290OjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV1RGOjpSb290Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdURjo6U2ltcGxl
T2JqZWN0OjpTaW1wbGVPYmplY3QpOgorICAgICAgICAoV1RGOjpTaW1wbGVPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXVEY6OlNpbXBsZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChXVEY6OlNpbXBsZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6U2lt
cGxlT2JqZWN0OjpoaWRkZW5WYWx1ZSk6CisgICAgICAgIChXVEY6OlNpbXBsZU9iamVjdDo6c2V0
SGlkZGVuVmFsdWUpOgorICAgICAgICAoV1RGOjpJbXB1cmVHZXR0ZXI6OkltcHVyZUdldHRlcik6
CisgICAgICAgIChXVEY6OkltcHVyZUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdURjo6SW1wdXJlR2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpJbXB1cmVHZXR0ZXI6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdURjo6SW1wdXJlR2V0dGVyOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoV1RGOjpJbXB1cmVHZXR0ZXI6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoV1RGOjpJbXB1cmVHZXR0ZXI6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdURjo6
Q3VzdG9tR2V0dGVyOjpDdXN0b21HZXR0ZXIpOgorICAgICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkN1c3RvbUdldHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdURjo6Q3VzdG9tR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChXVEY6OkN1c3Rv
bUdldHRlcjo6Y3VzdG9tR2V0dGVyQWNlc3Nvcik6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJh
eTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KToK
KyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpkZXN0cm95KToKKyAgICAgICAgKFdURjo6UnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJy
YXk6OnB1dCk6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJheTo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmdldExlbmd0aCBjb25zdCk6CisgICAgICAgIChX
VEY6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdURjo6UnVudGlt
ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpSdW50aW1lQXJyYXkp
OgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChX
VEY6OkRPTUpJVE5vZGU6OkRPTUpJVE5vZGUpOgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjpjaGVja1N1YkNsYXNz
U25pcHBldCk6CisgICAgICAgIChXVEY6OkRPTUpJVE5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChX
VEY6OkRPTUpJVE5vZGU6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6
b2Zmc2V0T2ZWYWx1ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlcjo6RE9NSklUR2V0dGVy
KToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV1RGOjpET01KSVRHZXR0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRl
cjo6RE9NSklUQXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpOgorICAgICAgICAoV1RGOjpET01K
SVRHZXR0ZXI6OkRPTUpJVEF0dHJpYnV0ZTo6c2xvd0NhbGwpOgorICAgICAgICAoV1RGOjpET01K
SVRHZXR0ZXI6OkRPTUpJVEF0dHJpYnV0ZTo6Y2FsbERPTUdldHRlcik6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVy
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OkRP
TUpJVEdldHRlckNvbXBsZXgpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4Ojpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVh
dGUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpET01KSVRBdHRyaWJ1dGU6
OkRPTUpJVEF0dHJpYnV0ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OkRP
TUpJVEF0dHJpYnV0ZTo6c2xvd0NhbGwpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21w
bGV4OjpET01KSVRBdHRyaWJ1dGU6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01K
SVRHZXR0ZXJDb21wbGV4OjpmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbik6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlckNvbXBsZXg6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJ
VEdldHRlckNvbXBsZXg6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdURjo6RE9NSklURnVu
Y3Rpb25PYmplY3Q6OkRPTUpJVEZ1bmN0aW9uT2JqZWN0KToKKyAgICAgICAgKFdURjo6RE9NSklU
RnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEZ1
bmN0aW9uT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpET01KSVRGdW5jdGlvbk9iamVj
dDo6c2FmZUZ1bmN0aW9uKToKKyAgICAgICAgKFdURjo6RE9NSklURnVuY3Rpb25PYmplY3Q6OnVu
c2FmZUZ1bmN0aW9uKToKKyAgICAgICAgKFdURjo6RE9NSklURnVuY3Rpb25PYmplY3Q6OmNoZWNr
U3ViQ2xhc3NTbmlwcGV0KToKKyAgICAgICAgKFdURjo6RE9NSklURnVuY3Rpb25PYmplY3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdURjo6RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6
RE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCk6CisgICAgICAgIChXVEY6OkRPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVENoZWNrU3ViQ2xh
c3NPYmplY3Q6OnNhZmVGdW5jdGlvbik6CisgICAgICAgIChXVEY6OkRPTUpJVENoZWNrU3ViQ2xh
c3NPYmplY3Q6OnVuc2FmZUZ1bmN0aW9uKToKKyAgICAgICAgKFdURjo6RE9NSklUQ2hlY2tTdWJD
bGFzc09iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJC
YXNlSlNPYmplY3Q6OkRPTUpJVEdldHRlckJhc2VKU09iamVjdCk6CisgICAgICAgIChXVEY6OkRP
TUpJVEdldHRlckJhc2VKU09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdURjo6
RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpET01KSVRH
ZXR0ZXJCYXNlSlNPYmplY3Q6OkRPTUpJVEF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKToKKyAg
ICAgICAgKFdURjo6RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpET01KSVRBdHRyaWJ1dGU6OnNs
b3dDYWxsKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpET01KSVRB
dHRyaWJ1dGU6OmNhbGxET01HZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJCYXNl
SlNPYmplY3Q6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckJhc2VK
U09iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpNZXNzYWdlOjpyZWxlYXNl
Q29udGVudHMpOgorICAgICAgICAoV1RGOjpNZXNzYWdlOjppbmRleCBjb25zdCk6CisgICAgICAg
IChXVEY6OkpTVGVzdEN1c3RvbUdldHRlclNldHRlcjo6SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKFdURjo6SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV1RGOjpKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXVEY6OmN1c3RvbUdldEFjY2Vzc29yKToKKyAgICAgICAgKFdURjo6Y3VzdG9tR2V0
VmFsdWUpOgorICAgICAgICAoV1RGOjpjdXN0b21TZXRBY2Nlc3Nvcik6CisgICAgICAgIChXVEY6
OmN1c3RvbVNldFZhbHVlKToKKyAgICAgICAgKFdURjo6SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXVEY6OkVsZW1lbnQ6OmhhbmRsZU93bmVyKToK
KyAgICAgICAgKFdURjo6RWxlbWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkNyYXNoKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVQcm94eSk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KToKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNyZWF0ZUN1
c3RvbUdldHRlck9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9k
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdCk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRl
Um9vdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlRWxlbWVudCk6CisgICAgICAgIChK
U0M6OmZ1bmN0aW9uR2V0RWxlbWVudCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlU2lt
cGxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZSk6CisgICAg
ICAgIChKU0M6OmZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25T
ZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyk6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25S
ZXR1cm5UeXBlRm9yKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25EdW1wQmFzaWNCbG9ja0V4ZWN1
dGlvblJhbmdlcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVk
KToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQpOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbkZ1enopOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbkdsb2JhbE9iamVjdEZvck9iamVjdCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uR2V0
R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRl
clNldHRlcik6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQ3JlYXRlQ3VzdG9tVGVzdEdldHRlclNl
dHRlcik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6YWRkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0RvbGxh
clZNOjphZGRDb25zdHJ1Y3RpYmxlRnVuY3Rpb24pOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFy
Vk0uaDoKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6Y3JlYXRlKToKKwogMjAxNy0xMS0yMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBm
b3IgbW9yZSBlZmZpY2llbnQgdXNlIG9mIEdlbmVyaWNUeXBlZEFycmF5VmlldwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIyNTA5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwyMCArMjQsMTUgQEAKIAogI2luY2x1ZGUg
IkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJC
dWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNp
bmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJD
b25maWdGaWxlLmgiCi0jaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCi0jaW5j
bHVkZSAiRE9NSklUR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgotI2lu
Y2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgotI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhlYXBQcm9maWxlci5oIgogI2luY2x1ZGUgIkhlYXBTbmFwc2hvdEJ1aWxkZXIuaCIKICNp
bmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCkBAIC01Myw3ICs0OCw2IEBACiAjaW5jbHVk
ZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNPTk9iamVjdC5oIgotI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJK
U1NvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVHlwZWRB
cnJheXMuaCIKQEAgLTY4LDE2ICs2MiwxMSBAQAogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSAiUmVsZWFzZUhlYXBBY2Nlc3NTY29wZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
UHJvZmlsZXIuaCIKLSNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCi0jaW5jbHVkZSAiU25pcHBl
dC5oIgotI2luY2x1ZGUgIlNuaXBwZXRQYXJhbXMuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3Iu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFy
ZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVGVz
dFJ1bm5lclV0aWxzLmgiCi0jaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCi0jaW5jbHVkZSAiVHlw
ZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUlubGluZXMuaCIKICNpbmNsdWRl
ICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKQEAg
LTE2Miw2NCArMTUxLDYgQEAgTk9fUkVUVVJOX1dJVEhfVkFMVUUgc3RhdGljIHZvaWQganNjRXhp
dAogICAgIGV4aXQoc3RhdHVzKTsKIH0KIAotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEVsZW1lbnRI
YW5kbGVPd25lcjsKLWNsYXNzIE1hc3VxZXJhZGVyOwotY2xhc3MgUm9vdDsKLWNsYXNzIFJ1bnRp
bWVBcnJheTsKLQotY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLXB1
YmxpYzoKLSAgICBFbGVtZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKLQotICAgIFJvb3QqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3QuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJvb3QoVk0mIHZtLCBSb290KiByb290KSB7IG1fcm9v
dC5zZXQodm0sIHRoaXMsIHJvb3QpOyB9Ci0KLSAgICBzdGF0aWMgRWxlbWVudCogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUm9vdCogcm9vdCkKLSAgICB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGpzTnVsbCgpKTsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEVsZW1lbnQ+KHZtLmhlYXAsIHNpemVvZihFbGVtZW50KSkpIEVsZW1l
bnQodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGVsZW1lbnQtPmZpbmlzaENyZWF0aW9uKHZtLCBy
b290KTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIFJvb3QqKTsKLQotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLSAgICB7Ci0gICAgICAgIEVsZW1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8RWxlbWVudCo+KGNlbGwpOwotICAgICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fcm9vdCk7Ci0gICAgfQotCi0gICAgc3RhdGljIEVsZW1lbnRIYW5kbGVPd25l
ciogaGFuZGxlT3duZXIoKTsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLQotcHJpdmF0ZToKLSAgICBXcml0ZUJh
cnJpZXI8Um9vdD4gbV9yb290OwotfTsKLQotY2xhc3MgRWxlbWVudEhhbmRsZU93bmVyIDogcHVi
bGljIFdlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgYm9vbCBpc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBq
c0Nhc3Q8RWxlbWVudCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICAgICAgcmV0dXJu
IHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KGVsZW1lbnQtPnJvb3QoKSk7Ci0gICAgfQotfTsK
LQogY2xhc3MgTWFzcXVlcmFkZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgTWFzcXVlcmFkZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTI0Nyw4
MzQgKzE3OCw5IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiB9OwogCi1jbGFzcyBSb290
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBSb290KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2VsZW1lbnQuZ2V0KCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBXZWFrPEVsZW1lbnQ+IG5ld0VsZW1lbnQoZWxl
bWVudCwgRWxlbWVudDo6aGFuZGxlT3duZXIoKSk7Ci0gICAgICAgIG1fZWxlbWVudC5zd2FwKG5l
d0VsZW1lbnQpOwotICAgIH0KLQotICAgIHN0YXRpYyBSb290KiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOwotICAg
ICAgICBSb290KiByb290ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Um9vdD4odm0uaGVh
cCwgc2l6ZW9mKFJvb3QpKSkgUm9vdCh2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgcm9vdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcm9vdDsKLSAgICB9Ci0KLSAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc09iamVjdCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCi0gICAgewotICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwotICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdCk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIFdlYWs8RWxlbWVudD4gbV9lbGVtZW50OwotfTsKLQotY2xhc3Mg
SW1wdXJlR2V0dGVyIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIElt
cHVyZUdldHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZSB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwotCi0gICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEltcHVyZUdldHRlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2Jq
ZWN0KiBkZWxlZ2F0ZSkKLSAgICB7Ci0gICAgICAgIEltcHVyZUdldHRlciogZ2V0dGVyID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW1wdXJlR2V0dGVyPih2bS5oZWFwLCBzaXplb2YoSW1w
dXJlR2V0dGVyKSkpIEltcHVyZUdldHRlcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgZ2V0dGVy
LT5maW5pc2hDcmVhdGlvbih2bSwgZGVsZWdhdGUpOwotICAgICAgICByZXR1cm4gZ2V0dGVyOwot
ICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogZGVsZWdh
dGUpCi0gICAgewotICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIGlm
IChkZWxlZ2F0ZSkKLSAgICAgICAgICAgIG1fZGVsZWdhdGUuc2V0KHZtLCB0aGlzLCBkZWxlZ2F0
ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIG5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgSW1wdXJlR2V0dGVy
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEltcHVyZUdldHRlcio+KG9iamVjdCk7Ci0gICAgICAgIAot
ICAgICAgICBpZiAodGhpc09iamVjdC0+bV9kZWxlZ2F0ZSkgewotICAgICAgICAgICAgaWYgKHRo
aXNPYmplY3QtPm1fZGVsZWdhdGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBuYW1lLCBzbG90KSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBCYXNlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBuYW1lLCBzbG90KTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCi0gICAgewotICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3Ip
OwotICAgICAgICBJbXB1cmVHZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW1wdXJlR2V0dGVy
Kj4oY2VsbCk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZGVsZWdhdGUp
OwotICAgIH0KLQotICAgIHZvaWQgc2V0RGVsZWdhdGUoVk0mIHZtLCBKU09iamVjdCogZGVsZWdh
dGUpCi0gICAgewotICAgICAgICBtX2RlbGVnYXRlLnNldCh2bSwgdGhpcywgZGVsZWdhdGUpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZGVsZWdhdGU7
Ci19OwotCi1jbGFzcyBDdXN0b21HZXR0ZXIgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci1w
dWJsaWM6Ci0gICAgQ3VzdG9tR2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICBERUNMQVJF
X0lORk87Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBDdXN0b21HZXR0ZXIqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgQ3VzdG9tR2V0
dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXI+KHZt
LmhlYXAsIHNpemVvZihDdXN0b21HZXR0ZXIpKSkgQ3VzdG9tR2V0dGVyKHZtLCBzdHJ1Y3R1cmUp
OwotICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIGdl
dHRlcjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBDdXN0b21HZXR0ZXIqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyKj4ob2JqZWN0KTsKLSAgICAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY3VzdG9t
R2V0dGVyIikpKSB7Ci0gICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgdGhpc09iamVjdC0+Y3VzdG9t
R2V0dGVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjdXN0b21HZXR0ZXJBY2Nlc3NvciIpKSkgewotICAgICAgICAgICAgc2xv
dC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIHRoaXNPYmplY3Qt
PmN1c3RvbUdldHRlckFjZXNzb3IpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLSAgICB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgICAgICBDdXN0b21HZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEN1c3RvbUdldHRlcio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3Qt
PmdldChleGVjLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2hv
dWxkVGhyb3ciKSkpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxMDApKTsKLSAgICB9Ci0gICAgCi0gICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlckFjZXNzb3IoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLSAgICB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICAgICAgCi0gICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3Qt
PmdldChleGVjLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2hv
dWxkVGhyb3ciKSkpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxMDApKTsKLSAgICB9Ci19OwotCi1jbGFz
cyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBK
U0FycmF5IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKLQotICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBjcmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkp
OwotICAgICAgICBSdW50aW1lQXJyYXkqIHJ1bnRpbWVBcnJheSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4odm0uaGVhcCkpIFJ1bnRpbWVBcnJheShleGVjLCBzdHJ1
Y3R1cmUpOwotICAgICAgICBydW50aW1lQXJyYXktPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwotICAg
ICAgICB2bS5oZWFwLmFkZEZpbmFsaXplcihydW50aW1lQXJyYXksIGRlc3Ryb3kpOwotICAgICAg
ICByZXR1cm4gcnVudGltZUFycmF5OwotICAgIH0KLQotICAgIH5SdW50aW1lQXJyYXkoKSB7IH0K
LQotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCktPlJ1bnRpbWVBcnJheTo6flJ1bnRpbWVB
cnJheSgpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKLQotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
ICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihvYmpl
Y3QpOwotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCkgewotICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0sIHRoaXNPYmplY3QtPmxlbmd0aEdldHRlcik7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc051bWJlcih0aGlz
T2JqZWN0LT5tX3ZlY3RvcltpbmRleC52YWx1ZSgpXSkpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIH0KLQotICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotICAg
IHsKLSAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJh
eSo+KG9iamVjdCk7Ci0gICAgICAgIGlmIChpbmRleCA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc051bWJlcih0
aGlzT2JqZWN0LT5tX3ZlY3RvcltpbmRleF0pKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LCBzbG90KTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCi0gICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHN0YXRpYyBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lKQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5zaXplKCk7IH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBBcnJheVBy
b3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCk7
Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhEZXJpdmVkQXJyYXlUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
QXJyYXlDbGFzcyk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGVjLT5h
cmd1bWVudENvdW50KCk7IGkrKykKLSAgICAgICAgICAgIG1fdmVjdG9yLmFwcGVuZChleGVjLT5h
cmd1bWVudChpKS50b0ludDMyKGV4ZWMpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUnVudGlt
ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDog
SlNBcnJheShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIDApCi0gICAgewotICAgIH0KLQotICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1
bnRpbWVBcnJheSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgICAgIGlm
ICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2Jq
ZWN0LT5nZXRMZW5ndGgoKSkpOwotICAgIH0KLQotICAgIFZlY3RvcjxpbnQ+IG1fdmVjdG9yOwot
fTsKLQotY2xhc3MgU2ltcGxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVi
bGljOgotICAgIFNpbXBsZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
ICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IGZhbHNlOwotCi0gICAgc3RhdGljIFNpbXBsZU9iamVjdCogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICB7Ci0gICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsK
LSAgICAgICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxTaW1wbGVPYmplY3Q+KHZtLmhlYXAsIHNpemVvZihTaW1wbGVPYmplY3QpKSkgU2lt
cGxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBzaW1wbGVPYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHNpbXBsZU9iamVjdDsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCi0gICAgewotICAgICAgICBTaW1wbGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2lt
cGxlT2JqZWN0Kj4oY2VsbCk7Ci0gICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKLSAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9oaWRkZW5W
YWx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBoaWRkZW5WYWx1ZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9oaWRkZW5WYWx1ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEhpZGRlblZhbHVl
KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZS5pc0Nl
bGwoKSk7Ci0gICAgICAgIG1faGlkZGVuVmFsdWUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAg
fQotCi0gICAgREVDTEFSRV9JTkZPOwotCi1wcml2YXRlOgotICAgIFdyaXRlQmFycmllcjxKU0M6
OlVua25vd24+IG1faGlkZGVuVmFsdWU7Ci19OwotCi1jbGFzcyBET01KSVROb2RlIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIERPTUpJVE5vZGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgewot
ICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotI2lmIEVOQUJMRShKSVQpCi0gICAg
c3RhdGljIFJlZjxTbmlwcGV0PiBjaGVja1N1YkNsYXNzU25pcHBldCgpCi0gICAgewotICAgICAg
ICBSZWY8U25pcHBldD4gc25pcHBldCA9IFNuaXBwZXQ6OmNyZWF0ZSgpOwotICAgICAgICBzbmlw
cGV0LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBTbmlwcGV0UGFyYW1zJiBw
YXJhbXMpIHsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2Vz
OwotICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoOCgKLSAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNU
eXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbHVy
ZUNhc2VzOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHNuaXBwZXQ7Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICBzdGF0aWMgRE9NSklUTm9kZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBET01KSVROb2RlKiBnZXR0ZXIgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2bS5oZWFwLCBzaXplb2YoRE9NSklUTm9kZSkp
KSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIGdldHRlcjsKLSAgICB9Ci0KLSAgICBpbnQzMl90IHZh
bHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KLQotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWYWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihET01KSVROb2RlLCBtX3ZhbHVlKTsgfQotCi1wcml2YXRlOgotICAgIGludDMyX3QgbV92YWx1
ZSB7IDQyIH07Ci19OwotCi1jbGFzcyBET01KSVRHZXR0ZXIgOiBwdWJsaWMgRE9NSklUTm9kZSB7
Ci1wdWJsaWM6Ci0gICAgRE9NSklUR2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Ci0gICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICBERUNM
QVJFX0lORk87Ci0gICAgdHlwZWRlZiBET01KSVROb2RlIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpT
Qzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgRE9NSklUR2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIERPTUpJVEdldHRlciogZ2V0dGVyID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVyPih2bS5oZWFwLCBzaXplb2Yo
RE9NSklUR2V0dGVyKSkpIERPTUpJVEdldHRlcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgZ2V0
dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBnZXR0ZXI7Ci0gICAgfQot
Ci0gICAgY2xhc3MgRE9NSklUQXR0cmlidXRlIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVy
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGNvbnN0ZXhwciBET01KSVRBdHRyaWJ1dGUoKQotICAg
ICAgICAgICAgOiBET01KSVQ6OkdldHRlclNldHRlcigKLSAgICAgICAgICAgICAgICBET01KSVRH
ZXR0ZXI6OmN1c3RvbUdldHRlciwKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgICAgICZj
YWxsRE9NR2V0dGVyLAotI2Vsc2UKLSAgICAgICAgICAgICAgICBudWxscHRyLAotI2VuZGlmCi0g
ICAgICAgICAgICAgICAgU3BlY0ludDMyT25seSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSNp
ZiBFTkFCTEUoSklUKQotICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBzbG93Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIHBvaW50ZXIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1
ZSgpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTUdl
dHRlclNuaXBwZXQ+IGNhbGxET01HZXR0ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBSZWY8
RE9NSklUOjpDYWxsRE9NR2V0dGVyU25pcHBldD4gc25pcHBldCA9IERPTUpJVDo6Q2FsbERPTUdl
dHRlclNuaXBwZXQ6OmNyZWF0ZSgpOwotICAgICAgICAgICAgc25pcHBldC0+cmVxdWlyZUdsb2Jh
bE9iamVjdCA9IGZhbHNlOwotICAgICAgICAgICAgc25pcHBldC0+c2V0R2VuZXJhdG9yKFs9XShD
Q2FsbEhlbHBlcnMmIGppdCwgU25pcHBldFBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwotICAgICAg
ICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbMV0uZ3ByKCk7Ci0gICAgICAgICAgICAgICAg
cGFyYW1zLmFkZFNsb3dQYXRoQ2FsbChqaXQuanVtcCgpLCBqaXQsIHNsb3dDYWxsLCByZXN1bHRz
LCBkb20pOwotICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7
Ci0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuIHNuaXBwZXQ7Ci0gICAgICAg
IH0KLSNlbmRpZgotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOwotCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotICAgIHsKLSAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUTm9kZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7Ci0gICAgfQotfTsKLQot
c3RhdGljIGNvbnN0IERPTUpJVEdldHRlcjo6RE9NSklUQXR0cmlidXRlIERPTUpJVEdldHRlckRP
TUpJVDsKLQotdm9pZCBET01KSVRHZXR0ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgY29uc3QgRE9NSklUOjpHZXR0ZXJTZXR0
ZXIqIGRvbUpJVCA9ICZET01KSVRHZXR0ZXJET01KSVQ7Ci0gICAgYXV0byogY3VzdG9tR2V0dGVy
U2V0dGVyID0gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0
dGVyKCksIG51bGxwdHIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBET01KSVROb2RlOjppbmZv
KCksIGRvbUpJVCB9KTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IpOwotfQotCi1jbGFzcyBET01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERPTUpJVE5v
ZGUgewotcHVibGljOgotICAgIERPTUpJVEdldHRlckNvbXBsZXgoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0K
LQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBET01KSVRHZXR0ZXJDb21wbGV4KiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIERPTUpJVEdldHRlckNvbXBsZXgqIGdldHRlciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckNvbXBsZXg+KHZtLmhlYXAsIHNp
emVvZihET01KSVRHZXR0ZXJDb21wbGV4KSkpIERPTUpJVEdldHRlckNvbXBsZXgodm0sIHN0cnVj
dHVyZSk7Ci0gICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIHJldHVybiBnZXR0ZXI7Ci0gICAgfQotCi0gICAgY2xhc3MgRE9NSklUQXR0cmli
dXRlIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGNvbnN0ZXhwciBET01KSVRBdHRyaWJ1dGUoKQotICAgICAgICAgICAgOiBET01KSVQ6OkdldHRl
clNldHRlcigKLSAgICAgICAgICAgICAgICBET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0
ZXIsCi0jaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgICAgICAmY2FsbERPTUdldHRlciwKLSNl
bHNlCi0gICAgICAgICAgICAgICAgbnVsbHB0ciwKLSNlbmRpZgotICAgICAgICAgICAgICAgIFNw
ZWNJbnQzMk9ubHkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0jaWYgRU5BQkxFKEpJVCkKLSAg
ICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gc2xvd0NhbGwoRXhlY1N0
YXRlKiBleGVjLCB2b2lkKiBwb2ludGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwotICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RE9NSklUTm9kZSo+
KHBvaW50ZXIpOwotICAgICAgICAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9IGpzRHlu
YW1pY0Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBvYmplY3QpOwotICAgICAgICAgICAg
aWYgKGRvbWppdEdldHRlckNvbXBsZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAoZG9taml0R2V0
dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0
aW9uIikpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKG9iamVjdC0+dmFsdWUoKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3Rh
dGljIFJlZjxET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0PiBjYWxsRE9NR2V0dGVyKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTUdldHRlclNuaXBwZXQ+IHNu
aXBwZXQgPSBET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0OjpjcmVhdGUoKTsKLSAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNCwgIk51bWJl
ciBvZiByZWdpc3RlcnMgc2hvdWxkIGJlIGxhcmdlciBvciBlcXVhbCB0byA0LiIpOwotICAgICAg
ICAgICAgdW5zaWduZWQgbnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgLSA0OwotICAgICAgICAgICAgc25pcHBldC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gbnVtR1BTY3JhdGNoUmVnaXN0ZXJzOwotICAgICAgICAgICAgc25pcHBldC0+bnVtRlBTY3Jh
dGNoUmVnaXN0ZXJzID0gMzsKLSAgICAgICAgICAgIHNuaXBwZXQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIFNuaXBwZXRQYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKLSAgICAg
ICAgICAgICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzFdLmdwcigpOwotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkK
LSAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
NDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKLQotICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRT
bG93UGF0aENhbGwoaml0Lmp1bXAoKSwgaml0LCBzbG93Q2FsbCwgcmVzdWx0cywgZG9tR1BSKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm4gc25pcHBldDsKLSAgICAgICAgfQotI2VuZGlm
Ci0gICAgfTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKLQotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7Ci0gICAgICAgIGlm
IChvYmplY3QpCi0gICAgICAgICAgICBvYmplY3QtPm1fZW5hYmxlRXhjZXB0aW9uID0gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi0gICAgewotICAgICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9N
SklUR2V0dGVyQ29tcGxleCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
ICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKLSAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fZW5hYmxl
RXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJET01KSVRH
ZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBleGNlcHRpb24iKSkpKTsKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7Ci0gICAgfQotCi0g
ICAgYm9vbCBtX2VuYWJsZUV4Y2VwdGlvbiB7IGZhbHNlIH07Ci19OwotCi1zdGF0aWMgY29uc3Qg
RE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklUQXR0cmlidXRlIERPTUpJVEdldHRlckNvbXBsZXhE
T01KSVQ7Ci0KLXZvaWQgRE9NSklUR2V0dGVyQ29tcGxleDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUID0gJkRPTUpJ
VEdldHRlckNvbXBsZXhET01KSVQ7Ci0gICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0gRE9N
QXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0dGVyKCksIG51bGxw
dHIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBET01KSVRHZXR0ZXJDb21wbGV4OjppbmZvKCks
IGRvbUpJVCB9KTsKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZW5hYmxlRXhjZXB0aW9uIiksIDAsIGZ1bmN0aW9uRW5h
YmxlRXhjZXB0aW9uLCBOb0ludHJpbnNpYywgMCk7Ci19Ci0KLWNsYXNzIERPTUpJVEZ1bmN0aW9u
T2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewotcHVibGljOgotICAgIERPTUpJVEZ1bmN0aW9u
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdHlwZWRl
ZiBET01KSVROb2RlIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09i
amVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0
YXRpYyBET01KSVRGdW5jdGlvbk9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBET01K
SVRGdW5jdGlvbk9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9N
SklURnVuY3Rpb25PYmplY3Q+KHZtLmhlYXAsIHNpemVvZihET01KSVRGdW5jdGlvbk9iamVjdCkp
KSBET01KSVRGdW5jdGlvbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIG9iamVjdDsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzYWZlRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAg
ICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVE5vZGUqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwotICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwotICAgIH0K
LQotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRE9NSklUTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihub2RlLT52
YWx1ZSgpKSk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKEpJVCkKLSAgICBzdGF0aWMgUmVmPFNuaXBw
ZXQ+IGNoZWNrU3ViQ2xhc3NTbmlwcGV0KCkKLSAgICB7Ci0gICAgICAgIFJlZjxTbmlwcGV0PiBz
bmlwcGV0ID0gU25pcHBldDo6Y3JlYXRlKCk7Ci0gICAgICAgIHNuaXBwZXQtPm51bUZQU2NyYXRj
aFJlZ2lzdGVycyA9IDE7Ci0gICAgICAgIHNuaXBwZXQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxI
ZWxwZXJzJiBqaXQsIFNuaXBwZXRQYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSB2YWx1ZSA9IDQyLjA7Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgICAgIC8vIE1heSB1c2Ugc2NyYXRjaCByZWdp
c3RlcnMuCi0gICAgICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJnZhbHVlKSwgcGFyYW1zLmZwU2NyYXRjaCgwKSk7Ci0gICAgICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1sw
XS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUg
KyAxKSkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIH0pOwot
ICAgICAgICByZXR1cm4gc25pcHBldDsKLSAgICB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLX07Ci0KLXN0YXRpYyBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSBET01KSVRGdW5jdGlvbk9iamVjdFNpZ25hdHVyZSgodWlu
dHB0cl90KURPTUpJVEZ1bmN0aW9uT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9NSklURnVuY3Rp
b25PYmplY3Q6OmluZm8oKSwgRE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpIZWFwUmFu
Z2U6OnRvcCgpKSwgU3BlY0ludDMyT25seSk7Ci0KLXZvaWQgRE9NSklURnVuY3Rpb25PYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmdW5jIiks
IDAsIHNhZmVGdW5jdGlvbiwgTm9JbnRyaW5zaWMsICZET01KSVRGdW5jdGlvbk9iamVjdFNpZ25h
dHVyZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkp
OwotfQotCi1jbGFzcyBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0IDogcHVibGljIERPTUpJVE5v
ZGUgewotcHVibGljOgotICAgIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgewot
ICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKLQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIERPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgRE9NSklUQ2hlY2tTdWJDbGFz
c09iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdD4odm0uaGVhcCwgc2l6ZW9mKERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Qp
KSkgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIG9i
amVjdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
YWZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3QqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwotICAgICAgICBpZiAoIXRoaXNP
YmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFs
dWUoKSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IHVuc2FmZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRE9NSklUTm9kZSogbm9kZSkKLSAgICB7
Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihub2RlLT52YWx1ZSgpKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwotfTsKLQotc3RhdGljIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3RTaWduYXR1cmUoKHVpbnRw
dHJfdClET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9NSklUQ2hl
Y2tTdWJDbGFzc09iamVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKLQotdm9pZCBET01KSVRDaGVja1N1
YkNsYXNzT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiZnVuYyIpLCAwLCBzYWZlRnVuY3Rpb24sIE5vSW50cmluc2ljLCAmRE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkpOwotfQotCi1jbGFzcyBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Qg
OiBwdWJsaWMgRE9NSklUTm9kZSB7Ci1wdWJsaWM6Ci0gICAgRE9NSklUR2V0dGVyQmFzZUpTT2Jq
ZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdXNpbmcgQmFz
ZSA9IERPTUpJVE5vZGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RU
eXBlICsgMSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICB7Ci0gICAgICAgIERPTUpJVEdldHRlckJhc2VKU09iamVjdCogZ2V0dGVyID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0Pih2bS5o
ZWFwLCBzaXplb2YoRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KSkpIERPTUpJVEdldHRlckJhc2VK
U09iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2
bSk7Ci0gICAgICAgIHJldHVybiBnZXR0ZXI7Ci0gICAgfQotCi0gICAgY2xhc3MgRE9NSklUQXR0
cmlidXRlIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGNvbnN0ZXhwciBET01KSVRBdHRyaWJ1dGUoKQotICAgICAgICAgICAgOiBET01KSVQ6Okdl
dHRlclNldHRlcigKLSAgICAgICAgICAgICAgICBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OmN1
c3RvbUdldHRlciwKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgICAgICZjYWxsRE9NR2V0
dGVyLAotI2Vsc2UKLSAgICAgICAgICAgICAgICBudWxscHRyLAotI2VuZGlmCi0gICAgICAgICAg
ICAgICAgU3BlY0J5dGVjb2RlVG9wKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotI2lmIEVOQUJM
RShKSVQpCi0gICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHNsb3dD
YWxsKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogcG9pbnRlcikKLSAgICAgICAgewotICAgICAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0
aWNfY2FzdDxKU09iamVjdCo+KHBvaW50ZXIpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0PiBjYWxsRE9NR2V0
dGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTUdldHRlclNu
aXBwZXQ+IHNuaXBwZXQgPSBET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0OjpjcmVhdGUoKTsK
LSAgICAgICAgICAgIHNuaXBwZXQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKLSAgICAg
ICAgICAgIHNuaXBwZXQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIFNuaXBw
ZXRQYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMg
PSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgICAgICAgICBHUFJSZWcgZG9tID0g
cGFyYW1zWzFdLmdwcigpOwotICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRTbG93UGF0aENhbGwo
aml0Lmp1bXAoKSwgaml0LCBzbG93Q2FsbCwgcmVzdWx0cywgZG9tKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOwotCi0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIHJldHVybiBzbmlwcGV0OwotICAgICAgICB9Ci0jZW5kaWYKLSAgICB9OwotCi1w
cml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKHRoaXNPYmplY3QpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOwotICAgIH0KLX07Ci0KLXN0YXRpYyBjb25zdCBE
T01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OkRPTUpJVEF0dHJpYnV0ZSBET01KSVRHZXR0ZXJCYXNl
SlNPYmplY3RET01KSVQ7Ci0KLXZvaWQgRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGNv
bnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSAmRE9NSklUR2V0dGVyQmFzZUpTT2Jq
ZWN0RE9NSklUOwotICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCBudWxscHRyLCBET01BdHRy
aWJ1dGVBbm5vdGF0aW9uIHsgSlNPYmplY3Q6OmluZm8oKSwgZG9tSklUIH0pOwotICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImN1c3Rv
bUdldHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7Ci19Ci0KLWNvbnN0IENsYXNz
SW5mbyBFbGVtZW50OjpzX2luZm8gPSB7ICJFbGVtZW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShFbGVtZW50KSB9OwogY29uc3QgQ2xhc3NJ
bmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNxdWVyYWRlciIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFkZXIpIH07Ci1j
b25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKLWNvbnN0IENsYXNz
SW5mbyBJbXB1cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW1wdXJlR2V0dGVyKSB9
OwotY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlcjo6c19pbmZvID0geyAiQ3VzdG9tR2V0dGVy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
dXN0b21HZXR0ZXIpIH07Ci0jaWYgRU5BQkxFKEpJVCkKLWNvbnN0IENsYXNzSW5mbyBET01KSVRO
b2RlOjpzX2luZm8gPSB7ICJET01KSVROb2RlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgJkRP
TUpJVE5vZGU6OmNoZWNrU3ViQ2xhc3NTbmlwcGV0LCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJ
VE5vZGUpIH07Ci0jZWxzZQotY29uc3QgQ2xhc3NJbmZvIERPTUpJVE5vZGU6OnNfaW5mbyA9IHsg
IkRPTUpJVE5vZGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKERPTUpJVE5vZGUpIH07Ci0jZW5kaWYKLWNvbnN0IENsYXNzSW5mbyBET01KSVRH
ZXR0ZXI6OnNfaW5mbyA9IHsgIkRPTUpJVEdldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUR2V0dGVyKSB9OwotY29uc3QgQ2xh
c3NJbmZvIERPTUpJVEdldHRlckNvbXBsZXg6OnNfaW5mbyA9IHsgIkRPTUpJVEdldHRlckNvbXBs
ZXgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KERPTUpJVEdldHRlckNvbXBsZXgpIH07Ci1jb25zdCBDbGFzc0luZm8gRE9NSklUR2V0dGVyQmFz
ZUpTT2JqZWN0OjpzX2luZm8gPSB7ICJET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVEdldHRl
ckJhc2VKU09iamVjdCkgfTsKLSNpZiBFTkFCTEUoSklUKQotY29uc3QgQ2xhc3NJbmZvIERPTUpJ
VEZ1bmN0aW9uT2JqZWN0OjpzX2luZm8gPSB7ICJET01KSVRGdW5jdGlvbk9iamVjdCIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsICZET01KSVRGdW5jdGlvbk9iamVjdDo6Y2hlY2tTdWJDbGFzc1Nu
aXBwZXQsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklURnVuY3Rpb25PYmplY3QpIH07Ci0jZWxz
ZQotY29uc3QgQ2xhc3NJbmZvIERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpzX2luZm8gPSB7ICJET01K
SVRGdW5jdGlvbk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoRE9NSklURnVuY3Rpb25PYmplY3QpIH07Ci0jZW5kaWYKLWNvbnN0IENs
YXNzSW5mbyBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0OjpzX2luZm8gPSB7ICJET01KSVRDaGVj
a1N1YkNsYXNzT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0KSB9OwotY29uc3QgQ2xhc3NJ
bmZvIFJ1bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJyYXkpIH07
Ci1jb25zdCBDbGFzc0luZm8gU2ltcGxlT2JqZWN0OjpzX2luZm8gPSB7ICJTaW1wbGVPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNp
bXBsZU9iamVjdCkgfTsKLXN0YXRpYyB1bnNpZ25lZCBhc3luY1Rlc3RQYXNzZXMgeyAwIH07Ci1z
dGF0aWMgdW5zaWduZWQgYXN5bmNUZXN0RXhwZWN0ZWRQYXNzZXMgeyAwIH07Ci0KLUVsZW1lbnRI
YW5kbGVPd25lciogRWxlbWVudDo6aGFuZGxlT3duZXIoKQotewotICAgIHN0YXRpYyBFbGVtZW50
SGFuZGxlT3duZXIqIG93bmVyID0gMDsKLSAgICBpZiAoIW93bmVyKQotICAgICAgICBvd25lciA9
IG5ldyBFbGVtZW50SGFuZGxlT3duZXIoKTsKLSAgICByZXR1cm4gb3duZXI7Ci19Ci0KLXZvaWQg
RWxlbWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBSb290KiByb290KQotewotICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBzZXRSb290KHZtLCByb290KTsKLSAgICBtX3Jvb3Qt
PnNldEVsZW1lbnQodGhpcyk7Ci19CitzdGF0aWMgdW5zaWduZWQgYXN5bmNUZXN0UGFzc2VzIHsg
MCB9Oworc3RhdGljIHVuc2lnbmVkIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzIHsgMCB9OwogCiB9
CiAKQEAgLTExNDIsMTA3ICsyNDgsOSBAQCBwcml2YXRlOgogICAgIERlcXVlPFN0cmluZz4gbV9y
ZXBvcnRzOwogfTsKIAotY2xhc3MgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2Jq
ZWN0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwotCi0gICAgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgIHsg
fQotCi0gICAgc3RhdGljIEpTVGVzdEN1c3RvbUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpT
VGVzdEN1c3RvbUdldHRlclNldHRlciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPih2bS5oZWFwLCBzaXplb2YoSlNUZXN0Q3VzdG9t
R2V0dGVyU2V0dGVyKSkpIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcih2bSwgc3RydWN0dXJlKTsK
LSAgICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pOwotCi0gICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgREVDTEFS
RV9JTkZPOwotfTsKLQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0QWNjZXNzb3Io
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0g
ICAgLy8gUGFzc2VkIHx0aGlzfAotICAgIHJldHVybiB0aGlzVmFsdWU7Ci19Ci0KLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBjdXN0b21HZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHNsb3RWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFs
dWU6OmRlY29kZShzbG90VmFsdWUpLmluaGVyaXRzKGV4ZWMtPnZtKCksIEpTVGVzdEN1c3RvbUdl
dHRlclNldHRlcjo6aW5mbygpKSk7Ci0gICAgLy8gUGFzc2VkIHByb3BlcnR5IGhvbGRlci4KLSAg
ICByZXR1cm4gc2xvdFZhbHVlOwotfQotCi1zdGF0aWMgYm9vbCBjdXN0b21TZXRBY2Nlc3NvcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotCi0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIFJFTEVBU0VfQVNT
RVJUKHZhbHVlLmlzT2JqZWN0KCkpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2
YWx1ZSk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKLSAgICBvYmplY3QtPnB1
dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVzdWx0IiksIEpT
VmFsdWU6OmRlY29kZSh0aGlzT2JqZWN0KSwgc2xvdCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIGJvb2wgY3VzdG9tU2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBzbG90VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHNs
b3RWYWx1ZSkuaW5oZXJpdHMoZXhlYy0+dm0oKSwgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyOjpp
bmZvKCkpKTsKLQotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKLSAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9i
amVjdCk7Ci0gICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInJlc3VsdCIpLCBKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKSwgc2xvdCk7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAK
LSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJjdXN0b21WYWx1ZSIpLAotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgY3VzdG9tR2V0VmFsdWUsIGN1c3RvbVNldFZhbHVlKSwgMCk7Ci0gICAgcHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3VzdG9tQWNjZXNz
b3IiKSwKLSAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFj
Y2Vzc29yLCBjdXN0b21TZXRBY2Nlc3NvciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZvID0geyAiSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXIpIH07Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUHJveHkoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheShFeGVjU3Rh
dGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRl
SW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVP
YmplY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxl
eE9iamVjdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3QoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVjdChFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRp
bihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUq
KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRFbGVt
ZW50Um9vdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRWxlbWVudChFeGVjU3RhdGUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxlbWVudChFeGVjU3RhdGUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU2lt
cGxlT2JqZWN0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZShFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50U3RkT3V0KEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Q
cmludFN0ZEVycihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CkBAIC0xMjU2LDcgKzI2NCw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRm9yY2VHQ1Nsb3dQYXRocyhFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFkZHJl
c3NPZihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uR2V0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSopOwogI2lmbmRlZiBOREVCVUcKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcENhbGxGcmFtZShFeGVj
U3RhdGUqKTsKICNlbmRpZgpAQCAtMTI4MCw3ICsyODcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZhaWxOZXh0TmV3Q29kZUJsb2NrKEV4ZWNT
dGF0ZSopOwogc3RhdGljIE5PX1JFVFVSTl9XSVRIX1ZBTFVFIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSopOwotc3RhdGljIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkFib3J0KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GYWxz
ZTEoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkZhbHNlMihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKTsKQEAgLTEyOTEsMTIgKzI5Nyw2IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNDdXN0b21Q
cm9wZXJ0aWVzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25EdW1wVHlwZXNGb3JBbGxWYXJpYWJsZXMoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lv
bihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmV0dXJuVHlwZUZvcihFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXMoRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jhc2lj
QmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KEV4ZWNTdGF0ZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FbmFibGVFeGNlcHRpb25G
dXp6KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25EcmFpbk1pY3JvdGFza3MoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbklzMzJCaXRQbGF0Zm9ybShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZE1vZHVsZShFeGVjU3Rh
dGUqKTsKQEAgLTEzMjMsMTMgKzMyMywxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNsZWFyU2FtcGxpbmdGbGFncyhFeGVjU3RhdGUqKTsKICNlbmRpZgogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0
YWNrKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyhFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0UmFuZG9t
U2VlZChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uU2V0UmFuZG9tU2VlZChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4oRXhlY1N0YXRl
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdsb2JhbE9i
amVjdEZvck9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRG9sbGFyQ3JlYXRlUmVhbG0oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckRldGFjaEFycmF5QnVmZmVy
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Eb2xsYXJFdmFsU2NyaXB0KEV4ZWNTdGF0ZSopOwpAQCAtMTM0Myw4ICszNDAsNiBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhaXRGb3JSZXBvcnQoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBDYXBhY2l0eShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmxh
c2hIZWFwQWNjZXNzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRlclNldHRlcihFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tVGVz
dEdldHRlclNldHRlcihFeGVjU3RhdGUqKTsKIAogc3RydWN0IFNjcmlwdCB7CiAgICAgZW51bSBj
bGFzcyBTdHJpY3RNb2RlIHsKQEAgLTE0ODAsMTQgKzQ3NSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAicHJpbnQiLCBmdW5jdGlvblByaW50U3RkT3V0LCAxKTsKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJwcmludEVyciIsIGZ1bmN0aW9uUHJpbnRTdGRFcnIsIDEp
OwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInF1aXQiLCBmdW5jdGlvblF1aXQsIDApOwotICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgImFib3J0IiwgZnVuY3Rpb25BYm9ydCwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiZ2MiLCBmdW5jdGlvbkdDQW5kU3dlZXAsIDApOwogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImZ1bGxHQyIsIGZ1bmN0aW9uRnVsbEdDLCAwKTsKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJlZGVuR0MiLCBmdW5jdGlvbkVkZW5HQywgMCk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiZm9yY2VHQ1Nsb3dQYXRocyIsIGZ1bmN0aW9uRm9yY2VHQ1Nsb3dQYXRocywg
MCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2NIZWFwU2l6ZSIsIGZ1bmN0aW9uSGVhcFNp
emUsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImFkZHJlc3NPZiIsIGZ1bmN0aW9uQWRk
cmVzc09mLCAxKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRHZXR0ZXJTZXR0ZXIiLCBm
dW5jdGlvbkdldEdldHRlclNldHRlciwgMik7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgImR1bXBDYWxsRnJhbWUiLCBmdW5jdGlvbkR1bXBDYWxsRnJhbWUsIDApOwog
I2VuZGlmCkBAIC0xNTE4LDE3ICs1MTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAic2V0U2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncywgMSk7
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25D
bGVhclNhbXBsaW5nRmxhZ3MsIDEpOwogI2VuZGlmCi0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
c2hhZG93Q2hpY2tlbkZ1bmN0aW9uc09uU3RhY2siLCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5j
dGlvbnNPblN0YWNrLCAwKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRHbG9iYWxDb25z
dFJlZGVjbGFyYXRpb25TaG91bGROb3RUaHJvdyIsIGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRl
Y2xhcmF0aW9uU2hvdWxkTm90VGhyb3csIDApOwotICAgICAgICBhZGRDb25zdHJ1Y3RhYmxlRnVu
Y3Rpb24odm0sICJSb290IiwgZnVuY3Rpb25DcmVhdGVSb290LCAwKTsKLSAgICAgICAgYWRkQ29u
c3RydWN0YWJsZUZ1bmN0aW9uKHZtLCAiRWxlbWVudCIsIGZ1bmN0aW9uQ3JlYXRlRWxlbWVudCwg
MSk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxl
bWVudCwgMSk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5j
dGlvblNldEVsZW1lbnRSb290LCAyKTsKLSAgICAgICAgCi0gICAgICAgIGFkZENvbnN0cnVjdGFi
bGVGdW5jdGlvbih2bSwgIlNpbXBsZU9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2JqZWN0
LCAwKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRIaWRkZW5WYWx1ZSIsIGZ1bmN0aW9u
R2V0SGlkZGVuVmFsdWUsIDEpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEhpZGRlblZh
bHVlIiwgZnVuY3Rpb25TZXRIaWRkZW5WYWx1ZSwgMik7Ci0gICAgICAgIAorCiAgICAgICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgIkRGR1RydWUiKSwgMCwgZnVuY3Rpb25GYWxzZTEsIERGR1RydWVJbnRyaW5zaWMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiT1NSRXhpdCIpLCAwLCBmdW5jdGlvblVuZGVmaW5lZDEsIE9TUkV4aXRJbnRyaW5zaWMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElzRmluYWxUaWVy
SW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CkBAIC0xNTQwLDMwICs1MjMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAibWFrZU1hc3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIsIDApOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImhhc0N1c3RvbVByb3BlcnRpZXMiLCBmdW5jdGlvbkhh
c0N1c3RvbVByb3BlcnRpZXMsIDApOwogCi0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRl
UHJveHkiLCBmdW5jdGlvbkNyZWF0ZVByb3h5LCAxKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJjcmVhdGVSdW50aW1lQXJyYXkiLCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheSwgMCk7Ci0K
LSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVJbXB1cmVHZXR0ZXIiLCBmdW5jdGlvbkNy
ZWF0ZUltcHVyZUdldHRlciwgMSk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQ3Vz
dG9tR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QsIDApOwot
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVE5vZGVPYmplY3QiLCBmdW5jdGlv
bkNyZWF0ZURPTUpJVE5vZGVPYmplY3QsIDApOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNy
ZWF0ZURPTUpJVEdldHRlck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0
LCAwKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4
T2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0LCAwKTsKLSAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdCIsIGZ1bmN0
aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25PYmplY3QsIDApOwotICAgICAgICBhZGRGdW5jdGlvbih2
bSwgImNyZWF0ZURPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VENoZWNrU3ViQ2xhc3NPYmplY3QsIDApOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0
ZURPTUpJVEdldHRlckJhc2VKU09iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFz
ZUpTT2JqZWN0LCAwKTsKLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwg
ZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAyKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVh
dGVHbG9iYWxPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdCwgMCk7Ci0gICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldElt
cHVyZUdldHRlckRlbGVnYXRlLCAyKTsKIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBU
eXBlc0ZvckFsbFZhcmlhYmxlcyIsIGZ1bmN0aW9uRHVtcFR5cGVzRm9yQWxsVmFyaWFibGVzICwg
MCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZmluZFR5cGVGb3JFeHByZXNzaW9uIiwgZnVu
Y3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24sIDIpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwg
InJldHVyblR5cGVGb3IiLCBmdW5jdGlvblJldHVyblR5cGVGb3IsIDEpOwotCi0gICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZHVtcEJhc2ljQmxvY2tFeGVjdXRpb25SYW5nZXMiLCBmdW5jdGlvbkR1
bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzICwgMCk7Ci0gICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiaGFzQmFzaWNCbG9ja0V4ZWN1dGVkIiwgZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQs
IDIpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgImJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCIs
IGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50LCAyKTsKLQotICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImVuYWJsZUV4Y2VwdGlvbkZ1enoiLCBmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbkZ1
enosIDApOwogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHJhaW5NaWNyb3Rhc2tzIiwgZnVu
Y3Rpb25EcmFpbk1pY3JvdGFza3MsIDApOwogCkBAIC0xNTcyLDggKzUzNCw2IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJpc1JvcGUiLCBmdW5jdGlvbklzUm9wZSwgMSk7
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2FsbGVyU291cmNlT3JpZ2luIiwgZnVuY3Rpb25D
YWxsZXJTb3VyY2VPcmlnaW4sIDApOwogCi0gICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2xvYmFs
T2JqZWN0Rm9yT2JqZWN0IiwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QsIDEpOwotCiAg
ICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXMzMkJpdFBsYXRmb3JtIiwgZnVuY3Rpb25JczMyQml0
UGxhdGZvcm0sIDApOwogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibG9hZE1vZHVsZSIsIGZ1
bmN0aW9uTG9hZE1vZHVsZSwgMSk7CkBAIC0xNjM1LDkgKzU5NSw2IEBAIHByb3RlY3RlZDoKIAog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImhlYXBDYXBhY2l0eSIsIGZ1bmN0aW9uSGVhcENhcGFj
aXR5LCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJmbGFzaEhlYXBBY2Nlc3MiLCBmdW5j
dGlvbkZsYXNoSGVhcEFjY2VzcywgMCk7Ci0KLSAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2Fk
R2V0dGVyRnJvbUdldHRlclNldHRlciIsIGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0
ZXIsIDEpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJT
ZXR0ZXIiLCBmdW5jdGlvbkNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIsIDEpOwogICAgIH0K
ICAgICAKICAgICB2b2lkIGFkZEZ1bmN0aW9uKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCwgY29u
c3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50
cykKQEAgLTE2NTEsMTIgKzYwOCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24o
dm0sIHRoaXMsIG5hbWUsIGZ1bmN0aW9uLCBhcmd1bWVudHMpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGFkZENvbnN0cnVjdGFibGVGdW5jdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUsIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCi0gICAgewotICAgICAg
ICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFt
ZSk7Ci0gICAgICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgZnVuY3Rpb24pKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21p
c2UqIG1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSos
IEpTTW9kdWxlTG9hZGVyKiwgSlNTdHJpbmcqLCBKU1ZhbHVlLCBjb25zdCBTb3VyY2VPcmlnaW4m
KTsKICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1Zh
bHVlKTsKICAgICBzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpT
R2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1Zh
bHVlLCBKU1ZhbHVlKTsKQEAgLTIxMjUsMjAyICsxMDc2LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkpTQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVSb290KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJvb3Q6
OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50KEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBSb290
KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAg
ICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNy
ZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiIpKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHJv
b3QpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1l
bnQoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3Qq
Pih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBFbGVtZW50KiByZXN1bHQgPSBy
b290LT5lbGVtZW50KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyByZXN1
bHQgOiBqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblNldEVsZW1lbnRSb290KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBFbGVtZW50KiBlbGVt
ZW50ID0ganNEeW5hbWljQ2FzdDxFbGVtZW50Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAg
ICBSb290KiByb290ID0ganNEeW5hbWljQ2FzdDxSb290Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDEp
KTsKLSAgICBpZiAoZWxlbWVudCAmJiByb290KQotICAgICAgICBlbGVtZW50LT5zZXRSb290KHZt
LCByb290KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFNpbXBsZU9iamVj
dDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEhpZGRlblZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBT
aW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4o
dm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVjdCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCB1c2Ugb2YgZ2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiIpKTsKLSAgICAgICAgcmV0
dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c2ltcGxlT2JqZWN0LT5oaWRkZW5WYWx1ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNldEhpZGRlblZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBTaW1wbGVPYmplY3QqIHNp
bXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVjdCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCB1c2Ugb2Ygc2V0
SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiIpKTsKLSAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7Ci0gICAgfQotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAg
ICBzaW1wbGVPYmplY3QtPnNldEhpZGRlblZhbHVlKHZtLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBKU1ZhbHVl
IHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgSlNP
YmplY3QqIGpzVGFyZ2V0ID0gYXNPYmplY3QodGFyZ2V0LmFzQ2VsbCgpKTsKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSW1wdXJl
UHJveHlUeXBlKTsKLSAgICBKU1Byb3h5KiBwcm94eSA9IEpTUHJveHk6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlLCBqc1RhcmdldCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm94eSk7Ci19
Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJy
YXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAg
IFJ1bnRpbWVBcnJheSogYXJyYXkgPSBSdW50aW1lQXJyYXk6OmNyZWF0ZShleGVjKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5KTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBKU09iamVjdCogZGVsZWdh
dGUgPSBudWxscHRyOwotICAgIGlmICh0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgZGVsZWdh
dGUgPSBhc09iamVjdCh0YXJnZXQuYXNDZWxsKCkpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSW1wdXJlR2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwganNOdWxsKCkpOwotICAgIEltcHVyZUdldHRlciogcmVzdWx0ID0gSW1wdXJlR2V0
dGVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgZGVsZWdhdGUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBDdXN0b21HZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgQ3VzdG9tR2V0dGVyKiByZXN1
bHQgPSBDdXN0b21HZXR0ZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVE5vZGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBET01KSVRHZXR0ZXI6OmNyZWF0ZSh2bSwgRE9NSklUR2V0
dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNO
dWxsKCkpKSk7Ci0gICAgRE9NSklUTm9kZSogcmVzdWx0ID0gRE9NSklUTm9kZTo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9i
amVjdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRH
ZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBq
c051bGwoKSk7Ci0gICAgRE9NSklUR2V0dGVyKiByZXN1bHQgPSBET01KSVRHZXR0ZXI6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19
Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0
ZXJDb21wbGV4T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklUR2V0dGVyQ29tcGxleCogcmVz
dWx0ID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHN0cnVjdHVyZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklU
RnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklURnVuY3Rpb25PYmplY3QqIHJl
c3VsdCA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01K
SVRDaGVja1N1YkNsYXNzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7Ci0gICAgRE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdCogcmVzdWx0ID0gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6Y3JlYXRl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cnVjdHVyZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlckJhc2VKU09iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgp
KTsKLSAgICBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QqIHJlc3VsdCA9IERPTUpJVEdldHRlckJh
c2VKU09iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLX0KLQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgYmFzZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOwotICAgIGlmICghYmFzZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIEpTVmFsdWUgZGVsZWdhdGUgPSBl
eGVjLT5hcmd1bWVudCgxKTsKLSAgICBpZiAoIWRlbGVnYXRlLmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgSW1wdXJlR2V0dGVy
KiBpbXB1cmVHZXR0ZXIgPSBqc0R5bmFtaWNDYXN0PEltcHVyZUdldHRlcio+KHZtLCBhc09iamVj
dChiYXNlLmFzQ2VsbCgpKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFpbXB1cmVHZXR0ZXIpKSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImFyZ3VtZW50
IGlzIG5vdCBhbiBJbXB1cmVHZXR0ZXIiKSk7Ci0gICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1
ZSgpOwotICAgIH0KLSAgICBpbXB1cmVHZXR0ZXItPnNldERlbGVnYXRlKHZtLCBhc09iamVjdChk
ZWxlZ2F0ZS5hc0NlbGwoKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3
ZWVwKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMjM3
NCwyOCArMTEyOSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BZGQK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
Ci0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIGlmICghcHJv
cGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLQotICAgIFByb3BlcnR5U2xvdCBzbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICB2YWx1ZS5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoZXhlYyksIHNsb3QpOwotCi0g
ICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkKLSAg
ICAgICAgcmVzdWx0ID0gc2xvdC5nZXR0ZXJTZXR0ZXIoKTsKLSAgICBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IGpzTnVsbCgpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwot
fQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihFeGVjU3Rh
dGUqKQogewogICAgIC8vIFdlIG5lZWQgdGhpcyBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3
aXRoIHRoZSBNb3ppbGxhIEpTIHRlc3RzIGJ1dCBmb3Igbm93CkBAIC0yNTgzLDE5ICsxMzE2LDYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNsZQogfQogI2VuZGlmCiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TaGFkb3dDaGlja2VuRnVuY3Rp
b25zT25TdGFjayhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLnNoYWRvd0NoaWNrZW4oKS5mdW5jdGlvbnNP
blN0YWNrKGV4ZWMpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZE5vdFRocm93KEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnNldEdsb2JhbENvbnN0UmVk
ZWNsYXJhdGlvblNob3VsZFRocm93KGZhbHNlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uR2V0UmFuZG9tU2VlZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPndlYWtSYW5kb20o
KS5zZWVkKCkpKTsKQEAgLTI2MjksMTUgKzEzNDksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ2FsCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhz
dGF0ZSwgc291cmNlT3JpZ2luLnN0cmluZygpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoRXhlY1N0YXRlKiBleGVjKQot
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBSRUxFQVNFX0FT
U0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nbG9iYWxPYmplY3QoKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFs
T2JqZWN0KTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRs
aW5lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWZWN0b3I8Y2hhciwgMjU2PiBsaW5lOwpAQCAt
MzAxOSwyOSArMTczMCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25G
bGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0
ZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgR2V0dGVyU2V0dGVyKiBn
ZXR0ZXJTZXR0ZXIgPSBqc0R5bmFtaWNDYXN0PEdldHRlclNldHRlcio+KHZtLCBleGVjLT5hcmd1
bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFnZXR0ZXJTZXR0ZXIpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgdXNlIG9mIGxv
YWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyIHRlc3QgZnVuY3Rpb246IGFyZ3VtZW50IGlzIG5vdCBh
IEdldHRlclNldHRlciIpKTsKLSAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAg
fQotCi0gICAgSlNPYmplY3QqIGdldHRlciA9IGdldHRlclNldHRlci0+Z2V0dGVyKCk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZ2V0dGVyKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldHRl
cik7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0
b21UZXN0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDdXN0b21H
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwotfQotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+CiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19m
dW5kYW1lbnRhbDxWYWx1ZVR5cGU+Ojp2YWx1ZT46OnR5cGUgYWRkT3B0aW9uKFZNJiwgSlNPYmpl
Y3QqLCBJZGVudGlmaWVyLCBWYWx1ZVR5cGUpIHsgfQogCkBAIC0zMTA5LDExICsxNzk3LDYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblF1aQogI2VuZGlmCiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25BYm9ydChFeGVjU3RhdGUqKQotewot
ICAgIENSQVNIKCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25G
YWxzZTEoRXhlY1N0YXRlKikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxz
ZSkpOyB9CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFsc2UyKEV4ZWNT
dGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsgfQogCkBA
IC0zMTU2LDkyICsxODM5LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24o
RXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQodm0udHlwZVByb2ZpbGVyKCkpOwotICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5w
cm9jZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoImpzYyBUZXN0aW5nIEFQSTogZnVuY3Rpb25G
aW5kVHlwZUZvckV4cHJlc3Npb24iKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVu
Y3Rpb24oKSk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1p
Y0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3Qo
KSkpLT5qc0V4ZWN1dGFibGUoKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhleGVjLT5h
cmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOwotICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4
ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwotICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzb3VyY2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykg
KyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpKTsKLSAgICAKLSAgICBTdHJpbmcg
anNvblN0cmluZyA9IHZtLnR5cGVQcm9maWxlcigpLT50eXBlSW5mb3JtYXRpb25Gb3JFeHByZXNz
aW9uQXRPZmZzZXQoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCwgb2Zmc2V0LCBl
eGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUmV0dXJuVHlwZUZvcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7
Ci0gICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJh
bCgianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvblJldHVyblR5cGVGb3IiKSk7Ci0KLSAgICBKU1Zh
bHVlIGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24oKSk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVl
LmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKLQotICAgIHVuc2lnbmVk
IG9mZnNldCA9IGV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpOwotICAgIFN0
cmluZyBqc29uU3RyaW5nID0gdm0udHlwZVByb2ZpbGVyKCktPnR5cGVJbmZvcm1hdGlvbkZvckV4
cHJlc3Npb25BdE9mZnNldChUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1
cm4sIG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdm0pOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcpKTsKLX0KLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2Vz
KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7Ci0gICAgdm0uY29udHJvbEZsb3dQ
cm9maWxlcigpLT5kdW1wRGF0YSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNC
YXNpY0Jsb2NrRXhlY3V0ZWQoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKLQot
ICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFJFTEVB
U0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbigpKTsKLSAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0
aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwotCi0gICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5n
IHN1YnN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7Ci0g
ICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRv
U3RyaW5nKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQuY29udGFpbnMoc3Vi
c3RyaW5nKSk7Ci0gICAgaW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3RyaW5n
KSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgCi0gICAgYm9vbCBo
YXNFeGVjdXRlZCA9IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+aGFzQmFzaWNCbG9ja0F0VGV4
dE9mZnNldEJlZW5FeGVjdXRlZChvZmZzZXQsIGV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHZtKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihoYXNFeGVjdXRlZCkpOwotfQot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlv
bkNvdW50KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7Ci0KLSAgICBKU1ZhbHVl
IGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChm
dW5jdGlvblZhbHVlLmlzRnVuY3Rpb24oKSk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFz
Q2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKLQotICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcg
PSBhc1N0cmluZyhleGVjLT5hcmd1bWVudCgxKSktPnZhbHVlKGV4ZWMpOwotICAgIFN0cmluZyBz
b3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHNvdXJjZUNvZGVUZXh0LmNvbnRhaW5zKHN1YnN0cmluZykpOwot
ICAgIGludCBvZmZzZXQgPSBzb3VyY2VDb2RlVGV4dC5maW5kKHN1YnN0cmluZykgKyBleGVjdXRh
YmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOwotICAgIAotICAgIHNpemVfdCBleGVjdXRpb25D
b3VudCA9IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+YmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50
QXRUZXh0T2Zmc2V0KG9mZnNldCwgZXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdm0pOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShleGVjdXRpb25Db3VudCkpOwotfQotCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eihFeGVj
U3RhdGUqKQotewotICAgIE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSA9IHRydWU7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWljcm90YXNrcyhFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTMyODYsMjMgKzE4ODMsNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEgfHwgIWV4ZWMtPmFyZ3VtZW50KDAp
LmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0KLSAgICBTdHJpbmcgZnVuY3Rpb25UZXh0ID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQo
MCkpLT52YWx1ZShleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKLQotICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSA9IG1ha2VTb3VyY2Uo
ZnVuY3Rpb25UZXh0LCB7IH0pOwotICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgc291cmNlKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZnVuYyk7Ci19
Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMjUwOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5Niw3ICs4OTYsNyBAQCBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlRG9sbGFyVk0oKSkpIHsKICAgICAgICAgbV9kb2xsYXJWTVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTRG9sbGFyVk06OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKTsKLSAgICAgICAgSlNEb2xsYXJWTSogZG9sbGFyVk0gPSBKU0RvbGxhclZN
OjpjcmVhdGUodm0sIHRoaXMsIG1fZG9sbGFyVk1TdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBK
U0RvbGxhclZNKiBkb2xsYXJWTSA9IEpTRG9sbGFyVk06OmNyZWF0ZSh2bSwgbV9kb2xsYXJWTVN0
cnVjdHVyZS5nZXQoKSk7CiAKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvIGV4dHJhU3RhdGlj
R2xvYmFsc1tdID0gewogICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRvbGxhclZNUHJpdmF0ZU5hbWUoKSwgZG9sbGFyVk0sIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDIyNTA5NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MzIgKzI2LDEwMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RvbGxhclZN
LmgiCiAKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNs
dWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKICNp
bmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgor
I2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgorI2luY2x1ZGUgIlNuaXBwZXQuaCIKKyNpbmNsdWRl
ICJTbmlwcGV0UGFyYW1zLmgiCisjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCisjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1By
b2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCi1uYW1lc3Bh
Y2UgSlNDIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCitu
YW1lc3BhY2UgeworCitjbGFzcyBFbGVtZW50SGFuZGxlT3duZXI7CitjbGFzcyBSb290OworCitj
bGFzcyBFbGVtZW50IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIEVs
ZW1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOworCisgICAgUm9vdCogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdC5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0Um9vdChWTSYgdm0sIFJvb3QqIHJvb3QpIHsgbV9yb290LnNldCh2bSwgdGhp
cywgcm9vdCk7IH0KKworICAgIHN0YXRpYyBFbGVtZW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSb290KiByb290KQorICAgIHsKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxs
KCkpOworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8RWxlbWVudD4odm0uaGVhcCwgc2l6ZW9mKEVsZW1lbnQpKSkgRWxlbWVudCh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgZWxlbWVudC0+ZmluaXNoQ3JlYXRpb24odm0sIHJvb3QpOworICAgICAg
ICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
Um9vdCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgRWxlbWVudCogdGhpc09iamVjdCA9
IGpzQ2FzdDxFbGVtZW50Kj4oY2VsbCk7CisgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9y
b290KTsKKyAgICB9CisKKyAgICBzdGF0aWMgRWxlbWVudEhhbmRsZU93bmVyKiBoYW5kbGVPd25l
cigpOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxSb290PiBt
X3Jvb3Q7Cit9OworCitjbGFzcyBFbGVtZW50SGFuZGxlT3duZXIgOiBwdWJsaWMgV2Vha0hhbmRs
ZU93bmVyIHsKK3B1YmxpYzoKKyAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGpzQ2FzdDxFbGVtZW50
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgICAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3QoZWxlbWVudC0+cm9vdCgpKTsKKyAgICB9Cit9OworCitjbGFzcyBSb290
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBSb290KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2VsZW1lbnQuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpCisgICAgeworICAgICAgICBXZWFrPEVsZW1lbnQ+IG5ld0VsZW1lbnQoZWxl
bWVudCwgRWxlbWVudDo6aGFuZGxlT3duZXIoKSk7CisgICAgICAgIG1fZWxlbWVudC5zd2FwKG5l
d0VsZW1lbnQpOworICAgIH0KKworICAgIHN0YXRpYyBSb290KiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCkpOworICAg
ICAgICBSb290KiByb290ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Um9vdD4odm0uaGVh
cCwgc2l6ZW9mKFJvb3QpKSkgUm9vdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcm9vdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcm9vdDsKKyAgICB9CisKKyAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc09iamVjdCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCisgICAgeworICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFdlYWs8RWxlbWVudD4gbV9lbGVtZW50OworfTsKKworY2xhc3Mg
U2ltcGxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIFNp
bXBsZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNl
OworCisgICAgc3RhdGljIFNpbXBsZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKKyAgICAgICAgU2lt
cGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaW1w
bGVPYmplY3Q+KHZtLmhlYXAsIHNpemVvZihTaW1wbGVPYmplY3QpKSkgU2ltcGxlT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBzaW1wbGVPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHNpbXBsZU9iamVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgewor
ICAgICAgICBTaW1wbGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2ltcGxlT2JqZWN0Kj4o
Y2VsbCk7CisgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKKyAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9oaWRkZW5WYWx1ZSk7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgSlNWYWx1ZSBoaWRkZW5WYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9oaWRkZW5W
YWx1ZS5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEhpZGRlblZhbHVlKFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1ZS5pc0NlbGwoKSk7CisgICAg
ICAgIG1faGlkZGVuVmFsdWUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CisgICAgfQorCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1f
aGlkZGVuVmFsdWU7Cit9OworCitjbGFzcyBJbXB1cmVHZXR0ZXIgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CitwdWJsaWM6CisgICAgSW1wdXJlR2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW1wdXJlR2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAg
SW1wdXJlR2V0dGVyKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbXB1cmVH
ZXR0ZXI+KHZtLmhlYXAsIHNpemVvZihJbXB1cmVHZXR0ZXIpKSkgSW1wdXJlR2V0dGVyKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtLCBkZWxlZ2F0ZSk7
CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTT2JqZWN0KiBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgaWYgKGRlbGVnYXRlKQorICAgICAgICAgICAgbV9kZWxl
Z2F0ZS5zZXQodm0sIHRoaXMsIGRlbGVnYXRlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgbmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorICAgIHsKKyAgICAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgICAgICBJbXB1cmVHZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW1wdXJlR2V0
dGVyKj4ob2JqZWN0KTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX2RlbGVn
YXRlKSB7CisgICAgICAgICAgICBpZiAodGhpc09iamVjdC0+bV9kZWxlZ2F0ZS0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIG5hbWUsIHNsb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMs
IG5hbWUsIHNsb3QpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgICAgIEltcHVyZUdldHRlciogdGhpc09i
amVjdCA9IGpzQ2FzdDxJbXB1cmVHZXR0ZXIqPihjZWxsKTsKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9kZWxlZ2F0ZSk7CisgICAgfQorCisgICAgdm9pZCBzZXREZWxlZ2F0
ZShWTSYgdm0sIEpTT2JqZWN0KiBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIG1fZGVsZWdhdGUu
c2V0KHZtLCB0aGlzLCBkZWxlZ2F0ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdyaXRlQmFy
cmllcjxKU09iamVjdD4gbV9kZWxlZ2F0ZTsKK307CisKK2NsYXNzIEN1c3RvbUdldHRlciA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBDdXN0b21HZXR0ZXIoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgeworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90Owor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAg
c3RhdGljIEN1c3RvbUdldHRlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBDdXN0b21HZXR0ZXIqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEN1c3RvbUdldHRlcj4odm0uaGVhcCwgc2l6ZW9mKEN1c3RvbUdldHRlcikpKSBD
dXN0b21HZXR0ZXIodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRp
b24odm0pOworICAgICAgICByZXR1cm4gZ2V0dGVyOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICB7CisgICAg
ICAgIEN1c3RvbUdldHRlciogdGhpc09iamVjdCA9IGpzQ2FzdDxDdXN0b21HZXR0ZXIqPihvYmpl
Y3QpOworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IFByb3BlcnR5TmFtZShJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJjdXN0b21HZXR0ZXIiKSkpIHsKKyAgICAgICAgICAgIHNsb3Qu
c2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtLCB0aGlzT2JqZWN0LT5jdXN0b21HZXR0ZXIpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gUHJv
cGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImN1c3RvbUdldHRlckFjY2Vz
c29yIikpKSB7CisgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciwgdGhpc09iamVjdC0+Y3VzdG9tR2V0dGVyQWNlc3Nvcik7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1
c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgIEN1c3RvbUdl
dHRlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8Q3VzdG9tR2V0dGVyKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBib29s
IHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFtZShJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFuKGV4ZWMpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICAgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KDEwMCkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0
dGVyQWNlc3NvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQorICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAKKyAgICAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICBib29s
IHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFtZShJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFuKGV4ZWMpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICAgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KDEwMCkpOworICAgIH0KK307CisKK2NsYXNzIFJ1bnRpbWVBcnJheSA6IHB1YmxpYyBKU0FycmF5
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQXJyYXkgQmFzZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworCisg
ICAgc3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7Cisg
ICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGNyZWF0ZVBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGlt
ZUFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5Pih2bS5oZWFw
KSkgUnVudGltZUFycmF5KGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgIHJ1bnRpbWVBcnJheS0+
ZmluaXNoQ3JlYXRpb24oZXhlYyk7CisgICAgICAgIHZtLmhlYXAuYWRkRmluYWxpemVyKHJ1bnRp
bWVBcnJheSwgZGVzdHJveSk7CisgICAgICAgIHJldHVybiBydW50aW1lQXJyYXk7CisgICAgfQor
CisgICAgflJ1bnRpbWVBcnJheSgpIHsgfQorCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihjZWxs
KS0+UnVudGltZUFycmF5Ojp+UnVudGltZUFycmF5KCk7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworCisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorICAgIHsKKyAgICAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0g
anNDYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdCk7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CisgICAgICAgICAgICBzbG90LnNldENhY2hl
YWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwg
dGhpc09iamVjdC0+bGVuZ3RoR2V0dGVyKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwg
dGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0sIGpzTnVtYmVyKHRoaXNPYmplY3QtPm1fdmVjdG9yW2luZGV4LnZhbHVlKCld
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgeworICAgICAgICBSdW50aW1lQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4ob2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4
IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0sIGpzTnVtYmVyKHRoaXNPYmplY3QtPm1fdmVjdG9yW2luZGV4XSkpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgs
IHNsb3QpOworICAgIH0KKworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorCisgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHVuc2lnbmVkIGdldExl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQorCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGVQcm90b3R5cGUoVk0mLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC0+YXJyYXlQcm90b3R5cGUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKERlcml2ZWRBcnJheVR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBBcnJheUNsYXNzKTsKKyAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAg
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgaSsrKQorICAgICAgICAg
ICAgbV92ZWN0b3IuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KGkpLnRvSW50MzIoZXhlYykpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0FycmF5KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwg
MCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQorICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgIFJ1bnRpbWVBcnJheSogdGhp
c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQorICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CisgICAgfQorCisg
ICAgVmVjdG9yPGludD4gbV92ZWN0b3I7Cit9OworCitjbGFzcyBET01KSVROb2RlIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIERPTUpJVE5vZGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCisgICAg
c3RhdGljIFJlZjxTbmlwcGV0PiBjaGVja1N1YkNsYXNzU25pcHBldCgpCisgICAgeworICAgICAg
ICBSZWY8U25pcHBldD4gc25pcHBldCA9IFNuaXBwZXQ6OmNyZWF0ZSgpOworICAgICAgICBzbmlw
cGV0LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBTbmlwcGV0UGFyYW1zJiBw
YXJhbXMpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2Vz
OworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoOCgKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNU
eXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAgICAgICAgICByZXR1cm4gZmFpbHVy
ZUNhc2VzOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHNuaXBwZXQ7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBzdGF0aWMgRE9NSklUTm9kZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgeworICAgICAgICBET01KSVROb2RlKiBnZXR0ZXIgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2bS5oZWFwLCBzaXplb2YoRE9NSklUTm9kZSkp
KSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBnZXR0ZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGdldHRlcjsKKyAgICB9CisKKyAgICBpbnQzMl90IHZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKworICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWYWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihET01KSVROb2RlLCBtX3ZhbHVlKTsgfQorCitwcml2YXRlOgorICAgIGludDMyX3QgbV92YWx1
ZSB7IDQyIH07Cit9OworCitjbGFzcyBET01KSVRHZXR0ZXIgOiBwdWJsaWMgRE9NSklUTm9kZSB7
CitwdWJsaWM6CisgICAgRE9NSklUR2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisgICAgdHlwZWRlZiBET01KSVROb2RlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpT
Qzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgRE9NSklUR2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERPTUpJVEdldHRlciogZ2V0dGVyID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVyPih2bS5oZWFwLCBzaXplb2Yo
RE9NSklUR2V0dGVyKSkpIERPTUpJVEdldHRlcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgZ2V0
dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQor
CisgICAgY2xhc3MgRE9NSklUQXR0cmlidXRlIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGNvbnN0ZXhwciBET01KSVRBdHRyaWJ1dGUoKQorICAg
ICAgICAgICAgOiBET01KSVQ6OkdldHRlclNldHRlcigKKyAgICAgICAgICAgICAgICBET01KSVRH
ZXR0ZXI6OmN1c3RvbUdldHRlciwKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICAgICAgICAgICZj
YWxsRE9NR2V0dGVyLAorI2Vsc2UKKyAgICAgICAgICAgICAgICBudWxscHRyLAorI2VuZGlmCisg
ICAgICAgICAgICAgICAgU3BlY0ludDMyT25seSkKKyAgICAgICAgeworICAgICAgICB9CisKKyNp
ZiBFTkFCTEUoSklUKQorICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBzbG93Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIHBvaW50ZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1
ZSgpKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTUdl
dHRlclNuaXBwZXQ+IGNhbGxET01HZXR0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8
RE9NSklUOjpDYWxsRE9NR2V0dGVyU25pcHBldD4gc25pcHBldCA9IERPTUpJVDo6Q2FsbERPTUdl
dHRlclNuaXBwZXQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgc25pcHBldC0+cmVxdWlyZUdsb2Jh
bE9iamVjdCA9IGZhbHNlOworICAgICAgICAgICAgc25pcHBldC0+c2V0R2VuZXJhdG9yKFs9XShD
Q2FsbEhlbHBlcnMmIGppdCwgU25pcHBldFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOworICAgICAg
ICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICAgICAg
cGFyYW1zLmFkZFNsb3dQYXRoQ2FsbChqaXQuanVtcCgpLCBqaXQsIHNsb3dDYWxsLCByZXN1bHRz
LCBkb20pOworICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7
CisKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHNuaXBwZXQ7CisgICAgICAg
IH0KKyNlbmRpZgorICAgIH07CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOworCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorICAgIHsKKyAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUTm9kZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7CisgICAgfQorfTsKKwor
c3RhdGljIGNvbnN0IERPTUpJVEdldHRlcjo6RE9NSklUQXR0cmlidXRlIERPTUpJVEdldHRlckRP
TUpJVDsKKwordm9pZCBET01KSVRHZXR0ZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgY29uc3QgRE9NSklUOjpHZXR0ZXJTZXR0
ZXIqIGRvbUpJVCA9ICZET01KSVRHZXR0ZXJET01KSVQ7CisgICAgYXV0byogY3VzdG9tR2V0dGVy
U2V0dGVyID0gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0
dGVyKCksIG51bGxwdHIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBET01KSVROb2RlOjppbmZv
KCksIGRvbUpJVCB9KTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IpOworfQorCitjbGFzcyBET01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERPTUpJVE5v
ZGUgeworcHVibGljOgorICAgIERPTUpJVEdldHRlckNvbXBsZXgoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBET01KSVRHZXR0ZXJDb21wbGV4KiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERPTUpJVEdldHRlckNvbXBsZXgqIGdldHRlciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckNvbXBsZXg+KHZtLmhlYXAsIHNp
emVvZihET01KSVRHZXR0ZXJDb21wbGV4KSkpIERPTUpJVEdldHRlckNvbXBsZXgodm0sIHN0cnVj
dHVyZSk7CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUQXR0cmli
dXRlIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IGNvbnN0ZXhwciBET01KSVRBdHRyaWJ1dGUoKQorICAgICAgICAgICAgOiBET01KSVQ6OkdldHRl
clNldHRlcigKKyAgICAgICAgICAgICAgICBET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0
ZXIsCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgICAgICAgICAmY2FsbERPTUdldHRlciwKKyNl
bHNlCisgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyNlbmRpZgorICAgICAgICAgICAgICAgIFNw
ZWNJbnQzMk9ubHkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAg
ICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gc2xvd0NhbGwoRXhlY1N0
YXRlKiBleGVjLCB2b2lkKiBwb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RE9NSklUTm9kZSo+
KHBvaW50ZXIpOworICAgICAgICAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9IGpzRHlu
YW1pY0Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBvYmplY3QpOworICAgICAgICAgICAg
aWYgKGRvbWppdEdldHRlckNvbXBsZXgpIHsKKyAgICAgICAgICAgICAgICBpZiAoZG9taml0R2V0
dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0
aW9uIikpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKG9iamVjdC0+dmFsdWUoKSkpOworICAgICAgICB9CisKKyAgICAgICAgc3Rh
dGljIFJlZjxET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0PiBjYWxsRE9NR2V0dGVyKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTUdldHRlclNuaXBwZXQ+IHNu
aXBwZXQgPSBET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0OjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNCwgIk51bWJl
ciBvZiByZWdpc3RlcnMgc2hvdWxkIGJlIGxhcmdlciBvciBlcXVhbCB0byA0LiIpOworICAgICAg
ICAgICAgdW5zaWduZWQgbnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgLSA0OworICAgICAgICAgICAgc25pcHBldC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gbnVtR1BTY3JhdGNoUmVnaXN0ZXJzOworICAgICAgICAgICAgc25pcHBldC0+bnVtRlBTY3Jh
dGNoUmVnaXN0ZXJzID0gMzsKKyAgICAgICAgICAgIHNuaXBwZXQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIFNuaXBwZXRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
NDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRT
bG93UGF0aENhbGwoaml0Lmp1bXAoKSwgaml0LCBzbG93Q2FsbCwgcmVzdWx0cywgZG9tR1BSKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm4gc25pcHBldDsKKyAgICAgICAgfQorI2VuZGlm
CisgICAgfTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgICAgIGlm
IChvYmplY3QpCisgICAgICAgICAgICBvYmplY3QtPm1fZW5hYmxlRXhjZXB0aW9uID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9N
SklUR2V0dGVyQ29tcGxleCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
ICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fZW5hYmxl
RXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJET01KSVRH
ZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBleGNlcHRpb24iKSkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7CisgICAgfQorCisg
ICAgYm9vbCBtX2VuYWJsZUV4Y2VwdGlvbiB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgY29uc3Qg
RE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklUQXR0cmlidXRlIERPTUpJVEdldHRlckNvbXBsZXhE
T01KSVQ7CisKK3ZvaWQgRE9NSklUR2V0dGVyQ29tcGxleDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUID0gJkRPTUpJ
VEdldHRlckNvbXBsZXhET01KSVQ7CisgICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0gRE9N
QXR0cmlidXRlR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0dGVyKCksIG51bGxw
dHIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBET01KSVRHZXR0ZXJDb21wbGV4OjppbmZvKCks
IGRvbUpJVCB9KTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZW5hYmxlRXhjZXB0aW9uIiksIDAsIGZ1bmN0aW9uRW5h
YmxlRXhjZXB0aW9uLCBOb0ludHJpbnNpYywgMCk7Cit9CisKK2NsYXNzIERPTUpJVEZ1bmN0aW9u
T2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgeworcHVibGljOgorICAgIERPTUpJVEZ1bmN0aW9u
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdHlwZWRl
ZiBET01KSVROb2RlIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09i
amVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBET01KSVRGdW5jdGlvbk9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBET01K
SVRGdW5jdGlvbk9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9N
SklURnVuY3Rpb25PYmplY3Q+KHZtLmhlYXAsIHNpemVvZihET01KSVRGdW5jdGlvbk9iamVjdCkp
KSBET01KSVRGdW5jdGlvbk9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsK
KyAgICB9CisKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzYWZlRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
ICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVE5vZGUqPih2
bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOworICAgIH0K
KworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRE9NSklUTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihub2RlLT52
YWx1ZSgpKSk7CisgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0aWMgUmVmPFNuaXBw
ZXQ+IGNoZWNrU3ViQ2xhc3NTbmlwcGV0KCkKKyAgICB7CisgICAgICAgIFJlZjxTbmlwcGV0PiBz
bmlwcGV0ID0gU25pcHBldDo6Y3JlYXRlKCk7CisgICAgICAgIHNuaXBwZXQtPm51bUZQU2NyYXRj
aFJlZ2lzdGVycyA9IDE7CisgICAgICAgIHNuaXBwZXQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxI
ZWxwZXJzJiBqaXQsIFNuaXBwZXRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSB2YWx1ZSA9IDQyLjA7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IGZhaWx1cmVDYXNlczsKKyAgICAgICAgICAgIC8vIE1heSB1c2Ugc2NyYXRjaCByZWdp
c3RlcnMuCisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJnZhbHVlKSwgcGFyYW1zLmZwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1sw
XS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUg
KyAxKSkpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm4gc25pcHBldDsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK3N0YXRpYyBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSBET01KSVRGdW5jdGlvbk9iamVjdFNpZ25hdHVyZSgodWlu
dHB0cl90KURPTUpJVEZ1bmN0aW9uT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9NSklURnVuY3Rp
b25PYmplY3Q6OmluZm8oKSwgRE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpIZWFwUmFu
Z2U6OnRvcCgpKSwgU3BlY0ludDMyT25seSk7CisKK3ZvaWQgRE9NSklURnVuY3Rpb25PYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJmdW5jIiks
IDAsIHNhZmVGdW5jdGlvbiwgTm9JbnRyaW5zaWMsICZET01KSVRGdW5jdGlvbk9iamVjdFNpZ25h
dHVyZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkp
OworfQorCitjbGFzcyBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0IDogcHVibGljIERPTUpJVE5v
ZGUgeworcHVibGljOgorICAgIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIERPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgRE9NSklUQ2hlY2tTdWJDbGFz
c09iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdD4odm0uaGVhcCwgc2l6ZW9mKERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3Qp
KSkgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9i
amVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
YWZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQorICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVENoZWNrU3Vi
Q2xhc3NPYmplY3QqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgICAgICBpZiAoIXRoaXNP
YmplY3QpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFs
dWUoKSkpOworICAgIH0KKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IHVuc2FmZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRE9NSklUTm9kZSogbm9kZSkKKyAgICB7
CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihub2RlLT52YWx1ZSgpKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworc3RhdGljIGNvbnN0IERP
TUpJVDo6U2lnbmF0dXJlIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3RTaWduYXR1cmUoKHVpbnRw
dHJfdClET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0Ojp1bnNhZmVGdW5jdGlvbiwgRE9NSklUQ2hl
Y2tTdWJDbGFzc09iamVjdDo6aW5mbygpLCBET01KSVQ6OkVmZmVjdDo6Zm9yUmVhZChET01KSVQ6
OkhlYXBSYW5nZTo6dG9wKCkpLCBTcGVjSW50MzJPbmx5KTsKKwordm9pZCBET01KSVRDaGVja1N1
YkNsYXNzT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiZnVuYyIpLCAwLCBzYWZlRnVuY3Rpb24sIE5vSW50cmluc2ljLCAmRE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkpOworfQorCitjbGFzcyBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Qg
OiBwdWJsaWMgRE9NSklUTm9kZSB7CitwdWJsaWM6CisgICAgRE9NSklUR2V0dGVyQmFzZUpTT2Jq
ZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdXNpbmcgQmFz
ZSA9IERPTUpJVE5vZGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RU
eXBlICsgMSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgICAgIERPTUpJVEdldHRlckJhc2VKU09iamVjdCogZ2V0dGVyID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0Pih2bS5o
ZWFwLCBzaXplb2YoRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KSkpIERPTUpJVEdldHRlckJhc2VK
U09iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUQXR0
cmlidXRlIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGNvbnN0ZXhwciBET01KSVRBdHRyaWJ1dGUoKQorICAgICAgICAgICAgOiBET01KSVQ6Okdl
dHRlclNldHRlcigKKyAgICAgICAgICAgICAgICBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OmN1
c3RvbUdldHRlciwKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICAgICAgICAgICZjYWxsRE9NR2V0
dGVyLAorI2Vsc2UKKyAgICAgICAgICAgICAgICBudWxscHRyLAorI2VuZGlmCisgICAgICAgICAg
ICAgICAgU3BlY0J5dGVjb2RlVG9wKQorICAgICAgICB7CisgICAgICAgIH0KKworI2lmIEVOQUJM
RShKSVQpCisgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHNsb3dD
YWxsKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogcG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0
aWNfY2FzdDxKU09iamVjdCo+KHBvaW50ZXIpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOworICAgICAgICB9CisKKyAg
ICAgICAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0PiBjYWxsRE9NR2V0
dGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTUdldHRlclNu
aXBwZXQ+IHNuaXBwZXQgPSBET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIHNuaXBwZXQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHNuaXBwZXQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIFNuaXBw
ZXRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMg
PSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZG9tID0g
cGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRTbG93UGF0aENhbGwo
aml0Lmp1bXAoKSwgaml0LCBzbG93Q2FsbCwgcmVzdWx0cywgZG9tKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCgpOworCisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIHJldHVybiBzbmlwcGV0OworICAgICAgICB9CisjZW5kaWYKKyAgICB9OworCitw
cml2YXRlOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHRoaXNPYmplY3QpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOworICAgIH0KK307CiAKLWNvbnN0IENsYXNzSW5m
byBKU0RvbGxhclZNOjpzX2luZm8gPSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNEb2xsYXJWTSkgfTsKK3N0YXRpYyBj
b25zdCBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OkRPTUpJVEF0dHJpYnV0ZSBET01KSVRHZXR0
ZXJCYXNlSlNPYmplY3RET01KSVQ7CiAKLXZvaWQgSlNEb2xsYXJWTTo6YWRkRnVuY3Rpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQordm9pZCBET01KSVRHZXR0
ZXJCYXNlSlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKLSAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgbmFtZSk7Ci0gICAgcHV0
RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbikpOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9t
SklUID0gJkRPTUpJVEdldHRlckJhc2VKU09iamVjdERPTUpJVDsKKyAgICBhdXRvKiBjdXN0b21H
ZXR0ZXJTZXR0ZXIgPSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZG9tSklU
LT5nZXR0ZXIoKSwgbnVsbHB0ciwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IEpTT2JqZWN0Ojpp
bmZvKCksIGRvbUpJVCB9KTsKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwgY3VzdG9tR2V0dGVyU2V0dGVy
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpOworfQorCitjbGFzcyBNZXNzYWdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPE1lc3NhZ2U+IHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlKEFycmF5QnVmZmVyQ29udGVudHMm
JiwgaW50MzJfdCk7CisgICAgfk1lc3NhZ2UoKTsKKworICAgIEFycmF5QnVmZmVyQ29udGVudHMm
JiByZWxlYXNlQ29udGVudHMoKSB7IHJldHVybiBXVEZNb3ZlKG1fY29udGVudHMpOyB9CisgICAg
aW50MzJfdCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKworcHJpdmF0ZToKKyAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVudHM7CisgICAgaW50MzJfdCBtX2luZGV4IHsg
MCB9OworfTsKKworY2xhc3MgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworCisgICAgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsgfQor
CisgICAgc3RhdGljIEpTVGVzdEN1c3RvbUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVz
dEN1c3RvbUdldHRlclNldHRlciogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyPih2bS5oZWFwLCBzaXplb2YoSlNUZXN0Q3VzdG9tR2V0
dGVyU2V0dGVyKSkpIEpTVGVzdEN1c3RvbUdldHRlclNldHRlcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZP
OworfTsKKworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0QWNjZXNzb3IoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgLy8g
UGFzc2VkIHx0aGlzfAorICAgIHJldHVybiB0aGlzVmFsdWU7Cit9CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjdXN0b21HZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNs
b3RWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRl
Y29kZShzbG90VmFsdWUpLmluaGVyaXRzKGV4ZWMtPnZtKCksIEpTVGVzdEN1c3RvbUdldHRlclNl
dHRlcjo6aW5mbygpKSk7CisgICAgLy8gUGFzc2VkIHByb3BlcnR5IGhvbGRlci4KKyAgICByZXR1
cm4gc2xvdFZhbHVlOworfQorCitzdGF0aWMgYm9vbCBjdXN0b21TZXRBY2Nlc3NvcihFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHZh
bHVlLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBvYmplY3QtPnB1dChvYmpl
Y3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicmVzdWx0IiksIEpTVmFsdWU6
OmRlY29kZSh0aGlzT2JqZWN0KSwgc2xvdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIGJvb2wgY3VzdG9tU2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBz
bG90VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworCisgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHNsb3RWYWx1
ZSkuaW5oZXJpdHMoZXhlYy0+dm0oKSwgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyOjppbmZvKCkp
KTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
CisgICAgb2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgInJlc3VsdCIpLCBKU1ZhbHVlOjpkZWNvZGUoc2xvdFZhbHVlKSwgc2xvdCk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisKKyAgICBw
dXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJj
dXN0b21WYWx1ZSIpLAorICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY3Vz
dG9tR2V0VmFsdWUsIGN1c3RvbVNldFZhbHVlKSwgMCk7CisgICAgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3VzdG9tQWNjZXNzb3IiKSwK
KyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGN1c3RvbUdldEFjY2Vzc29y
LCBjdXN0b21TZXRBY2Nlc3NvciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEVsZW1lbnQ6OnNf
aW5mbyA9IHsgIkVsZW1lbnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEVsZW1lbnQpIH07Citjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZv
ID0geyAiUm9vdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoUm9vdCkgfTsKK2NvbnN0IENsYXNzSW5mbyBTaW1wbGVPYmplY3Q6OnNfaW5mbyA9
IHsgIlNpbXBsZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU2ltcGxlT2JqZWN0KSB9OworY29uc3QgQ2xhc3NJbmZvIEltcHVyZUdl
dHRlcjo6c19pbmZvID0geyAiSW1wdXJlR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbXB1cmVHZXR0ZXIpIH07Citjb25zdCBDbGFz
c0luZm8gQ3VzdG9tR2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21HZXR0ZXIiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRlcikg
fTsKK2NvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJh
eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
UnVudGltZUFycmF5KSB9OworI2lmIEVOQUJMRShKSVQpCitjb25zdCBDbGFzc0luZm8gRE9NSklU
Tm9kZTo6c19pbmZvID0geyAiRE9NSklUTm9kZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsICZE
T01KSVROb2RlOjpjaGVja1N1YkNsYXNzU25pcHBldCwgQ1JFQVRFX01FVEhPRF9UQUJMRShET01K
SVROb2RlKSB9OworI2Vsc2UKK2NvbnN0IENsYXNzSW5mbyBET01KSVROb2RlOjpzX2luZm8gPSB7
ICJET01KSVROb2RlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShET01KSVROb2RlKSB9OworI2VuZGlmCitjb25zdCBDbGFzc0luZm8gRE9NSklU
R2V0dGVyOjpzX2luZm8gPSB7ICJET01KSVRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVEdldHRlcikgfTsKK2NvbnN0IENs
YXNzSW5mbyBET01KSVRHZXR0ZXJDb21wbGV4OjpzX2luZm8gPSB7ICJET01KSVRHZXR0ZXJDb21w
bGV4IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShET01KSVRHZXR0ZXJDb21wbGV4KSB9OworY29uc3QgQ2xhc3NJbmZvIERPTUpJVEdldHRlckJh
c2VKU09iamVjdDo6c19pbmZvID0geyAiRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShET01KSVRHZXR0
ZXJCYXNlSlNPYmplY3QpIH07CisjaWYgRU5BQkxFKEpJVCkKK2NvbnN0IENsYXNzSW5mbyBET01K
SVRGdW5jdGlvbk9iamVjdDo6c19pbmZvID0geyAiRE9NSklURnVuY3Rpb25PYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCAmRE9NSklURnVuY3Rpb25PYmplY3Q6OmNoZWNrU3ViQ2xhc3NT
bmlwcGV0LCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVEZ1bmN0aW9uT2JqZWN0KSB9OworI2Vs
c2UKK2NvbnN0IENsYXNzSW5mbyBET01KSVRGdW5jdGlvbk9iamVjdDo6c19pbmZvID0geyAiRE9N
SklURnVuY3Rpb25PYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKERPTUpJVEZ1bmN0aW9uT2JqZWN0KSB9OworI2VuZGlmCitjb25zdCBD
bGFzc0luZm8gRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdDo6c19pbmZvID0geyAiRE9NSklUQ2hl
Y2tTdWJDbGFzc09iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCkgfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3RDdXN0b21HZXR0ZXJTZXR0ZXI6OnNfaW5mbyA9IHsgIkpTVGVzdEN1c3RvbUdl
dHRlclNldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKSB9OworCitFbGVtZW50SGFuZGxlT3du
ZXIqIEVsZW1lbnQ6OmhhbmRsZU93bmVyKCkKK3sKKyAgICBzdGF0aWMgRWxlbWVudEhhbmRsZU93
bmVyKiBvd25lciA9IDA7CisgICAgaWYgKCFvd25lcikKKyAgICAgICAgb3duZXIgPSBuZXcgRWxl
bWVudEhhbmRsZU93bmVyKCk7CisgICAgcmV0dXJuIG93bmVyOworfQorCit2b2lkIEVsZW1lbnQ6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUm9vdCogcm9vdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgc2V0Um9vdCh2bSwgcm9vdCk7CisgICAgbV9yb290LT5zZXRFbGVt
ZW50KHRoaXMpOwogfQogCit9IC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEpTRG9sbGFyVk06OnNfaW5mbyA9IHsgIkRvbGxhclZNIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RvbGxhclZNKSB9
OworCiAvLyBUcmlnZ2VycyBhIGNyYXNoIGltbWVkaWF0ZWx5LgogLy8gVXNhZ2U6ICR2bS5jcmFz
aCgpCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyYXNoKEV4
ZWNTdGF0ZSopCitzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jhc2goRXhlY1N0YXRlKikKIHsKICAgICBDUkFTSCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBhIERGRyBmcmFtZS4KQEAgLTM1NiwzNyAr
MTM0NCw0NTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7
CiB9CiAKLXZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DcmVhdGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICBKU09iamVjdCoganNUYXJnZXQgPSBhc09iamVjdCh0YXJnZXQu
YXNDZWxsKCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOworICAgIEpTUHJveHkqIHByb3h5ID0g
SlNQcm94eTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHByb3h5KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFJ1bnRpbWVBcnJheSogYXJyYXkgPSBSdW50
aW1lQXJyYXk6OmNyZWF0ZShleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5
KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVh
dGVJbXB1cmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgSlNPYmplY3QqIGRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBp
ZiAodGFyZ2V0LmlzT2JqZWN0KCkpCisgICAgICAgIGRlbGVnYXRlID0gYXNPYmplY3QodGFyZ2V0
LmFzQ2VsbCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEltcHVyZUdldHRlcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsK
KyAgICBJbXB1cmVHZXR0ZXIqIHJlc3VsdCA9IEltcHVyZUdldHRlcjo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUsIGRlbGVnYXRlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9
CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3Vz
dG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IEN1c3RvbUdldHRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBDdXN0b21HZXR0ZXIqIHJlc3VsdCA9IEN1c3RvbUdl
dHRlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IERPTUpJVE5vZGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBET01KSVRHZXR0ZXI6OmNyZWF0ZSh2bSwgRE9NSklUR2V0dGVyOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkp
KSk7CisgICAgRE9NSklUTm9kZSogcmVzdWx0ID0gRE9NSklUTm9kZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklU
R2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
anNOdWxsKCkpOworICAgIERPTUpJVEdldHRlciogcmVzdWx0ID0gRE9NSklUR2V0dGVyOjpjcmVh
dGUodm0sIHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURP
TUpJVEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBET01KSVRHZXR0ZXJDb21w
bGV4KiByZXN1bHQgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gRE9NSklURnVuY3Rpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgRE9NSklURnVu
Y3Rpb25PYmplY3QqIHJlc3VsdCA9IERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpjcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxs
KCkpOworICAgIERPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QqIHJlc3VsdCA9IERPTUpJVENoZWNr
U3ViQ2xhc3NPYmplY3Q6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBz
dHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0
ZXJCYXNlSlNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIERPTUpJVEdldHRlckJhc2VKU09i
amVjdCogcmVzdWx0ID0gRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpjcmVhdGUodm0sIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2UgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAo
IWJhc2UuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBKU1ZhbHVlIGRlbGVnYXRlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAg
aWYgKCFkZWxlZ2F0ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIEltcHVyZUdldHRlciogaW1wdXJlR2V0dGVyID0ganNEeW5h
bWljQ2FzdDxJbXB1cmVHZXR0ZXIqPih2bSwgYXNPYmplY3QoYmFzZS5hc0NlbGwoKSkpOworICAg
IGlmIChVTkxJS0VMWSghaW1wdXJlR2V0dGVyKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJhcmd1bWVudCBpcyBub3QgYW4gSW1wdXJlR2V0dGVy
IikpOworICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgaW1wdXJl
R2V0dGVyLT5zZXREZWxlZ2F0ZSh2bSwgYXNPYmplY3QoZGVsZWdhdGUuYXNDZWxsKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEgfHwgIWV4ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBTdHJpbmcgZnVuY3Rpb25UZXh0ID0g
YXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpLT52YWx1ZShleGVjKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSA9IG1ha2VTb3VyY2UoZnVuY3Rpb25UZXh0LCB7IH0pOworICAgIEpTRnVuY3Rp
b24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KHZtLCBzb3VyY2UsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2
bSwgc291cmNlKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZnVuYyk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShSb290OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPih2
bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIikp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgcm9vdCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAg
IFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBFbGVtZW50KiByZXN1bHQgPSByb290LT5lbGVtZW50KCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyByZXN1bHQgOiBqc1VuZGVmaW5lZCgpKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVTaW1w
bGVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU2lt
cGxlT2JqZWN0OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEhpZGRlblZh
bHVlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBTaW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
U2ltcGxlT2JqZWN0Kj4odm0sIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoVU5MSUtFTFko
IXNpbXBsZU9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCB1c2Ugb2YgZ2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiIp
KTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgfQorICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc2ltcGxlT2JqZWN0LT5oaWRkZW5WYWx1ZSgpKTsKK30KKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRIaWRkZW5WYWx1ZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgU2ltcGxlT2JqZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9i
amVjdCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKFVOTElLRUxZKCFzaW1wbGVP
YmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkludmFsaWQgdXNlIG9mIHNldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iKSk7CisgICAg
ICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOworICAgIH0KKyAgICBKU1ZhbHVlIHZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgc2ltcGxlT2JqZWN0LT5zZXRIaWRkZW5WYWx1ZSh2bSwg
dmFsdWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tl
bkZ1bmN0aW9uc09uU3RhY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zaGFkb3dDaGlja2VuKCkuZnVu
Y3Rpb25zT25TdGFjayhleGVjKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3co
RXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgdm0uc2V0
R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coZmFsc2UpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
LnR5cGVQcm9maWxlcigpKTsKKyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0Vu
dHJpZXMoQVNDSUlMaXRlcmFsKCJqc2MgVGVzdGluZyBBUEk6IGZ1bmN0aW9uRmluZFR5cGVGb3JF
eHByZXNzaW9uIikpOworCisgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKCkpOwor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVu
Y3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVj
dXRhYmxlKCk7CisKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT5hcmd1bWVudCgxKS5pc1N0cmlu
ZygpKTsKKyAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkp
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5z
b3VyY2UoKS52aWV3KCkudG9TdHJpbmcoKTsKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJs
ZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKSk7CisgICAgCisgICAgU3RyaW5nIGpzb25TdHJpbmcg
PSB2bS50eXBlUHJvZmlsZXIoKS0+dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0
KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3JtYWwsIG9mZnNldCwgZXhlY3V0YWJsZS0+
c291cmNlSUQoKSwgdm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGV4
ZWMsIGpzb25TdHJpbmcpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25SZXR1cm5UeXBlRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKKyAg
ICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJq
c2MgVGVzdGluZyBBUEk6IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciIpKTsKKworICAgIEpTVmFsdWUg
ZnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmN0aW9uVmFsdWUuaXNGdW5jdGlvbigpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXND
ZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOworCisgICAgdW5zaWduZWQgb2Zm
c2V0ID0gZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCk7CisgICAgU3RyaW5n
IGpzb25TdHJpbmcgPSB2bS50eXBlUHJvZmlsZXIoKS0+dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVz
c2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiwg
b2Zmc2V0LCBleGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOworfQorCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFu
Z2VzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CisgICAgdm0uY29udHJvbEZs
b3dQcm9maWxlcigpLT5kdW1wRGF0YSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmls
ZXIoKSk7CisKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24oKSk7CisgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUo
KTsKKworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwor
ICAgIFN0cmluZyBzdWJzdHJpbmcgPSBhc1N0cmluZyhleGVjLT5hcmd1bWVudCgxKSktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2VDb2RlVGV4dCA9IGV4ZWN1dGFibGUtPnNvdXJjZSgp
LnZpZXcoKS50b1N0cmluZygpOworICAgIFJFTEVBU0VfQVNTRVJUKHNvdXJjZUNvZGVUZXh0LmNv
bnRhaW5zKHN1YnN0cmluZykpOworICAgIGludCBvZmZzZXQgPSBzb3VyY2VDb2RlVGV4dC5maW5k
KHN1YnN0cmluZykgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOwogICAgIAot
ICAgIGFkZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsICJjcmFzaCIsIGZ1bmN0aW9uQ3Jhc2gs
IDApOworICAgIGJvb2wgaGFzRXhlY3V0ZWQgPSB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmhh
c0Jhc2ljQmxvY2tBdFRleHRPZmZzZXRCZWVuRXhlY3V0ZWQob2Zmc2V0LCBleGVjdXRhYmxlLT5z
b3VyY2VJRCgpLCB2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaGFz
RXhlY3V0ZWQpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9m
aWxlcigpKTsKKworICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbigpKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9u
Kj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJs
ZSgpOworCisgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7
CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNl
KCkudmlldygpLnRvU3RyaW5nKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQu
Y29udGFpbnMoc3Vic3RyaW5nKSk7CisgICAgaW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZp
bmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAg
CisgICAgc2l6ZV90IGV4ZWN1dGlvbkNvdW50ID0gdm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5i
YXNpY0Jsb2NrRXhlY3V0aW9uQ291bnRBdFRleHRPZmZzZXQob2Zmc2V0LCBleGVjdXRhYmxlLT5z
b3VyY2VJRCgpLCB2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGV4ZWN1
dGlvbkNvdW50KSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eihFeGVjU3RhdGUqKQoreworICAgIE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSA9IHRydWU7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFs
dWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS5p
c09iamVjdCgpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4odmFsdWUpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChnbG9i
YWxPYmplY3QpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRHZXR0ZXJT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gZXhl
Yy0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFwcm9wZXJ0eS5pc1N0cmluZygpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgUHJvcGVydHlTbG90
IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkp
OworICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnRv
SWRlbnRpZmllcihleGVjKSwgc2xvdCk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQorICAgICAgICByZXN1bHQgPSBzbG90LmdldHRlclNl
dHRlcigpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0ganNOdWxsKCk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIg
PSBqc0R5bmFtaWNDYXN0PEdldHRlclNldHRlcio+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgaWYgKFVOTElLRUxZKCFnZXR0ZXJTZXR0ZXIpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgdXNlIG9mIGxvYWRHZXR0ZXJGcm9t
R2V0dGVyU2V0dGVyIHRlc3QgZnVuY3Rpb246IGFyZ3VtZW50IGlzIG5vdCBhIEdldHRlclNldHRl
ciIpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CisgICAgfQorCisgICAgSlNP
YmplY3QqIGdldHRlciA9IGdldHRlclNldHRlci0+Z2V0dGVyKCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZ2V0dGVyKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldHRlcik7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tVGVz
dEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCkpKTsKK30KKwordm9pZCBKU0RvbGxh
clZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZSh2bSkt
Pmdsb2JhbE9iamVjdCgpOworCisgICAgYXV0byBhZGRGdW5jdGlvbiA9IFsmXSAoVk0mIHZtLCBj
b25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1l
bnRzKSB7CisgICAgICAgIEpTRG9sbGFyVk06OmFkZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IG5hbWUsIGZ1bmN0aW9uLCBhcmd1bWVudHMpOworICAgIH07CisgICAgYXV0byBhZGRDb25zdHJ1
Y3RpYmxlRnVuY3Rpb24gPSBbJl0gKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykgeworICAgICAgICBKU0RvbGxhclZN
OjphZGRDb25zdHJ1Y3RpYmxlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgbmFtZSwgZnVuY3Rp
b24sIGFyZ3VtZW50cyk7CisgICAgfTsKKworICAgIGFkZEZ1bmN0aW9uKHZtLCAiYWJvcnQiLCBm
dW5jdGlvbkNyYXNoLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImNyYXNoIiwgZnVuY3Rpb25D
cmFzaCwgMCk7CisKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImRmZ1RydWUiKSwgMCwgZnVuY3Rpb25ERkdU
cnVlLCBERkdUcnVlSW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNwdU1mZW5jZSIpLCAwLCBm
dW5jdGlvbkNwdU1mZW5jZSwgQ1BVTWZlbmNlSW50cmluc2ljLCAwKTsKICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgImNwdVJkdHNjIiksIDAsIGZ1bmN0aW9uQ3B1UmR0c2MsIENQVVJkdHNjSW50cmluc2ljLCAw
KTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNwdUNwdWlkIiksIDAsIGZ1bmN0aW9uQ3B1Q3B1aWQsIENQ
VUNwdWlkSW50cmluc2ljLCAwKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNwdVBhdXNlIiksIDAsIGZ1
bmN0aW9uQ3B1UGF1c2UsIENQVVBhdXNlSW50cmluc2ljLCAwKTsKLSAgICBhZGRGdW5jdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCAiY3B1Q2xmbHVzaCIsIGZ1bmN0aW9uQ3B1Q2xmbHVzaCwgMik7Ci0g
ICAgCi0gICAgYWRkRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgImxsaW50VHJ1ZSIsIGZ1bmN0
aW9uTExpbnRUcnVlLCAwKTsKLSAgICBhZGRGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAiaml0
VHJ1ZSIsIGZ1bmN0aW9uSklUVHJ1ZSwgMCk7Ci0gICAgCi0gICAgYWRkRnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgImdjIiwgZnVuY3Rpb25HQywgMCk7Ci0gICAgYWRkRnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgImVkZW5HQyIsIGZ1bmN0aW9uRWRlbkdDLCAwKTsKLSAgICAKLSAgICBhZGRG
dW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAiY29kZUJsb2NrRm9yIiwgZnVuY3Rpb25Db2RlQmxv
Y2tGb3IsIDEpOwotICAgIGFkZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsICJjb2RlQmxvY2tG
b3JGcmFtZSIsIGZ1bmN0aW9uQ29kZUJsb2NrRm9yRnJhbWUsIDEpOwotICAgIGFkZEZ1bmN0aW9u
KHZtLCBnbG9iYWxPYmplY3QsICJwcmludFNvdXJjZUZvciIsIGZ1bmN0aW9uUHJpbnRTb3VyY2VG
b3IsIDEpOwotICAgIGFkZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsICJwcmludEJ5dGVjb2Rl
Rm9yIiwgZnVuY3Rpb25QcmludEJ5dGVjb2RlRm9yLCAxKTsKLSAgICAKLSAgICBhZGRGdW5jdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCAicHJpbnQiLCBmdW5jdGlvblByaW50LCAxKTsKLSAgICBhZGRG
dW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAicHJpbnRDYWxsRnJhbWUiLCBmdW5jdGlvblByaW50
Q2FsbEZyYW1lLCAwKTsKLSAgICBhZGRGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCAicHJpbnRT
dGFjayIsIGZ1bmN0aW9uUHJpbnRTdGFjaywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJjcHVD
bGZsdXNoIiwgZnVuY3Rpb25DcHVDbGZsdXNoLCAyKTsKKworICAgIGFkZEZ1bmN0aW9uKHZtLCAi
bGxpbnRUcnVlIiwgZnVuY3Rpb25MTGludFRydWUsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAi
aml0VHJ1ZSIsIGZ1bmN0aW9uSklUVHJ1ZSwgMCk7CisKKyAgICBhZGRGdW5jdGlvbih2bSwgImdj
IiwgZnVuY3Rpb25HQywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJlZGVuR0MiLCBmdW5jdGlv
bkVkZW5HQywgMCk7CisKKyAgICBhZGRGdW5jdGlvbih2bSwgImNvZGVCbG9ja0ZvciIsIGZ1bmN0
aW9uQ29kZUJsb2NrRm9yLCAxKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImNvZGVCbG9ja0ZvckZy
YW1lIiwgZnVuY3Rpb25Db2RlQmxvY2tGb3JGcmFtZSwgMSk7CisgICAgYWRkRnVuY3Rpb24odm0s
ICJwcmludFNvdXJjZUZvciIsIGZ1bmN0aW9uUHJpbnRTb3VyY2VGb3IsIDEpOworICAgIGFkZEZ1
bmN0aW9uKHZtLCAicHJpbnRCeXRlY29kZUZvciIsIGZ1bmN0aW9uUHJpbnRCeXRlY29kZUZvciwg
MSk7CisKKyAgICBhZGRGdW5jdGlvbih2bSwgInByaW50IiwgZnVuY3Rpb25QcmludCwgMSk7Cisg
ICAgYWRkRnVuY3Rpb24odm0sICJwcmludENhbGxGcmFtZSIsIGZ1bmN0aW9uUHJpbnRDYWxsRnJh
bWUsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAicHJpbnRTdGFjayIsIGZ1bmN0aW9uUHJpbnRT
dGFjaywgMCk7CisKKyAgICBhZGRGdW5jdGlvbih2bSwgInZhbHVlIiwgZnVuY3Rpb25WYWx1ZSwg
MSk7CisgICAgYWRkRnVuY3Rpb24odm0sICJnZXRwaWQiLCBmdW5jdGlvbkdldFBJRCwgMCk7CisK
KyAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVByb3h5IiwgZnVuY3Rpb25DcmVhdGVQcm94eSwg
MSk7CisgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVSdW50aW1lQXJyYXkiLCBmdW5jdGlvbkNy
ZWF0ZVJ1bnRpbWVBcnJheSwgMCk7CisKKyAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUltcHVy
ZUdldHRlciIsIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyLCAxKTsKKyAgICBhZGRGdW5jdGlv
bih2bSwgImNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0
dGVyT2JqZWN0LCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVE5vZGVPYmpl
Y3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QsIDApOworICAgIGFkZEZ1bmN0aW9u
KHZtLCAiY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0
ZXJPYmplY3QsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUR2V0dGVyQ29t
cGxleE9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCwgMCk7
CisgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRGdW5jdGlvbk9iamVjdCIsIGZ1bmN0
aW9uQ3JlYXRlRE9NSklURnVuY3Rpb25PYmplY3QsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Y3JlYXRlRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUQ2hl
Y2tTdWJDbGFzc09iamVjdCwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRH
ZXR0ZXJCYXNlSlNPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVj
dCwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVh
dGVCdWlsdGluLCAyKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdldHRlckRlbGVn
YXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CisKKyAgICBhZGRDb25z
dHJ1Y3RpYmxlRnVuY3Rpb24odm0sICJSb290IiwgZnVuY3Rpb25DcmVhdGVSb290LCAwKTsKKyAg
ICBhZGRDb25zdHJ1Y3RpYmxlRnVuY3Rpb24odm0sICJFbGVtZW50IiwgZnVuY3Rpb25DcmVhdGVF
bGVtZW50LCAxKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImdldEVsZW1lbnQiLCBmdW5jdGlvbkdl
dEVsZW1lbnQsIDEpOwogCi0gICAgYWRkRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgInZhbHVl
IiwgZnVuY3Rpb25WYWx1ZSwgMSk7Ci0gICAgYWRkRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwg
ImdldHBpZCIsIGZ1bmN0aW9uR2V0UElELCAwKTsKKyAgICBhZGRDb25zdHJ1Y3RpYmxlRnVuY3Rp
b24odm0sICJTaW1wbGVPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZVNpbXBsZU9iamVjdCwgMCk7Cisg
ICAgYWRkRnVuY3Rpb24odm0sICJnZXRIaWRkZW5WYWx1ZSIsIGZ1bmN0aW9uR2V0SGlkZGVuVmFs
dWUsIDEpOworICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SGlkZGVuVmFsdWUiLCBmdW5jdGlvblNl
dEhpZGRlblZhbHVlLCAyKTsKKworICAgIGFkZEZ1bmN0aW9uKHZtLCAic2hhZG93Q2hpY2tlbkZ1
bmN0aW9uc09uU3RhY2siLCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrLCAw
KTsKKyAgICBhZGRGdW5jdGlvbih2bSwgInNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3Vs
ZE5vdFRocm93IiwgZnVuY3Rpb25TZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRpb25TaG91bGROb3RU
aHJvdywgMCk7CisKKyAgICBhZGRGdW5jdGlvbih2bSwgImZpbmRUeXBlRm9yRXhwcmVzc2lvbiIs
IGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uLCAyKTsKKyAgICBhZGRGdW5jdGlvbih2bSwg
InJldHVyblR5cGVGb3IiLCBmdW5jdGlvblJldHVyblR5cGVGb3IsIDEpOworCisgICAgYWRkRnVu
Y3Rpb24odm0sICJkdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyIsIGZ1bmN0aW9uRHVtcEJh
c2ljQmxvY2tFeGVjdXRpb25SYW5nZXMgLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImhhc0Jh
c2ljQmxvY2tFeGVjdXRlZCIsIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkLCAyKTsKKyAg
ICBhZGRGdW5jdGlvbih2bSwgImJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCIsIGZ1bmN0aW9uQmFz
aWNCbG9ja0V4ZWN1dGlvbkNvdW50LCAyKTsKKworICAgIGFkZEZ1bmN0aW9uKHZtLCAiZW5hYmxl
RXhjZXB0aW9uRnV6eiIsIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uRnV6eiwgMCk7CisKKyAgICBh
ZGRGdW5jdGlvbih2bSwgImdsb2JhbE9iamVjdEZvck9iamVjdCIsIGZ1bmN0aW9uR2xvYmFsT2Jq
ZWN0Rm9yT2JqZWN0LCAxKTsKKworICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2V0R2V0dGVyU2V0dGVy
IiwgZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIsIDIpOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibG9h
ZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIiLCBmdW5jdGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0
dGVyLCAxKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0
ZXIiLCBmdW5jdGlvbkNyZWF0ZUN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIsIDEpOworfQorCit2b2lk
IEpTRG9sbGFyVk06OmFkZEZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2lnbmVk
IGFyZ3VtZW50cykKK3sKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgbmFtZSk7CisgICAgcHV0RGlyZWN0KHZtLCBpZGVudGlmaWVyLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0
cmluZygpLCBmdW5jdGlvbikpOworfQorCit2b2lkIEpTRG9sbGFyVk06OmFkZENvbnN0cnVjdGli
bGVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IGNo
YXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCit7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IG5hbWUpOworICAgIHB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwgZnVuY3Rp
b24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkocmV2aXNpb24gMjI1
MDk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0Rv
bGxhclZNKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBzdGF0aWMgSlNEb2xsYXJWTSogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBKU0RvbGxhclZNKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRG9sbGFyVk0+KHZtLmhlYXApKSBKU0Rv
bGxhclZNKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CiAgICAgCkBAIC01Myw4ICs1Myw5IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKICAgICB2b2lk
IGFkZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRp
dmVGdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKTsKKyAgICB2b2lkIGFkZENvbnN0cnVjdGli
bGVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZl
RnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNTExNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDE3LTExLTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIHVuc2FmZSBqc2Mgc2hlbGwgdGVzdCBmdW5jdGlvbnMgdG8gdGhlICR2bSBv
YmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Nzk5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bHdheXMgc2V0IC0tdXNlRG9sbGFyVk09dHJ1ZSBmb3IganNjIHJ1bnMgb2YgYmVuY2htYXJrcy4g
IFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UKKyAgICAgICAgc29tZSBtaWNyb2JlbmNobWFya3MgcmVs
aWVzIG9uIGNyZWF0ZUJ1aWx0aW4oKS4KKworICAgICAgICBBbHNvIHNldCAtLXVzZURvbGxhclZN
PXRydWUgZm9yIHJ1bkV4Y2VwdGlvbkZ1enogYW5kIHJ1bkV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6
ei4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOgorICAgICAgICAqIFNj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTctMTEtMjMgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBXVEY6OlN0cmluZyBvcGVyYXRpb25z
IHRoYXQgZG8gdW5uZWNlc3NhcnkgVW5pY29kZSBvcGVyYXRpb25zIGluc3RlYWQgb2YgQVNDSUkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzCShyZXZpc2lvbiAyMjUwOTcpCisrKyBUb29s
cy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcwkod29ya2luZyBjb3B5KQpAQCAtMTQwNyw2ICsx
NDA3LDcgQEAgY2xhc3MgVk0KICAgICAgIHwga2V5IHwKICAgICAgICRzY3JpcHQucHV0cyAidW5z
ZXQgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGtleSl9IgogICAgIH0KKyAgICAkc2NyaXB0LnB1
dHMgImV4cG9ydCBKU0NfdXNlRG9sbGFyVk09dHJ1ZSIgaWYgQHZtVHlwZSA9PSA6anNjCiAgICAg
JHNjcmlwdC5wdXRzICJleHBvcnQgRFlMRF9MSUJSQVJZX1BBVEg9I3tTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKG15TGliUGF0aC5qb2luKCc6JykudG9fcyl9IgogICAgICRzY3JpcHQucHV0cyAiZXhw
b3J0IERZTERfRlJBTUVXT1JLX1BBVEg9I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKG15TGliUGF0
aC5qb2luKCc6JykudG9fcyl9IgogICAgICRzY3JpcHQucHV0cyAiZXhwb3J0IExEX0xJQlJBUllf
UEFUSD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUobXlMaWJQYXRoLmpvaW4oJzonKS50b19zKX0i
CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJldmlzaW9uIDIyNTA5NykKKysr
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTg0
OCwxMiArODQ4LDEyIEBAIGRlZiBydW5Qcm9maWxlcgogZW5kCiAKIGRlZiBydW5FeGNlcHRpb25G
dXp6Ci0gICAgc3ViQ29tbWFuZCA9IGVzY2FwZUFsbChbcGF0aFRvVk0udG9fcywgJGJlbmNobWFy
ay50b19zXSkKKyAgICBzdWJDb21tYW5kID0gZXNjYXBlQWxsKFtwYXRoVG9WTS50b19zLCAiLS11
c2VEb2xsYXJWTT10cnVlIiwgJGJlbmNobWFyay50b19zXSkKICAgICBhZGRSdW5Db21tYW5kKCJl
eGNlcHRpb24tZnV6eiIsIFsicGVybCIsIChwYXRoVG9IZWxwZXJzICsgImpzLWV4Y2VwdGlvbi1m
dXp6IikudG9fcywgc3ViQ29tbWFuZF0sIHNpbGVudE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9y
SGFuZGxlcikKIGVuZAogCiBkZWYgcnVuRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6KG5hbWUsICpv
cHRpb25zKQotICAgIHN1YkNvbW1hbmQgPSBlc2NhcGVBbGwoW3BhdGhUb1ZNLnRvX3MsICRiZW5j
aG1hcmsudG9fc10gKyBvcHRpb25zKQorICAgIHN1YkNvbW1hbmQgPSBlc2NhcGVBbGwoW3BhdGhU
b1ZNLnRvX3MsICItLXVzZURvbGxhclZNPXRydWUiLCAkYmVuY2htYXJrLnRvX3NdICsgb3B0aW9u
cykKICAgICBhZGRSdW5Db21tYW5kKCJleGVjdXRhYmxlLWFsbG9jYXRpb24tZnV6ei0iICsgbmFt
ZSwgWyJwZXJsIiwgKHBhdGhUb0hlbHBlcnMgKyAianMtZXhlY3V0YWJsZS1hbGxvY2F0aW9uLWZ1
enoiKS50b19zLCBzdWJDb21tYW5kXSwgc2lsZW50T3V0cHV0SGFuZGxlciwgc2ltcGxlRXJyb3JI
YW5kbGVyKQogZW5kCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTA5NykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTExLTIzICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHVuc2FmZSBqc2Mg
c2hlbGwgdGVzdCBmdW5jdGlvbnMgdG8gdGhlICR2bSBvYmplY3QuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5ODAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9zdGFjay10
cmFjZS5qczoKKyAgICAgICAgKiBqcy9zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6CisKIDIwMTct
MTEtMjIgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEVuYWJs
ZSByZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1kaXNhYmxlZC5odG1sLgpJbmRleDogTGF5b3V0VGVz
dHMvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3N0YWNrLXRyYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjI1MDk3KQorKysgTGF5b3V0
VGVzdHMvanMvc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0
OCArMSwyNDggQEAKIFRoaXMgdGVzdCBjaGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyBpbiBz
cGVjaWFsIGNhc2VzLgogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBub3JtYWxJbm5lciBhdCBz
dGFjay10cmFjZS5qczo4NDo0NwotICAgIDEgICBub3JtYWxPdXRlciBhdCBzdGFjay10cmFjZS5q
czo4MzozNwotICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo4OToxOAorICAg
IDAgICBub3JtYWxJbm5lciBhdCBzdGFjay10cmFjZS5qczo4Nzo0NworICAgIDEgICBub3JtYWxP
dXRlciBhdCBzdGFjay10cmFjZS5qczo4NjozNworICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFj
ay10cmFjZS5qczo5MjoxOAogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIGlubmVyIGF0IHN0
YWNrLXRyYWNlLmpzOjgxOjQ0CisgICAgMCAgIGlubmVyIGF0IHN0YWNrLXRyYWNlLmpzOjg0OjQ0
CiAgICAgMSAgICBhdCBldmFsIGNvZGUKICAgICAyICAgZXZhbCBhdCBbbmF0aXZlIGNvZGVdCi0g
ICAgMyAgIGV2YWxlciBhdCBzdGFjay10cmFjZS5qczo4MjoyOQotICAgIDQgICBnbG9iYWwgY29k
ZSBhdCBzdGFjay10cmFjZS5qczo5MjoxMworICAgIDMgICBldmFsZXIgYXQgc3RhY2stdHJhY2Uu
anM6ODU6MjkKKyAgICA0ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6OTU6MTMKIAog
LS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBpbm5lciBhdCBzdGFjay10cmFjZS5qczo4MTo0NAot
ICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczo4MDozNAorICAgIDAgICBpbm5lciBhdCBz
dGFjay10cmFjZS5qczo4NDo0NAorICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczo4Mzoz
NAogICAgIDIgICAgYXQgZXZhbCBjb2RlCiAgICAgMyAgIGV2YWwgYXQgW25hdGl2ZSBjb2RlXQot
ICAgIDQgICBldmFsZXIgYXQgc3RhY2stdHJhY2UuanM6ODI6MjkKLSAgICA1ICAgZ2xvYmFsIGNv
ZGUgYXQgc3RhY2stdHJhY2UuanM6OTM6MTMKKyAgICA0ICAgZXZhbGVyIGF0IHN0YWNrLXRyYWNl
LmpzOjg1OjI5CisgICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjk2OjEzCiAK
IC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2UuanM6ODE6NDQK
LSAgICAxICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6OTY6MjMKKyAgICAwICAgaW5u
ZXIgYXQgc3RhY2stdHJhY2UuanM6ODQ6NDQKKyAgICAxICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2st
dHJhY2UuanM6OTk6MjMKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBpbm5lciBhdCBzdGFj
ay10cmFjZS5qczo4MTo0NAotICAgIDEgICBvdXRlciBhdCBzdGFjay10cmFjZS5qczo4MDozNAot
ICAgIDIgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczo5NzoyMwotCi0tLT4gU3RhY2sg
VHJhY2U6Ci0gICAgMCAgIGhvc3RUaHJvd2VyIGF0IHN0YWNrLXRyYWNlLmpzOjc4OjQzCi0gICAg
MSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjEwMDoxOAotCi0tLT4gU3RhY2sgVHJh
Y2U6Ci0gICAgMCAgIHNjcmlwdGVySW5uZXIgYXQgc3RhY2stdHJhY2UuanM6ODU6MzcKLSAgICAx
ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTAyOjIwCi0KLS0tPiBTdGFjayBUcmFj
ZToKLSAgICAwICAgc2NyaXB0ZXJPdXRlciBhdCBzdGFjay10cmFjZS5qczo4NjozNwotICAgIDEg
ICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoxMDM6MjAKLQotLS0+IFN0YWNrIFRyYWNl
OgotICAgIDAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAx
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgMiAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDMgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6MTA1OjQzCi0gICAgNSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjEwNTo0MwotICAgIDYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6
NDMKLSAgICA3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAg
OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDkgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAxMCAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDExICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgMTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczoxMDU6NDMKLSAgICAxMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjEwNTo0MwotICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQz
Ci0gICAgMTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAx
NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDE3ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgMTggICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDIwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6MTA1OjQzCi0gICAgMjEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czoxMDU6NDMKLSAgICAyMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0
MwotICAgIDIzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAg
MjQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAyNSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDI2ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgMjcgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjEwNTo0MwotICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6MTA1OjQzCi0gICAgMzAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6
NDMKLSAgICAzMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAg
IDMyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgMzMgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICAzNCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgMzYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczoxMDU6NDMKLSAgICAzNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjEwNTo0MwotICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1
OjQzCi0gICAgMzkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAg
ICA0MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDQxICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNDIgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA0MyAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6MTA1OjQzCi0gICAgNDUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczoxMDU6NDMKLSAgICA0NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEw
NTo0MwotICAgIDQ3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0g
ICAgNDggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA0OSAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDUwICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNTEgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA1MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDUzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6MTA1OjQzCi0gICAgNTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczox
MDU6NDMKLSAgICA1NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0Mwot
ICAgIDU2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNTcg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA1OCAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDU5ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNjAgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA2MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjEwNTo0MwotICAgIDYyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
MTA1OjQzCi0gICAgNjMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMK
LSAgICA2NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDY1
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNjYgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA2NyAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDY4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNjkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczoxMDU6NDMKLSAgICA3MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjEwNTo0MwotICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQz
Ci0gICAgNzIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA3
MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDc0ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgNzUgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA3NiAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDc3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6MTA1OjQzCi0gICAgNzggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czoxMDU6NDMKLSAgICA3OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0
MwotICAgIDgwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAg
ODEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA4MiAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDgzICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgODQgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA4NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjEwNTo0MwotICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6MTA1OjQzCi0gICAgODcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6
NDMKLSAgICA4OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAg
IDg5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgOTAgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAgICA5MSAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgOTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczoxMDU6NDMKLSAgICA5NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjEwNTo0MwotICAgIDk1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1
OjQzCi0gICAgOTYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLSAg
ICA5NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwNTo0MwotICAgIDk4ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA1OjQzCi0gICAgOTkgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDU6NDMKLQotLS0+IFN0YWNrIFRyYWNlOgotICAg
IDAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICAxICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgMiAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDMgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6MTE1OjI3Ci0gICAgNSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjEx
NToyNwotICAgIDYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAg
ICA3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgOCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDkgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICAxMCAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDExICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6MTE1OjI3Ci0gICAgMTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czoxMTU6MjcKLSAgICAxMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToy
NwotICAgIDE0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAg
MTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICAxNiAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDE3ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgMTggICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICAxOSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjExNToyNwotICAgIDIwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6MTE1OjI3Ci0gICAgMjEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6
MjcKLSAgICAyMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAg
IDIzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgMjQgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICAyNSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDI2ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgMjcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczoxMTU6MjcKLSAgICAyOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjExNToyNwotICAgIDI5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1
OjI3Ci0gICAgMzAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAg
ICAzMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDMyICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgMzMgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICAzNCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDM1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6MTE1OjI3Ci0gICAgMzYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczoxMTU6MjcKLSAgICAzNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjEx
NToyNwotICAgIDM4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0g
ICAgMzkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA0MCAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDQxICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNDIgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA0MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDQ0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6MTE1OjI3Ci0gICAgNDUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczox
MTU6MjcKLSAgICA0NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwot
ICAgIDQ3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNDgg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA0OSAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDUwICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNTEgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA1MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjExNToyNwotICAgIDUzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
MTE1OjI3Ci0gICAgNTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcK
LSAgICA1NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDU2
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNTcgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA1OCAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDU5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNjAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczoxMTU6MjcKLSAgICA2MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjExNToyNwotICAgIDYyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3
Ci0gICAgNjMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA2
NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDY1ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNjYgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA2NyAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDY4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6MTE1OjI3Ci0gICAgNjkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czoxMTU6MjcKLSAgICA3MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToy
NwotICAgIDcxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAg
NzIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA3MyAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDc0ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgNzUgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA3NiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjExNToyNwotICAgIDc3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6MTE1OjI3Ci0gICAgNzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6
MjcKLSAgICA3OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAg
IDgwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgODEgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA4MiAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDgzICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgODQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczoxMTU6MjcKLSAgICA4NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjExNToyNwotICAgIDg2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1
OjI3Ci0gICAgODcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAg
ICA4OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDg5ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgOTAgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA5MSAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDkyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6MTE1OjI3Ci0gICAgOTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczoxMTU6MjcKLSAgICA5NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjEx
NToyNwotICAgIDk1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0g
ICAgOTYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKLSAgICA5NyAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExNToyNwotICAgIDk4ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE1OjI3Ci0gICAgOTkgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczoxMTU6MjcKKyAgICAwICAgaW5uZXIgYXQgc3RhY2stdHJhY2Uu
anM6ODQ6NDQKKyAgICAxICAgb3V0ZXIgYXQgc3RhY2stdHJhY2UuanM6ODM6MzQKKyAgICAyICAg
Z2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTAwOjIzCisKKy0tPiBTdGFjayBUcmFjZToK
KyAgICAwICAgaG9zdFRocm93ZXIgYXQgc3RhY2stdHJhY2UuanM6ODE6NDMKKyAgICAxICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MTAzOjE4CisKKy0tPiBTdGFjayBUcmFjZToKKyAg
ICAwICAgc2NyaXB0ZXJJbm5lciBhdCBzdGFjay10cmFjZS5qczo4ODozNworICAgIDEgICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoxMDU6MjAKKworLS0+IFN0YWNrIFRyYWNlOgorICAg
IDAgICBzY3JpcHRlck91dGVyIGF0IHN0YWNrLXRyYWNlLmpzOjg5OjM3CisgICAgMSAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjEwNjoyMAorCistLT4gU3RhY2sgVHJhY2U6CisgICAg
MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDEgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICAyICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgMyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczoxMDg6NDMKKyAgICA1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4
OjQzCisgICAgNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAg
IDcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA4ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgOSAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDEwICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgMTEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczoxMDg6NDMKKyAgICAxMiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjEwODo0MworICAgIDEzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQz
CisgICAgMTQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICAx
NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDE2ICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgMTcgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICAxOCAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDE5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6MTA4OjQzCisgICAgMjAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czoxMDg6NDMKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0
MworICAgIDIyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAg
MjMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICAyNCAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDI1ICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgMjYgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICAyNyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjEwODo0MworICAgIDI4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6MTA4OjQzCisgICAgMjkgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6
NDMKKyAgICAzMCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAg
IDMxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgMzIgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICAzMyAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgMzUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczoxMDg6NDMKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjEwODo0MworICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4
OjQzCisgICAgMzggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAg
ICAzOSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDQwICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNDEgICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA0MiAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3Rh
Y2stdHJhY2UuanM6MTA4OjQzCisgICAgNDQgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFj
ZS5qczoxMDg6NDMKKyAgICA0NSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEw
ODo0MworICAgIDQ2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisg
ICAgNDcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA0OCAg
IHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDQ5ICAgc2VsZlJl
Y3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNTAgICBzZWxmUmVjdXJzaXZl
MSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0
YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJh
Y2UuanM6MTA4OjQzCisgICAgNTMgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczox
MDg6NDMKKyAgICA1NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0Mwor
ICAgIDU1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNTYg
ICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA1NyAgIHNlbGZS
ZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDU4ICAgc2VsZlJlY3Vyc2l2
ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNTkgICBzZWxmUmVjdXJzaXZlMSBhdCBz
dGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA2MCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRy
YWNlLmpzOjEwODo0MworICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6
MTA4OjQzCisgICAgNjIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMK
KyAgICA2MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDY0
ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNjUgICBzZWxm
UmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA2NiAgIHNlbGZSZWN1cnNp
dmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDY3ICAgc2VsZlJlY3Vyc2l2ZTEgYXQg
c3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNjggICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10
cmFjZS5qczoxMDg6NDMKKyAgICA2OSAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpz
OjEwODo0MworICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQz
CisgICAgNzEgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA3
MiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDczICAgc2Vs
ZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgNzQgICBzZWxmUmVjdXJz
aXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA3NSAgIHNlbGZSZWN1cnNpdmUxIGF0
IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDc2ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2st
dHJhY2UuanM6MTA4OjQzCisgICAgNzcgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5q
czoxMDg6NDMKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0
MworICAgIDc5ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAg
ODAgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA4MSAgIHNl
bGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDgyICAgc2VsZlJlY3Vy
c2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgODMgICBzZWxmUmVjdXJzaXZlMSBh
dCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA4NCAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNr
LXRyYWNlLmpzOjEwODo0MworICAgIDg1ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2Uu
anM6MTA4OjQzCisgICAgODYgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6
NDMKKyAgICA4NyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAg
IDg4ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgODkgICBz
ZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA5MCAgIHNlbGZSZWN1
cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDkxICAgc2VsZlJlY3Vyc2l2ZTEg
YXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgOTIgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFj
ay10cmFjZS5qczoxMDg6NDMKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNl
LmpzOjEwODo0MworICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4
OjQzCisgICAgOTUgICBzZWxmUmVjdXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAg
ICA5NiAgIHNlbGZSZWN1cnNpdmUxIGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworICAgIDk3ICAg
c2VsZlJlY3Vyc2l2ZTEgYXQgc3RhY2stdHJhY2UuanM6MTA4OjQzCisgICAgOTggICBzZWxmUmVj
dXJzaXZlMSBhdCBzdGFjay10cmFjZS5qczoxMDg6NDMKKyAgICA5OSAgIHNlbGZSZWN1cnNpdmUx
IGF0IHN0YWNrLXRyYWNlLmpzOjEwODo0MworCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDEgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICAyICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgMyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjExODoyNworICAgIDQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczox
MTg6MjcKKyAgICA1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3Cisg
ICAgNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDcgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA4ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgOSAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDEwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6MTE4OjI3CisgICAgMTEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czoxMTg6MjcKKyAgICAxMiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoy
NworICAgIDEzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAg
MTQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICAxNSAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDE2ICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgMTcgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICAxOCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjExODoyNworICAgIDE5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6MTE4OjI3CisgICAgMjAgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6
MjcKKyAgICAyMSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAg
IDIyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgMjMgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICAyNCAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDI1ICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgMjYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczoxMTg6MjcKKyAgICAyNyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjExODoyNworICAgIDI4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4
OjI3CisgICAgMjkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAg
ICAzMCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDMxICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgMzIgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICAzMyAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDM0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6MTE4OjI3CisgICAgMzUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczoxMTg6MjcKKyAgICAzNiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjEx
ODoyNworICAgIDM3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3Cisg
ICAgMzggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICAzOSAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDQwICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNDEgICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA0MiAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjExODoyNworICAgIDQzICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJh
Y2UuanM6MTE4OjI3CisgICAgNDQgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczox
MTg6MjcKKyAgICA0NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNwor
ICAgIDQ2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNDcg
ICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA0OCAgIHNlbGZS
ZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDQ5ICAgc2VsZlJlY3Vyc2l2
ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNTAgICBzZWxmUmVjdXJzaXZlMiBhdCBz
dGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA1MSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRy
YWNlLmpzOjExODoyNworICAgIDUyICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6
MTE4OjI3CisgICAgNTMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcK
KyAgICA1NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDU1
ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNTYgICBzZWxm
UmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA1NyAgIHNlbGZSZWN1cnNp
dmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDU4ICAgc2VsZlJlY3Vyc2l2ZTIgYXQg
c3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNTkgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10
cmFjZS5qczoxMTg6MjcKKyAgICA2MCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpz
OjExODoyNworICAgIDYxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3
CisgICAgNjIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA2
MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDY0ICAgc2Vs
ZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNjUgICBzZWxmUmVjdXJz
aXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA2NiAgIHNlbGZSZWN1cnNpdmUyIGF0
IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDY3ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2st
dHJhY2UuanM6MTE4OjI3CisgICAgNjggICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5q
czoxMTg6MjcKKyAgICA2OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoy
NworICAgIDcwICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAg
NzEgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA3MiAgIHNl
bGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDczICAgc2VsZlJlY3Vy
c2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgNzQgICBzZWxmUmVjdXJzaXZlMiBh
dCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA3NSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNr
LXRyYWNlLmpzOjExODoyNworICAgIDc2ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2Uu
anM6MTE4OjI3CisgICAgNzcgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6
MjcKKyAgICA3OCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAg
IDc5ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgODAgICBz
ZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA4MSAgIHNlbGZSZWN1
cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDgyICAgc2VsZlJlY3Vyc2l2ZTIg
YXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgODMgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFj
ay10cmFjZS5qczoxMTg6MjcKKyAgICA4NCAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNl
LmpzOjExODoyNworICAgIDg1ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4
OjI3CisgICAgODYgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAg
ICA4NyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDg4ICAg
c2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgODkgICBzZWxmUmVj
dXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA5MCAgIHNlbGZSZWN1cnNpdmUy
IGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDkxICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3Rh
Y2stdHJhY2UuanM6MTE4OjI3CisgICAgOTIgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFj
ZS5qczoxMTg6MjcKKyAgICA5MyAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjEx
ODoyNworICAgIDk0ICAgc2VsZlJlY3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3Cisg
ICAgOTUgICBzZWxmUmVjdXJzaXZlMiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA5NiAg
IHNlbGZSZWN1cnNpdmUyIGF0IHN0YWNrLXRyYWNlLmpzOjExODoyNworICAgIDk3ICAgc2VsZlJl
Y3Vyc2l2ZTIgYXQgc3RhY2stdHJhY2UuanM6MTE4OjI3CisgICAgOTggICBzZWxmUmVjdXJzaXZl
MiBhdCBzdGFjay10cmFjZS5qczoxMTg6MjcKKyAgICA5OSAgIHNlbGZSZWN1cnNpdmUyIGF0IHN0
YWNrLXRyYWNlLmpzOjExODoyNwogCiAtLT4gU3RhY2sgVHJhY2UgbWF0Y2hlcyBwYXR0ZXJuOgog
ICAgIDAgICAgYXQgZXZhbCBjb2RlCkBAIC0yNTAsMTExICsyNTAsMTExIEBAIFRoaXMgdGVzdCBj
aGVja3Mgc3RhY2sgdHJhY2UgY29yZWN0bmVzcyAKICAgICAyICAgc2VsZlJlY3Vyc2l2ZTMgYXQg
c3RhY2stdHJhY2UuanMKIAogLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICB0aHJvd0Vycm9yIGF0
IHN0YWNrLXRyYWNlLmpzOjEzOToyMAotICAgIDEgICB2YWx1ZU9mIGF0IHN0YWNrLXRyYWNlLmpz
OjE0NjoyNwotICAgIDIgICBnZXR0ZXIxIGF0IHN0YWNrLXRyYWNlLmpzOjE0OTo5Ci0gICAgMyAg
IG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTc1OjE3Ci0gICAgNCAgIGlubGluZWFi
bGUgYXQgc3RhY2stdHJhY2UuanM6MTgzOjI3Ci0gICAgNSAgIHlldEFub3RoZXJJbmxpbmVkQ2Fs
bCBhdCBzdGFjay10cmFjZS5qczoxODg6MTcKLSAgICA2ICAgbWFrZUlubGluYWJsZUNhbGwgYXQg
c3RhY2stdHJhY2UuanM6MTkzOjM0Ci0gICAgNyAgIGcgYXQgc3RhY2stdHJhY2UuanM6MjAyOjM0
CisgICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6MTQyOjIwCisgICAgMSAgIHZh
bHVlT2YgYXQgc3RhY2stdHJhY2UuanM6MTQ5OjI3CisgICAgMiAgIGdldHRlcjEgYXQgc3RhY2st
dHJhY2UuanM6MTUyOjkKKyAgICAzICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczox
Nzg6MTcKKyAgICA0ICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxODY6MjcKKyAgICA1
ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjE5MToxNworICAgIDYg
ICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxOTY6MzQKKyAgICA3ICAgZyBh
dCBzdGFjay10cmFjZS5qczoyMDU6MzQKICAgICA4ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAg
ICA5ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MjA1OjE2CisgICAgOSAgIGdsb2Jh
bCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjIwODoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAg
MCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6MTM5OjIwCi0gICAgMSAgIGdldHRlcjIg
YXQgc3RhY2stdHJhY2UuanM6MTU1OjkKLSAgICAyICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10
cmFjZS5qczoxNzc6MTcKLSAgICAzICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxODM6
MjcKLSAgICA0ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjE4ODox
NwotICAgIDUgICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxOTM6MzQKLSAg
ICA2ICAgZyBhdCBzdGFjay10cmFjZS5qczoyMDI6MzQKKyAgICAwICAgdGhyb3dFcnJvciBhdCBz
dGFjay10cmFjZS5qczoxNDI6MjAKKyAgICAxICAgZ2V0dGVyMiBhdCBzdGFjay10cmFjZS5qczox
NTg6OQorICAgIDIgICBub25JbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjE4MDoxNworICAg
IDMgICBpbmxpbmVhYmxlIGF0IHN0YWNrLXRyYWNlLmpzOjE4NjoyNworICAgIDQgICB5ZXRBbm90
aGVySW5saW5lZENhbGwgYXQgc3RhY2stdHJhY2UuanM6MTkxOjE3CisgICAgNSAgIG1ha2VJbmxp
bmFibGVDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjE5NjozNAorICAgIDYgICBnIGF0IHN0YWNrLXRy
YWNlLmpzOjIwNTozNAogICAgIDcgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDggICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoyMDU6MTYKKyAgICA4ICAgZ2xvYmFsIGNvZGUgYXQg
c3RhY2stdHJhY2UuanM6MjA4OjE2CiAKIC0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgdGhyb3dF
cnJvciBhdCBzdGFjay10cmFjZS5qczoxMzk6MjAKLSAgICAxICAgZ2V0dGVyMyBhdCBzdGFjay10
cmFjZS5qczoxNjc6MTMKLSAgICAyICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczox
Nzk6MTcKLSAgICAzICAgaW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxODM6MjcKLSAgICA0
ICAgeWV0QW5vdGhlcklubGluZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjE4ODoxNwotICAgIDUg
ICBtYWtlSW5saW5hYmxlQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxOTM6MzQKLSAgICA2ICAgZyBh
dCBzdGFjay10cmFjZS5qczoyMDI6MzQKKyAgICAwICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFj
ZS5qczoxNDI6MjAKKyAgICAxICAgZ2V0dGVyMyBhdCBzdGFjay10cmFjZS5qczoxNzA6MTMKKyAg
ICAyICAgbm9uSW5saW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxODI6MTcKKyAgICAzICAgaW5s
aW5lYWJsZSBhdCBzdGFjay10cmFjZS5qczoxODY6MjcKKyAgICA0ICAgeWV0QW5vdGhlcklubGlu
ZWRDYWxsIGF0IHN0YWNrLXRyYWNlLmpzOjE5MToxNworICAgIDUgICBtYWtlSW5saW5hYmxlQ2Fs
bCBhdCBzdGFjay10cmFjZS5qczoxOTY6MzQKKyAgICA2ICAgZyBhdCBzdGFjay10cmFjZS5qczoy
MDU6MzQKICAgICA3ICAgbWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICA4ICAgZ2xvYmFsIGNvZGUg
YXQgc3RhY2stdHJhY2UuanM6MjA1OjE2CisgICAgOCAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRy
YWNlLmpzOjIwODoxNgogCiAtLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHRocm93RXJyb3IgYXQg
c3RhY2stdHJhY2UuanM6MTM5OjIwCi0gICAgMSAgIHZhbHVlT2YgYXQgc3RhY2stdHJhY2UuanM6
MTYzOjI3Ci0gICAgMiAgIGdldHRlcjMgYXQgc3RhY2stdHJhY2UuanM6MTY5OjEzCi0gICAgMyAg
IG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTc5OjE3Ci0gICAgNCAgIGlubGluZWFi
bGUgYXQgc3RhY2stdHJhY2UuanM6MTgzOjI3Ci0gICAgNSAgIHlldEFub3RoZXJJbmxpbmVkQ2Fs
bCBhdCBzdGFjay10cmFjZS5qczoxODg6MTcKLSAgICA2ICAgbWFrZUlubGluYWJsZUNhbGwgYXQg
c3RhY2stdHJhY2UuanM6MTkzOjM0Ci0gICAgNyAgIGcgYXQgc3RhY2stdHJhY2UuanM6MjAyOjM0
CisgICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6MTQyOjIwCisgICAgMSAgIHZh
bHVlT2YgYXQgc3RhY2stdHJhY2UuanM6MTY2OjI3CisgICAgMiAgIGdldHRlcjMgYXQgc3RhY2st
dHJhY2UuanM6MTcyOjEzCisgICAgMyAgIG5vbklubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6
MTgyOjE3CisgICAgNCAgIGlubGluZWFibGUgYXQgc3RhY2stdHJhY2UuanM6MTg2OjI3CisgICAg
NSAgIHlldEFub3RoZXJJbmxpbmVkQ2FsbCBhdCBzdGFjay10cmFjZS5qczoxOTE6MTcKKyAgICA2
ICAgbWFrZUlubGluYWJsZUNhbGwgYXQgc3RhY2stdHJhY2UuanM6MTk2OjM0CisgICAgNyAgIGcg
YXQgc3RhY2stdHJhY2UuanM6MjA1OjM0CiAgICAgOCAgIG1hcCBhdCBbbmF0aXZlIGNvZGVdCi0g
ICAgOSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjIwNToxNgorICAgIDkgICBnbG9i
YWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoyMDg6MTYKIAogLS0+IFN0YWNrIFRyYWNlOgotICAg
IDAgICBoIGF0IHN0YWNrLXRyYWNlLmpzOjIxMzoyNAorICAgIDAgICBoIGF0IHN0YWNrLXRyYWNl
LmpzOjIxNjoyNAogICAgIDEgICBtYXAgYXQgW25hdGl2ZSBjb2RlXQotICAgIDIgICBtYXBUZXN0
IGF0IHN0YWNrLXRyYWNlLmpzOjIyMDoxMAotICAgIDMgICBtYXBUZXN0RHJpdmVyIGF0IHN0YWNr
LXRyYWNlLmpzOjIyNjoxNgotICAgIDQgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoy
MzE6MTgKKyAgICAyICAgbWFwVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMjM6MTAKKyAgICAzICAg
bWFwVGVzdERyaXZlciBhdCBzdGFjay10cmFjZS5qczoyMjk6MTYKKyAgICA0ICAgZ2xvYmFsIGNv
ZGUgYXQgc3RhY2stdHJhY2UuanM6MjM0OjE4CiAKIC0tPiBTdGFjayBUcmFjZToKICAgICAwICAg
bWFwIGF0IFtuYXRpdmUgY29kZV0KLSAgICAxICAgaCBhdCBzdGFjay10cmFjZS5qczoyMTU6MjEK
KyAgICAxICAgaCBhdCBzdGFjay10cmFjZS5qczoyMTg6MjEKICAgICAyICAgbWFwIGF0IFtuYXRp
dmUgY29kZV0KLSAgICAzICAgbWFwVGVzdCBhdCBzdGFjay10cmFjZS5qczoyMjA6MTAKLSAgICA0
ICAgbWFwVGVzdERyaXZlciBhdCBzdGFjay10cmFjZS5qczoyMjY6MTYKLSAgICA1ICAgZ2xvYmFs
IGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MjM3OjE4CisgICAgMyAgIG1hcFRlc3QgYXQgc3RhY2st
dHJhY2UuanM6MjIzOjEwCisgICAgNCAgIG1hcFRlc3REcml2ZXIgYXQgc3RhY2stdHJhY2UuanM6
MjI5OjE2CisgICAgNSAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjI0MDoxOAogCiAt
LT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6MTM5
OjIwCi0gICAgMSAgIGRmZ0Z1bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpzOjI0NjoxOQorICAgIDAg
ICB0aHJvd0Vycm9yIGF0IHN0YWNrLXRyYWNlLmpzOjE0MjoyMAorICAgIDEgICBkZmdGdW5jdGlv
biBhdCBzdGFjay10cmFjZS5qczoyNDk6MTkKICAgICAyICAgbWFwIGF0IFtuYXRpdmUgY29kZV0K
LSAgICAzICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MjU1OjE4CisgICAgMyAgIGds
b2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjI1ODoxOAogCiAtLT4gU3RhY2sgVHJhY2U6Ci0g
ICAgMCAgIHRocm93RXJyb3IgYXQgc3RhY2stdHJhY2UuanM6MTM5OjIwCi0gICAgMSAgIGRmZ0Z1
bmN0aW9uIGF0IHN0YWNrLXRyYWNlLmpzOjI0NjoxOQotICAgIDIgICBmIGF0IHN0YWNrLXRyYWNl
LmpzOjI2NDoxMAotICAgIDMgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczoyNzA6Ngot
Ci0tLT4gU3RhY2sgVHJhY2U6Ci0gICAgMCAgIHdpbGxUaHJvdyBhdCBzdGFjay10cmFjZS5qczoz
MDg6MjgKLSAgICAxICAgZGZnMSBhdCBzdGFjay10cmFjZS5qczozMTk6MTMKLSAgICAyICAgZGZn
MiBhdCBzdGFjay10cmFjZS5qczozMjM6OQotICAgIDMgICBkZmczIGF0IHN0YWNrLXRyYWNlLmpz
OjMyNzo5Ci0gICAgNCAgIGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjkzOjE0Ci0gICAgNSAg
IGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjM2Njo4Ci0KLS0tPiBTdGFjayBUcmFjZToK
LSAgICAwICAgd2lsbFRocm93RnVuYyBhdCBzdGFjay10cmFjZS5qczozMTM6NjkKLSAgICAxICAg
ZGZnNCBhdCBzdGFjay10cmFjZS5qczozMzE6MjcKLSAgICAyICAgZGZnNSBhdCBzdGFjay10cmFj
ZS5qczozMzU6OQotICAgIDMgICBkZmc2IGF0IHN0YWNrLXRyYWNlLmpzOjMzOTo5Ci0gICAgNCAg
IGRmZ1Rlc3QgYXQgc3RhY2stdHJhY2UuanM6MjkzOjE0Ci0gICAgNSAgIGdsb2JhbCBjb2RlIGF0
IHN0YWNrLXRyYWNlLmpzOjM2Nzo4Ci0KLS0tPiBTdGFjayBUcmFjZToKLSAgICAwICAgaW5saW5l
YWJsZVRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjMwMjo0MAotICAgIDEgICB3aWxsVGhyb3dFdmVu
dHVhbGx5IGF0IHN0YWNrLXRyYWNlLmpzOjMxMToyNAotICAgIDIgICBkZmc3IGF0IHN0YWNrLXRy
YWNlLmpzOjM0MzoxMwotICAgIDMgICBkZmc4IGF0IHN0YWNrLXRyYWNlLmpzOjM0Nzo5Ci0gICAg
NCAgIGRmZzkgYXQgc3RhY2stdHJhY2UuanM6MzUxOjkKLSAgICA1ICAgZGZnVGVzdCBhdCBzdGFj
ay10cmFjZS5qczoyOTM6MTQKLSAgICA2ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6
MzY4OjgKLQotLS0+IFN0YWNrIFRyYWNlOgotICAgIDAgICBpbmxpbmVhYmxlVGhyb3cgYXQgc3Rh
Y2stdHJhY2UuanM6MzAyOjQwCi0gICAgMSAgIHdpbGxUaHJvd0V2ZW50dWFsbHlGdW5jIGF0IHN0
YWNrLXRyYWNlLmpzOjMxNDo1OQotICAgIDIgICBkZmdhIGF0IHN0YWNrLXRyYWNlLmpzOjM1NToz
NwotICAgIDMgICBkZmdiIGF0IHN0YWNrLXRyYWNlLmpzOjM1OTo5Ci0gICAgNCAgIGRmZ2MgYXQg
c3RhY2stdHJhY2UuanM6MzYzOjkKLSAgICA1ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoy
OTM6MTQKLSAgICA2ICAgZ2xvYmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzY5OjgKKyAgICAw
ICAgdGhyb3dFcnJvciBhdCBzdGFjay10cmFjZS5qczoxNDI6MjAKKyAgICAxICAgZGZnRnVuY3Rp
b24gYXQgc3RhY2stdHJhY2UuanM6MjQ5OjE5CisgICAgMiAgIGYgYXQgc3RhY2stdHJhY2UuanM6
MjY3OjEwCisgICAgMyAgIGdsb2JhbCBjb2RlIGF0IHN0YWNrLXRyYWNlLmpzOjI3Mzo2CisKKy0t
PiBTdGFjayBUcmFjZToKKyAgICAwICAgd2lsbFRocm93IGF0IHN0YWNrLXRyYWNlLmpzOjMxMToy
OAorICAgIDEgICBkZmcxIGF0IHN0YWNrLXRyYWNlLmpzOjMyMjoxMworICAgIDIgICBkZmcyIGF0
IHN0YWNrLXRyYWNlLmpzOjMyNjo5CisgICAgMyAgIGRmZzMgYXQgc3RhY2stdHJhY2UuanM6MzMw
OjkKKyAgICA0ICAgZGZnVGVzdCBhdCBzdGFjay10cmFjZS5qczoyOTY6MTQKKyAgICA1ICAgZ2xv
YmFsIGNvZGUgYXQgc3RhY2stdHJhY2UuanM6MzY5OjgKKworLS0+IFN0YWNrIFRyYWNlOgorICAg
IDAgICB3aWxsVGhyb3dGdW5jIGF0IHN0YWNrLXRyYWNlLmpzOjMxNjo2OQorICAgIDEgICBkZmc0
IGF0IHN0YWNrLXRyYWNlLmpzOjMzNDoyNworICAgIDIgICBkZmc1IGF0IHN0YWNrLXRyYWNlLmpz
OjMzODo5CisgICAgMyAgIGRmZzYgYXQgc3RhY2stdHJhY2UuanM6MzQyOjkKKyAgICA0ICAgZGZn
VGVzdCBhdCBzdGFjay10cmFjZS5qczoyOTY6MTQKKyAgICA1ICAgZ2xvYmFsIGNvZGUgYXQgc3Rh
Y2stdHJhY2UuanM6MzcwOjgKKworLS0+IFN0YWNrIFRyYWNlOgorICAgIDAgICBpbmxpbmVhYmxl
VGhyb3cgYXQgc3RhY2stdHJhY2UuanM6MzA1OjQwCisgICAgMSAgIHdpbGxUaHJvd0V2ZW50dWFs
bHkgYXQgc3RhY2stdHJhY2UuanM6MzE0OjI0CisgICAgMiAgIGRmZzcgYXQgc3RhY2stdHJhY2Uu
anM6MzQ2OjEzCisgICAgMyAgIGRmZzggYXQgc3RhY2stdHJhY2UuanM6MzUwOjkKKyAgICA0ICAg
ZGZnOSBhdCBzdGFjay10cmFjZS5qczozNTQ6OQorICAgIDUgICBkZmdUZXN0IGF0IHN0YWNrLXRy
YWNlLmpzOjI5NjoxNAorICAgIDYgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozNzE6
OAorCistLT4gU3RhY2sgVHJhY2U6CisgICAgMCAgIGlubGluZWFibGVUaHJvdyBhdCBzdGFjay10
cmFjZS5qczozMDU6NDAKKyAgICAxICAgd2lsbFRocm93RXZlbnR1YWxseUZ1bmMgYXQgc3RhY2st
dHJhY2UuanM6MzE3OjU5CisgICAgMiAgIGRmZ2EgYXQgc3RhY2stdHJhY2UuanM6MzU4OjM3Cisg
ICAgMyAgIGRmZ2IgYXQgc3RhY2stdHJhY2UuanM6MzYyOjkKKyAgICA0ICAgZGZnYyBhdCBzdGFj
ay10cmFjZS5qczozNjY6OQorICAgIDUgICBkZmdUZXN0IGF0IHN0YWNrLXRyYWNlLmpzOjI5Njox
NAorICAgIDYgICBnbG9iYWwgY29kZSBhdCBzdGFjay10cmFjZS5qczozNzI6OAogCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9zdGFjay10cmFjZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvc3RhY2stdHJhY2UuanMJKHJldmlzaW9uIDIyNTA5NykKKysrIExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9zdGFjay10cmFjZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYg
QEAKK2lmICh0eXBlb2YgRWxlbWVudCA9PSAidW5kZWZpbmVkIiAmJiAkdm0pCisgICAgRWxlbWVu
dCA9ICR2bS5FbGVtZW50OworCiBpZiAoIXRoaXMuYWxlcnQpIHsKICAgICBkZWJ1ZyA9IHByaW50
OwogICAgIGRlc2NyaXB0aW9uID0gcHJpbnQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>