<?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>73297</bug_id>
          
          <creation_ts>2011-11-29 02:01:38 -0800</creation_ts>
          <short_desc>Refactor IndexedDB tests so that they can be reused in workers</short_desc>
          <delta_ts>2012-02-10 10:47:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>77805</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510617</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-29 02:01:38 -0800</bug_when>
    <thetext>Refactor IndexedDB tests so that they can be reused in workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510631</commentid>
    <comment_count>1</comment_count>
      <attachid>116927</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-29 02:18:48 -0800</bug_when>
    <thetext>Created attachment 116927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550436</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-06 17:07:18 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 77805 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554201</commentid>
    <comment_count>3</comment_count>
      <attachid>116927</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-10 10:47:33 -0800</bug_when>
    <thetext>Comment on attachment 116927
Patch

Cleared review? from attachment 116927 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116927</attachid>
            <date>2011-11-29 02:18:48 -0800</date>
            <delta_ts>2012-02-10 10:47:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73297-20111129021847.patch</filename>
            <type>text/plain</type>
            <size>44833</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzM5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGYxMzNlYWRkYmUzNzU1ZThhNWUz
NTVjMTM0ZGQ3YWI1NTRhNWUxYy4uMTQ5ZjZhYzgyMzEzMjc3Y2I4MDUwZjMwNWZkMDNkMGE1ZDU4
ZTcwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTExLTI5ICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvciBJbmRleGVkREIgdGVzdHMg
c28gdGhhdCB0aGV5IGNhbiBiZSByZXVzZWQgaW4gd29ya2VycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyOTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLmh0bWwuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKG9wZW5DYWxsYmFjayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1i
YXNpY3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAg
ICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKGFkZERh
dGEyKToKKyAgICAgICAgKGFkZERhdGEzKToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAgICAo
Z2V0T2JqZWN0RGF0YSk6CisgICAgICAgIChnZXRPYmplY3REYXRhMik6CisgICAgICAgIChnZXRP
YmplY3REYXRhMyk6CisgICAgICAgIChnZXREYXRhRmFpbCk6CisgICAgICAgIChnZXRPYmplY3RE
YXRhRmFpbCk6CisgICAgICAgIChnZXRPYmplY3REYXRhNCk6CisgICAgICAgIChvcGVuS2V5Q3Vy
c29yKToKKyAgICAgICAgKGN1cnNvcjFDb250aW51ZSk6CisgICAgICAgIChjdXJzb3IxQ29udGlu
dWUyKToKKyAgICAgICAgKGN1cnNvcjFDb250aW51ZTMpOgorICAgICAgICAob3Blbk9iamVjdEN1
cnNvcik6CisgICAgICAgIChjdXJzb3IyQ29udGludWUpOgorICAgICAgICAoY3Vyc29yMkNvbnRp
bnVlMik6CisgICAgICAgIChjdXJzb3IyQ29udGludWUzKToKKyAgICAgICAgKGxhc3QudHJ5Lmdl
dCB0ZXN0RmFpbGVkKToKKyAgICAgICAgKGxhc3QpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAg
KGNyZWF0ZUluZGV4KToKKyAgICAgICAgKGNvbW1pdEFuZENvbnRpbnVlKToKKyAgICAgICAgKHRl
c3RTZXRWZXJzaW9uQWJvcnQpOgorICAgICAgICAoY3JlYXRlQW5vdGhlckluZGV4KToKKyAgICAg
ICAgKGNoZWNrTWV0YWRhdGEpOgorICAgICAgICAoYWRkRGF0YSk6CisgICAgICAgIChhZGREYXRl
U3VjY2Vzcyk6CisgICAgICAgIChhZGRTdWNjZXNzKToKKyAgICAgICAgKGFkZEFnYWluRmFpbHVy
ZSk6CisgICAgICAgIChhZGRXaXRoTnVsbEluZGV4RmFpbHVyZSk6CisgICAgICAgIChnZXRTdWNj
ZXNzKToKKyAgICAgICAgKGdldFN1Y2Nlc3NEYXRlS2V5KToKKyAgICAgICAgKHJlbW92ZVN1Y2Nl
c3MpOgorICAgICAgICAocmVtb3ZlU3VjY2Vzc0J1dEZhbHNlKToKKwogMjAxMS0xMS0yOSAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgdW5za2lwIGZpeGVkIGZsYWt5IHRlc3QgYWZ0ZXIgcjEwMTMyNi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvYmFzaWNzLmh0bWwKaW5kZXggY2ZmOWRjN2NiNGNlNmNkMmViOGMxZmE3
NzEzZWNiNTVmZDgxMDY0Ny4uZDBkMmJhOWM4N2M5NmI0OGM0YWU5MTNjMzk0OGI0NmRiZGZiYjc1
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLmh0bWwKQEAgLTYsNjgg
KzYsNyBAQAogPGJvZHk+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmFz
aWNzLiIpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHNo
b3VsZEJlVHJ1ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7Ci0gICAgc2hvdWxkQmVG
YWxzZSgid2Via2l0SW5kZXhlZERCID09IG51bGwiKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgiJ3dl
YmtpdElEQkN1cnNvcicgaW4gd2luZG93Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgid2Via2l0SURC
Q3Vyc29yID09IG51bGwiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRl
eGVkREIub3BlbignYmFzaWNzJykiKTsKLSAgICBzaG91bGRCZVRydWUoIidyZXN1bHQnIGluIHJl
cXVlc3QiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJyZXF1ZXN0LnJlc3VsdCIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBzaG91bGRC
ZVRydWUoIidlcnJvckNvZGUnIGluIHJlcXVlc3QiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJyZXF1ZXN0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKLSAgICBzaG91bGRCZVRydWUoIid3ZWJraXRFcnJvck1lc3NhZ2UnIGlu
IHJlcXVlc3QiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJyZXF1ZXN0LndlYmtpdEVy
cm9yTWVzc2FnZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIi
KTsKLSAgICBzaG91bGRCZVRydWUoIidzb3VyY2UnIGluIHJlcXVlc3QiKTsKLSAgICBzaG91bGRC
ZSgicmVxdWVzdC5zb3VyY2UiLCAid2Via2l0SW5kZXhlZERCIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCIndHJhbnNhY3Rpb24nIGluIHJlcXVlc3QiKTsKLSAgICBzaG91bGRCZU51bGwoInJlcXVlc3Qu
dHJhbnNhY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidyZWFkeVN0YXRlJyBpbiByZXF1ZXN0
Iik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJ3ZWJraXRJREJSZXF1ZXN0
LkxPQURJTkciKTsKLSAgICBzaG91bGRCZVRydWUoIidvbnN1Y2Nlc3MnIGluIHJlcXVlc3QiKTsK
LSAgICBzaG91bGRCZU51bGwoInJlcXVlc3Qub25zdWNjZXNzIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCInb25lcnJvcicgaW4gcmVxdWVzdCIpOwotICAgIHNob3VsZEJlTnVsbCgicmVxdWVzdC5vbmVy
cm9yIik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QuTE9BRElORyIsICIxIik7Ci0gICAgc2hvdWxk
QmUoInJlcXVlc3QuRE9ORSIsICIyIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5DYWxsYmFjaygpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCIncmVzdWx0
JyBpbiBldmVudC50YXJnZXQiKTsKLSAgICBzaG91bGRCZVRydWUoIiEhZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2Vycm9yQ29kZScgaW4gZXZlbnQudGFyZ2V0Iik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiMCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiJ3dlYmtpdEVycm9yTWVzc2FnZScgaW4gZXZlbnQudGFyZ2V0Iik7Ci0gICAgc2hv
dWxkQmVVbmRlZmluZWQoImV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UiKTsKLSAgICBz
aG91bGRCZVRydWUoIidzb3VyY2UnIGluIGV2ZW50LnRhcmdldCIpOwotICAgIHNob3VsZEJlKCJy
ZXF1ZXN0LnNvdXJjZSIsICJ3ZWJraXRJbmRleGVkREIiKTsKLSAgICBzaG91bGRCZVRydWUoIid0
cmFuc2FjdGlvbicgaW4gZXZlbnQudGFyZ2V0Iik7Ci0gICAgc2hvdWxkQmVOdWxsKCJldmVudC50
YXJnZXQudHJhbnNhY3Rpb24iKTsKLSAgICBzaG91bGRCZVRydWUoIidyZWFkeVN0YXRlJyBpbiBy
ZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgIndlYmtp
dElEQlJlcXVlc3QuRE9ORSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29uc3VjY2VzcycgaW4gZXZl
bnQudGFyZ2V0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5MT0FESU5HIiwgIjEiKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LkRPTkUiLCAiMiIpOwotCi0gICAgZG9uZSgpOwotfQotCi10ZXN0
KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVhY2M1OTc0NGUzMzhmNTliYmRlNzM1ZTc0ZjNiZjU5NGI5MWRjNTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mu
anMKQEAgLTAsMCArMSw2NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIHdpbmRv
dyA9IHNlbGY7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdyZXNvdXJjZXMvZnMtd29ya2VyLWNv
bW1vbi5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmFzaWNzLiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIp
OworICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdEluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBz
aG91bGRCZVRydWUoIid3ZWJraXRJREJDdXJzb3InIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJl
RmFsc2UoIndlYmtpdElEQkN1cnNvciA9PSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ2Jhc2ljcycpIik7CisgICAgc2hvdWxkQmVUcnVl
KCIncmVzdWx0JyBpbiByZXF1ZXN0Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigicmVx
dWVzdC5yZXN1bHQiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJS
Iik7CisgICAgc2hvdWxkQmVUcnVlKCInZXJyb3JDb2RlJyBpbiByZXF1ZXN0Iik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdC5lcnJvckNvZGUiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0
RXJyb3JNZXNzYWdlJyBpbiByZXF1ZXN0Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
cmVxdWVzdC53ZWJraXRFcnJvck1lc3NhZ2UiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIik7CisgICAgc2hvdWxkQmVUcnVlKCInc291cmNlJyBpbiByZXF1ZXN0
Iik7CisgICAgc2hvdWxkQmUoInJlcXVlc3Quc291cmNlIiwgIndlYmtpdEluZGV4ZWREQiIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiJ3RyYW5zYWN0aW9uJyBpbiByZXF1ZXN0Iik7CisgICAgc2hvdWxk
QmVOdWxsKCJyZXF1ZXN0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVlKCIncmVhZHlT
dGF0ZScgaW4gcmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAi
d2Via2l0SURCUmVxdWVzdC5MT0FESU5HIik7CisgICAgc2hvdWxkQmVUcnVlKCInb25zdWNjZXNz
JyBpbiByZXF1ZXN0Iik7CisgICAgc2hvdWxkQmVOdWxsKCJyZXF1ZXN0Lm9uc3VjY2VzcyIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiJ29uZXJyb3InIGluIHJlcXVlc3QiKTsKKyAgICBzaG91bGRCZU51
bGwoInJlcXVlc3Qub25lcnJvciIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LkxPQURJTkciLCAi
MSIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LkRPTkUiLCAiMiIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlbkNhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ2FsbGJhY2soZXZ0KQoreworICAgIGV2
ZW50ID0gZXZ0OworICAgIHNob3VsZEJlVHJ1ZSgiJ3Jlc3VsdCcgaW4gZXZlbnQudGFyZ2V0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCIhIWV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRC
ZVRydWUoIidlcnJvckNvZGUnIGluIGV2ZW50LnRhcmdldCIpOworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3JDb2RlIiwgIjAiKTsKKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRFcnJv
ck1lc3NhZ2UnIGluIGV2ZW50LnRhcmdldCIpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCJldmVu
dC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlIik7CisgICAgc2hvdWxkQmVUcnVlKCInc291cmNl
JyBpbiBldmVudC50YXJnZXQiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5zb3VyY2UiLCAid2Vi
a2l0SW5kZXhlZERCIik7CisgICAgc2hvdWxkQmVUcnVlKCIndHJhbnNhY3Rpb24nIGluIGV2ZW50
LnRhcmdldCIpOworICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7
CisgICAgc2hvdWxkQmVUcnVlKCIncmVhZHlTdGF0ZScgaW4gcmVxdWVzdCIpOworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVhZHlTdGF0ZSIsICJ3ZWJraXRJREJSZXF1ZXN0LkRPTkUiKTsK
KyAgICBzaG91bGRCZVRydWUoIidvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQuTE9BRElORyIsICIxIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5E
T05FIiwgIjIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIganNUZXN0SXNBc3lu
YyA9IHRydWU7Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LWJhc2ljcy5odG1sCmluZGV4IDhiYTM3ZjM0YTVlOGE5YjQ5NTM0YzJmZjk4ZTEyNDEwNGVk
N2QwM2QuLjU5MDE5YzI1ZjVmNzRhZTJiYTUxMTY2OTQwZjAxODM0NGUxOWFkZmQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCkBAIC0yLDI2
NCArMiwxMiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorCiA8L2hlYWQ+CiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVz
dCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4LiIpOwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygid2Via2l0SW5kZXhlZERCLm9wZW4oJ2luZGV4LWJhc2ljcycpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgd2luZG93LnRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB3aW5kb3cuc3Rv
cmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCki
KTsKLSAgICB3aW5kb3cuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRl
eCgnaW5kZXhOYW1lJywgJ3gnKSIpOwotICAgIHdpbmRvdy5pbmRleE9iamVjdDIgPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lMicsICd5JywgZmFsc2UpIik7Ci0gICAg
d2luZG93LmluZGV4T2JqZWN0MyA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCd6SW5k
ZXgnLCAneicsIHRydWUpIik7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBhZGREYXRh
KCkKLXsKLSAgICBzaG91bGRCZVRydWUoIiduYW1lJyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3QubmFtZSIsICJpbmRleE5hbWUiKTsKLSAg
ICBzaG91bGRCZVRydWUoIidvYmplY3RTdG9yZScgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lm9iamVjdFN0b3JlLm5hbWUiLCAic3RvcmVO
YW1lIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIna2V5UGF0aCcgaW4gaW5kZXhPYmplY3QiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0LmtleVBhdGgiLCAieCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiJ3VuaXF1ZScgaW4gaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJpbmRleE9iamVjdC51bmlxdWUiKTsKLSAgICBzaG91bGRCZVRydWUoIidvcGVuS2V5Q3Vy
c29yJyBpbiBpbmRleE9iamVjdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJzb3InIGlu
IGluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCInZ2V0S2V5JyBpbiBpbmRleE9iamVj
dCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2dldCcgaW4gaW5kZXhPYmplY3QiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonLCB6OiAy
LjcyfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRhMjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkRGF0YTIoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291
cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJywgejogMi43MSwgZm9vYmFyOiAxMn0sICdr
ZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGEzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHdpbmRvdy5pbmRleE9iamVj
dDQgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaGlsZUFkZElzSW5GbGln
aHQnLCAneCcpIik7Ci0gICAgd2luZG93LmluZGV4T2JqZWN0NSA9IGV2YWxBbmRMb2coInN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleFdpdGhXZWlyZEtleVBhdGgnLCAnZm9vYmFyJykiKTsKLX0KLQot
ZnVuY3Rpb24gYWRkRGF0YTMoKQotewotICAgIC8vIEFkZCBkYXRhIHdoaWNoIGRvZXNuJ3QgaGF2
ZSBhIGtleSBpbiB0aGUgekluZGV4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICc0NTYnfSwgJ2tleTMnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0RGF0YSgpCi17Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCi17
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Mi5nZXRLZXkoJ3p6eicp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhMjsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2Jq
ZWN0RGF0YTIoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJrZXkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdDMu
Z2V0KDIuNzEpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhMzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZ2V0T2JqZWN0RGF0YTMoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC54IiwgInZhbHVlMiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0
RGF0YUZhaWw7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGFGYWlsKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBub3QgZXhpc3QnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBnZXRPYmplY3REYXRhRmFpbDsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0
RGF0YUZhaWwoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLQotICAgIGV2YWxBbmRM
b2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
Z2V0T2JqZWN0RGF0YTQ7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERhdGE0KCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1
bHQoKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0NC5nZXRLZXko
J3ZhbHVlMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29yOwotICAg
IHJlcXVlc3Qub25lcnJvciA9ICB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gb3BlbktleUN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0IiwgImtleTIiKTsKLQotICAgIHdpbmRvdy5yZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3IxQ29udGludWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCi17Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAiaW5kZXhPYmplY3QiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleSIpOwot
Ci0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdpbmRvdy5yZXF1ZXN0
Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250
aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51
bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5
IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCBy
ZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWUz
OwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUzKCkKLXsKLSAgICBzaG91bGRCZUZhbHNl
KCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJrZXkzIik7Ci0K
LSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgd2luZG93LnJlcXVlc3Qu
b25zdWNjZXNzID0gb3Blbk9iamVjdEN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3Blbk9iamVjdEN1
cnNvcigpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxs
Iik7Ci0KLSAgICB3aW5kb3cucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5D
dXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBjdXJzb3IyQ29udGludWUoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNl
IiwgImluZGV4T2JqZWN0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5rZXkiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOwotCi0gICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHdpbmRvdy5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvcjJDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51ZTIoKQotewotICAg
IHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54Iiwg
InZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS55IiwgInp6ejIiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0
IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKLSAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUzOwotfQot
Ci1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUzKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVu
dC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTMiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZTMiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICI0NTYiKTsK
LQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB3aW5kb3cucmVxdWVz
dC5vbnN1Y2Nlc3MgPSBsYXN0OwotfQotCi1mdW5jdGlvbiBsYXN0KCkKLXsKLSAgICBzaG91bGRC
ZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLQotICAgIHRyeSB7Ci0gICAg
ICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhPYmplY3QuZ2V0KHt9
KS4iKTsKLSAgICAgICAgaW5kZXhPYmplY3QuZ2V0KHt9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBh
c3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAg
dHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBpbmRleE9i
amVjdC5nZXRLZXkoe30pLiIpOwotICAgICAgICBpbmRleE9iamVjdC5nZXRLZXkoe30pOwotICAg
ICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygp
KTsKLSAgICB9Ci0gICAgZG9uZSgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iaW5kZXgtYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkMGNlNzI3ZTU3YTY0MjYwMjE4OTJlY2ZhZDhkMDY1MzNhNjVkMmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mu
anMKQEAgLTAsMCArMSwyNzggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICB3aW5k
b3cgPSBzZWxmOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygncmVzb3VyY2VzL2ZzLXdvcmtlci1j
b21tb24uanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdyZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3Mgd2Via2l0SURC
SW5kZXguIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCdpbmRleC1iYXNpY3Mn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bihldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0Owor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHdpbmRvdy50cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgd2luZG93
LnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpIik7CisgICAgd2luZG93LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKyAgICB3aW5kb3cuaW5kZXhPYmplY3QyID0gZXZh
bEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZTInLCAneScsIGZhbHNlKSIpOwor
ICAgIHdpbmRvdy5pbmRleE9iamVjdDMgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
ekluZGV4JywgJ3onLCB0cnVlKSIpOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRk
RGF0YSgpCit7CisgICAgc2hvdWxkQmVUcnVlKCInbmFtZScgaW4gaW5kZXhPYmplY3QiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0Lm5hbWUiLCAiaW5kZXhOYW1lIik7
CisgICAgc2hvdWxkQmVUcnVlKCInb2JqZWN0U3RvcmUnIGluIGluZGV4T2JqZWN0Iik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIiwgInN0
b3JlTmFtZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGluIGluZGV4T2JqZWN0Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5rZXlQYXRoIiwgIngiKTsK
KyAgICBzaG91bGRCZVRydWUoIid1bmlxdWUnIGluIGluZGV4T2JqZWN0Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgiaW5kZXhPYmplY3QudW5pcXVlIik7CisgICAgc2hvdWxkQmVUcnVlKCInb3Blbktl
eUN1cnNvcicgaW4gaW5kZXhPYmplY3QiKTsKKyAgICBzaG91bGRCZVRydWUoIidvcGVuQ3Vyc29y
JyBpbiBpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5kZXhP
YmplY3QiKTsKKyAgICBzaG91bGRCZVRydWUoIidnZXQnIGluIGluZGV4T2JqZWN0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6Jywg
ejogMi43Mn0sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTI7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGFkZERhdGEyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mics
IHo6IDIuNzEsIGZvb2JhcjogMTJ9LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBhZGREYXRhMzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB3aW5kb3cuaW5kZXhPYmplY3Q0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ2luZGV4V2hpbGVBZGRJc0luRmxpZ2h0JywgJ3gnKSIpOworICAgIHdpbmRvdy5pbmRleE9i
amVjdDUgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhXaXRoV2VpcmRLZXlQ
YXRoJywgJ2Zvb2JhcicpIik7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEzKGV2dCkKK3sKKyAgICBl
dmVudCA9IGV2dDsKKyAgICAvLyBBZGQgZGF0YSB3aGljaCBkb2Vzbid0IGhhdmUgYSBrZXkgaW4g
dGhlIHpJbmRleC4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJj
ZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnNDU2J30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGdldERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGEoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVj
dERhdGEoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleE9iamVjdDIuZ2V0S2V5KCd6enonKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0T2JqZWN0RGF0YTI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEyKGV2dCkKK3sKKyAgICBldmVu
dCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QzLmdldCgy
LjcxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YTM7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdl
dE9iamVjdERhdGEzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZTIiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhRmFpbChldnQpCit7CisgICAg
ZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVz
dWx0LngiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQueSIsICJ6enoiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9i
amVjdC5nZXRLZXkoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZ2V0T2Jq
ZWN0RGF0YUZhaWw7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGFGYWlsKGV2dCkKK3sKKyAg
ICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisKKyAgICBldmFsQW5k
TG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9
IGdldE9iamVjdERhdGE0OworfQorCitmdW5jdGlvbiBnZXRPYmplY3REYXRhNChldnQpCit7Cisg
ICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAi
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRM
b2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleE9iamVjdDQuZ2V0S2V5KCd2YWx1ZTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlbktleUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSAgdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3IoZXZ0KQoreworICAgIGV2ZW50
ID0gZXZ0OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJrZXkyIik7CisKKyAgICB3aW5kb3cucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0
Lm9wZW5LZXlDdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRp
bnVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjdXJzb3IxQ29udGludWUoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgImluZGV4T2JqZWN0Iik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJr
ZXkiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB3aW5kb3cu
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJz
b3IxQ29udGludWUyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBzaG91bGRCZUZhbHNl
KCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJrZXkyIik7CisK
KyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgd2luZG93LnJlcXVlc3Qu
b25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMzsKK30KKworZnVuY3Rpb24gY3Vyc29yMUNvbnRp
bnVlMyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5MyIpOworCisgICAgLy8g
V2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHdpbmRvdy5yZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5PYmplY3RDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIG9wZW5PYmplY3RDdXJzb3IoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCIpOworCisgICAgd2luZG93LnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eE9iamVjdC5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJD
b250aW51ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJpbmRleE9iamVjdCIpOworICAg
IHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAi
dmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueSIsICJ6enoiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9i
amVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsK
KyAgICB3aW5kb3cucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOworfQorCitm
dW5jdGlvbiBjdXJzb3IyQ29udGludWUyKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBz
aG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2
YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueSIsICJ6enoyIik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBv
YmplY3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
CisgICAgd2luZG93LnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlMzsKK30KKwor
ZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlMyhldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAg
c2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUzIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAi
dmFsdWUzIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
LnZhbHVlLnkiLCAiNDU2Iik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBv
YmplY3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
CisgICAgd2luZG93LnJlcXVlc3Qub25zdWNjZXNzID0gbGFzdDsKK30KKworZnVuY3Rpb24gbGFz
dChldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJn
ZXQucmVzdWx0ID09PSBudWxsIik7CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2lu
ZyBhbiBpbnZhbGlkIGtleSBpbnRvIGluZGV4T2JqZWN0LmdldCh7fSkuIik7CisgICAgICAgIGlu
ZGV4T2JqZWN0LmdldCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJv
d24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNl
cHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRl
YnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gaW5kZXhPYmplY3QuZ2V0S2V5KHt9KS4i
KTsKKyAgICAgICAgaW5kZXhPYmplY3QuZ2V0S2V5KHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cit0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2lj
cy5odG1sCmluZGV4IDc2MzgwZmZlYzdiMTZkNDMxMmZkMTkxMmU4MzEwY2ZhMDQ0OTM1ZDcuLjRj
YTEzNjcxOTY2ZDdiYjA2OTk2NGZjYWQ0YTEyNTBjNzhlOTg3OTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC0y
LDI3MSArMiwxMiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgorCiA8L2hlYWQ+CiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLiIpOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHdpbmRvdy5kYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBkZWJ1ZygiY3JlYXRl
T2JqZWN0U3RvcmUoKToiKTsKLSAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHZhciBzdG9y
ZU5hbWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsK
LQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsK
LSAgICBzaG91bGRCZU51bGwoInN0b3JlLmtleVBhdGgiKTsKLSAgICBzaG91bGRCZSgic3RvcmVO
YW1lcy5jb250YWlucygnc3RvcmVOYW1lJykiLCAidHJ1ZSIpOwotICAgIHNob3VsZEJlKCJzdG9y
ZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgLy8gRklYTUU6IHRlc3QgYWxsIG9mIG9iamVjdCBz
dG9yZSdzIG1ldGhvZHMuCi0KLSAgICBkZWJ1ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNu
J3QgZXhpc3Q6Iik7Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5k
ZXgoJ2FzZGYnKSIpOwotICAgICAgICBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJyk7Ci0gICAg
ICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3IgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hv
dWxkIGhhdmUgdGhyb3duLiIpOwotICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICB0ZXN0UGFz
c2VkKCJFeGNlcHRpb24gdGhyb3duLiIpOwotICAgICAgICBjb2RlID0gZXJyLmNvZGU7Ci0gICAg
ICAgIHNob3VsZEJlKCJjb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiKTsKLSAgICB9Ci0KLSAgICBjcmVhdGVJbmRleCgpOwotfQotCi1mdW5jdGlvbiBjcmVh
dGVJbmRleCgpCi17Ci0gICAgZGVidWcoImNyZWF0ZUluZGV4KCk6Iik7Ci0gICAgdmFyIGluZGV4
ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gn
LCB7dW5pcXVlOiB0cnVlfSkiKTsgLy8gdHJ1ZSA9PSB1bmlxdWUgcmVxdWlyZW1lbnQuCi0gICAg
c2hvdWxkQmVUcnVlKCJpbmRleCAhPT0gbnVsbCIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUu
aW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRM
b2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJpbmRleCAhPT0gbnVsbCIpOwotIAotICAgIGRlYnVnKCJBc2sgZm9yIGFuIGluZGV4IHRoYXQg
ZG9lc24ndCBleGlzdDoiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnYXNkZicpIik7Ci0gICAgICAgIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKTsK
LSAgICAgICAgdGVzdEZhaWxlZCgiQXNraW5nIGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlz
dCBzaG91bGQgaGF2ZSB0aHJvd24uIik7Ci0gICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAgICAgIHRl
c3RQYXNzZWQoIkV4Y2VwdGlvbiB0aHJvd24uIik7Ci0gICAgICAgIGNvZGUgPSBlcnIuY29kZQot
ICAgICAgICBzaG91bGRCZSgiY29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7Ci0gICAgfQotCi0gICAgY29tbWl0QW5kQ29udGludWUoKTsgICAgCi19Ci0K
LWZ1bmN0aW9uIGNvbW1pdEFuZENvbnRpbnVlKCkKLXsKLSAgICB3aW5kb3cuc2V0VGltZW91dCh0
ZXN0U2V0VmVyc2lvbkFib3J0LCAwKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9y
dCgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24g
ZmFpbCIpJyk7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVySW5kZXg7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGNyZWF0ZUFub3RoZXJJbmRleCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
Yi52ZXJzaW9uIiwgInZlcnNpb24gZmFpbCIpOwotCi0gICAgdmFyIHNldFZlcnNpb25UcmFucyA9
IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOwotICAgIHNldFZlcnNp
b25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgc2V0
VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOwotICAgIHdpbmRvdy5zdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gc2V0VmVyc2lvblRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOwotICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKLQotICAgIHNldFZlcnNpb25UcmFucy5hYm9ydCgp
OwotfQotCi1mdW5jdGlvbiBjaGVja01ldGFkYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLnZlcnNpb24iLCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZSgic3RvcmUu
dHJhbnNhY3Rpb24iLCAic2V0VmVyc2lvblRyYW5zIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmlu
ZGV4TmFtZXMiLCAiWydpbmRleE5hbWUnXSIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5h
bWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJ2luZGV4RmFpbCcpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFt
ZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInN0b3JlLmluZGV4TmFtZXNbMF0iLCAiaW5kZXhOYW1lIik7Ci0gICAgc2hvdWxkQmVO
dWxsKCJzdG9yZS5pbmRleE5hbWVzWzFdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRl
eE5hbWVzWzEwMF0iKTsKLSAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgx
KSIpOwotICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lcy5pdGVtKDEwMCkiKTsKLSAg
ICBhZGREYXRhKCk7Ci19Ci0KLXZhciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCJBdWd1c3QgMjUsIDE5
OTEgMjA6NTc6MDgiKTsKLXZhciB0ZXN0RGF0ZUIgPSBuZXcgRGF0ZSgiV2VkIEphbiAwNSAyMDEx
IDE1OjU0OjQ5Iik7Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHZhciB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgd2luZG93LnN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
LQotICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGRhdGEgd2l0aCBhIERhdGUga2V5OiIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICdmb28nfSwgdGVzdERhdGUpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRlU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkRGF0ZVN1
Y2Nlc3MoKQotewotICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGEgdmFsdWUgbm90IGhhbmRsZWQg
Ynkgc3RydWN0dXJlZCBjbG9uZToiKTsKLSAgICB0cnkgewotICAgICAgICBkZWJ1Zygic3RvcmUu
YWRkKHt4OiAnYmFyJywgeTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKX0sICdi
YXInKSIpOwotICAgICAgICBzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpfSwgJ2JhcicpOwotICAgICAgICB0ZXN0RmFpbGVkKCJQYXNzaW5n
IGEgRE9NIG5vZGUgYXMgdmFsdWUgc2hvdWxkIGhhdmUgdGhyb3duLiIpOwotICAgIH0gY2F0Y2gg
KGVycikgewotICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duIik7Ci0gICAgICAg
IGNvZGUgPSBlcnIuY29kZTsKLSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiRE9NRXhjZXB0aW9u
LkRBVEFfQ0xPTkVfRVJSIik7Ci0gICAgfQotCi0gICAgZGVidWcoIlRyeSB0byBpbnNlcnQgZGF0
YSB3aGVyZSBrZXkgcGF0aCB5aWVsZHMgYSBEYXRlIGtleToiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuYWRkKHt4OiB0ZXN0RGF0ZUIsIHk6ICd2YWx1ZSd9LCAna2V5JykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCJhZGRTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAnZm9vJ30sICd6enonKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0
LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgYWRkQWdhaW5GYWlsdXJlLCBmYWxzZSk7Ci19Ci0K
LWZ1bmN0aW9uIGFkZEFnYWluRmFpbHVyZSgpCi17Ci0gICAgZGVidWcoImFkZEFnYWluRmFpbHVy
ZSgpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0KLSAgICBldmFsQW5kTG9nKCJl
dmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICdzb21ldmFsdWUnfSwgJ3NvbWVrZXknKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmFkZCh7eDogJ290aGVydmFsdWUnfSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRXaXRoTnVs
bEluZGV4RmFpbHVyZTsKLX0KLQotZnVuY3Rpb24gYWRkV2l0aE51bGxJbmRleEZhaWx1cmUoKQot
ewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQuY2FuY2VsYWJsZSIpOwotICAgIGRlYnVnKCJhZGRX
aXRoTnVsbEluZGV4RmFpbHVyZSgpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJy
b3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBl
dmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9
IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5l
cignc3VjY2VzcycsIGdldFN1Y2Nlc3MsIHRydWUpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC55IiwgInZhbHVlIik7Ci0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2UiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuZ2V0KHRlc3REYXRlKSIpOwotICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5l
cignc3VjY2VzcycsIGdldFN1Y2Nlc3NEYXRlS2V5LCBmYWxzZSk7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldFN1Y2Nlc3NE
YXRlS2V5KCkKLXsKLSAgICBkZWJ1ZygiZ2V0U3VjY2Vzc0RhdGVLZXkoKToiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJmb28iKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoJ2tleScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZW1vdmVTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiByZW1vdmVTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygicmVtb3ZlU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgInRydWUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5kZWxl
dGUoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW1vdmVTdWNjZXNzQnV0RmFs
c2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHJlbW92ZVN1Y2Nlc3NCdXRGYWxzZSgpCi17Ci0gICAgZGVidWcoInJlbW92ZVN1
Y2Nlc3NCdXRGYWxzZSgpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
ImZhbHNlIik7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVudC50YXJn
ZXQuc291cmNlIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0
b3JlLmdldCgpLiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCh7fSki
LCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCJQ
YXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gc3RvcmUuZGVsZXRlKCkuIik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkg
aW50byBzdG9yZS5hZGQoKS4iKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5h
ZGQobnVsbCwge30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0K
LSAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLnB1dCgpLiIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsLCB7fSkiLCAid2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRvbmUoKTsKLX0KLQotdGVz
dCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im9iamVjdHN0b3JlLWJhc2ljcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWE0
ZjBlZDE1ZTczYzVmZGM3MDcwYzBhMzE1YWM0MTliZGFiZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmpzCkBAIC0w
LDAgKzEsMjc0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgd2luZG93ID0gc2Vs
ZjsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygncmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0
SW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWJhc2ljcycpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50
ID0gZXZ0OworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHdpbmRvdy5kYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcyhldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7
CisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBkZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKKyAgICB3aW5k
b3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnLCBudWxsKSIpOworICAgIHZhciBzdG9yZU5hbWVzID0gZXZhbEFuZExvZygic3RvcmVO
YW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmtl
eVBhdGgiKTsKKyAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnc3RvcmVOYW1lJyki
LCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAg
Ly8gRklYTUU6IHRlc3QgYWxsIG9mIG9iamVjdCBzdG9yZSdzIG1ldGhvZHMuCisKKyAgICBkZWJ1
ZygiQXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6Iik7CisgICAgdHJ5IHsKKyAg
ICAgICAgZGVidWcoImluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKSIpOworICAgICAgICBpbmRl
eCA9IHN0b3JlLmluZGV4KCdhc2RmJyk7CisgICAgICAgIHRlc3RGYWlsZWQoIkFza2luZyBmb3Ig
YSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgc2hvdWxkIGhhdmUgdGhyb3duLiIpOworICAgIH0g
Y2F0Y2ggKGVycikgeworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhyb3duLiIpOwor
ICAgICAgICBjb2RlID0gZXJyLmNvZGU7CisgICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIndlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICB9CisKKyAgICBjcmVh
dGVJbmRleCgpOworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleCgpCit7CisgICAgZGVidWcoImNy
ZWF0ZUluZGV4KCk6Iik7CisgICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnLCB7dW5pcXVlOiB0cnVlfSkiKTsgLy8gdHJ1
ZSA9PSB1bmlxdWUgcmVxdWlyZW1lbnQuCisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPT0gbnVs
bCIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhO
YW1lJykiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPT0gbnVsbCIpOworIAorICAg
IGRlYnVnKCJBc2sgZm9yIGFuIGluZGV4IHRoYXQgZG9lc24ndCBleGlzdDoiKTsKKyAgICB0cnkg
eworICAgICAgICBkZWJ1ZygiaW5kZXggPSBzdG9yZS5pbmRleCgnYXNkZicpIik7CisgICAgICAg
IGluZGV4ID0gc3RvcmUuaW5kZXgoJ2FzZGYnKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiQXNraW5n
IGZvciBhIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgaGF2ZSB0aHJvd24uIik7Cisg
ICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkV4Y2VwdGlvbiB0aHJvd24u
Iik7CisgICAgICAgIGNvZGUgPSBlcnIuY29kZQorICAgICAgICBzaG91bGRCZSgiY29kZSIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgfQorCisgICAg
Y29tbWl0QW5kQ29udGludWUoKTsgICAgCit9CisKK2Z1bmN0aW9uIGNvbW1pdEFuZENvbnRpbnVl
KCkKK3sKKyAgICB3aW5kb3cuc2V0VGltZW91dCh0ZXN0U2V0VmVyc2lvbkFib3J0LCAwKTsKK30K
KworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gZmFpbCIpJyk7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjcmVhdGVBbm90aGVySW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFub3RoZXJJbmRleChldnQp
Cit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJz
aW9uIiwgInZlcnNpb24gZmFpbCIpOworCisgICAgdmFyIHNldFZlcnNpb25UcmFucyA9IGV2YWxB
bmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOworICAgIHNldFZlcnNpb25UcmFu
cy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgc2V0VmVyc2lv
blRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOworICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gc2V0VmVyc2lvblRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIHNldFZlcnNpb25UcmFucy5hYm9ydCgpOworfQor
CitmdW5jdGlvbiBjaGVja01ldGFkYXRhKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRiLnZlcnNpb24iLCAibmV3IHZlcnNpb24iKTsKKyAgICBzaG91bGRCZSgic3RvcmUudHJhbnNh
Y3Rpb24iLCAic2V0VmVyc2lvblRyYW5zIik7CisgICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFt
ZXMiLCAiWydpbmRleE5hbWUnXSIpOworICAgIHNob3VsZEJlKCJzdG9yZS5pbmRleE5hbWVzLmxl
bmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJycp
IiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2lu
ZGV4RmFpbCcpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInN0b3JlLmluZGV4TmFtZXMuY29u
dGFpbnMoJ2luZGV4TmFtZScpIiwgInRydWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InN0b3JlLmluZGV4TmFtZXNbMF0iLCAiaW5kZXhOYW1lIik7CisgICAgc2hvdWxkQmVOdWxsKCJz
dG9yZS5pbmRleE5hbWVzWzFdIik7CisgICAgc2hvdWxkQmVOdWxsKCJzdG9yZS5pbmRleE5hbWVz
WzEwMF0iKTsKKyAgICBzaG91bGRCZU51bGwoInN0b3JlLmluZGV4TmFtZXMuaXRlbSgxKSIpOwor
ICAgIHNob3VsZEJlTnVsbCgic3RvcmUuaW5kZXhOYW1lcy5pdGVtKDEwMCkiKTsKKyAgICBhZGRE
YXRhKCk7Cit9CisKK3ZhciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCJBdWd1c3QgMjUsIDE5OTEgMjA6
NTc6MDgiKTsKK3ZhciB0ZXN0RGF0ZUIgPSBuZXcgRGF0ZSgiV2VkIEphbiAwNSAyMDExIDE1OjU0
OjQ5Iik7CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Vi
a2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKworICAg
IGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGRhdGEgd2l0aCBhIERhdGUga2V5OiIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICdmb28nfSwgdGVzdERhdGUpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkRGF0ZVN1Y2Nlc3Mo
ZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJUcnkgdG8gaW5zZXJ0IGEgdmFs
dWUgbm90IGhhbmRsZWQgYnkgc3RydWN0dXJlZCBjbG9uZToiKTsKKyAgICB0cnkgeworICAgICAg
ICBkZWJ1Zygic3RvcmUuYWRkKHt4OiAnYmFyJywgeTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKX0sICdiYXInKSIpOworICAgICAgICBzdG9yZS5hZGQoe3g6ICdiYXInLCB5OiBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpfSwgJ2JhcicpOworICAgICAgICB0ZXN0
RmFpbGVkKCJQYXNzaW5nIGEgRE9NIG5vZGUgYXMgdmFsdWUgc2hvdWxkIGhhdmUgdGhyb3duLiIp
OworICAgIH0gY2F0Y2ggKGVycikgeworICAgICAgICB0ZXN0UGFzc2VkKCJFeGNlcHRpb24gdGhy
b3duIik7CisgICAgICAgIGNvZGUgPSBlcnIuY29kZTsKKyAgICAgICAgc2hvdWxkQmUoImNvZGUi
LCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7CisgICAgfQorCisgICAgZGVidWcoIlRy
eSB0byBpbnNlcnQgZGF0YSB3aGVyZSBrZXkgcGF0aCB5aWVsZHMgYSBEYXRlIGtleToiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiB0ZXN0RGF0ZUIsIHk6ICd2YWx1
ZSd9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGFkZFN1Y2Nlc3MoZXZ0KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIGRlYnVnKCJhZGRTdWNj
ZXNzKCk6Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
IiwgImtleSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3Vy
Y2UuYWRkKHt4OiAnZm9vJ30sICd6enonKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vy
cm9yJywgYWRkQWdhaW5GYWlsdXJlLCBmYWxzZSk7Cit9CisKK2Z1bmN0aW9uIGFkZEFnYWluRmFp
bHVyZShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoImFkZEFnYWluRmFpbHVy
ZSgpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBldmFsQW5kTG9nKCJl
dmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICdzb21ldmFsdWUnfSwgJ3NvbWVrZXknKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmFkZCh7eDogJ290aGVydmFsdWUnfSwgbnVsbCkiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe3g6IG51bGx9LCAndmFsaWRrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRXaXRoTnVs
bEluZGV4RmFpbHVyZTsKK30KKworZnVuY3Rpb24gYWRkV2l0aE51bGxJbmRleEZhaWx1cmUoZXZ0
KQoreworICAgIGV2ZW50ID0gZXZ0OworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQuY2FuY2VsYWJs
ZSIpOworICAgIGRlYnVnKCJhZGRXaXRoTnVsbEluZGV4RmFpbHVyZSgpOiIpOworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7
CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOworICAgIHJl
cXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGdldFN1Y2Nlc3MsIHRydWUpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBnZXRTdWNjZXNzKGV2dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiZ2V0U3Vj
Y2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC55IiwgInZhbHVlIik7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGV2
ZW50LnRhcmdldC5zb3VyY2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0
KHRlc3REYXRlKSIpOworICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGdl
dFN1Y2Nlc3NEYXRlS2V5LCBmYWxzZSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3NEYXRlS2V5KGV2dCkKK3sK
KyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygiZ2V0U3VjY2Vzc0RhdGVLZXkoKToiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJmb28iKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoJ2tleScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW1vdmVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiByZW1vdmVTdWNjZXNzKGV2
dCkKK3sKKyAgICBldmVudCA9IGV2dDsKKyAgICBkZWJ1ZygicmVtb3ZlU3VjY2VzcygpOiIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRydWUiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSByZW1vdmVTdWNjZXNzQnV0RmFsc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZVN1Y2Nlc3NCdXRGYWxz
ZShldnQpCit7CisgICAgZXZlbnQgPSBldnQ7CisgICAgZGVidWcoInJlbW92ZVN1Y2Nlc3NCdXRG
YWxzZSgpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImZhbHNlIik7
CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBldmVudC50YXJnZXQuc291cmNl
Iik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLmdldCgp
LiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCh7fSkiLCAid2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCJQYXNzaW5nIGFu
IGludmFsaWQga2V5IGludG8gc3RvcmUuZGVsZXRlKCkuIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuZGVsZXRlKHt9KSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworCisgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBzdG9y
ZS5hZGQoKS4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQobnVsbCwg
e30pIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1
ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHN0b3JlLnB1dCgpLiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsLCB7fSkiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIg
anNUZXN0SXNBc3luYyA9IHRydWU7Cit0ZXN0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>