<?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>149243</bug_id>
          
          <creation_ts>2015-09-16 18:13:07 -0700</creation_ts>
          <short_desc>Make event dispatching respect slotting</short_desc>
          <delta_ts>2015-09-29 10:54:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149241</dependson>
    
    <dependson>149488</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126545</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-16 18:13:07 -0700</bug_when>
    <thetext>Make event dispatching code respect the slotting added in the bug 149241.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126984</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-17 18:12:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/22750923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127379</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-19 02:14:27 -0700</bug_when>
    <thetext>*** Bug 149324 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128424</commentid>
    <comment_count>3</comment_count>
      <attachid>261857</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-23 18:21:34 -0700</bug_when>
    <thetext>Created attachment 261857
Implements the basic dispatching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128517</commentid>
    <comment_count>4</comment_count>
      <attachid>261857</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-09-24 10:14:51 -0700</bug_when>
    <thetext>Comment on attachment 261857
Implements the basic dispatching

View in context: https://bugs.webkit.org/attachment.cgi?id=261857&amp;action=review

r=me too

&gt; Source/WebCore/dom/EventDispatcher.cpp:433
&gt; +        Node* parent;

Could this be a ContainerNode*?

&gt; Source/WebCore/dom/EventDispatcher.cpp:451
&gt; +                if (auto assignedSlot = shadowRootOfParent-&gt;findAssignedSlot(*node)) {

We use auto* for pointers rather than auto, I think.

&gt; Source/WebCore/dom/EventDispatcher.cpp:452
&gt; +                    // node is assgined to a slot. Continue dispatching the event at this slot.

Typo, assigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128531</commentid>
    <comment_count>5</comment_count>
      <attachid>261877</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-24 11:08:59 -0700</bug_when>
    <thetext>Created attachment 261877
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128553</commentid>
    <comment_count>6</comment_count>
      <attachid>261877</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 12:00:32 -0700</bug_when>
    <thetext>Comment on attachment 261877
Patch for landing

Clearing flags on attachment: 261877

Committed r190214: &lt;http://trac.webkit.org/changeset/190214&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128554</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 12:00:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129295</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-09-29 10:54:26 -0700</bug_when>
    <thetext>This change *may* have introduced Windows regressions (see https://bugs.webkit.org/show_bug.cgi?id=149632).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261857</attachid>
            <date>2015-09-23 18:21:34 -0700</date>
            <delta_ts>2015-09-24 11:08:56 -0700</delta_ts>
            <desc>Implements the basic dispatching</desc>
            <filename>bug-149243-20150923182116.patch</filename>
            <type>text/plain</type>
            <size>33762</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYzMzBkNGUxMTQ5ZDg1
OTEwNmM5NmMzN2E2MDBmYzYxYmI1MDdmMy4uZWNjYTNjZWRiZmQzYmE3MTI5Njc2MmFhOGM3Njkx
MDgxNjVhOWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA5LTIzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgZXZlbnQgZGlzcGF0
Y2hpbmcgcmVzcGVjdCBzbG90dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlcmUgYXJlIHByaW1hcmlseSB0d28gY2FzZXMgdG8gY29uc2lkZXI6
IGdldHRpbmcgb3V0IG9mIGEgc2hhZG93IHJvb3QgdG8gaXRzIGhvc3QsCisgICAgICAgIGFuZCBt
b3ZpbmcgaW50byBhIHNsb3QgZnJvbSBhbiBhc3NpZ25lZCBub2RlLgorCisgICAgICAgIFdoZW4g
Z2V0dGluZyBvdXQgb2YgYSBzaGFkb3cgcm9vdCwgZWl0aGVyIHRoZSBldmVudCBvcmlnaW5hdGVk
IGluIGl0cyBzaGFkb3cgdHJlZQorICAgICAgICBpbmNsdWRpbmcgaXRzIG5vZGVzJyBzaGFkb3cg
dHJlZXMgKDEpIG9yIGl0IG1vdmVkIGludG8gdGhpcyBzaGFkb3cgdHJlZSB2aWEgYSBzbG90ICgy
KS4KKyAgICAgICAgSW4gKDEpLCBldmVudC50YXJnZXQgc2hvdWxkIGJlIHNldCB0byB0aGUgc2hh
ZG93IGhvc3QuIEluICgyKSwgaXQgc2hvdWxkIGJlIHNldCB0byB0aGUKKyAgICAgICAgZmlyc3Qg
bm9kZSBpbiB0aGUgZXZlbnQgcGF0aCB0aGF0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgdHJlZSBhcyB0
aGUgc2hhZG93IGhvc3QuIEluIG9yZGVyCisgICAgICAgIHRvIGZpbmQgc3VjaCBhIG5vZGUgaW4g
TygxKSwgd2UgdXNlIGEgc3RhY2sgb2YgZXZlbnQgdGFyZ2V0cyBpbiBlYWNoIChzaGFkb3cpIHRy
ZWUuIFdlCisgICAgICAgIHB1c2ggZXZlbnQudGFyZ2V0IG9mIHRoZSBjdXJyZW50IHRyZWUgd2hl
bmV2ZXIgd2UgbW92ZSB1cCB0byBhIHNsb3QgZnJvbSBhbiBhc3NpZ25lZCBub2RlCisgICAgICAg
IGFuZCBwb3AgaXQgb3V0IG9mIHRoZSBzdGFjayB3aGVuIHdlIG1vdmUgb3V0IG9mIHRoZSBzaGFk
b3cgdHJlZS4KKworICAgICAgICBBIGZvbGxvdyB1cCBwYXRjaCBpcyBuZWVkZWQgdG8gdXBkYXRl
IHRoZSBjb2RlIHRvIHJlc29sdmUgcmVsYXRlZCB0YXJnZXRzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0bWwKKworICAg
ICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQ
YXRoOjpFdmVudFBhdGgpOgorCiAyMDE1LTA5LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkwMTY4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCAyMmE4ZWM5NDAzYTkx
ZDQzZWQ2ZTYyOGE5YmM5NDYwMGM1ZjE2NDIxLi4xZjRlZTY2YzlhOGU0NDVmNzk4YWVjNjMzZTZh
YTIzOTE4MjhjZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCkBAIC00
MTMsMjAgKzQxNCwyNCBAQCBzdGF0aWMgTm9kZSogbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudChO
b2RlKiBub2RlKQogICAgIHJldHVybiBpczxQc2V1ZG9FbGVtZW50Pigqbm9kZSkgPyBkb3duY2Fz
dDxQc2V1ZG9FbGVtZW50Pigqbm9kZSkuaG9zdEVsZW1lbnQoKSA6IG5vZGU7CiB9CiAKLUV2ZW50
UGF0aDo6RXZlbnRQYXRoKE5vZGUmIHRhcmdldE5vZGUsIEV2ZW50JiBldmVudCkKK0V2ZW50UGF0
aDo6RXZlbnRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiB7Ci0gICAg
Ym9vbCBpc1NWR0VsZW1lbnQgPSB0YXJnZXROb2RlLmlzU1ZHRWxlbWVudCgpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIFZlY3RvcjxFdmVudFRhcmdldCosIDE2PiB0YXJnZXRTdGFjazsK
KyNlbmRpZgorCiAgICAgYm9vbCBpc01vdXNlT3JGb2N1c0V2ZW50ID0gZXZlbnQuaXNNb3VzZUV2
ZW50KCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgIVBMQVRGT1JNKElPUykKICAgICBib29sIGlzVG91Y2hFdmVudCA9IGV2ZW50LmlzVG91Y2hF
dmVudCgpOwogI2VuZGlmCiAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IG51bGxwdHI7CiAKLSAg
ICBOb2RlKiBub2RlID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudCgmdGFyZ2V0Tm9kZSk7Cisg
ICAgTm9kZSogbm9kZSA9IG5vZGVPckhvc3RJZlBzZXVkb0VsZW1lbnQoJm9yaWdpbmFsVGFyZ2V0
KTsKICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBpZiAoIXRhcmdldCB8fCAhaXNTVkdFbGVt
ZW50KSAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3QgbWFrZSBzZW5zZSBvbmNlIHdlJ3ZlIGNs
aW1iZWQgb3V0IG9mIHRoZSBTVkcgc3VidHJlZSBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgICAg
IGlmICghdGFyZ2V0KQogICAgICAgICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5n
VGFyZ2V0UnVsZXMoKm5vZGUpOwotICAgICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE5vZGUoKSkgeworICAgICAgICBOb2RlKiBwYXJlbnQ7CisgICAgICAgIGZvciAoOyBub2Rl
OyBub2RlID0gcGFyZW50KSB7CiAgICAgICAgICAgICBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKICAgICAgICAgICAg
IGlmIChpc01vdXNlT3JGb2N1c0V2ZW50KQogICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCkpOwpAQCAtNDM4LDEwICs0NDMsMzYgQEAgRXZlbnRQYXRoOjpFdmVudFBh
dGgoTm9kZSYgdGFyZ2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgIG1fcGF0
aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJn
ZXQsIHRhcmdldCkpOwogICAgICAgICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KCpub2RlKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHBhcmVudCA9IG5vZGUtPnBhcmVudE5v
ZGUoKTsKKyAgICAgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgIGlmIChTaGFkb3dSb290KiBzaGFk
b3dSb290T2ZQYXJlbnQgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgICAg
IGlmIChhdXRvIGFzc2lnbmVkU2xvdCA9IHNoYWRvd1Jvb3RPZlBhcmVudC0+ZmluZEFzc2lnbmVk
U2xvdCgqbm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbm9kZSBpcyBhc3NnaW5lZCB0
byBhIHNsb3QuIENvbnRpbnVlIGRpc3BhdGNoaW5nIHRoZSBldmVudCBhdCB0aGlzIHNsb3QuCisg
ICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNrLmFwcGVuZCh0YXJnZXQpOworICAgICAgICAg
ICAgICAgICAgICBwYXJlbnQgPSBhc3NpZ25lZFNsb3Q7CisgICAgICAgICAgICAgICAgICAgIHRh
cmdldCA9IGFzc2lnbmVkU2xvdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisj
ZW5kaWYKKyAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KCFub2RlIHx8ICFzaG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoZXZlbnQsIGRvd25jYXN0
PFNoYWRvd1Jvb3Q+KCpub2RlKSwgKnRhcmdldCkpCisKKyAgICAgICAgU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCpub2RlKTsKKyAgICAgICAgLy8gQXQgYSBz
aGFkb3cgcm9vdC4gQ29udGludWUgZGlzcGF0Y2hpbmcgdGhlIGV2ZW50IGF0IHRoZSBzaGFkb3cg
aG9zdC4KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKCF0YXJnZXRTdGFjay5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIE1vdmUgdGFyZ2V0IGJhY2sgdG8gYSBkZXNjZW5k
YW50IG9mIHRoZSBzaGFkb3cgaG9zdCBpZiB0aGUgZXZlbnQgZGlkIG5vdCBvcmlnaW5hdGUgaW4g
dGhpcyBzaGFkb3cgdHJlZSBvciBpdHMgaW5uZXIgc2hhZG93IHRyZWVzLgorICAgICAgICAgICAg
dGFyZ2V0ID0gdGFyZ2V0U3RhY2subGFzdCgpOworICAgICAgICAgICAgdGFyZ2V0U3RhY2sucmVt
b3ZlTGFzdCgpOworICAgICAgICAgICAgQVNTRVJUKHNoYWRvd1Jvb3QuaG9zdCgpLT5jb250YWlu
cyh0YXJnZXQtPnRvTm9kZSgpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGFyZ2V0
ID0gbnVsbHB0cjsKKyNlbmRpZgorICAgICAgICBpZiAoIXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dC
b3VuZGFyeShldmVudCwgc2hhZG93Um9vdCwgb3JpZ2luYWxUYXJnZXQpKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBub2RlID0gZG93bmNhc3Q8U2hhZG93Um9vdD4oKm5vZGUpLmhvc3Qo
KTsKKyAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3QuaG9zdCgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDMwNWE3MTdlNzJkNTI1MDdmNGE2MDFjODVhZmZiNzlmYzFkNmRjZjguLjc3YzkyZWNkZmRkYjk1
MGQ2ZjViYTIxMDQyYTY4NDJjYWI2NjAxNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OS0yMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIGV2
ZW50IGRpc3BhdGNoaW5nIHJlc3BlY3Qgc2xvdHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBkaXNwYXRjaGluZyBldmVu
dHMgaW5zaWRlIHNoYWRvdyB0cmVlcyBhbmQgbm9kZXMgYXNzaWduZWQgdG8gc2xvdHMgdXNpbmcg
dGVzdGhhcm5lc3MuanMuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRl
LXNoYWRvdy10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ct
ZG9tL2V2ZW50LWluc2lkZS1zaGFkb3ctdHJlZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0
bWw6IEFkZGVkLgorCiAyMDE1LTA5LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkwMTY4LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zaGFkb3ct
dHJlZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5z
aWRlLXNoYWRvdy10cmVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzMzMWMyNDBlZDAwYWYz
MDc0NjQyMTFjMjBhMWY1NjA5ZDNhNTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zaGFkb3ctdHJlZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorCitQQVNTIEZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBncmFuZCBjaGls
ZCBvZiBhIGRldGFjaGVkIG9wZW4gbW9kZSBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2
ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9mIGEgZGV0YWNoZWQgY2xvc2VkIG1vZGUgc2hhZG93
IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBncmFuZCBjaGlsZCBvZiBhbiBp
bi1kb2N1bWVudCBvcGVuIG1vZGUgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBp
bnNpZGUgYSBncmFuZCBjaGlsZCBvZiBhbiBpbi1kb2N1bWVudCBjbG9zZWQgbW9kZSBzaGFkb3cg
dHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGRldGFjaGVkIG9wZW4gbW9kZSBz
aGFkb3cgdHJlZSBpbnNpZGUgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4g
ZXZlbnQgaW5zaWRlIGEgZGV0YWNoZWQgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIGluc2lkZSBjbG9z
ZWQgbW9kZSBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGRldGFj
aGVkIGNsb3NlZCBtb2RlIHNoYWRvdyB0cmVlIGluc2lkZSBvcGVuIG1vZGUgc2hhZG93IHRyZWUg
CitQQVNTIEZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBkZXRhY2hlZCBjbG9zZWQgbW9kZSBzaGFk
b3cgdHJlZSBpbnNpZGUgY2xvc2VkIG1vZGUgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBl
dmVudCBpbnNpZGUgYW4gaW4tZG9jdW1lbnQgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIGluc2lkZSBv
cGVuIG1vZGUgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBpbnNpZGUgYW4gaW4t
ZG9jdW1lbnQgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIGluc2lkZSBjbG9zZWQgbW9kZSBzaGFkb3cg
dHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhbiBpbi1kb2N1bWVudCBjbG9zZWQg
bW9kZSBzaGFkb3cgdHJlZSBpbnNpZGUgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJp
bmcgYW4gZXZlbnQgaW5zaWRlIGFuIGluLWRvY3VtZW50IGNsb3NlZCBtb2RlIHNoYWRvdyB0cmVl
IGluc2lkZSBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zaGFkb3ctdHJlZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zaGFkb3ctdHJlZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI3OGRkNDU4YTM5M2Q3NDkwYmVkMzY1MDQzMGE2Mjk2N2ZmMWM2MDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNoYWRv
dy10cmVlLmh0bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5TaGFkb3cgRE9NOiBGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgc2hhZG93
IHRyZWU8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBo
cmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IkVsZW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvdyBzaG91bGQgY3JlYXRlIGFuIGluc3Rh
bmNlIG9mIFNoYWRvd1Jvb3QiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5n
aXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXZlbnQtcGF0aHMiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxs
aW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNz
cyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitm
dW5jdGlvbiBkaXNwYXRjaEV2ZW50V2l0aExvZyh0YXJnZXQsIGV2ZW50KSB7CisgICAgdmFyIGxv
ZyA9IFtdOworCisgICAgZm9yICh2YXIgbm9kZSA9IHRhcmdldDsgbm9kZTsgbm9kZSA9IG5vZGUu
cGFyZW50Tm9kZSB8fCBub2RlLmhvc3QpIHsKKyAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVy
KGV2ZW50LnR5cGUsIChmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKFt0
aGlzLCBldmVudC50YXJnZXRdKTsKKyAgICAgICAgfSkuYmluZChub2RlKSk7CisgICAgfQorCisg
ICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAgcmV0dXJuIGxvZzsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlU2hhZG93Um9vdFdpdGhHcmFuZENoaWxkKG1vZGUpIHsKKyAgICB2YXIg
aG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciByb290ID0gaG9z
dC5hdHRhY2hTaGFkb3coe21vZGU6IG1vZGV9KTsKKworICAgIHZhciBwYXJlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnQpOwor
CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKTsKKyAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICByZXR1cm4ge3RhcmdldDogdGFyZ2V0LCBwYXJl
bnQ6IHBhcmVudCwgcm9vdDogcm9vdCwgaG9zdDogaG9zdH07Cit9CisKK2Z1bmN0aW9uIHRlc3RF
dmVudEluRGV0YWNoZWRTaGFkb3dUcmVlKG1vZGUpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgdmFyIHNoYWRvdyA9IGNyZWF0ZVNoYWRvd1Jvb3RXaXRoR3JhbmRDaGlsZChtb2Rl
KTsKKworICAgICAgICBsb2cgPSBkaXNwYXRjaEV2ZW50V2l0aExvZyhzaGFkb3cudGFyZ2V0LCBu
ZXcgRXZlbnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nLmxlbmd0aCwgNCwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3RhcmdldCwg
cGFyZW50LCBzaGFkb3cgcm9vdCwgc2hhZG93IGhvc3RdJyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRhcmdldCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBh
dGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzFdLCBbc2hhZG93LnBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVz
dCBiZSB0aGUgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbMl0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMl0g
bXVzdCBiZSB0aGUgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbM10sIFtzaGFkb3cuaG9zdCwgc2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUg
dGhlIHNoYWRvdyBob3N0Jyk7CisKKyAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdy
YW5kIGNoaWxkIG9mIGEgZGV0YWNoZWQgJyArIG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWUnKTsK
K30KKwordGVzdEV2ZW50SW5EZXRhY2hlZFNoYWRvd1RyZWUoJ29wZW4nKTsKK3Rlc3RFdmVudElu
RGV0YWNoZWRTaGFkb3dUcmVlKCdjbG9zZWQnKTsKKworZnVuY3Rpb24gdGVzdEV2ZW50SW5TaGFk
b3dUcmVlSW5zaWRlRG9jdW1lbnQobW9kZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAg
ICAgICB2YXIgc2hhZG93ID0gY3JlYXRlU2hhZG93Um9vdFdpdGhHcmFuZENoaWxkKG1vZGUpOwor
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvdy5ob3N0KTsKKworICAgICAg
ICBsb2cgPSBkaXNwYXRjaEV2ZW50V2l0aExvZyhzaGFkb3cudGFyZ2V0LCBuZXcgRXZlbnQoJ2Zv
bycsIHtidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
Lmxlbmd0aCwgNywgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3RhcmdldCwgcGFyZW50LCBzaGFk
b3cgcm9vdCwgc2hhZG93IGhvc3QsIGJvZHksIGh0bWwsIGRvY3VtZW50XScpOworICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3NoYWRvdy50YXJnZXQsIHNoYWRvdy50YXJnZXRd
LCAnRXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRhcmdldCcpOworICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy5wYXJlbnQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQ
YXRoWzFdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgdGFyZ2V0Jyk7CisgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzJdLCBbc2hhZG93LnJvb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZl
bnRQYXRoWzJdIG11c3QgYmUgdGhlIHNoYWRvdyByb290Jyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nWzNdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFsz
XSBtdXN0IGJlIHRoZSBzaGFkb3cgaG9zdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1s0XSwgW2RvY3VtZW50LmJvZHksIHNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs0XSBtdXN0
IGJlIHRoZSBib2R5IGVsZW1lbnQgKHBhcmVudCBvZiBzaGFkb3cgaG9zdCknKTsKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNo
YWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBodG1sIGVsZW1lbnQnKTsKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtkb2N1bWVudCwgc2hhZG93Lmhvc3Rd
LCAnRXZlbnRQYXRoWzZdIG11c3QgYmUgdGhlIGRvY3VtZW50IG5vZGUnKTsKKworICAgIH0sICdG
aXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQgb2YgYW4gaW4tZG9jdW1lbnQgJyAr
IG1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWUnKTsKK30KKwordGVzdEV2ZW50SW5TaGFkb3dUcmVl
SW5zaWRlRG9jdW1lbnQoJ29wZW4nKTsKK3Rlc3RFdmVudEluU2hhZG93VHJlZUluc2lkZURvY3Vt
ZW50KCdjbG9zZWQnKTsKKworZnVuY3Rpb24gY3JlYXRlTmVzdGVkU2hhZG93Um9vdChpbm5lck1v
ZGUsIG91dGVyTW9kZSkgeworICAgIHZhciBvdXRlckhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB2YXIgb3V0ZXJSb290ID0gb3V0ZXJIb3N0LmF0dGFjaFNoYWRvdyh7
bW9kZTogb3V0ZXJNb2RlfSk7CisKKyAgICB2YXIgb3V0ZXJDaGlsZCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3AnKTsKKyAgICBvdXRlclJvb3QuYXBwZW5kQ2hpbGQob3V0ZXJDaGlsZCk7CisK
KyAgICB2YXIgaW5uZXJIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAg
IG91dGVyQ2hpbGQuYXBwZW5kQ2hpbGQoaW5uZXJIb3N0KTsKKworICAgIHZhciBpbm5lclJvb3Qg
PSBpbm5lckhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiBpbm5lck1vZGV9KTsKKyAgICB2YXIgaW5u
ZXJDaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBpbm5lclJvb3Qu
YXBwZW5kQ2hpbGQoaW5uZXJDaGlsZCk7CisKKyAgICByZXR1cm4ge3RhcmdldDogaW5uZXJDaGls
ZCwgaW5uZXJSb290OiBpbm5lclJvb3QsIGlubmVySG9zdDogaW5uZXJIb3N0LCBvdXRlckNoaWxk
OiBvdXRlckNoaWxkLCBvdXRlclJvb3Q6IG91dGVyUm9vdCwgb3V0ZXJIb3N0OiBvdXRlckhvc3R9
OworfQorCitmdW5jdGlvbiB0ZXN0RXZlbnRJbkRldGFjaGVkTmVzdGVkU2hhZG93VHJlZShpbm5l
ck1vZGUsIG91dGVyTW9kZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIg
c2hhZG93ID0gY3JlYXRlTmVzdGVkU2hhZG93Um9vdChpbm5lck1vZGUsIG91dGVyTW9kZSk7CisK
KyAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2coc2hhZG93LnRhcmdldCwgbmV3IEV2
ZW50KCdiYXInLCB7YnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZy5sZW5ndGgsIDYsICdFdmVudFBhdGggbXVzdCBjb250YWluIFt0YXJnZXQsIGlubmVy
IHJvb3QsIGlubmVyIGhvc3QsIHBhcmVudCwgb3V0ZXIgcm9vdCwgb3V0ZXIgaG9zdF0nKTsKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cu
dGFyZ2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cuaW5uZXJSb290LCBzaGFkb3cudGFyZ2V0
XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOworICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5pbm5lckhvc3QsIHNoYWRvdy5p
bm5lckhvc3RdLCAnRXZlbnRQYXRoWzJdIG11c3QgYmUgdGhlIGlubmVyIHNoYWRvdyBob3N0Jyk7
CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93Lm91dGVyQ2hpbGQs
IHNoYWRvdy5pbm5lckhvc3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0
aGUgaW5uZXIgc2hhZG93IGhvc3QnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
NF0sIFtzaGFkb3cub3V0ZXJSb290LCBzaGFkb3cuaW5uZXJIb3N0XSwgJ0V2ZW50UGF0aFs0XSBt
dXN0IGJlIHRoZSBvdXRlciBzaGFkb3cgcm9vdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1s1XSwgW3NoYWRvdy5vdXRlckhvc3QsIHNoYWRvdy5vdXRlckhvc3RdLCAnRXZlbnRQ
YXRoWzVdIG11c3QgYmUgdGhlIG91dGVyIHNoYWRvdyBob3N0Jyk7CisKKyAgICB9LCAnRmlyaW5n
IGFuIGV2ZW50IGluc2lkZSBhIGRldGFjaGVkICcgKyBpbm5lck1vZGUgKyAnIG1vZGUgc2hhZG93
IHRyZWUgaW5zaWRlICcgKyBvdXRlck1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWUnKTsKK30KKwor
dGVzdEV2ZW50SW5EZXRhY2hlZE5lc3RlZFNoYWRvd1RyZWUoJ29wZW4nLCAgJ29wZW4nKTsKK3Rl
c3RFdmVudEluRGV0YWNoZWROZXN0ZWRTaGFkb3dUcmVlKCdvcGVuJywgICdjbG9zZWQnKTsKK3Rl
c3RFdmVudEluRGV0YWNoZWROZXN0ZWRTaGFkb3dUcmVlKCdjbG9zZWQnLCAnb3BlbicpOwordGVz
dEV2ZW50SW5EZXRhY2hlZE5lc3RlZFNoYWRvd1RyZWUoJ2Nsb3NlZCcsICdjbG9zZWQnKTsKKwor
ZnVuY3Rpb24gdGVzdEV2ZW50SW5OZXN0ZWRTaGFkb3dUcmVlSW5zaWRlRG9jdW1lbnQoaW5uZXJN
b2RlLCBvdXRlck1vZGUpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHNo
YWRvdyA9IGNyZWF0ZU5lc3RlZFNoYWRvd1Jvb3QoaW5uZXJNb2RlLCBvdXRlck1vZGUpOworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvdy5vdXRlckhvc3QpOworCisgICAg
ICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKHNoYWRvdy50YXJnZXQsIG5ldyBFdmVudCgn
YmFyJywge2J1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2cubGVuZ3RoLCA2LCAnRXZlbnRQYXRoIG11c3QgY29udGFpbiBbdGFyZ2V0LCBpbm5lciByb290
LCBpbm5lciBob3N0LCBwYXJlbnQsIG91dGVyIHJvb3QsIG91dGVyIGhvc3RdJyk7CisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRhcmdldCwgc2hhZG93LnRhcmdl
dF0sICdFdmVudFBhdGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7CisgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobG9nWzFdLCBbc2hhZG93LmlubmVyUm9vdCwgc2hhZG93LnRhcmdldF0sICdF
dmVudFBhdGhbMV0gbXVzdCBiZSB0aGUgaW5uZXIgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cuaW5uZXJIb3N0LCBzaGFkb3cuaW5uZXJI
b3N0XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgaG9zdCcpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5vdXRlckNoaWxkLCBzaGFk
b3cuaW5uZXJIb3N0XSwgJ0V2ZW50UGF0aFszXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIGlu
bmVyIHNoYWRvdyBob3N0Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRdLCBb
c2hhZG93Lm91dGVyUm9vdCwgc2hhZG93LmlubmVySG9zdF0sICdFdmVudFBhdGhbNF0gbXVzdCBi
ZSB0aGUgb3V0ZXIgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbNV0sIFtzaGFkb3cub3V0ZXJIb3N0LCBzaGFkb3cub3V0ZXJIb3N0XSwgJ0V2ZW50UGF0aFs1
XSBtdXN0IGJlIHRoZSBvdXRlciBzaGFkb3cgaG9zdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1s2XSwgW2RvY3VtZW50LmJvZHksIHNoYWRvdy5vdXRlckhvc3RdLCAnRXZlbnRQ
YXRoWzZdIG11c3QgYmUgdGhlIGJvZHkgZWxlbWVudCcpOworICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1s3XSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgc2hhZG93Lm91dGVySG9z
dF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0aGUgaHRtbCBlbGVtZW50Jyk7CisgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzhdLCBbZG9jdW1lbnQsIHNoYWRvdy5vdXRlckhvc3RdLCAn
RXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIGRvY3VtZW50IG5vZGUnKTsKKworICAgIH0sICdGaXJp
bmcgYW4gZXZlbnQgaW5zaWRlIGFuIGluLWRvY3VtZW50ICcgKyBpbm5lck1vZGUgKyAnIG1vZGUg
c2hhZG93IHRyZWUgaW5zaWRlICcgKyBvdXRlck1vZGUgKyAnIG1vZGUgc2hhZG93IHRyZWUnKTsK
K30KKwordGVzdEV2ZW50SW5OZXN0ZWRTaGFkb3dUcmVlSW5zaWRlRG9jdW1lbnQoJ29wZW4nLCAg
J29wZW4nKTsKK3Rlc3RFdmVudEluTmVzdGVkU2hhZG93VHJlZUluc2lkZURvY3VtZW50KCdvcGVu
JywgICdjbG9zZWQnKTsKK3Rlc3RFdmVudEluTmVzdGVkU2hhZG93VHJlZUluc2lkZURvY3VtZW50
KCdjbG9zZWQnLCAnb3BlbicpOwordGVzdEV2ZW50SW5OZXN0ZWRTaGFkb3dUcmVlSW5zaWRlRG9j
dW1lbnQoJ2Nsb3NlZCcsICdjbG9zZWQnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNs
b3R0ZWQtbm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZl
bnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmZTBkOWQ4
NDA3YTc5NDg3NWJlZGI3YjdiMmE3OWJiZWQ0Y2VlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIyIEBACisKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdy
YW5kIGNoaWxkIG9mIGEgZGV0YWNoZWQgb3BlbiBtb2RlIHNoYWRvdyBob3N0IAorUEFTUyBGaXJp
bmcgYW4gZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQgb2YgYSBkZXRhY2hlZCBjbG9zZWQgbW9k
ZSBzaGFkb3cgaG9zdCAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxk
IG9mIGFuIGluLWRvY3VtZW50IG9wZW4gbW9kZSBzaGFkb3cgaG9zdCAKK1BBU1MgRmlyaW5nIGFu
IGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9mIGFuIGluLWRvY3VtZW50IGNsb3NlZCBtb2Rl
IHNoYWRvdyBob3N0IAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFu
Y2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgb3BlbiBhbmQgb3BlbiBzaGFkb3cgdHJlZXMgd2l0aCBh
biBpbm5lciBvcGVuIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2Rl
IHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgb3BlbiBhbmQgb3BlbiBzaGFkb3cg
dHJlZXMgd2l0aCBhbiBpbm5lciBjbG9zZWQgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBl
dmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBvcGVuIGFu
ZCBjbG9zZWQgc2hhZG93IHRyZWVzIHdpdGggYW4gaW5uZXIgb3BlbiBzaGFkb3cgdHJlZSAKK1BB
U1MgRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRl
dGFjaGVkIG9wZW4gYW5kIGNsb3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBjbG9zZWQg
c2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5j
ZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBjbG9zZWQgYW5kIG9wZW4gc2hhZG93IHRyZWVzIHdpdGgg
YW4gaW5uZXIgb3BlbiBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9k
ZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkIGNsb3NlZCBhbmQgb3BlbiBzaGFk
b3cgdHJlZXMgd2l0aCBhbiBpbm5lciBjbG9zZWQgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBh
biBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBjbG9z
ZWQgYW5kIGNsb3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBvcGVuIHNoYWRvdyB0cmVl
IAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRo
IGEgZGV0YWNoZWQgY2xvc2VkIGFuZCBjbG9zZWQgc2hhZG93IHRyZWVzIHdpdGggYW4gaW5uZXIg
Y2xvc2VkIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGgg
dHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgb3BlbiBhbmQgb3BlbiBzaGFkb3cgdHJlZXMg
d2l0aCBhbiBpbm5lciBvcGVuIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24g
YSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgb3BlbiBhbmQgb3BlbiBz
aGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBjbG9zZWQgc2hhZG93IHRyZWUgCitQQVNTIEZpcmlu
ZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBv
cGVuIGFuZCBjbG9zZWQgc2hhZG93IHRyZWVzIHdpdGggYW4gaW5uZXIgb3BlbiBzaGFkb3cgdHJl
ZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0
aCBhIGRldGFjaGVkIG9wZW4gYW5kIGNsb3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBj
bG9zZWQgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0
d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBjbG9zZWQgYW5kIG9wZW4gc2hhZG93IHRyZWVz
IHdpdGggYW4gaW5uZXIgb3BlbiBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9u
IGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkIGNsb3NlZCBhbmQgb3Bl
biBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBjbG9zZWQgc2hhZG93IHRyZWUgCitQQVNTIEZp
cmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hl
ZCBjbG9zZWQgYW5kIGNsb3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBvcGVuIHNoYWRv
dyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9y
cyB3aXRoIGEgZGV0YWNoZWQgY2xvc2VkIGFuZCBjbG9zZWQgc2hhZG93IHRyZWVzIHdpdGggYW4g
aW5uZXIgY2xvc2VkIHNoYWRvdyB0cmVlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90dGVkLW5vZGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xOTA1NjFmZThiMTA2MjgyNjMxYzZhYWUxMjgwMDQ0YWIzNWNiMGM4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90dGVkLW5v
ZGUuaHRtbApAQCAtMCwwICsxLDI1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDx0aXRsZT5TaGFkb3cgRE9NOiBGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgbm9kZSBh
c3NpZ25lZCB0byBhIHNsb3Q8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9
IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorICAgIDxtZXRh
IG5hbWU9ImFzc2VydCIgY29udGVudD0iRWxlbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93IHNo
b3VsZCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgU2hhZG93Um9vdCI+CisgICAgPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRv
dy8jZXZlbnQtcGF0aHMiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxsaW5rIHJlbD0nc3R5bGVzaGVldCcg
aHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2PgorICAgIDxzY3JpcHQ+CisKKyAgICAgICAgZnVuY3Rp
b24gZGlzcGF0Y2hFdmVudFdpdGhMb2coc2hhZG93LCBldmVudCkgeworICAgICAgICAgICAgdmFy
IGxvZyA9IFtdOworCisgICAgICAgICAgICB2YXIgYXR0YWNoZWROb2RlcyA9IFtdOworICAgICAg
ICAgICAgZm9yICh2YXIgbm9kZUtleSBpbiBzaGFkb3cpIHsKKyAgICAgICAgICAgICAgICB2YXIg
c3RhcnRpbmdOb2RlID0gc2hhZG93W25vZGVLZXldOworICAgICAgICAgICAgICAgIGZvciAodmFy
IG5vZGUgPSBzdGFydGluZ05vZGU7IG5vZGU7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF0dGFjaGVkTm9kZXMuaW5kZXhPZihub2RlKSA+PSAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGF0
dGFjaGVkTm9kZXMucHVzaChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50LnR5cGUsIChmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZy5wdXNoKFt0aGlzLCBldmVudC50YXJnZXRdKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSkuYmluZChub2RlKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzaGFkb3cudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAg
ICAgICAgICByZXR1cm4gbG9nOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZWxlbWVu
dChuYW1lLCBjaGlsZHJlbiwgY2xhc3NOYW1lKSB7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1l
KQorICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOworICAgICAg
ICAgICAgaWYgKGNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY2hpbGQgb2Yg
Y2hpbGRyZW4pCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBhdHRhY2hTaGFkb3coaG9zdCwgbW9kZSwgY2hpbGRyZW4pIHsK
KyAgICAgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6IG1v
ZGV9KTsKKyAgICAgICAgICAgIGlmIChjaGlsZHJlbikgeworICAgICAgICAgICAgICAgIGZvciAo
dmFyIGNoaWxkIG9mIGNoaWxkcmVuKQorICAgICAgICAgICAgICAgICAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzaGFk
b3dSb290OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY3JlYXRlU2hhZG93SG9zdFdp
dGhBc3NpZ25lZEdyYW5kQ2hpbGQobW9kZSkgeworICAgICAgICAgICAgdmFyIGhvc3QgPSBlbGVt
ZW50KCdkaXYnLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgnYicsIFsKKyAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudCgnaScpCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIF0p
OworCisgICAgICAgICAgICB2YXIgcm9vdCA9IGF0dGFjaFNoYWRvdyhob3N0LCBtb2RlLCBbCisg
ICAgICAgICAgICAgICAgZWxlbWVudCgnc3BhbicsIFsKKyAgICAgICAgICAgICAgICAgICAgZWxl
bWVudCgnc2xvdCcpCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIF0pOworCisgICAg
ICAgICAgICByZXR1cm4ge3RhcmdldDogaG9zdC5xdWVyeVNlbGVjdG9yKCdpJyksIHRhcmdldFBh
cmVudDogaG9zdC5xdWVyeVNlbGVjdG9yKCdiJyksIGhvc3Q6IGhvc3QsCisgICAgICAgICAgICAg
ICAgICAgIHNsb3Q6IHJvb3QucXVlcnlTZWxlY3Rvcignc2xvdCcpLCBzbG90UGFyZW50OiByb290
LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKSwgcm9vdDogcm9vdH07CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiB0ZXN0RXZlbnRJbkRldGFjaGVkU2hhZG93SG9zdERlc2NlbmRhbnQobW9kZSkg
eworICAgICAgICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIHNo
YWRvdyA9IGNyZWF0ZVNoYWRvd0hvc3RXaXRoQXNzaWduZWRHcmFuZENoaWxkKG1vZGUpOworCisg
ICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2coc2hhZG93LCBuZXcgRXZl
bnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhsb2cubGVuZ3RoLCA2LCAnRXZlbnRQYXRoIG11c3QgY29udGFpbiBbdGFyZ2V0LCB0YXJn
ZXQgcGFyZW50LCBzbG90LCBzbG90IHBhcmVudCwgc2hhZG93IHJvb3QsIHNoYWRvdyBob3N0XScp
OworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRh
cmdldCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtzaGFkb3cudGFy
Z2V0UGFyZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBwYXJl
bnQgb2YgdGhlIHRhcmdldCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzJdLCBbc2hhZG93LnNsb3QsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJl
IHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10s
IFtzaGFkb3cuc2xvdFBhcmVudCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUg
dGhlIHBhcmVudCBvZiB0aGUgc2xvdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzRdLCBbc2hhZG93LnJvb3QsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFs0XSBt
dXN0IGJlIHRoZSBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzVdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzVd
IG11c3QgYmUgdGhlIHNoYWRvdyBob3N0Jyk7CisKKyAgICAgICAgICAgIH0sICdGaXJpbmcgYW4g
ZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQgb2YgYSBkZXRhY2hlZCAnICsgbW9kZSArICcgbW9k
ZSBzaGFkb3cgaG9zdCcpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50SW5EZXRhY2hl
ZFNoYWRvd0hvc3REZXNjZW5kYW50KCdvcGVuJyk7CisgICAgICAgIHRlc3RFdmVudEluRGV0YWNo
ZWRTaGFkb3dIb3N0RGVzY2VuZGFudCgnY2xvc2VkJyk7CisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dEV2ZW50SW5TaGFkb3dIb3N0RGVzY2VuZGFudEluc2lkZURvY3VtZW50KG1vZGUpIHsKKyAgICAg
ICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBzaGFkb3cgPSBj
cmVhdGVTaGFkb3dIb3N0V2l0aEFzc2lnbmVkR3JhbmRDaGlsZChtb2RlKTsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvdy5ob3N0KTsKKworICAgICAgICAg
ICAgICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKHNoYWRvdywgbmV3IEV2ZW50KCdmb28n
LCB7YnViYmxlczogdHJ1ZX0pKTsKKworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobG9n
Lmxlbmd0aCwgOSwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3RhcmdldCwgdGFyZ2V0IHBhcmVu
dCwgc2xvdCwgc2xvdCBwYXJlbnQsIHNoYWRvdyByb290LCBzaGFkb3cgaG9zdCwgYm9keSwgaHRt
bCwgZG9jdW1lbnRdJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2db
MF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0IGJl
IHRoZSB0YXJnZXQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sx
XSwgW3NoYWRvdy50YXJnZXRQYXJlbnQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzFdIG11
c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgdGFyZ2V0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbMl0sIFtzaGFkb3cuc2xvdCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQ
YXRoWzJdIG11c3QgYmUgdGhlIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5zbG90UGFyZW50LCBzaGFkb3cuc2xvdF0sICdFdmVudFBh
dGhbM10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnNsb3RdLCAn
RXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdldF0s
ICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0aGUgc2hhZG93IGhvc3QnKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s2XSwgW2RvY3VtZW50LmJvZHksIHNoYWRvdy50YXJn
ZXRdLCAnRXZlbnRQYXRoWzZdIG11c3QgYmUgdGhlIGJvZHkgZWxlbWVudCcpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzddLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRoZSBodG1sIGVsZW1l
bnQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s4XSwgW2RvY3Vt
ZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFs4XSBtdXN0IGJlIHRoZSBodG1sIGVsZW1l
bnQnKTsKKworICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBncmFuZCBj
aGlsZCBvZiBhbiBpbi1kb2N1bWVudCAnICsgbW9kZSArICcgbW9kZSBzaGFkb3cgaG9zdCcpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50SW5TaGFkb3dIb3N0RGVzY2VuZGFudEluc2lk
ZURvY3VtZW50KCdvcGVuJyk7CisgICAgICAgIHRlc3RFdmVudEluU2hhZG93SG9zdERlc2NlbmRh
bnRJbnNpZGVEb2N1bWVudCgnY2xvc2VkJyk7CisKKyAgICAgICAgZnVuY3Rpb24gY3JlYXRlTmVz
dGVkU2hhZG93VHJlZXNXaXRoU2xvdHMoaW5uZXJNb2RlLCBvdXRlclVwcGVyTW9kZSwgb3V0ZXJM
b3dlck1vZGUpIHsKKyAgICAgICAgICAgIHZhciB1cHBlckhvc3QgPSBlbGVtZW50KCd1cHBlci1o
b3N0JywgWworICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3AnLCBbCisgICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQoJ2xvd2VyLWhvc3QnLCBbCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50KCdhJykKKyAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICBdKQorICAg
ICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIHZhciB1cHBlclNoYWRvdyA9IGF0dGFjaFNoYWRv
dyh1cHBlckhvc3QsIG91dGVyVXBwZXJNb2RlLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgn
YicsIFsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgnc2xvdCcsIFtdLCAndXBwZXItc2xv
dCcpCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICB2
YXIgbG93ZXJIb3N0ID0gdXBwZXJIb3N0LnF1ZXJ5U2VsZWN0b3IoJ2xvd2VyLWhvc3QnKTsKKyAg
ICAgICAgICAgIHZhciBsb3dlclNoYWRvdyA9IGF0dGFjaFNoYWRvdyhsb3dlckhvc3QsIG91dGVy
TG93ZXJNb2RlLCBbCisgICAgICAgICAgICAgICAgZWxlbWVudCgnZW0nLCBbCisgICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQoJ2lubmVyLWhvc3QnLCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50KCdzcGFuJywgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQo
J3Nsb3QnLCBbXSwgJ2xvd2VyLXNsb3QnKQorICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAg
ICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgXSk7
CisKKyAgICAgICAgICAgIGlubmVyU2hhZG93ID0gYXR0YWNoU2hhZG93KGxvd2VyU2hhZG93LnF1
ZXJ5U2VsZWN0b3IoJ2lubmVyLWhvc3QnKSwgaW5uZXJNb2RlLCBbCisgICAgICAgICAgICAgICAg
ZWxlbWVudCgnaScsIFsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgnc2xvdCcsIFtdLCAn
aW5uZXItc2xvdCcpCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIF0pOworCisgICAg
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGhvc3Q6IHVwcGVySG9zdCwKKyAgICAg
ICAgICAgICAgICB0YXJnZXQ6IHVwcGVySG9zdC5xdWVyeVNlbGVjdG9yKCdhJyksCisgICAgICAg
ICAgICAgICAgdXBwZXJTaGFkb3c6IHVwcGVyU2hhZG93LAorICAgICAgICAgICAgICAgIHVwcGVy
U2xvdDogdXBwZXJTaGFkb3cucXVlcnlTZWxlY3Rvcignc2xvdCcpLAorICAgICAgICAgICAgICAg
IGxvd2VyU2hhZG93OiBsb3dlclNoYWRvdywKKyAgICAgICAgICAgICAgICBsb3dlclNsb3Q6IGxv
d2VyU2hhZG93LnF1ZXJ5U2VsZWN0b3IoJ3Nsb3QnKSwKKyAgICAgICAgICAgICAgICBpbm5lclNo
YWRvdzogaW5uZXJTaGFkb3csCisgICAgICAgICAgICAgICAgaW5uZXJTbG90OiBpbm5lclNoYWRv
dy5xdWVyeVNlbGVjdG9yKCdzbG90JyksCisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAg
ICAgICAgLyoKKyAgICAgICAgdXBwZXItaG9zdCAoMTQpIC0tICh1cHBlclNoYWRvdzsgMTMpCisg
ICAgICAgICArIHAgKDEwKSAgICAgICAgICArIGIgKDEyKQorICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICArIHNsb3QgKHVwcGVyU2xvdDsgMTEpCisgICAgICAgICAgKyBsb3dlci1ob3N0ICg5
KSAtLSAobG93ZXJTaGFkb3c7IDgpCisgICAgICAgICAgICArIGEgKHRhcmdldDsgMCkgICArIGVt
ICg3KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlubmVyLWhvc3QgKDYpIC0t
LS0tLS0tIChpbm5lclNoYWRvdzsgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArIHNwYW4gKDIpICAgICAgICAgICAgICArIGkgKDQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArIHNsb3QgKGxvd2VyU2xvdDsgMSkgKyBzbG90IChpbm5lclNsb3Q7IDMp
CisgICAgICAgICovCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV2ZW50VW5kZXJUd29TaGFkb3dS
b290cyhvdXRlclVwcGVyTW9kZSwgb3V0ZXJMb3dlck1vZGUsIGlubmVyTW9kZSkgeworICAgICAg
ICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIHNoYWRvdyA9IGNy
ZWF0ZU5lc3RlZFNoYWRvd1RyZWVzV2l0aFNsb3RzKGlubmVyTW9kZSwgb3V0ZXJVcHBlck1vZGUs
IG91dGVyTG93ZXJNb2RlKTsKKworICAgICAgICAgICAgICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRX
aXRoTG9nKHNoYWRvdywgbmV3IEV2ZW50KCdmb28nLCB7YnViYmxlczogdHJ1ZX0pKTsKKworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobG9nLmxlbmd0aCwgMTUsICdFdmVudFBhdGggbXVz
dCBjb250YWluIDE1IHRhcmdldHMnKTsKKworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9l
cXVhbHMobG9nWzBdLCBbc2hhZG93LnRhcmdldCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhb
MF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbMV0sIFtzaGFkb3cubG93ZXJTbG90LCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50
UGF0aFsxXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgbG93ZXIgc2hhZG93IHRyZWUnKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5sb3dl
clNsb3QucGFyZW50Tm9kZSwgc2hhZG93Lmxvd2VyU2xvdF0sICdFdmVudFBhdGhbMl0gbXVzdCBi
ZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0aGUgbG93ZXIgc2hhZG93IHRyZWUnKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3NoYWRvdy5pbm5l
clNsb3QsIHNoYWRvdy5pbm5lclNsb3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhlIHNsb3Qg
aW5zaWRlIHRoZSBzaGFkb3cgdHJlZSBpbnNpZGUgdGhlIGxvd2VyIHNoYWRvdyB0cmVlJyk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cuaW5uZXJT
bG90LnBhcmVudE5vZGUsIHNoYWRvdy5pbm5lclNsb3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUg
dGhlIGNoaWxkIG9mIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzVdLCBbc2hhZG93LmlubmVyU2hhZG93LCBzaGFkb3cuaW5u
ZXJTbG90XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOwor
ICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzZdLCBbc2hhZG93LmlubmVy
U2hhZG93Lmhvc3QsIHNoYWRvdy5sb3dlclNsb3RdLCAnRXZlbnRQYXRoWzZdIG11c3QgYmUgdGhl
IGhvc3Qgb2YgdGhlIGlubmVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhsb2dbN10sIFtzaGFkb3cubG93ZXJTaGFkb3cuZmlyc3RDaGlsZCwgc2hh
ZG93Lmxvd2VyU2xvdF0sICdFdmVudFBhdGhbN10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBp
bm5lciBzaGFkb3cgaG9zdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzhdLCBbc2hhZG93Lmxvd2VyU2hhZG93LCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0
aFs4XSBtdXN0IGJlIHRoZSBsb3dlciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzldLCBbc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3QsIHNoYWRv
dy50YXJnZXRdLCAnRXZlbnRQYXRoWzldIG11c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyBob3N0Jyk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTBdLCBbc2hhZG93Lmhv
c3QuZmlyc3RDaGlsZCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMTBdIG11c3QgYmUgdGhl
IHBhcmVudCBvZiB0aGUgZ3JhbmQgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cudXBwZXJTbG90LCBzaGFk
b3cudXBwZXJTbG90XSwgJ0V2ZW50UGF0aFsxMV0gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhl
IHVwcGVyIHNoYWRvdyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2dbMTJdLCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudXBwZXJTbG90
XSwgJ0V2ZW50UGF0aFsxMl0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBzbG90IGluc2lkZSB0
aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGxvZ1sxM10sIFtzaGFkb3cudXBwZXJTaGFkb3csIHNoYWRvdy51cHBlclNsb3RdLCAnRXZl
bnRQYXRoWzEzXSBtdXN0IGJlIHRoZSB1cHBlciBzaGFkb3cgcm9vdCcpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzE0XSwgW3NoYWRvdy5ob3N0LCBzaGFkb3cudGFy
Z2V0XSwgJ0V2ZW50UGF0aFsxNF0gbXVzdCBiZSB0aGUgaG9zdCcpOworCisgICAgICAgICAgICB9
LCAnRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRl
dGFjaGVkICcgKyBvdXRlclVwcGVyTW9kZSArICcgYW5kICcgKyBvdXRlckxvd2VyTW9kZQorICAg
ICAgICAgICAgICAgICsgJyBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciAnICsgaW5uZXJNb2Rl
ICsgJyBzaGFkb3cgdHJlZScpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdEV2ZW50VW5kZXJU
d29TaGFkb3dSb290cygnb3BlbicsICdvcGVuJywgJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50
VW5kZXJUd29TaGFkb3dSb290cygnb3BlbicsICdvcGVuJywgJ2Nsb3NlZCcpOworICAgICAgICB0
ZXN0RXZlbnRVbmRlclR3b1NoYWRvd1Jvb3RzKCdvcGVuJywgJ2Nsb3NlZCcsICdvcGVuJyk7Cisg
ICAgICAgIHRlc3RFdmVudFVuZGVyVHdvU2hhZG93Um9vdHMoJ29wZW4nLCAnY2xvc2VkJywgJ2Ns
b3NlZCcpOworICAgICAgICB0ZXN0RXZlbnRVbmRlclR3b1NoYWRvd1Jvb3RzKCdjbG9zZWQnLCAn
b3BlbicsICdvcGVuJyk7CisgICAgICAgIHRlc3RFdmVudFVuZGVyVHdvU2hhZG93Um9vdHMoJ2Ns
b3NlZCcsICdvcGVuJywgJ2Nsb3NlZCcpOworICAgICAgICB0ZXN0RXZlbnRVbmRlclR3b1NoYWRv
d1Jvb3RzKCdjbG9zZWQnLCAnY2xvc2VkJywgJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50VW5k
ZXJUd29TaGFkb3dSb290cygnY2xvc2VkJywgJ2Nsb3NlZCcsICdjbG9zZWQnKTsKKworICAgICAg
ICAvKgorICAgICAgICB1cHBlci1ob3N0ICgxMSkgLS0gKHVwcGVyU2hhZG93OyAxMCkKKyAgICAg
ICAgICsgcCAoNykgICAgICAgICAgICsgYiAoOSkKKyAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgKyBzbG90ICh1cHBlclNsb3Q7IDgpCisgICAgICAgICAgKyBsb3dlci1ob3N0ICg2KSAtLSAo
bG93ZXJTaGFkb3c7IDUpCisgICAgICAgICAgICArIGEgICAgICAgICAgICAgICArIGVtICg0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlubmVyLWhvc3QgKDMpIC0tIChpbm5l
clNoYWRvdzsgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNwYW4gICAg
ICAgICAgICArIGkgKDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNs
b3QgICAgICAgICAgICArIHNsb3QgKGlubmVyU2xvdDsgMCkKKyAgICAgICAgKi8KKworICAgICAg
ICBmdW5jdGlvbiB0ZXN0RXZlbnRJbnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVyU2hhZG93
KG91dGVyVXBwZXJNb2RlLCBvdXRlckxvd2VyTW9kZSwgaW5uZXJNb2RlKSB7CisgICAgICAgICAg
ICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2hhZG93ID0gY3JlYXRl
TmVzdGVkU2hhZG93VHJlZXNXaXRoU2xvdHMoaW5uZXJNb2RlLCBvdXRlclVwcGVyTW9kZSwgb3V0
ZXJMb3dlck1vZGUpOworICAgICAgICAgICAgICAgIHNoYWRvdy5kZWVwZXN0Tm9kZUluTGlnaHRE
T00gPSBzaGFkb3cudGFyZ2V0OyAvLyBOZWVkZWQgZm9yIGRpc3BhdGNoRXZlbnRXaXRoTG9nIHRv
IGF0dGFjaCBldmVudCBsaXN0ZW5lcnMuIAorICAgICAgICAgICAgICAgIHNoYWRvdy50YXJnZXQg
PSBzaGFkb3cuaW5uZXJTbG90OworCisgICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVu
dFdpdGhMb2coc2hhZG93LCBuZXcgRXZlbnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlfSkpOworCisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3RoLCAxMiwgJ0V2ZW50UGF0aCBt
dXN0IGNvbnRhaW4gMTIgdGFyZ2V0cycpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0
aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy50YXJnZXQucGFyZW50Tm9kZSwgc2hhZG93LnRhcmdldF0s
ICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5pbm5lclNoYWRv
dywgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgaW5uZXIgc2hhZG93
IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3No
YWRvdy5pbm5lclNoYWRvdy5ob3N0LCBzaGFkb3cuaW5uZXJTaGFkb3cuaG9zdF0sICdFdmVudFBh
dGhbM10gbXVzdCBiZSB0aGUgaW5uZXIgc2hhZG93IGhvc3QnKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5sb3dlclNoYWRvdy5maXJzdENoaWxk
LCBzaGFkb3cuaW5uZXJTaGFkb3cuaG9zdF0sICdFdmVudFBhdGhbNF0gbXVzdCBiZSB0aGUgcGFy
ZW50IG9mIHRoZSBpbm5lciBzaGFkb3cgaG9zdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobG9nWzVdLCBbc2hhZG93Lmxvd2VyU2hhZG93LCBzaGFkb3cuaW5uZXJTaGFk
b3cuaG9zdF0sICdFdmVudFBhdGhbNV0gbXVzdCBiZSB0aGUgbG93ZXIgKGJ1dCBvdXRlcikgc2hh
ZG93IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s2XSwg
W3NoYWRvdy5sb3dlclNoYWRvdy5ob3N0LCBzaGFkb3cubG93ZXJTaGFkb3cuaG9zdF0sICdFdmVu
dFBhdGhbNl0gbXVzdCBiZSB0aGUgbG93ZXIgKGJ1dCBvdXRlcikgc2hhZG93IHJvb3QnKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s3XSwgW3NoYWRvdy5ob3N0LmZp
cnN0Q2hpbGQsIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJl
IHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s4XSwgW3NoYWRvdy51cHBlclNsb3QsIHNoYWRvdy51
cHBlclNsb3RdLCAnRXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBl
ciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzldLCBbc2hhZG93LnVwcGVyU2xvdC5wYXJlbnROb2RlLCBzaGFkb3cudXBwZXJTbG90XSwgJ0V2
ZW50UGF0aFs5XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBl
ciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzEwXSwgW3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhb
MTBdIG11c3QgYmUgdGhlIHVwcGVyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMTFdLCBbc2hhZG93LnVwcGVyU2hhZG93Lmhvc3QsIHNoYWRv
dy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFsxMV0gbXVzdCBiZSB0aGUgaG9zdCcpOwor
CisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNl
c3RvcnMgd2l0aCBhIGRldGFjaGVkICcgKyBvdXRlclVwcGVyTW9kZSArICcgYW5kICcgKyBvdXRl
ckxvd2VyTW9kZQorICAgICAgICAgICAgICAgICsgJyBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5l
ciAnICsgaW5uZXJNb2RlICsgJyBzaGFkb3cgdHJlZScpOworICAgICAgICB9CisKKyAgICAgICAg
dGVzdEV2ZW50SW5zaWRlTmVzdGVkU2hhZG93c1VuZGVyQW5vdGhlclNoYWRvdygnb3BlbicsICdv
cGVuJywgJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50SW5zaWRlTmVzdGVkU2hhZG93c1VuZGVy
QW5vdGhlclNoYWRvdygnb3BlbicsICdvcGVuJywgJ2Nsb3NlZCcpOworICAgICAgICB0ZXN0RXZl
bnRJbnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVyU2hhZG93KCdvcGVuJywgJ2Nsb3NlZCcs
ICdvcGVuJyk7CisgICAgICAgIHRlc3RFdmVudEluc2lkZU5lc3RlZFNoYWRvd3NVbmRlckFub3Ro
ZXJTaGFkb3coJ29wZW4nLCAnY2xvc2VkJywgJ2Nsb3NlZCcpOworICAgICAgICB0ZXN0RXZlbnRJ
bnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVyU2hhZG93KCdjbG9zZWQnLCAnb3BlbicsICdv
cGVuJyk7CisgICAgICAgIHRlc3RFdmVudEluc2lkZU5lc3RlZFNoYWRvd3NVbmRlckFub3RoZXJT
aGFkb3coJ2Nsb3NlZCcsICdvcGVuJywgJ2Nsb3NlZCcpOworICAgICAgICB0ZXN0RXZlbnRJbnNp
ZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVyU2hhZG93KCdjbG9zZWQnLCAnY2xvc2VkJywgJ29w
ZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50SW5zaWRlTmVzdGVkU2hhZG93c1VuZGVyQW5vdGhlclNo
YWRvdygnY2xvc2VkJywgJ2Nsb3NlZCcsICdjbG9zZWQnKTsKKworICAgIDwvc2NyaXB0PgorICAg
IDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261877</attachid>
            <date>2015-09-24 11:08:59 -0700</date>
            <delta_ts>2015-09-24 12:00:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-149243-20150924110840.patch</filename>
            <type>text/plain</type>
            <size>33812</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQwMDdmZGNkNzIyMTM0
NTc4NjI2OTJlMmQ4OTE2YTA3Y2E4MjI5Mi4uM2Q4NmE0YjU4ZWMxNzEyMjMyMTgzNGJmNjlhNzZl
YmQ1ZTlkYTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA5LTIzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgZXZlbnQgZGlzcGF0
Y2hpbmcgcmVzcGVjdCBzbG90dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCisKKyAgICAgICAgVGhlcmUgYXJlIHByaW1hcmlseSB0d28gY2FzZXMgdG8gY29uc2lkZXI6
IGdldHRpbmcgb3V0IG9mIGEgc2hhZG93IHJvb3QgdG8gaXRzIGhvc3QsCisgICAgICAgIGFuZCBt
b3ZpbmcgaW50byBhIHNsb3QgZnJvbSBhbiBhc3NpZ25lZCBub2RlLgorCisgICAgICAgIFdoZW4g
Z2V0dGluZyBvdXQgb2YgYSBzaGFkb3cgcm9vdCwgZWl0aGVyIHRoZSBldmVudCBvcmlnaW5hdGVk
IGluIGl0cyBzaGFkb3cgdHJlZQorICAgICAgICBpbmNsdWRpbmcgaXRzIG5vZGVzJyBzaGFkb3cg
dHJlZXMgKDEpIG9yIGl0IG1vdmVkIGludG8gdGhpcyBzaGFkb3cgdHJlZSB2aWEgYSBzbG90ICgy
KS4KKyAgICAgICAgSW4gKDEpLCBldmVudC50YXJnZXQgc2hvdWxkIGJlIHNldCB0byB0aGUgc2hh
ZG93IGhvc3QuIEluICgyKSwgaXQgc2hvdWxkIGJlIHNldCB0byB0aGUKKyAgICAgICAgZmlyc3Qg
bm9kZSBpbiB0aGUgZXZlbnQgcGF0aCB0aGF0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgdHJlZSBhcyB0
aGUgc2hhZG93IGhvc3QuIEluIG9yZGVyCisgICAgICAgIHRvIGZpbmQgc3VjaCBhIG5vZGUgaW4g
TygxKSwgd2UgdXNlIGEgc3RhY2sgb2YgZXZlbnQgdGFyZ2V0cyBpbiBlYWNoIChzaGFkb3cpIHRy
ZWUuIFdlCisgICAgICAgIHB1c2ggZXZlbnQudGFyZ2V0IG9mIHRoZSBjdXJyZW50IHRyZWUgd2hl
bmV2ZXIgd2UgbW92ZSB1cCB0byBhIHNsb3QgZnJvbSBhbiBhc3NpZ25lZCBub2RlCisgICAgICAg
IGFuZCBwb3AgaXQgb3V0IG9mIHRoZSBzdGFjayB3aGVuIHdlIG1vdmUgb3V0IG9mIHRoZSBzaGFk
b3cgdHJlZS4KKworICAgICAgICBBIGZvbGxvdyB1cCBwYXRjaCBpcyBuZWVkZWQgdG8gdXBkYXRl
IHRoZSBjb2RlIHRvIHJlc29sdmUgcmVsYXRlZCB0YXJnZXRzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0bWwKKworICAg
ICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQ
YXRoOjpFdmVudFBhdGgpOgorCiAyMDE1LTA5LTIzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBbRm9udCBGZWF0dXJlc10gSW1wbGVt
ZW50IGZvbnQtdmFyaWFudC0qCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDIyYThlYzk0MDNhOTFkNDNlZDZlNjI4YTliYzk0NjAwYzVmMTY0MjEuLjNjNTI5YzJlOGMx
MmUxNTU4MjI0NjEyNWU4YmI4ZWVmMzNhMGEzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERp
c3BhdGNoZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2lu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKQEAgLTQxMywyMCArNDE0LDI0IEBAIHN0YXRpYyBOb2RlKiBub2RlT3JIb3N0
SWZQc2V1ZG9FbGVtZW50KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGlzPFBzZXVkb0VsZW1lbnQ+
KCpub2RlKSA/IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCpub2RlKS5ob3N0RWxlbWVudCgpIDog
bm9kZTsKIH0KIAotRXZlbnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgdGFyZ2V0Tm9kZSwgRXZlbnQm
IGV2ZW50KQorRXZlbnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50
JiBldmVudCkKIHsKLSAgICBib29sIGlzU1ZHRWxlbWVudCA9IHRhcmdldE5vZGUuaXNTVkdFbGVt
ZW50KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgVmVjdG9yPEV2ZW50VGFyZ2V0Kiwg
MTY+IHRhcmdldFN0YWNrOworI2VuZGlmCisKICAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQg
PSBldmVudC5pc01vdXNlRXZlbnQoKSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKTsKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgaXNUb3VjaEV2ZW50
ID0gZXZlbnQuaXNUb3VjaEV2ZW50KCk7CiAjZW5kaWYKICAgICBFdmVudFRhcmdldCogdGFyZ2V0
ID0gbnVsbHB0cjsKIAotICAgIE5vZGUqIG5vZGUgPSBub2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50
KCZ0YXJnZXROb2RlKTsKKyAgICBOb2RlKiBub2RlID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVu
dCgmb3JpZ2luYWxUYXJnZXQpOwogICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIGlmICghdGFy
Z2V0IHx8ICFpc1NWR0VsZW1lbnQpIC8vIEZJWE1FOiBUaGlzIGNvZGUgZG9lc24ndCBtYWtlIHNl
bnNlIG9uY2Ugd2UndmUgY2xpbWJlZCBvdXQgb2YgdGhlIFNWRyBzdWJ0cmVlIGluIGEgSFRNTCBk
b2N1bWVudC4KKyAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICB0YXJnZXQgPSBldmVu
dFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSk7Ci0gICAgICAgIGZvciAoOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudDsKKyAgICAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBwYXJlbnQpIHsKICAgICAgICAgICAg
IEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0
UnVsZXMoKm5vZGUpOwogICAgICAgICAgICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCiAgICAg
ICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2
ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KSk7CkBAIC00MzgsMTAgKzQ0
MywzNiBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0YXJnZXROb2RlLCBFdmVudCYgZXZl
bnQpCiAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KSk7CiAgICAgICAgICAgICBpZiAo
aXM8U2hhZG93Um9vdD4oKm5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgaWYgKCFwYXJlbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAg
ICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3RPZlBhcmVudCA9IHBhcmVudC0+c2hhZG93
Um9vdCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGFzc2lnbmVkU2xvdCA9IHNoYWRv
d1Jvb3RPZlBhcmVudC0+ZmluZEFzc2lnbmVkU2xvdCgqbm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gbm9kZSBpcyBhc3NpZ25lZCB0byBhIHNsb3QuIENvbnRpbnVlIGRpc3BhdGNoaW5n
IHRoZSBldmVudCBhdCB0aGlzIHNsb3QuCisgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YWNr
LmFwcGVuZCh0YXJnZXQpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBhc3NpZ25lZFNs
b3Q7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGFzc2lnbmVkU2xvdDsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIG5vZGUgPSBwYXJl
bnQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFub2RlIHx8ICFzaG91bGRFdmVudENyb3NzU2hh
ZG93Qm91bmRhcnkoZXZlbnQsIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCpub2RlKSwgKnRhcmdldCkp
CisKKyAgICAgICAgU2hhZG93Um9vdCYgc2hhZG93Um9vdCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+
KCpub2RlKTsKKyAgICAgICAgLy8gQXQgYSBzaGFkb3cgcm9vdC4gQ29udGludWUgZGlzcGF0Y2hp
bmcgdGhlIGV2ZW50IGF0IHRoZSBzaGFkb3cgaG9zdC4KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICAgICAgaWYgKCF0YXJnZXRTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIE1v
dmUgdGFyZ2V0IGJhY2sgdG8gYSBkZXNjZW5kYW50IG9mIHRoZSBzaGFkb3cgaG9zdCBpZiB0aGUg
ZXZlbnQgZGlkIG5vdCBvcmlnaW5hdGUgaW4gdGhpcyBzaGFkb3cgdHJlZSBvciBpdHMgaW5uZXIg
c2hhZG93IHRyZWVzLgorICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0U3RhY2subGFzdCgpOwor
ICAgICAgICAgICAgdGFyZ2V0U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgQVNTRVJU
KHNoYWRvd1Jvb3QuaG9zdCgpLT5jb250YWlucyh0YXJnZXQtPnRvTm9kZSgpKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGFyZ2V0ID0gbnVsbHB0cjsKKyNlbmRpZgorICAgICAgICBp
ZiAoIXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dCb3VuZGFyeShldmVudCwgc2hhZG93Um9vdCwgb3Jp
Z2luYWxUYXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBub2RlID0gZG93bmNh
c3Q8U2hhZG93Um9vdD4oKm5vZGUpLmhvc3QoKTsKKyAgICAgICAgbm9kZSA9IHNoYWRvd1Jvb3Qu
aG9zdCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkNmJjOWJiZDc5YTFlNzhkMTM3NjUxNTI0OGJj
NzYwZTJhMjdkNjguLmEyY2M5YWI3ODFkYmE5MTU5MzZhNDdjMTczY2ZhMGI4MjIyNmRhMDYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wOS0yMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBNYWtlIGV2ZW50IGRpc3BhdGNoaW5nIHJlc3BlY3Qgc2xvdHRp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTI0
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZGVk
IHRlc3RzIGZvciBkaXNwYXRjaGluZyBldmVudHMgaW5zaWRlIHNoYWRvdyB0cmVlcyBhbmQgbm9k
ZXMgYXNzaWduZWQgdG8gc2xvdHMgdXNpbmcgdGVzdGhhcm5lc3MuanMuCisKKyAgICAgICAgKiBm
YXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zaGFkb3ctdHJlZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNsb3R0
ZWQtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9l
dmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA5LTIzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBb
Rm9udCBGZWF0dXJlc10gSW1wbGVtZW50IGZvbnQtdmFyaWFudC0qCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2hhZG93LXRy
ZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzMxYzI0MGVkMDBhZjMwNzQ2NDIxMWMyMGEx
ZjU2MDlkM2E1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CisKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9mIGEgZGV0YWNo
ZWQgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEg
Z3JhbmQgY2hpbGQgb2YgYSBkZXRhY2hlZCBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZSAKK1BBU1Mg
RmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9mIGFuIGluLWRvY3VtZW50IG9w
ZW4gbW9kZSBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdyYW5k
IGNoaWxkIG9mIGFuIGluLWRvY3VtZW50IGNsb3NlZCBtb2RlIHNoYWRvdyB0cmVlIAorUEFTUyBG
aXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZGV0YWNoZWQgb3BlbiBtb2RlIHNoYWRvdyB0cmVlIGlu
c2lkZSBvcGVuIG1vZGUgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBpbnNpZGUg
YSBkZXRhY2hlZCBvcGVuIG1vZGUgc2hhZG93IHRyZWUgaW5zaWRlIGNsb3NlZCBtb2RlIHNoYWRv
dyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZGV0YWNoZWQgY2xvc2VkIG1v
ZGUgc2hhZG93IHRyZWUgaW5zaWRlIG9wZW4gbW9kZSBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5n
IGFuIGV2ZW50IGluc2lkZSBhIGRldGFjaGVkIGNsb3NlZCBtb2RlIHNoYWRvdyB0cmVlIGluc2lk
ZSBjbG9zZWQgbW9kZSBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBh
biBpbi1kb2N1bWVudCBvcGVuIG1vZGUgc2hhZG93IHRyZWUgaW5zaWRlIG9wZW4gbW9kZSBzaGFk
b3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhbiBpbi1kb2N1bWVudCBvcGVu
IG1vZGUgc2hhZG93IHRyZWUgaW5zaWRlIGNsb3NlZCBtb2RlIHNoYWRvdyB0cmVlIAorUEFTUyBG
aXJpbmcgYW4gZXZlbnQgaW5zaWRlIGFuIGluLWRvY3VtZW50IGNsb3NlZCBtb2RlIHNoYWRvdyB0
cmVlIGluc2lkZSBvcGVuIG1vZGUgc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBp
bnNpZGUgYW4gaW4tZG9jdW1lbnQgY2xvc2VkIG1vZGUgc2hhZG93IHRyZWUgaW5zaWRlIGNsb3Nl
ZCBtb2RlIHNoYWRvdyB0cmVlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vZXZlbnQtaW5zaWRlLXNoYWRvdy10cmVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI0NzFh
ZTIyOTVhMjY2YmI5MmNhM2I5OTEwZDAwMTliNThhMzkyMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2hhZG93LXRyZWUuaHRtbApA
QCAtMCwwICsxLDE0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PlNoYWRvdyBET006IEZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBzaGFkb3cgdHJlZTwvdGl0bGU+
Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpy
bml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGhlIGV2ZW50
IHBhdGggY2FsY3VsYXRpb24gYWxnb3JpdGhtIG11c3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgZXZl
bnQgcGF0aCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93
ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNldmVudC1wYXRocyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdz
dHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGRp
c3BhdGNoRXZlbnRXaXRoTG9nKHRhcmdldCwgZXZlbnQpIHsKKyAgICB2YXIgbG9nID0gW107CisK
KyAgICBmb3IgKHZhciBub2RlID0gdGFyZ2V0OyBub2RlOyBub2RlID0gbm9kZS5wYXJlbnROb2Rl
IHx8IG5vZGUuaG9zdCkgeworICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQudHlw
ZSwgKGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgbG9nLnB1c2goW3RoaXMsIGV2ZW50
LnRhcmdldF0pOworICAgICAgICB9KS5iaW5kKG5vZGUpKTsKKyAgICB9CisKKyAgICB0YXJnZXQu
ZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICByZXR1cm4gbG9nOworfQorCitmdW5jdGlvbiBj
cmVhdGVTaGFkb3dSb290V2l0aEdyYW5kQ2hpbGQobW9kZSkgeworICAgIHZhciBob3N0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFyIHJvb3QgPSBob3N0LmF0dGFjaFNo
YWRvdyh7bW9kZTogbW9kZX0pOworCisgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKTsKKyAgICByb290LmFwcGVuZENoaWxkKHBhcmVudCk7CisKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpOworICAgIHBhcmVudC5hcHBlbmRD
aGlsZCh0YXJnZXQpOworICAgIHJldHVybiB7dGFyZ2V0OiB0YXJnZXQsIHBhcmVudDogcGFyZW50
LCByb290OiByb290LCBob3N0OiBob3N0fTsKK30KKworZnVuY3Rpb24gdGVzdEV2ZW50SW5EZXRh
Y2hlZFNoYWRvd1RyZWUobW9kZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2
YXIgc2hhZG93ID0gY3JlYXRlU2hhZG93Um9vdFdpdGhHcmFuZENoaWxkKG1vZGUpOworCisgICAg
ICAgIGxvZyA9IGRpc3BhdGNoRXZlbnRXaXRoTG9nKHNoYWRvdy50YXJnZXQsIG5ldyBFdmVudCgn
Zm9vJywge2J1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2cubGVuZ3RoLCA0LCAnRXZlbnRQYXRoIG11c3QgY29udGFpbiBbdGFyZ2V0LCBwYXJlbnQsIHNo
YWRvdyByb290LCBzaGFkb3cgaG9zdF0nKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0
IGJlIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMV0sIFtz
aGFkb3cucGFyZW50LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxXSBtdXN0IGJlIHRoZSBw
YXJlbnQgb2YgdGhlIHRhcmdldCcpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sy
XSwgW3NoYWRvdy5yb290LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRo
ZSBzaGFkb3cgcm9vdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3No
YWRvdy5ob3N0LCBzaGFkb3cuaG9zdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgc2hhZG93
IGhvc3QnKTsKKworICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQg
b2YgYSBkZXRhY2hlZCAnICsgbW9kZSArICcgbW9kZSBzaGFkb3cgdHJlZScpOworfQorCit0ZXN0
RXZlbnRJbkRldGFjaGVkU2hhZG93VHJlZSgnb3BlbicpOwordGVzdEV2ZW50SW5EZXRhY2hlZFNo
YWRvd1RyZWUoJ2Nsb3NlZCcpOworCitmdW5jdGlvbiB0ZXN0RXZlbnRJblNoYWRvd1RyZWVJbnNp
ZGVEb2N1bWVudChtb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBz
aGFkb3cgPSBjcmVhdGVTaGFkb3dSb290V2l0aEdyYW5kQ2hpbGQobW9kZSk7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2hhZG93Lmhvc3QpOworCisgICAgICAgIGxvZyA9IGRp
c3BhdGNoRXZlbnRXaXRoTG9nKHNoYWRvdy50YXJnZXQsIG5ldyBFdmVudCgnZm9vJywge2J1YmJs
ZXM6IHRydWV9KSk7CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2cubGVuZ3RoLCA3
LCAnRXZlbnRQYXRoIG11c3QgY29udGFpbiBbdGFyZ2V0LCBwYXJlbnQsIHNoYWRvdyByb290LCBz
aGFkb3cgaG9zdCwgYm9keSwgaHRtbCwgZG9jdW1lbnRdJyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobG9nWzBdLCBbc2hhZG93LnRhcmdldCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBh
dGhbMF0gbXVzdCBiZSB0aGUgdGFyZ2V0Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzFdLCBbc2hhZG93LnBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVz
dCBiZSB0aGUgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbMl0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMl0g
bXVzdCBiZSB0aGUgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbM10sIFtzaGFkb3cuaG9zdCwgc2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUg
dGhlIHNoYWRvdyBob3N0Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzRdLCBb
ZG9jdW1lbnQuYm9keSwgc2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhlIGJv
ZHkgZWxlbWVudCAocGFyZW50IG9mIHNoYWRvdyBob3N0KScpOworICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1s1XSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgc2hhZG93Lmhvc3Rd
LCAnRXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGh0bWwgZWxlbWVudCcpOworICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGxvZ1s2XSwgW2RvY3VtZW50LCBzaGFkb3cuaG9zdF0sICdFdmVudFBh
dGhbNl0gbXVzdCBiZSB0aGUgZG9jdW1lbnQgbm9kZScpOworCisgICAgfSwgJ0ZpcmluZyBhbiBl
dmVudCBpbnNpZGUgYSBncmFuZCBjaGlsZCBvZiBhbiBpbi1kb2N1bWVudCAnICsgbW9kZSArICcg
bW9kZSBzaGFkb3cgdHJlZScpOworfQorCit0ZXN0RXZlbnRJblNoYWRvd1RyZWVJbnNpZGVEb2N1
bWVudCgnb3BlbicpOwordGVzdEV2ZW50SW5TaGFkb3dUcmVlSW5zaWRlRG9jdW1lbnQoJ2Nsb3Nl
ZCcpOworCitmdW5jdGlvbiBjcmVhdGVOZXN0ZWRTaGFkb3dSb290KGlubmVyTW9kZSwgb3V0ZXJN
b2RlKSB7CisgICAgdmFyIG91dGVySG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHZhciBvdXRlclJvb3QgPSBvdXRlckhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiBvdXRl
ck1vZGV9KTsKKworICAgIHZhciBvdXRlckNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
cCcpOworICAgIG91dGVyUm9vdC5hcHBlbmRDaGlsZChvdXRlckNoaWxkKTsKKworICAgIHZhciBp
bm5lckhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgb3V0ZXJDaGls
ZC5hcHBlbmRDaGlsZChpbm5lckhvc3QpOworCisgICAgdmFyIGlubmVyUm9vdCA9IGlubmVySG9z
dC5hdHRhY2hTaGFkb3coe21vZGU6IGlubmVyTW9kZX0pOworICAgIHZhciBpbm5lckNoaWxkID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIGlubmVyUm9vdC5hcHBlbmRDaGls
ZChpbm5lckNoaWxkKTsKKworICAgIHJldHVybiB7dGFyZ2V0OiBpbm5lckNoaWxkLCBpbm5lclJv
b3Q6IGlubmVyUm9vdCwgaW5uZXJIb3N0OiBpbm5lckhvc3QsIG91dGVyQ2hpbGQ6IG91dGVyQ2hp
bGQsIG91dGVyUm9vdDogb3V0ZXJSb290LCBvdXRlckhvc3Q6IG91dGVySG9zdH07Cit9CisKK2Z1
bmN0aW9uIHRlc3RFdmVudEluRGV0YWNoZWROZXN0ZWRTaGFkb3dUcmVlKGlubmVyTW9kZSwgb3V0
ZXJNb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBzaGFkb3cgPSBj
cmVhdGVOZXN0ZWRTaGFkb3dSb290KGlubmVyTW9kZSwgb3V0ZXJNb2RlKTsKKworICAgICAgICBs
b2cgPSBkaXNwYXRjaEV2ZW50V2l0aExvZyhzaGFkb3cudGFyZ2V0LCBuZXcgRXZlbnQoJ2Jhcics
IHtidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nLmxl
bmd0aCwgNiwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRhaW4gW3RhcmdldCwgaW5uZXIgcm9vdCwgaW5u
ZXIgaG9zdCwgcGFyZW50LCBvdXRlciByb290LCBvdXRlciBob3N0XScpOworICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3NoYWRvdy50YXJnZXQsIHNoYWRvdy50YXJnZXRdLCAn
RXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRhcmdldCcpOworICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy5pbm5lclJvb3QsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQ
YXRoWzFdIG11c3QgYmUgdGhlIGlubmVyIHNoYWRvdyByb290Jyk7CisgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobG9nWzJdLCBbc2hhZG93LmlubmVySG9zdCwgc2hhZG93LmlubmVySG9zdF0s
ICdFdmVudFBhdGhbMl0gbXVzdCBiZSB0aGUgaW5uZXIgc2hhZG93IGhvc3QnKTsKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbM10sIFtzaGFkb3cub3V0ZXJDaGlsZCwgc2hhZG93Lmlu
bmVySG9zdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgcGFyZW50IG9mIHRoZSBpbm5lciBz
aGFkb3cgaG9zdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRv
dy5vdXRlclJvb3QsIHNoYWRvdy5pbm5lckhvc3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUgdGhl
IG91dGVyIHNoYWRvdyByb290Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzVd
LCBbc2hhZG93Lm91dGVySG9zdCwgc2hhZG93Lm91dGVySG9zdF0sICdFdmVudFBhdGhbNV0gbXVz
dCBiZSB0aGUgb3V0ZXIgc2hhZG93IGhvc3QnKTsKKworICAgIH0sICdGaXJpbmcgYW4gZXZlbnQg
aW5zaWRlIGEgZGV0YWNoZWQgJyArIGlubmVyTW9kZSArICcgbW9kZSBzaGFkb3cgdHJlZSBpbnNp
ZGUgJyArIG91dGVyTW9kZSArICcgbW9kZSBzaGFkb3cgdHJlZScpOworfQorCit0ZXN0RXZlbnRJ
bkRldGFjaGVkTmVzdGVkU2hhZG93VHJlZSgnb3BlbicsICAnb3BlbicpOwordGVzdEV2ZW50SW5E
ZXRhY2hlZE5lc3RlZFNoYWRvd1RyZWUoJ29wZW4nLCAgJ2Nsb3NlZCcpOwordGVzdEV2ZW50SW5E
ZXRhY2hlZE5lc3RlZFNoYWRvd1RyZWUoJ2Nsb3NlZCcsICdvcGVuJyk7Cit0ZXN0RXZlbnRJbkRl
dGFjaGVkTmVzdGVkU2hhZG93VHJlZSgnY2xvc2VkJywgJ2Nsb3NlZCcpOworCitmdW5jdGlvbiB0
ZXN0RXZlbnRJbk5lc3RlZFNoYWRvd1RyZWVJbnNpZGVEb2N1bWVudChpbm5lck1vZGUsIG91dGVy
TW9kZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gY3Jl
YXRlTmVzdGVkU2hhZG93Um9vdChpbm5lck1vZGUsIG91dGVyTW9kZSk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2hhZG93Lm91dGVySG9zdCk7CisKKyAgICAgICAgbG9nID0g
ZGlzcGF0Y2hFdmVudFdpdGhMb2coc2hhZG93LnRhcmdldCwgbmV3IEV2ZW50KCdiYXInLCB7YnVi
YmxlczogdHJ1ZX0pKTsKKworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZy5sZW5ndGgs
IDYsICdFdmVudFBhdGggbXVzdCBjb250YWluIFt0YXJnZXQsIGlubmVyIHJvb3QsIGlubmVyIGhv
c3QsIHBhcmVudCwgb3V0ZXIgcm9vdCwgb3V0ZXIgaG9zdF0nKTsKKyAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhsb2dbMV0sIFtzaGFkb3cuaW5uZXJSb290LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsx
XSBtdXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5pbm5lckhvc3QsIHNoYWRvdy5pbm5lckhvc3RdLCAnRXZl
bnRQYXRoWzJdIG11c3QgYmUgdGhlIGlubmVyIHNoYWRvdyBob3N0Jyk7CisgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93Lm91dGVyQ2hpbGQsIHNoYWRvdy5pbm5lckhv
c3RdLCAnRXZlbnRQYXRoWzNdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgaW5uZXIgc2hhZG93
IGhvc3QnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNF0sIFtzaGFkb3cub3V0
ZXJSb290LCBzaGFkb3cuaW5uZXJIb3N0XSwgJ0V2ZW50UGF0aFs0XSBtdXN0IGJlIHRoZSBvdXRl
ciBzaGFkb3cgcm9vdCcpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s1XSwgW3No
YWRvdy5vdXRlckhvc3QsIHNoYWRvdy5vdXRlckhvc3RdLCAnRXZlbnRQYXRoWzVdIG11c3QgYmUg
dGhlIG91dGVyIHNoYWRvdyBob3N0Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzZdLCBbZG9jdW1lbnQuYm9keSwgc2hhZG93Lm91dGVySG9zdF0sICdFdmVudFBhdGhbNl0gbXVz
dCBiZSB0aGUgYm9keSBlbGVtZW50Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzddLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzaGFkb3cub3V0ZXJIb3N0XSwgJ0V2ZW50
UGF0aFs3XSBtdXN0IGJlIHRoZSBodG1sIGVsZW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhsb2dbOF0sIFtkb2N1bWVudCwgc2hhZG93Lm91dGVySG9zdF0sICdFdmVudFBhdGhb
OF0gbXVzdCBiZSB0aGUgZG9jdW1lbnQgbm9kZScpOworCisgICAgfSwgJ0ZpcmluZyBhbiBldmVu
dCBpbnNpZGUgYW4gaW4tZG9jdW1lbnQgJyArIGlubmVyTW9kZSArICcgbW9kZSBzaGFkb3cgdHJl
ZSBpbnNpZGUgJyArIG91dGVyTW9kZSArICcgbW9kZSBzaGFkb3cgdHJlZScpOworfQorCit0ZXN0
RXZlbnRJbk5lc3RlZFNoYWRvd1RyZWVJbnNpZGVEb2N1bWVudCgnb3BlbicsICAnb3BlbicpOwor
dGVzdEV2ZW50SW5OZXN0ZWRTaGFkb3dUcmVlSW5zaWRlRG9jdW1lbnQoJ29wZW4nLCAgJ2Nsb3Nl
ZCcpOwordGVzdEV2ZW50SW5OZXN0ZWRTaGFkb3dUcmVlSW5zaWRlRG9jdW1lbnQoJ2Nsb3NlZCcs
ICdvcGVuJyk7Cit0ZXN0RXZlbnRJbk5lc3RlZFNoYWRvd1RyZWVJbnNpZGVEb2N1bWVudCgnY2xv
c2VkJywgJ2Nsb3NlZCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2Rl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9ldmVudC1pbnNpZGUt
c2xvdHRlZC1ub2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZlMGQ5ZDg0MDdhNzk0ODc1
YmVkYjdiN2IyYTc5YmJlZDRjZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL2V2ZW50LWluc2lkZS1zbG90dGVkLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjIgQEAKKworUEFTUyBGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQg
b2YgYSBkZXRhY2hlZCBvcGVuIG1vZGUgc2hhZG93IGhvc3QgCitQQVNTIEZpcmluZyBhbiBldmVu
dCBpbnNpZGUgYSBncmFuZCBjaGlsZCBvZiBhIGRldGFjaGVkIGNsb3NlZCBtb2RlIHNoYWRvdyBo
b3N0IAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgaW5zaWRlIGEgZ3JhbmQgY2hpbGQgb2YgYW4gaW4t
ZG9jdW1lbnQgb3BlbiBtb2RlIHNoYWRvdyBob3N0IAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgaW5z
aWRlIGEgZ3JhbmQgY2hpbGQgb2YgYW4gaW4tZG9jdW1lbnQgY2xvc2VkIG1vZGUgc2hhZG93IGhv
c3QgCitQQVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdp
dGggYSBkZXRhY2hlZCBvcGVuIGFuZCBvcGVuIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyIG9w
ZW4gc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28g
YW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBvcGVuIGFuZCBvcGVuIHNoYWRvdyB0cmVlcyB3aXRo
IGFuIGlubmVyIGNsb3NlZCBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9uIGEg
bm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkIG9wZW4gYW5kIGNsb3NlZCBz
aGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBvcGVuIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcg
YW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgb3Bl
biBhbmQgY2xvc2VkIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyIGNsb3NlZCBzaGFkb3cgdHJl
ZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0
aCBhIGRldGFjaGVkIGNsb3NlZCBhbmQgb3BlbiBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBv
cGVuIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdv
IGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgY2xvc2VkIGFuZCBvcGVuIHNoYWRvdyB0cmVlcyB3
aXRoIGFuIGlubmVyIGNsb3NlZCBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9u
IGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkIGNsb3NlZCBhbmQgY2xv
c2VkIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyIG9wZW4gc2hhZG93IHRyZWUgCitQQVNTIEZp
cmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hl
ZCBjbG9zZWQgYW5kIGNsb3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBjbG9zZWQgc2hh
ZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0
b3JzIHdpdGggYSBkZXRhY2hlZCBvcGVuIGFuZCBvcGVuIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlu
bmVyIG9wZW4gc2hhZG93IHRyZWUgCitQQVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0
aCB0d28gYW5jZXN0b3JzIHdpdGggYSBkZXRhY2hlZCBvcGVuIGFuZCBvcGVuIHNoYWRvdyB0cmVl
cyB3aXRoIGFuIGlubmVyIGNsb3NlZCBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50
IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkIG9wZW4gYW5kIGNs
b3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBvcGVuIHNoYWRvdyB0cmVlIAorUEFTUyBG
aXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNo
ZWQgb3BlbiBhbmQgY2xvc2VkIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyIGNsb3NlZCBzaGFk
b3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3Rv
cnMgd2l0aCBhIGRldGFjaGVkIGNsb3NlZCBhbmQgb3BlbiBzaGFkb3cgdHJlZXMgd2l0aCBhbiBp
bm5lciBvcGVuIHNoYWRvdyB0cmVlIAorUEFTUyBGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdp
dGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQgY2xvc2VkIGFuZCBvcGVuIHNoYWRvdyB0
cmVlcyB3aXRoIGFuIGlubmVyIGNsb3NlZCBzaGFkb3cgdHJlZSAKK1BBU1MgRmlyaW5nIGFuIGV2
ZW50IG9uIGEgbm9kZSB3aXRoIHR3byBhbmNlc3RvcnMgd2l0aCBhIGRldGFjaGVkIGNsb3NlZCBh
bmQgY2xvc2VkIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyIG9wZW4gc2hhZG93IHRyZWUgCitQ
QVNTIEZpcmluZyBhbiBldmVudCBvbiBhIG5vZGUgd2l0aCB0d28gYW5jZXN0b3JzIHdpdGggYSBk
ZXRhY2hlZCBjbG9zZWQgYW5kIGNsb3NlZCBzaGFkb3cgdHJlZXMgd2l0aCBhbiBpbm5lciBjbG9z
ZWQgc2hhZG93IHRyZWUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9ldmVudC1pbnNpZGUtc2xvdHRlZC1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNjBlYjcz
OTI2ODc2OTllZWQwYzE3OGVhZDJlMzJlOTE0NjU5MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vZXZlbnQtaW5zaWRlLXNsb3R0ZWQtbm9kZS5odG1sCkBA
IC0wLDAgKzEsMjU5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRp
dGxlPlNoYWRvdyBET006IEZpcmluZyBhbiBldmVudCBpbnNpZGUgYSBub2RlIGFzc2lnbmVkIHRv
IGEgc2xvdDwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBO
aXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+CisgICAgPG1ldGEgbmFtZT0iYXNz
ZXJ0IiBjb250ZW50PSJUaGUgZXZlbnQgcGF0aCBjYWxjdWxhdGlvbiBhbGdvcml0aG0gbXVzdCBi
ZSB1c2VkIHRvIGRldGVybWluZSBldmVudCBwYXRoIj4KKyAgICA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNldmVu
dC1wYXRocyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxk
aXYgaWQ9ImxvZyI+PC9kaXY+CisgICAgPHNjcmlwdD4KKworICAgICAgICBmdW5jdGlvbiBkaXNw
YXRjaEV2ZW50V2l0aExvZyhzaGFkb3csIGV2ZW50KSB7CisgICAgICAgICAgICB2YXIgbG9nID0g
W107CisKKyAgICAgICAgICAgIHZhciBhdHRhY2hlZE5vZGVzID0gW107CisgICAgICAgICAgICBm
b3IgKHZhciBub2RlS2V5IGluIHNoYWRvdykgeworICAgICAgICAgICAgICAgIHZhciBzdGFydGlu
Z05vZGUgPSBzaGFkb3dbbm9kZUtleV07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbm9kZSA9
IHN0YXJ0aW5nTm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoYXR0YWNoZWROb2Rlcy5pbmRleE9mKG5vZGUpID49IDApCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNoZWRO
b2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnQudHlwZSwgKGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nLnB1c2goW3RoaXMsIGV2ZW50LnRhcmdldF0pOworICAgICAgICAgICAgICAgICAgICB9
KS5iaW5kKG5vZGUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHNoYWRvdy50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICAgICAgICAg
IHJldHVybiBsb2c7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBlbGVtZW50KG5hbWUs
IGNoaWxkcmVuLCBjbGFzc05hbWUpIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKyAgICAgICAgICAgIGlmIChjbGFzc05hbWUpCisgICAg
ICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisgICAgICAgICAgICBp
ZiAoY2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBjaGlsZCBvZiBjaGlsZHJl
bikKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGF0dGFjaFNoYWRvdyhob3N0LCBtb2RlLCBjaGlsZHJlbikgeworICAgICAg
ICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogbW9kZX0pOwor
ICAgICAgICAgICAgaWYgKGNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgY2hp
bGQgb2YgY2hpbGRyZW4pCisgICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoY2hpbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3Q7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVTaGFkb3dIb3N0V2l0aEFzc2ln
bmVkR3JhbmRDaGlsZChtb2RlKSB7CisgICAgICAgICAgICB2YXIgaG9zdCA9IGVsZW1lbnQoJ2Rp
dicsIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50KCdiJywgWworICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50KCdpJykKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgXSk7CisKKyAg
ICAgICAgICAgIHZhciByb290ID0gYXR0YWNoU2hhZG93KGhvc3QsIG1vZGUsIFsKKyAgICAgICAg
ICAgICAgICBlbGVtZW50KCdzcGFuJywgWworICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCdz
bG90JykKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAg
IHJldHVybiB7dGFyZ2V0OiBob3N0LnF1ZXJ5U2VsZWN0b3IoJ2knKSwgdGFyZ2V0UGFyZW50OiBo
b3N0LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgaG9zdDogaG9zdCwKKyAgICAgICAgICAgICAgICAgICAg
c2xvdDogcm9vdC5xdWVyeVNlbGVjdG9yKCdzbG90JyksIHNsb3RQYXJlbnQ6IHJvb3QucXVlcnlT
ZWxlY3Rvcignc3BhbicpLCByb290OiByb290fTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RFdmVudEluRGV0YWNoZWRTaGFkb3dIb3N0RGVzY2VuZGFudChtb2RlKSB7CisgICAg
ICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2hhZG93ID0g
Y3JlYXRlU2hhZG93SG9zdFdpdGhBc3NpZ25lZEdyYW5kQ2hpbGQobW9kZSk7CisKKyAgICAgICAg
ICAgICAgICBsb2cgPSBkaXNwYXRjaEV2ZW50V2l0aExvZyhzaGFkb3csIG5ldyBFdmVudCgnZm9v
Jywge2J1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGxv
Zy5sZW5ndGgsIDYsICdFdmVudFBhdGggbXVzdCBjb250YWluIFt0YXJnZXQsIHRhcmdldCBwYXJl
bnQsIHNsb3QsIHNsb3QgcGFyZW50LCBzaGFkb3cgcm9vdCwgc2hhZG93IGhvc3RdJyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBz
aGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0IGJlIHRoZSB0YXJnZXQnKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxXSwgW3NoYWRvdy50YXJnZXRQYXJl
bnQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzFdIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0
aGUgdGFyZ2V0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMl0s
IFtzaGFkb3cuc2xvdCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzJdIG11c3QgYmUgdGhlIHNs
b3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1szXSwgW3NoYWRv
dy5zbG90UGFyZW50LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgcGFy
ZW50IG9mIHRoZSBzbG90Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbNF0sIFtzaGFkb3cucm9vdCwgc2hhZG93LnNsb3RdLCAnRXZlbnRQYXRoWzRdIG11c3QgYmUg
dGhlIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbNV0sIFtzaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbNV0gbXVzdCBi
ZSB0aGUgc2hhZG93IGhvc3QnKTsKKworICAgICAgICAgICAgfSwgJ0ZpcmluZyBhbiBldmVudCBp
bnNpZGUgYSBncmFuZCBjaGlsZCBvZiBhIGRldGFjaGVkICcgKyBtb2RlICsgJyBtb2RlIHNoYWRv
dyBob3N0Jyk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0RXZlbnRJbkRldGFjaGVkU2hhZG93
SG9zdERlc2NlbmRhbnQoJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50SW5EZXRhY2hlZFNoYWRv
d0hvc3REZXNjZW5kYW50KCdjbG9zZWQnKTsKKworICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRJ
blNoYWRvd0hvc3REZXNjZW5kYW50SW5zaWRlRG9jdW1lbnQobW9kZSkgeworICAgICAgICAgICAg
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIHNoYWRvdyA9IGNyZWF0ZVNo
YWRvd0hvc3RXaXRoQXNzaWduZWRHcmFuZENoaWxkKG1vZGUpOworICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2hhZG93Lmhvc3QpOworCisgICAgICAgICAgICAgICAg
bG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2coc2hhZG93LCBuZXcgRXZlbnQoJ2ZvbycsIHtidWJi
bGVzOiB0cnVlfSkpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3Ro
LCA5LCAnRXZlbnRQYXRoIG11c3QgY29udGFpbiBbdGFyZ2V0LCB0YXJnZXQgcGFyZW50LCBzbG90
LCBzbG90IHBhcmVudCwgc2hhZG93IHJvb3QsIHNoYWRvdyBob3N0LCBib2R5LCBodG1sLCBkb2N1
bWVudF0nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1swXSwgW3No
YWRvdy50YXJnZXQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzBdIG11c3QgYmUgdGhlIHRh
cmdldCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzFdLCBbc2hh
ZG93LnRhcmdldFBhcmVudCwgc2hhZG93LnRhcmdldF0sICdFdmVudFBhdGhbMV0gbXVzdCBiZSB0
aGUgcGFyZW50IG9mIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1syXSwgW3NoYWRvdy5zbG90LCBzaGFkb3cuc2xvdF0sICdFdmVudFBhdGhbMl0g
bXVzdCBiZSB0aGUgc2xvdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzNdLCBbc2hhZG93LnNsb3RQYXJlbnQsIHNoYWRvdy5zbG90XSwgJ0V2ZW50UGF0aFszXSBt
dXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5yb290LCBzaGFkb3cuc2xvdF0sICdFdmVudFBh
dGhbNF0gbXVzdCBiZSB0aGUgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGxvZ1s1XSwgW3NoYWRvdy5ob3N0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFs1XSBtdXN0IGJlIHRoZSBzaGFkb3cgaG9zdCcpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzZdLCBbZG9jdW1lbnQuYm9keSwgc2hhZG93LnRhcmdldF0sICdF
dmVudFBhdGhbNl0gbXVzdCBiZSB0aGUgYm9keSBlbGVtZW50Jyk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbN10sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNo
YWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzddIG11c3QgYmUgdGhlIGh0bWwgZWxlbWVudCcpOwor
ICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzhdLCBbZG9jdW1lbnQsIHNo
YWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzhdIG11c3QgYmUgdGhlIGh0bWwgZWxlbWVudCcpOwor
CisgICAgICAgICAgICB9LCAnRmlyaW5nIGFuIGV2ZW50IGluc2lkZSBhIGdyYW5kIGNoaWxkIG9m
IGFuIGluLWRvY3VtZW50ICcgKyBtb2RlICsgJyBtb2RlIHNoYWRvdyBob3N0Jyk7CisgICAgICAg
IH0KKworICAgICAgICB0ZXN0RXZlbnRJblNoYWRvd0hvc3REZXNjZW5kYW50SW5zaWRlRG9jdW1l
bnQoJ29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50SW5TaGFkb3dIb3N0RGVzY2VuZGFudEluc2lk
ZURvY3VtZW50KCdjbG9zZWQnKTsKKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVOZXN0ZWRTaGFk
b3dUcmVlc1dpdGhTbG90cyhpbm5lck1vZGUsIG91dGVyVXBwZXJNb2RlLCBvdXRlckxvd2VyTW9k
ZSkgeworICAgICAgICAgICAgdmFyIHVwcGVySG9zdCA9IGVsZW1lbnQoJ3VwcGVyLWhvc3QnLCBb
CisgICAgICAgICAgICAgICAgZWxlbWVudCgncCcsIFsKKyAgICAgICAgICAgICAgICAgICAgZWxl
bWVudCgnbG93ZXItaG9zdCcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQoJ2En
KQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAg
ICBdKTsKKworICAgICAgICAgICAgdmFyIHVwcGVyU2hhZG93ID0gYXR0YWNoU2hhZG93KHVwcGVy
SG9zdCwgb3V0ZXJVcHBlck1vZGUsIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50KCdiJywgWwor
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCdzbG90JywgW10sICd1cHBlci1zbG90JykKKyAg
ICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIHZhciBsb3dl
ckhvc3QgPSB1cHBlckhvc3QucXVlcnlTZWxlY3RvcignbG93ZXItaG9zdCcpOworICAgICAgICAg
ICAgdmFyIGxvd2VyU2hhZG93ID0gYXR0YWNoU2hhZG93KGxvd2VySG9zdCwgb3V0ZXJMb3dlck1v
ZGUsIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50KCdlbScsIFsKKyAgICAgICAgICAgICAgICAg
ICAgZWxlbWVudCgnaW5uZXItaG9zdCcsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQoJ3NwYW4nLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCgnc2xvdCcs
IFtdLCAnbG93ZXItc2xvdCcpCisgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICBdKTsKKworICAg
ICAgICAgICAgaW5uZXJTaGFkb3cgPSBhdHRhY2hTaGFkb3cobG93ZXJTaGFkb3cucXVlcnlTZWxl
Y3RvcignaW5uZXItaG9zdCcpLCBpbm5lck1vZGUsIFsKKyAgICAgICAgICAgICAgICBlbGVtZW50
KCdpJywgWworICAgICAgICAgICAgICAgICAgICBlbGVtZW50KCdzbG90JywgW10sICdpbm5lci1z
bG90JykKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgaG9zdDogdXBwZXJIb3N0LAorICAgICAgICAgICAg
ICAgIHRhcmdldDogdXBwZXJIb3N0LnF1ZXJ5U2VsZWN0b3IoJ2EnKSwKKyAgICAgICAgICAgICAg
ICB1cHBlclNoYWRvdzogdXBwZXJTaGFkb3csCisgICAgICAgICAgICAgICAgdXBwZXJTbG90OiB1
cHBlclNoYWRvdy5xdWVyeVNlbGVjdG9yKCdzbG90JyksCisgICAgICAgICAgICAgICAgbG93ZXJT
aGFkb3c6IGxvd2VyU2hhZG93LAorICAgICAgICAgICAgICAgIGxvd2VyU2xvdDogbG93ZXJTaGFk
b3cucXVlcnlTZWxlY3Rvcignc2xvdCcpLAorICAgICAgICAgICAgICAgIGlubmVyU2hhZG93OiBp
bm5lclNoYWRvdywKKyAgICAgICAgICAgICAgICBpbm5lclNsb3Q6IGlubmVyU2hhZG93LnF1ZXJ5
U2VsZWN0b3IoJ3Nsb3QnKSwKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICAv
KgorICAgICAgICB1cHBlci1ob3N0ICgxNCkgLS0gKHVwcGVyU2hhZG93OyAxMykKKyAgICAgICAg
ICsgcCAoMTApICAgICAgICAgICsgYiAoMTIpCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICsgc2xvdCAodXBwZXJTbG90OyAxMSkKKyAgICAgICAgICArIGxvd2VyLWhvc3QgKDkpIC0tIChs
b3dlclNoYWRvdzsgOCkKKyAgICAgICAgICAgICsgYSAodGFyZ2V0OyAwKSAgICsgZW0gKDcpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW5uZXItaG9zdCAoNikgLS0tLS0tLS0g
KGlubmVyU2hhZG93OyA1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3Bh
biAoMikgICAgICAgICAgICAgICsgaSAoNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgc2xvdCAobG93ZXJTbG90OyAxKSArIHNsb3QgKGlubmVyU2xvdDsgMykKKyAgICAg
ICAgKi8KKworICAgICAgICBmdW5jdGlvbiB0ZXN0RXZlbnRVbmRlclR3b1NoYWRvd1Jvb3RzKG91
dGVyVXBwZXJNb2RlLCBvdXRlckxvd2VyTW9kZSwgaW5uZXJNb2RlKSB7CisgICAgICAgICAgICB0
ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2hhZG93ID0gY3JlYXRlTmVz
dGVkU2hhZG93VHJlZXNXaXRoU2xvdHMoaW5uZXJNb2RlLCBvdXRlclVwcGVyTW9kZSwgb3V0ZXJM
b3dlck1vZGUpOworCisgICAgICAgICAgICAgICAgbG9nID0gZGlzcGF0Y2hFdmVudFdpdGhMb2co
c2hhZG93LCBuZXcgRXZlbnQoJ2ZvbycsIHtidWJibGVzOiB0cnVlfSkpOworCisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhsb2cubGVuZ3RoLCAxNSwgJ0V2ZW50UGF0aCBtdXN0IGNvbnRh
aW4gMTUgdGFyZ2V0cycpOworCisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhs
b2dbMF0sIFtzaGFkb3cudGFyZ2V0LCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFswXSBtdXN0
IGJlIHRoZSB0YXJnZXQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxv
Z1sxXSwgW3NoYWRvdy5sb3dlclNsb3QsIHNoYWRvdy5sb3dlclNsb3RdLCAnRXZlbnRQYXRoWzFd
IG11c3QgYmUgdGhlIHNsb3QgaW5zaWRlIHRoZSBsb3dlciBzaGFkb3cgdHJlZScpOworICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzJdLCBbc2hhZG93Lmxvd2VyU2xvdC5w
YXJlbnROb2RlLCBzaGFkb3cubG93ZXJTbG90XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRoZSBw
YXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSBsb3dlciBzaGFkb3cgdHJlZScpOworICAgICAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93LmlubmVyU2xvdCwg
c2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBhdGhbM10gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUg
dGhlIHNoYWRvdyB0cmVlIGluc2lkZSB0aGUgbG93ZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1s0XSwgW3NoYWRvdy5pbm5lclNsb3QucGFy
ZW50Tm9kZSwgc2hhZG93LmlubmVyU2xvdF0sICdFdmVudFBhdGhbNF0gbXVzdCBiZSB0aGUgY2hp
bGQgb2YgdGhlIGlubmVyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dbNV0sIFtzaGFkb3cuaW5uZXJTaGFkb3csIHNoYWRvdy5pbm5lclNsb3Rd
LCAnRXZlbnRQYXRoWzVdIG11c3QgYmUgdGhlIGlubmVyIHNoYWRvdyByb290Jyk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbNl0sIFtzaGFkb3cuaW5uZXJTaGFkb3cu
aG9zdCwgc2hhZG93Lmxvd2VyU2xvdF0sICdFdmVudFBhdGhbNl0gbXVzdCBiZSB0aGUgaG9zdCBv
ZiB0aGUgaW5uZXIgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKGxvZ1s3XSwgW3NoYWRvdy5sb3dlclNoYWRvdy5maXJzdENoaWxkLCBzaGFkb3cubG93
ZXJTbG90XSwgJ0V2ZW50UGF0aFs3XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIGlubmVyIHNo
YWRvdyBob3N0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbOF0s
IFtzaGFkb3cubG93ZXJTaGFkb3csIHNoYWRvdy5sb3dlclNsb3RdLCAnRXZlbnRQYXRoWzhdIG11
c3QgYmUgdGhlIGxvd2VyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhsb2dbOV0sIFtzaGFkb3cubG93ZXJTaGFkb3cuaG9zdCwgc2hhZG93LnRhcmdl
dF0sICdFdmVudFBhdGhbOV0gbXVzdCBiZSB0aGUgbG93ZXIgc2hhZG93IGhvc3QnKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sxMF0sIFtzaGFkb3cuaG9zdC5maXJz
dENoaWxkLCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsxMF0gbXVzdCBiZSB0aGUgcGFyZW50
IG9mIHRoZSBncmFuZCBwYXJlbnQgb2YgdGhlIHRhcmdldCcpOworICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobG9nWzExXSwgW3NoYWRvdy51cHBlclNsb3QsIHNoYWRvdy51cHBl
clNsb3RdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJlIHRoZSBzbG90IGluc2lkZSB0aGUgdXBwZXIg
c2hhZG93IHRyZWUnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGxvZ1sx
Ml0sIFtzaGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy51cHBlclNsb3RdLCAnRXZl
bnRQYXRoWzEyXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHNsb3QgaW5zaWRlIHRoZSB1cHBl
ciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9n
WzEzXSwgW3NoYWRvdy51cHBlclNoYWRvdywgc2hhZG93LnVwcGVyU2xvdF0sICdFdmVudFBhdGhb
MTNdIG11c3QgYmUgdGhlIHVwcGVyIHNoYWRvdyByb290Jyk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhsb2dbMTRdLCBbc2hhZG93Lmhvc3QsIHNoYWRvdy50YXJnZXRdLCAn
RXZlbnRQYXRoWzE0XSBtdXN0IGJlIHRoZSBob3N0Jyk7CisKKyAgICAgICAgICAgIH0sICdGaXJp
bmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3aXRoIGEgZGV0YWNoZWQg
JyArIG91dGVyVXBwZXJNb2RlICsgJyBhbmQgJyArIG91dGVyTG93ZXJNb2RlCisgICAgICAgICAg
ICAgICAgKyAnIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyICcgKyBpbm5lck1vZGUgKyAnIHNo
YWRvdyB0cmVlJyk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0RXZlbnRVbmRlclR3b1NoYWRv
d1Jvb3RzKCdvcGVuJywgJ29wZW4nLCAnb3BlbicpOworICAgICAgICB0ZXN0RXZlbnRVbmRlclR3
b1NoYWRvd1Jvb3RzKCdvcGVuJywgJ29wZW4nLCAnY2xvc2VkJyk7CisgICAgICAgIHRlc3RFdmVu
dFVuZGVyVHdvU2hhZG93Um9vdHMoJ29wZW4nLCAnY2xvc2VkJywgJ29wZW4nKTsKKyAgICAgICAg
dGVzdEV2ZW50VW5kZXJUd29TaGFkb3dSb290cygnb3BlbicsICdjbG9zZWQnLCAnY2xvc2VkJyk7
CisgICAgICAgIHRlc3RFdmVudFVuZGVyVHdvU2hhZG93Um9vdHMoJ2Nsb3NlZCcsICdvcGVuJywg
J29wZW4nKTsKKyAgICAgICAgdGVzdEV2ZW50VW5kZXJUd29TaGFkb3dSb290cygnY2xvc2VkJywg
J29wZW4nLCAnY2xvc2VkJyk7CisgICAgICAgIHRlc3RFdmVudFVuZGVyVHdvU2hhZG93Um9vdHMo
J2Nsb3NlZCcsICdjbG9zZWQnLCAnb3BlbicpOworICAgICAgICB0ZXN0RXZlbnRVbmRlclR3b1No
YWRvd1Jvb3RzKCdjbG9zZWQnLCAnY2xvc2VkJywgJ2Nsb3NlZCcpOworCisgICAgICAgIC8qCisg
ICAgICAgIHVwcGVyLWhvc3QgKDExKSAtLSAodXBwZXJTaGFkb3c7IDEwKQorICAgICAgICAgKyBw
ICg3KSAgICAgICAgICAgKyBiICg5KQorICAgICAgICAgIHwgICAgICAgICAgICAgICAgICArIHNs
b3QgKHVwcGVyU2xvdDsgOCkKKyAgICAgICAgICArIGxvd2VyLWhvc3QgKDYpIC0tIChsb3dlclNo
YWRvdzsgNSkKKyAgICAgICAgICAgICsgYSAgICAgICAgICAgICAgICsgZW0gKDQpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICsgaW5uZXItaG9zdCAoMykgLS0gKGlubmVyU2hhZG93
OyAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3BhbiAgICAgICAgICAg
ICsgaSAoMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2xvdCAgICAg
ICAgICAgICsgc2xvdCAoaW5uZXJTbG90OyAwKQorICAgICAgICAqLworCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RFdmVudEluc2lkZU5lc3RlZFNoYWRvd3NVbmRlckFub3RoZXJTaGFkb3cob3V0ZXJV
cHBlck1vZGUsIG91dGVyTG93ZXJNb2RlLCBpbm5lck1vZGUpIHsKKyAgICAgICAgICAgIHRlc3Qo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBzaGFkb3cgPSBjcmVhdGVOZXN0ZWRT
aGFkb3dUcmVlc1dpdGhTbG90cyhpbm5lck1vZGUsIG91dGVyVXBwZXJNb2RlLCBvdXRlckxvd2Vy
TW9kZSk7CisgICAgICAgICAgICAgICAgc2hhZG93LmRlZXBlc3ROb2RlSW5MaWdodERPTSA9IHNo
YWRvdy50YXJnZXQ7IC8vIE5lZWRlZCBmb3IgZGlzcGF0Y2hFdmVudFdpdGhMb2cgdG8gYXR0YWNo
IGV2ZW50IGxpc3RlbmVycy4gCisgICAgICAgICAgICAgICAgc2hhZG93LnRhcmdldCA9IHNoYWRv
dy5pbm5lclNsb3Q7CisKKyAgICAgICAgICAgICAgICBsb2cgPSBkaXNwYXRjaEV2ZW50V2l0aExv
ZyhzaGFkb3csIG5ldyBFdmVudCgnZm9vJywge2J1YmJsZXM6IHRydWV9KSk7CisKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGxvZy5sZW5ndGgsIDEyLCAnRXZlbnRQYXRoIG11c3QgY29u
dGFpbiAxMiB0YXJnZXRzJyk7CisKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGxvZ1swXSwgW3NoYWRvdy50YXJnZXQsIHNoYWRvdy50YXJnZXRdLCAnRXZlbnRQYXRoWzBdIG11
c3QgYmUgdGhlIHRhcmdldCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bG9nWzFdLCBbc2hhZG93LnRhcmdldC5wYXJlbnROb2RlLCBzaGFkb3cudGFyZ2V0XSwgJ0V2ZW50
UGF0aFsxXSBtdXN0IGJlIHRoZSBwYXJlbnQgb2YgdGhlIHRhcmdldCcpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzJdLCBbc2hhZG93LmlubmVyU2hhZG93LCBzaGFk
b3cudGFyZ2V0XSwgJ0V2ZW50UGF0aFsyXSBtdXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgcm9vdCcp
OworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzNdLCBbc2hhZG93Lmlu
bmVyU2hhZG93Lmhvc3QsIHNoYWRvdy5pbm5lclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFszXSBt
dXN0IGJlIHRoZSBpbm5lciBzaGFkb3cgaG9zdCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMobG9nWzRdLCBbc2hhZG93Lmxvd2VyU2hhZG93LmZpcnN0Q2hpbGQsIHNoYWRv
dy5pbm5lclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs0XSBtdXN0IGJlIHRoZSBwYXJlbnQgb2Yg
dGhlIGlubmVyIHNoYWRvdyBob3N0Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhsb2dbNV0sIFtzaGFkb3cubG93ZXJTaGFkb3csIHNoYWRvdy5pbm5lclNoYWRvdy5ob3N0
XSwgJ0V2ZW50UGF0aFs1XSBtdXN0IGJlIHRoZSBsb3dlciAoYnV0IG91dGVyKSBzaGFkb3cgcm9v
dCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzZdLCBbc2hhZG93
Lmxvd2VyU2hhZG93Lmhvc3QsIHNoYWRvdy5sb3dlclNoYWRvdy5ob3N0XSwgJ0V2ZW50UGF0aFs2
XSBtdXN0IGJlIHRoZSBsb3dlciAoYnV0IG91dGVyKSBzaGFkb3cgcm9vdCcpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobG9nWzddLCBbc2hhZG93Lmhvc3QuZmlyc3RDaGls
ZCwgc2hhZG93Lmxvd2VyU2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzddIG11c3QgYmUgdGhlIHNs
b3QgaW5zaWRlIHRoZSB1cHBlciBzaGFkb3cgdHJlZScpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMobG9nWzhdLCBbc2hhZG93LnVwcGVyU2xvdCwgc2hhZG93LnVwcGVyU2xv
dF0sICdFdmVudFBhdGhbOF0gbXVzdCBiZSB0aGUgc2xvdCBpbnNpZGUgdGhlIHVwcGVyIHNoYWRv
dyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbOV0sIFtz
aGFkb3cudXBwZXJTbG90LnBhcmVudE5vZGUsIHNoYWRvdy51cHBlclNsb3RdLCAnRXZlbnRQYXRo
WzldIG11c3QgYmUgdGhlIHBhcmVudCBvZiB0aGUgc2xvdCBpbnNpZGUgdGhlIHVwcGVyIHNoYWRv
dyB0cmVlJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhsb2dbMTBdLCBb
c2hhZG93LnVwcGVyU2hhZG93LCBzaGFkb3cudXBwZXJTbG90XSwgJ0V2ZW50UGF0aFsxMF0gbXVz
dCBiZSB0aGUgdXBwZXIgc2hhZG93IHJvb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGxvZ1sxMV0sIFtzaGFkb3cudXBwZXJTaGFkb3cuaG9zdCwgc2hhZG93Lmxvd2Vy
U2hhZG93Lmhvc3RdLCAnRXZlbnRQYXRoWzExXSBtdXN0IGJlIHRoZSBob3N0Jyk7CisKKyAgICAg
ICAgICAgIH0sICdGaXJpbmcgYW4gZXZlbnQgb24gYSBub2RlIHdpdGggdHdvIGFuY2VzdG9ycyB3
aXRoIGEgZGV0YWNoZWQgJyArIG91dGVyVXBwZXJNb2RlICsgJyBhbmQgJyArIG91dGVyTG93ZXJN
b2RlCisgICAgICAgICAgICAgICAgKyAnIHNoYWRvdyB0cmVlcyB3aXRoIGFuIGlubmVyICcgKyBp
bm5lck1vZGUgKyAnIHNoYWRvdyB0cmVlJyk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0RXZl
bnRJbnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVyU2hhZG93KCdvcGVuJywgJ29wZW4nLCAn
b3BlbicpOworICAgICAgICB0ZXN0RXZlbnRJbnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVy
U2hhZG93KCdvcGVuJywgJ29wZW4nLCAnY2xvc2VkJyk7CisgICAgICAgIHRlc3RFdmVudEluc2lk
ZU5lc3RlZFNoYWRvd3NVbmRlckFub3RoZXJTaGFkb3coJ29wZW4nLCAnY2xvc2VkJywgJ29wZW4n
KTsKKyAgICAgICAgdGVzdEV2ZW50SW5zaWRlTmVzdGVkU2hhZG93c1VuZGVyQW5vdGhlclNoYWRv
dygnb3BlbicsICdjbG9zZWQnLCAnY2xvc2VkJyk7CisgICAgICAgIHRlc3RFdmVudEluc2lkZU5l
c3RlZFNoYWRvd3NVbmRlckFub3RoZXJTaGFkb3coJ2Nsb3NlZCcsICdvcGVuJywgJ29wZW4nKTsK
KyAgICAgICAgdGVzdEV2ZW50SW5zaWRlTmVzdGVkU2hhZG93c1VuZGVyQW5vdGhlclNoYWRvdygn
Y2xvc2VkJywgJ29wZW4nLCAnY2xvc2VkJyk7CisgICAgICAgIHRlc3RFdmVudEluc2lkZU5lc3Rl
ZFNoYWRvd3NVbmRlckFub3RoZXJTaGFkb3coJ2Nsb3NlZCcsICdjbG9zZWQnLCAnb3BlbicpOwor
ICAgICAgICB0ZXN0RXZlbnRJbnNpZGVOZXN0ZWRTaGFkb3dzVW5kZXJBbm90aGVyU2hhZG93KCdj
bG9zZWQnLCAnY2xvc2VkJywgJ2Nsb3NlZCcpOworCisgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>