<?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>159409</bug_id>
          
          <creation_ts>2016-07-04 09:58:35 -0700</creation_ts>
          <short_desc>[JSC] Object.getOwnPropertyDescriptors should not add undefined props to result</short_desc>
          <delta_ts>2016-07-26 16:37:03 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>ljharb</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207696</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-04 09:58:35 -0700</bug_when>
    <thetext>[JSC] Object.getOwnPropertyDescriptors should not add undefined props to result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207697</commentid>
    <comment_count>1</comment_count>
      <attachid>282727</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-04 09:59:07 -0700</bug_when>
    <thetext>Created attachment 282727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207700</commentid>
    <comment_count>2</comment_count>
      <attachid>282729</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-04 10:34:04 -0700</bug_when>
    <thetext>Created attachment 282729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207701</commentid>
    <comment_count>3</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-04 10:37:16 -0700</bug_when>
    <thetext>Hi,

We&apos;re landing this change in V8 today, believing it (https://github.com/tc39/ecma262/pull/593) is likely to reach consensus at the next TC39 meeting.

It probably wouldn&apos;t hurt to land this in WebKit as well, but it&apos;s fine to wait until the spec change is decided on.

In any case, if consensus isn&apos;t reached, it&apos;s simple enough to simply revert the patch.

This patch also fixes up these tests and moves them to a more appropriate directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208295</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-06 11:27:23 -0700</bug_when>
    <thetext>Let&apos;s wait until the spec change is decided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214675</commentid>
    <comment_count>5</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2016-07-26 14:48:00 -0700</bug_when>
    <thetext>This received consensus at the July 2016 TC39 meeting; please merge at your leisure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214678</commentid>
    <comment_count>6</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-26 14:52:36 -0700</bug_when>
    <thetext>Thanks Jordan, I&apos;ll make sure this isn&apos;t bitrotten today before signing off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214682</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-26 14:54:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Thanks Jordan, I&apos;ll make sure this isn&apos;t bitrotten today before signing off.

Sounds good. I&apos;ll review when you say this patch is OK or if you post a rebased version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214718</commentid>
    <comment_count>8</comment_count>
      <attachid>284648</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-26 15:47:01 -0700</bug_when>
    <thetext>Created attachment 284648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214720</commentid>
    <comment_count>9</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-07-26 15:48:05 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Thanks Jordan, I&apos;ll make sure this isn&apos;t bitrotten today before signing off.
&gt; 
&gt; Sounds good. I&apos;ll review when you say this patch is OK or if you post a
&gt; rebased version.

I&apos;ve posted a rebased version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214724</commentid>
    <comment_count>10</comment_count>
      <attachid>284648</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-26 15:55:38 -0700</bug_when>
    <thetext>Comment on attachment 284648
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214731</commentid>
    <comment_count>11</comment_count>
      <attachid>284648</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 16:07:45 -0700</bug_when>
    <thetext>Comment on attachment 284648
Patch

Clearing flags on attachment: 284648

Committed r203747: &lt;http://trac.webkit.org/changeset/203747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214732</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 16:07:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214749</commentid>
    <comment_count>13</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2016-07-26 16:37:03 -0700</bug_when>
    <thetext>Thanks everybody!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282727</attachid>
            <date>2016-07-04 09:59:07 -0700</date>
            <delta_ts>2016-07-04 10:25:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159409-20160704125839.patch</filename>
            <type>text/plain</type>
            <size>4086</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2VmNGQ0ZDUwOWYyY2VhMmY2YzIzNzQ1NTQ3YTI2MjU5YjQzOWRhLi41NTE2MzM3NThlOGY1ZTA0
ZTAzZDYyYjk3YjZmNzU1NTVjNTI1NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNi0wNy0wNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHNob3Vs
ZCBub3QgYWRkIHVuZGVmaW5lZCBwcm9wcyB0byByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyk6CisgICAgICAgICogdGVzdHMvZXM2L09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qczoKKwogMjAxNi0wNy0wMyAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRExMcyBhcmUg
bWlzc2luZyB2ZXJzaW9uIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDNjMjkzZmJiNjY0ZjU2NjA0
OGZiODhjYzM1ZGY2NzJlYjlhMDNkNDEuLjJiNzkxYTliMWRkOWUzN2U1YjdmNjFiMDY1YjhhNWFj
MThmODlmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTI2MywxMCArMjYzLDE4IEBAIEpTVmFsdWUgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9iCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgZm9yIChhdXRvJiBw
cm9wZXJ0eU5hbWUgOiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIEpTVmFsdWUgZnJvbURlc2NyaXB0
b3IgPSBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBvYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9y
OworICAgICAgICBib29sIGRpZEdldERlc2NyaXB0b3IgPSBvYmplY3QtPmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAorICAgICAgICBpZiAoIWRpZEdldERlc2NyaXB0b3IpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBKU09iamVjdCogZnJvbURlc2NyaXB0b3IgPSBjb25zdHJ1Y3RPYmplY3RGcm9t
UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGRlc2NyaXB0b3IpOworICAgICAgICBpZiAoIWZyb21E
ZXNjcmlwdG9yKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKICAgICAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoZGVzY3JpcHRvcnMpOwogICAgICAgICBkZXNjcmlwdG9ycy0+
cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIGZyb21EZXNj
cmlwdG9yLCBzbG90KTsKICAgICAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L09iamVjdF9zdGF0aWNf
bWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzCmluZGV4IDk1MmMyMGZjYTY3NmFmNmY0
NzZmNGY0MjkzOTk3MjkzZDBiMTUxNTMuLjNkZGY4MTMxZWQyOTUxMTQ4MWFjYjBjOTk2ZTk2YzVl
MmZmZmVlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvT2Jq
ZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19t
ZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzCkBAIC05MSw3
ICs5MSwzMiBAQCBmdW5jdGlvbiBzaG91bGRCZURhdGFQcm9wZXJ0eShleHBlY3RlZCwgdmFsdWUs
IG5hbWUpIHsKICAgfSk7CiAKICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JzKFApOwotICBzaG91bGRCZSh2b2lkIDAsIHJlc3VsdC5BKTsKKyAgc2hvdWxkQmUo
dHJ1ZSwgcmVzdWx0LkEuY29uZmlndXJhYmxlLCAnZm9yIHJlc3VsdC5BLmNvbmZpZ3VyYWJsZScp
OworICBzaG91bGRCZShmYWxzZSwgcmVzdWx0LkEud3JpdGFibGUsICdmb3IgcmVzdWx0LkEud3Jp
dGFibGUnKTsKKyAgc2hvdWxkQmUoJ1ZBTFVFJywgcmVzdWx0LkEudmFsdWUsICdmb3IgcmVzdWx0
LkEudmFsdWUnKTsKKyAgc2hvdWxkQmUoZmFsc2UsIHJlc3VsdC5BLmVudW1lcmFibGUsICdmb3Ig
cmVzdWx0LkEuZW51bWVyYWJsZScpOwogICBzaG91bGRCZSh0cnVlLCBPYmplY3QuaGFzT3duUHJv
cGVydHkuY2FsbChyZXN1bHQsICdBJykpOwogICBzaG91bGRCZSgnb3duS2V5cygpfGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihBKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQSknLCBsb2cuam9p
bignfCcpKTsKIH0pKCk7CisKKyhmdW5jdGlvbiB0ZXN0VW5kZWZpbmVkUHJvcGVydHlEZXNjcmlw
dG9yKCkgeworICAgIHZhciBQID0gbmV3IFByb3h5KHt9LCB7CisgICAgICAgIG93bktleXMoKSB7
CisgICAgICAgICAgICBsb2cucHVzaChgb3duS2V5cygpYCk7CisgICAgICAgICAgICByZXR1cm4g
WydmYWtlUHJvcGVydHknXTsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHQsIG5hbWUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKGBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoJHtuYW1lfSlgKTsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
ICAgIH0sCisgICAgICAgIGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0dldF1dIHRyYXAgc2hv
dWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCisgICAgICAgIHNldCgpIHsgdGhyb3cgbmV3IEVycm9y
KCdbW1NldF1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCisgICAgICAgIGRlbGV0
ZVByb3BlcnR5KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tbRGVsZXRlXV0gdHJhcCBzaG91bGQgYmUg
dW5yZWFjaGFibGUnKTsgfSwKKyAgICAgICAgZGVmaW5lUHJvcGVydHkoKSB7IHRocm93IG5ldyBF
cnJvcignW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7
IH0KKyAgICB9KTsKKworICAgIHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ycyhQKTsKKyAgICBzaG91bGRCZShmYWxzZSwgcmVzdWx0Lmhhc093blByb3BlcnR5KCdm
YWtlUHJvcGVydHknKSk7CisgICAgc2hvdWxkQmUoZmFsc2UsICdmYWtlUHJvcGVydHknIGluIHJl
c3VsdCk7CisgICAgc2hvdWxkQmUoJ293bktleXMoKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZmFrZVByb3BlcnR5KScsIGxvZy5qb2luKCd8JykpOworfSkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282729</attachid>
            <date>2016-07-04 10:34:04 -0700</date>
            <delta_ts>2016-07-26 15:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159409-20160704133336.patch</filename>
            <type>text/plain</type>
            <size>23614</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2VmNGQ0ZDUwOWYyY2VhMmY2YzIzNzQ1NTQ3YTI2MjU5YjQzOWRhLi4yNTI4Mjk5M2Q2ZWYzNTNi
Njc5Y2MyNzNkYTljM2JjMWQzNzI3YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wNy0wNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHNob3Vs
ZCBub3QgYWRkIHVuZGVmaW5lZCBwcm9wcyB0byByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyk6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L09i
amVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94
eS5qczoKKyAgICAgICAgKHRlc3RQcm9wZXJ0aWVzSW5kZXhlZFNldHRlck9uUHJvdG90eXBlVGhy
b3dzLnNldCBnZXQgdmFyKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RQcm9wZXJ0aWVzSW5kZXhl
ZFNldHRlck9uUHJvdG90eXBlVGhyb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Jz
LXByb3h5LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9P
YmplY3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMtcHJv
eHkuanMuCisgICAgICAgICogdGVzdHMvc3RyZXNzL09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzLmpzLgorCiAyMDE2LTA3LTAzICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBETExzIGFyZSBtaXNzaW5nIHZlcnNp
b24gaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggM2MyOTNmYmI2NjRmNTY2MDQ4ZmI4OGNjMzVkZjY3
MmViOWEwM2Q0MS4uMmI3OTFhOWIxZGQ5ZTM3ZTViN2Y2MWIwNjViOGE1YWMxOGY4OWZjMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcApAQCAtMjYzLDEwICsyNjMsMTggQEAgSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5RGVzY3JpcHRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2IKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6
IHByb3BlcnRpZXMpIHsKLSAgICAgICAgSlNWYWx1ZSBmcm9tRGVzY3JpcHRvciA9IG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgICAgIGJv
b2wgZGlkR2V0RGVzY3JpcHRvciA9IG9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCisgICAgICAgIGlm
ICghZGlkR2V0RGVzY3JpcHRvcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEpT
T2JqZWN0KiBmcm9tRGVzY3JpcHRvciA9IGNvbnN0cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2Ny
aXB0b3IoZXhlYywgZGVzY3JpcHRvcik7CisgICAgICAgIGlmICghZnJvbURlc2NyaXB0b3IpCisg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwogICAgICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChkZXNjcmlwdG9ycyk7CiAgICAgICAgIGRlc2NyaXB0b3JzLT5wdXRPd25EYXRhUHJv
cGVydHlNYXlCZUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgZnJvbURlc2NyaXB0b3IsIHNsb3Qp
OwogICAgICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYueWFtbAppbmRleCBhNGM4NmE3MWU2MjI3MTkzMWExMzhkZmJhZWNmZmIzZTJi
NDM5MDA3Li5jZmQ3MTAwMzBjYTM3MmM5YzczZTNhYWJmMTA3Yjc1ZGM0MmJiNjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC0xMjMyLDkgKzEyMzIsMyBAQAogICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1h
dGNoX1N0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAot
IyBMYXRlLXN0YWdlIHByb3Bvc2FscyBmb3IgYSBmdXR1cmUgRUNNQVNjcmlwdCBzdGFuZGFyZAot
IyBGSVhNRTogbW92ZSB0aGVzZSB0byBhIG5ldyBkaXJlY3Rvcnk/Ci0tIHBhdGg6IGVzNi9PYmpl
Y3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMKLSAg
Y21kOiBydW5FUzYgOm5vcm1hbAotLSBwYXRoOiBlczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L09iamVjdF9z
dGF0aWNfbWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NTJjMjBmY2E2NzZhZjZmNDc2ZjRmNDI5Mzk5NzI5M2QwYjE1MTUzLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBA
QAotZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7Ci0gICAgaWYgKG1z
ZyA9PT0gdm9pZCAwKQotICAgICAgICBtc2cgPSAnJzsKLSAgICBlbHNlCi0gICAgICAgIG1zZyA9
ICcgZm9yICcgKyBtc2c7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlJyArIG1zZyArICc6ICcgKyBhY3R1YWwgKyAnLiBFeHBl
Y3RlZCAnICsgZXhwZWN0ZWQpOwotfQotCi1mdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
clR5cGUpIHsKLSAgICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0gICAgICAgIHRocm93IG5ldyBF
cnJvcignRXhwZWN0ZWQgJyArIGZ1bmMgKyAnKCkgdG8gdGhyb3cgJyArIGVycm9yVHlwZS5uYW1l
ICsgJywgYnV0IGRpZCBub3QgdGhyb3cuJyk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBp
ZiAoZSBpbnN0YW5jZW9mIGVycm9yVHlwZSkgcmV0dXJuOwotICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ0V4cGVjdGVkICcgKyBmdW5jICsgJygpIHRvIHRocm93ICcgKyBlcnJvclR5cGUubmFtZSAr
ICcsIGJ1dCB0aHJldyAnICsgZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBzaG91bGRCZURhdGFQ
cm9wZXJ0eShleHBlY3RlZCwgdmFsdWUsIG5hbWUpIHsKLSAgICBpZiAobmFtZSA9PT0gdm9pZCAw
KQotICAgICAgICBuYW1lID0gJzxwcm9wZXJ0eSBkZXNjcmlwdG9yPic7Ci0gICAgc2hvdWxkQmUo
dmFsdWUsIGV4cGVjdGVkLnZhbHVlLCBuYW1lICsgJy52YWx1ZScpOwotICAgIHNob3VsZEJlKHRy
dWUsIGV4cGVjdGVkLmVudW1lcmFibGUsIG5hbWUgKyAnLmVudW1lcmFibGUnKTsKLSAgICBzaG91
bGRCZSh0cnVlLCBleHBlY3RlZC5jb25maWd1cmFibGUsIG5hbWUgKyAnLmNvbmZpZ3VyYWJsZScp
OwotICAgIHNob3VsZEJlKHRydWUsIGV4cGVjdGVkLndyaXRhYmxlLCBuYW1lICsgJy53cml0YWJs
ZScpOwotICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgZXhwZWN0ZWQuZ2V0LCBuYW1lICsgJy5nZXQn
KTsKLSAgICBzaG91bGRCZSh1bmRlZmluZWQsIGV4cGVjdGVkLnNldCwgbmFtZSArICcuc2V0Jyk7
Ci19Ci0KLShmdW5jdGlvbiB0ZXN0UHJvcGVydHlGaWx0ZXJpbmdBbmRPcmRlcigpIHsKLSAgICB2
YXIgbG9nID0gW107Ci0gICAgdmFyIHN5bSA9IFN5bWJvbCgndGVzdCcpOwotICAgIHZhciBPID0g
ewotICAgICAgICAwOiAwLAotICAgICAgICBbc3ltXTogMywKLSAgICAgICAgJ2EnOiAyLAotICAg
ICAgICAxOiAxCi0gICAgfTsKLQotICAgIHZhciBQID0gbmV3IFByb3h5KE8sIHsKLSAgICAgICAg
b3duS2V5cyh0YXJnZXQpIHsKLSAgICAgICAgICAgIGxvZy5wdXNoKCdvd25LZXlzKCknKTsKLSAg
ICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTsKLSAgICAgICAgfSwKLSAg
ICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgbmFtZSkgewotICAgICAgICAg
ICAgbG9nLnB1c2goYGdldE93blByb3BlcnR5RGVzY3JpcHRvcigke1N0cmluZyhuYW1lKX0pYCk7
Ci0gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFy
Z2V0LCBuYW1lKTsKLSAgICAgICAgfSwKLSAgICAgICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3Io
J1tbR2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKLSAgICAgICAgc2V0KCkg
eyB0aHJvdyBuZXcgRXJyb3IoJ1tbU2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsg
fSwKLSAgICAgICAgZGVsZXRlUHJvcGVydHkoKSB7IHRocm93IG5ldyBFcnJvcignW1tEZWxldGVd
XSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScpOyB9LAotICAgICAgICBkZWZpbmVQcm9wZXJ0
eSgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0RlZmluZU93blByb3BlcnR5XV0gdHJhcCBzaG91bGQg
YmUgdW5yZWFjaGFibGUnKTsgfQotICAgIH0pOwotCi0gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKFApOwotICAgIHNob3VsZEJlKCdvd25LZXlzKCl8Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKDApfGdldE93blByb3BlcnR5RGVzY3JpcHRvcigxKXxnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoYSl8Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN5bWJvbChm
b28pKScsIGxvZy5qb2luKCd8JykpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFsw
XSwgMCwgJ3Jlc3VsdFswXScpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFsxXSwg
MSwgJ3Jlc3VsdFsxXScpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdC5hLCAxLCAn
cmVzdWx0WyJhIl0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbc3ltXSwgMSwg
J3Jlc3VsdFtTeW1ib2woZm9vKV0nKTsKLQotICAgIHZhciByZXN1bHQyID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcnMoTyk7Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0
MlswXSwgMCwgJ3Jlc3VsdDJbMF0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQy
WzFdLCAxLCAncmVzdWx0MlsxXScpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdDIu
YSwgMSwgJ3Jlc3VsdDJbImEiXScpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdDJb
c3ltXSwgMSwgJ3Jlc3VsdDJbU3ltYm9sKGZvbyldJyk7Ci19KSgpOwotCi0oZnVuY3Rpb24gdGVz
dER1cGxpY2F0ZVByb3BlcnR5TmFtZXMoKSB7Ci0gICAgdmFyIGkgPSAwOwotICAgIHZhciBsb2cg
PSBbXTsKLSAgICB2YXIgUCA9IG5ldyBQcm94eSh7fSwgewotICAgIG93bktleXMoKSB7Ci0gICAg
ICAgIGxvZy5wdXNoKGBvd25LZXlzKClgKTsKLSAgICAgICAgcmV0dXJuIFsgJ0EnLCAnQScgXTsK
LSAgICB9LAotICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCBuYW1lKSB7Ci0gICAgICAg
IGxvZy5wdXNoKGBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoJHtuYW1lfSlgKTsKLSAgICAgICAg
aWYgKGkrKykgcmV0dXJuOwotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgY29uZmlndXJh
YmxlOiB0cnVlLAotICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgdmFs
dWU6ICdWQUxVRScKLSAgICAgICAgfTsKLSAgICB9LAotICAgIGdldCgpIHsgdGhyb3cgbmV3IEVy
cm9yKCdbW0dldF1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCi0gICAgc2V0KCkg
eyB0aHJvdyBuZXcgRXJyb3IoJ1tbU2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsg
fSwKLSAgICBkZWxldGVQcm9wZXJ0eSgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0RlbGV0ZV1dIHRy
YXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCi0gICAgZGVmaW5lUHJvcGVydHkoKSB7IHRo
cm93IG5ldyBFcnJvcignW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIHRyYXAgc2hvdWxkIGJlIHVucmVh
Y2hhYmxlJyk7IH0KLSAgfSk7Ci0KLSAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzKFApOwotICBzaG91bGRCZSh2b2lkIDAsIHJlc3VsdC5BKTsKLSAgc2hvdWxk
QmUodHJ1ZSwgT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCAnQScpKTsKLSAgc2hv
dWxkQmUoJ293bktleXMoKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQSl8Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEEpJywgbG9nLmpvaW4oJ3wnKSk7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9PYmplY3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVmNzQ2Yzk1ZmM0OTk0OWVi
Zjc0NDI4MWNjOTM5ODBiYTI3YTMxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L09iamVjdF9zdGF0
aWNfbWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE0OCArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFs
LCBtc2cpIHsKLSAgICBpZiAobXNnID09PSB2b2lkIDApCi0gICAgICAgIG1zZyA9ICcnOwotICAg
IGVsc2UKLSAgICAgICAgbXNnID0gJyBmb3IgJyArIG1zZzsKLSAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWUnICsgbXNnICsgJzog
JyArIGFjdHVhbCArICcuIEV4cGVjdGVkICcgKyBleHBlY3RlZCk7Ci19Ci0KLWZ1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewotICAgIHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsK
LSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAnICsgZnVuYyArICcoKSB0byB0aHJv
dyAnICsgZXJyb3JUeXBlLm5hbWUgKyAnLCBidXQgZGlkIG5vdCB0aHJvdy4nKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgZXJyb3JUeXBlKSByZXR1cm47Ci0g
ICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgJyArIGZ1bmMgKyAnKCkgdG8gdGhyb3cg
JyArIGVycm9yVHlwZS5uYW1lICsgJywgYnV0IHRocmV3ICcgKyBlKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHNob3VsZEJlRGF0YVByb3BlcnR5KGV4cGVjdGVkLCB2YWx1ZSwgbmFtZSkgewotICAg
IGlmIChuYW1lID09PSB2b2lkIDApCi0gICAgICAgIG5hbWUgPSAnPHByb3BlcnR5IGRlc2NyaXB0
b3I+JzsKLSAgICBzaG91bGRCZSh2YWx1ZSwgZXhwZWN0ZWQudmFsdWUsIG5hbWUgKyAnLnZhbHVl
Jyk7Ci0gICAgc2hvdWxkQmUodHJ1ZSwgZXhwZWN0ZWQuZW51bWVyYWJsZSwgbmFtZSArICcuZW51
bWVyYWJsZScpOwotICAgIHNob3VsZEJlKHRydWUsIGV4cGVjdGVkLmNvbmZpZ3VyYWJsZSwgbmFt
ZSArICcuY29uZmlndXJhYmxlJyk7Ci0gICAgc2hvdWxkQmUodHJ1ZSwgZXhwZWN0ZWQud3JpdGFi
bGUsIG5hbWUgKyAnLndyaXRhYmxlJyk7Ci0gICAgc2hvdWxkQmUodW5kZWZpbmVkLCBleHBlY3Rl
ZC5nZXQsIG5hbWUgKyAnLmdldCcpOwotICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgZXhwZWN0ZWQu
c2V0LCBuYW1lICsgJy5zZXQnKTsKLX0KLQotKGZ1bmN0aW9uIHRlc3RNZXRhKCkgewotICAgIHNo
b3VsZEJlKDEsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0aCk7Ci0KLSAg
ICBzaG91bGRCZSgnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycycsIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JzLm5hbWUpOwotCi0gICAgdmFyIHByb3BlcnR5RGVzY3JpcHRvciA9IFJl
ZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCwgJ2dldE93blByb3BlcnR5RGVz
Y3JpcHRvcnMnKTsKLSAgICBzaG91bGRCZShmYWxzZSwgcHJvcGVydHlEZXNjcmlwdG9yLmVudW1l
cmFibGUpOwotICAgIHNob3VsZEJlKHRydWUsIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZSk7
Ci0gICAgc2hvdWxkQmUodHJ1ZSwgcHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7Ci0K
LSAgICBzaG91bGRUaHJvdygoKSA9PiBuZXcgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cnMoe30pLCBUeXBlRXJyb3IpOwotfSkoKTsKLQotKGZ1bmN0aW9uIHRlc3RUb09iamVjdCgpIHsK
LSAgICBzaG91bGRUaHJvdygoKSA9PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhu
dWxsKSwgVHlwZUVycm9yKTsKLSAgICBzaG91bGRUaHJvdygoKSA9PiBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9ycyh1bmRlZmluZWQpLCBUeXBlRXJyb3IpOwotICAgIHNob3VsZFRocm93
KCgpID0+IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKCksIFR5cGVFcnJvcik7Ci19
KSgpOwotCi0oZnVuY3Rpb24gdGVzdFByb3RvdHlwZVByb3BlcnRpZXMoKSB7Ci0gICAgZnVuY3Rp
b24gRigpIHt9OwotICAgIEYucHJvdG90eXBlLmEgPSAnQSc7Ci0gICAgRi5wcm90b3R5cGUuYiA9
ICdCJzsKLSAgICBGLnByb3RvdHlwZVs5OTk5XSA9ICcwJzsKLSAgICBGLnByb3RvdHlwZVswXSA9
ICcwJzsKLQotICAgIHZhciBGMiA9IG5ldyBGKCk7Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXMoRjIsIHsKLSAgICAgICAgJ2InOiB7Ci0gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwK
LSAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIHdyaXRhYmxlOiBm
YWxzZSwKLSAgICAgICAgICAgIHZhbHVlOiAnU2hhZG93ZWQgIkIiJwotICAgICAgICB9LAotICAg
ICAgICAnYyc6IHsKLSAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAotICAgICAgICAgICAg
Y29uZmlndXJhYmxlOiB0cnVlLAotICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLAotICAgICAg
ICAgICAgdmFsdWU6ICdDJwotICAgICAgICB9LAotICAgICAgICA5OTk4OiB7Ci0gICAgICAgICAg
ICBlbnVtZXJhYmxlOiB0cnVlLAotICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAotICAg
ICAgICAgICAgd3JpdGFibGU6IHRydWUsCi0gICAgICAgICAgICB2YWx1ZTogJ1gnCi0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ycyhGMik7Ci0KLSAgICBzaG91bGRCZSh1bmRlZmluZWQsIHJlc3VsdFswXSk7Ci0KLSAg
ICBzaG91bGRCZShyZXN1bHRbOTk5OF0uZW51bWVyYWJsZSwgdHJ1ZSk7Ci0gICAgc2hvdWxkQmUo
cmVzdWx0Wzk5OThdLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Ci0gICAgc2hvdWxkQmUocmVzdWx0Wzk5
OThdLndyaXRhYmxlLCB0cnVlKTsKLSAgICBzaG91bGRCZShyZXN1bHRbOTk5OF0udmFsdWUsICdY
JykKLQotICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgcmVzdWx0Wzk5OTldKTsKLQotICAgIHNob3Vs
ZEJlKHVuZGVmaW5lZCwgcmVzdWx0LmEpOwotCi0gICAgc2hvdWxkQmUocmVzdWx0LmIuZW51bWVy
YWJsZSwgZmFsc2UpOwotICAgIHNob3VsZEJlKHJlc3VsdC5iLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7
Ci0gICAgc2hvdWxkQmUocmVzdWx0LmIud3JpdGFibGUsIGZhbHNlKTsKLSAgICBzaG91bGRCZShy
ZXN1bHQuYi52YWx1ZSwgJ1NoYWRvd2VkICJCIicpOwotCi0gICAgc2hvdWxkQmUocmVzdWx0LmMu
ZW51bWVyYWJsZSwgZmFsc2UpOwotICAgIHNob3VsZEJlKHJlc3VsdC5jLmNvbmZpZ3VyYWJsZSwg
dHJ1ZSk7Ci0gICAgc2hvdWxkQmUocmVzdWx0LmMud3JpdGFibGUsIGZhbHNlKTsKLSAgICBzaG91
bGRCZShyZXN1bHQuYy52YWx1ZSwgJ0MnKTsKLX0pKCk7Ci0KLShmdW5jdGlvbiB0ZXN0R2xvYmFs
UHJveHkoZ2xvYmFsKSB7Ci0gICAgdmFyIHN5bWJvbCA9IFN5bWJvbCgndGVzdCcpOwotICAgIGds
b2JhbFtzeW1ib2xdID0gJ1N5bWJvbCh0ZXN0KSc7Ci0KLSAgICB2YXIgcmVzdWx0ID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoZ2xvYmFsKTsKLQotICAgIHNob3VsZEJlRGF0YVBy
b3BlcnR5KHJlc3VsdFtzeW1ib2xdLCAnU3ltYm9sKHRlc3QpJywgJ2dsb2JhbFtTeW1ib2wodGVz
dCldJyk7Ci0gICAgZGVsZXRlIGdsb2JhbFtzeW1ib2xdOwotfSkodGhpcyk7Ci0KLShmdW5jdGlv
biB0ZXN0SW5kZXhlZFByb3BlcnRpZXMoKSB7Ci0gICAgdmFyIG9iamVjdCA9IHsgMDogJ3Rlc3Qn
IH07Ci0gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9i
amVjdCk7Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0WzBdLCAndGVzdCcsICdyZXN1
bHRbMF0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbJzAnXSwgJ3Rlc3QnLCAn
cmVzdWx0WyIwIl0nKTsKLSAgICBzaG91bGRCZShyZXN1bHRbMF0sIHJlc3VsdFsnMCddKTsKLX0p
KCk7Ci0KLQotKGZ1bmN0aW9uIHRlc3RQcm9wZXJ0aWVzSW5kZXhlZFNldHRlck9uUHJvdG90eXBl
VGhyb3dzKCkgewotICAgIHZhciBzeW1ib2wgPSBTeW1ib2woJ3Rlc3QnKTsKLSAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydGllcyhPYmplY3QucHJvdG90eXBlLCB7Ci0gICAgICAgIDA6IHsKLSAgICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuOyB9
LAotICAgICAgICAgICAgc2V0KHYpIHsgdGhyb3cgbmV3IEVycm9yKCJTZXR0ZXIgb24gcHJvdG90
eXBlIHNob3VsZCBiZSB1bnJlYWNoYWJsZSEiKTsgfQotICAgICAgICB9LAotICAgICAgICBhOiB7
Ci0gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCi0gICAgICAgICAgICBnZXQoKSB7IHJl
dHVybjsgfSwKLSAgICAgICAgICAgIHNldCh2KSB7IHRocm93IG5ldyBFcnJvcigiU2V0dGVyIG9u
IHByb3RvdHlwZSBzaG91bGQgYmUgdW5yZWFjaGFibGUhIik7IH0KLSAgICAgICAgfSwKLSAgICAg
ICAgW3N5bWJvbF06IHsKLSAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgICAgICAg
ICAgIGdldCgpIHsgcmV0dXJuOyB9LAotICAgICAgICAgICAgc2V0KHYpIHsgdGhyb3cgbmV3IEVy
cm9yKCJTZXR0ZXIgb24gcHJvdG90eXBlIHNob3VsZCBiZSB1bnJlYWNoYWJsZSEiKTsgfQotICAg
ICAgICB9Ci0gICAgfSk7Ci0gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JzKHsgMDogMSwgYTogMiwgW3N5bWJvbF06IDMgfSkKLSAgICBkZWxldGUgT2JqZWN0
LnByb3RvdHlwZVswXTsKLSAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5hOwotICAgIGRlbGV0
ZSBPYmplY3QucHJvdG90eXBlW3N5bWJvbF07Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVz
dWx0WzBdLCAxLCAncmVzdWx0WzBdJyk7Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0
LmEsIDIsICdyZXN1bHRbImEiXScpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFtz
eW1ib2xdLCAzLCAncmVzdWx0W3N5bWJvbF0nKTsKLX0pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMDhkMmZkMWYyYzQ3NzAxNGI2N2I2
NjRhMTdhMmI1NTU4NWI2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9ycy1wcm94eS5qcwpAQCAtMCwwICsxLDEyMyBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAg
ICAgICBtc2cgPSAnJzsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICcgZm9yICcgKyBtc2c7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlJyArIG1zZyArICc6ICcgKyBhY3R1YWwgKyAnLiBFeHBlY3RlZCAnICsgZXhwZWN0ZWQp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICB0cnkg
eworICAgICAgICBmdW5jKCk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgJyAr
IGZ1bmMgKyAnKCkgdG8gdGhyb3cgJyArIGVycm9yVHlwZS5uYW1lICsgJywgYnV0IGRpZCBub3Qg
dGhyb3cuJyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIGVy
cm9yVHlwZSkgcmV0dXJuOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkICcgKyBm
dW5jICsgJygpIHRvIHRocm93ICcgKyBlcnJvclR5cGUubmFtZSArICcsIGJ1dCB0aHJldyAnICsg
ZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG91bGRCZURhdGFQcm9wZXJ0eShleHBlY3RlZCwg
dmFsdWUsIG5hbWUpIHsKKyAgICBpZiAobmFtZSA9PT0gdm9pZCAwKQorICAgICAgICBuYW1lID0g
Jzxwcm9wZXJ0eSBkZXNjcmlwdG9yPic7CisgICAgc2hvdWxkQmUodmFsdWUsIGV4cGVjdGVkLnZh
bHVlLCBuYW1lICsgJy52YWx1ZScpOworICAgIHNob3VsZEJlKHRydWUsIGV4cGVjdGVkLmVudW1l
cmFibGUsIG5hbWUgKyAnLmVudW1lcmFibGUnKTsKKyAgICBzaG91bGRCZSh0cnVlLCBleHBlY3Rl
ZC5jb25maWd1cmFibGUsIG5hbWUgKyAnLmNvbmZpZ3VyYWJsZScpOworICAgIHNob3VsZEJlKHRy
dWUsIGV4cGVjdGVkLndyaXRhYmxlLCBuYW1lICsgJy53cml0YWJsZScpOworICAgIHNob3VsZEJl
KHVuZGVmaW5lZCwgZXhwZWN0ZWQuZ2V0LCBuYW1lICsgJy5nZXQnKTsKKyAgICBzaG91bGRCZSh1
bmRlZmluZWQsIGV4cGVjdGVkLnNldCwgbmFtZSArICcuc2V0Jyk7Cit9CisKKyhmdW5jdGlvbiB0
ZXN0UHJvcGVydHlGaWx0ZXJpbmdBbmRPcmRlcigpIHsKKyAgICB2YXIgbG9nID0gW107CisgICAg
dmFyIHN5bSA9IFN5bWJvbCgndGVzdCcpOworICAgIHZhciBPID0geworICAgICAgICAwOiAwLAor
ICAgICAgICBbc3ltXTogMywKKyAgICAgICAgJ2EnOiAyLAorICAgICAgICAxOiAxCisgICAgfTsK
KworICAgIHZhciBQID0gbmV3IFByb3h5KE8sIHsKKyAgICAgICAgb3duS2V5cyh0YXJnZXQpIHsK
KyAgICAgICAgICAgIGxvZy5wdXNoKCdvd25LZXlzKCknKTsKKyAgICAgICAgICAgIHJldHVybiBS
ZWZsZWN0Lm93bktleXModGFyZ2V0KTsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHRhcmdldCwgbmFtZSkgeworICAgICAgICAgICAgbG9nLnB1c2goYGdldE93
blByb3BlcnR5RGVzY3JpcHRvcigke1N0cmluZyhuYW1lKX0pYCk7CisgICAgICAgICAgICByZXR1
cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBuYW1lKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tbR2V0XV0gdHJhcCBzaG91
bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKKyAgICAgICAgc2V0KCkgeyB0aHJvdyBuZXcgRXJyb3Io
J1tbU2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKKyAgICAgICAgZGVsZXRl
UHJvcGVydHkoKSB7IHRocm93IG5ldyBFcnJvcignW1tEZWxldGVdXSB0cmFwIHNob3VsZCBiZSB1
bnJlYWNoYWJsZScpOyB9LAorICAgICAgICBkZWZpbmVQcm9wZXJ0eSgpIHsgdGhyb3cgbmV3IEVy
cm9yKCdbW0RlZmluZU93blByb3BlcnR5XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsg
fQorICAgIH0pOworCisgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JzKFApOworICAgIHNob3VsZEJlKCdvd25LZXlzKCl8Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKDApfGdldE93blByb3BlcnR5RGVzY3JpcHRvcigxKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoYSl8Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN5bWJvbCh0ZXN0KSknLCBsb2cuam9pbign
fCcpKTsKKyAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbMF0sIDAsICdyZXN1bHRbMF0n
KTsKKyAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbMV0sIDEsICdyZXN1bHRbMV0nKTsK
KyAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQuYSwgMiwgJ3Jlc3VsdFsiYSJdJyk7Cisg
ICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0W3N5bV0sIDMsICdyZXN1bHRbU3ltYm9sKHRl
c3QpXScpOworCisgICAgdmFyIHJlc3VsdDIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyhPKTsKKyAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQyWzBdLCAwLCAncmVzdWx0
MlswXScpOworICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdDJbMV0sIDEsICdyZXN1bHQy
WzFdJyk7CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0Mi5hLCAyLCAncmVzdWx0Mlsi
YSJdJyk7CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0MltzeW1dLCAzLCAncmVzdWx0
MltTeW1ib2wodGVzdCldJyk7Cit9KSgpOworCisoZnVuY3Rpb24gdGVzdER1cGxpY2F0ZVByb3Bl
cnR5TmFtZXMoKSB7CisgICAgdmFyIGkgPSAwOworICAgIHZhciBsb2cgPSBbXTsKKyAgICB2YXIg
UCA9IG5ldyBQcm94eSh7fSwgeworICAgIG93bktleXMoKSB7CisgICAgICAgIGxvZy5wdXNoKGBv
d25LZXlzKClgKTsKKyAgICAgICAgcmV0dXJuIFsgJ0EnLCAnQScgXTsKKyAgICB9LAorICAgIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0LCBuYW1lKSB7CisgICAgICAgIGxvZy5wdXNoKGBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoJHtuYW1lfSlgKTsKKyAgICAgICAgaWYgKGkrKykgcmV0dXJu
OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAg
ICAgICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6ICdWQUxVRScKKyAg
ICAgICAgfTsKKyAgICB9LAorICAgIGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0dldF1dIHRy
YXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCisgICAgc2V0KCkgeyB0aHJvdyBuZXcgRXJy
b3IoJ1tbU2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKKyAgICBkZWxldGVQ
cm9wZXJ0eSgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0RlbGV0ZV1dIHRyYXAgc2hvdWxkIGJlIHVu
cmVhY2hhYmxlJyk7IH0sCisgICAgZGVmaW5lUHJvcGVydHkoKSB7IHRocm93IG5ldyBFcnJvcign
W1tEZWZpbmVPd25Qcm9wZXJ0eV1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0KKyAg
fSk7CisKKyAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKFAp
OworICBzaG91bGRCZSh0cnVlLCByZXN1bHQuQS5jb25maWd1cmFibGUsICdmb3IgcmVzdWx0LkEu
Y29uZmlndXJhYmxlJyk7CisgIHNob3VsZEJlKGZhbHNlLCByZXN1bHQuQS53cml0YWJsZSwgJ2Zv
ciByZXN1bHQuQS53cml0YWJsZScpOworICBzaG91bGRCZSgnVkFMVUUnLCByZXN1bHQuQS52YWx1
ZSwgJ2ZvciByZXN1bHQuQS52YWx1ZScpOworICBzaG91bGRCZShmYWxzZSwgcmVzdWx0LkEuZW51
bWVyYWJsZSwgJ2ZvciByZXN1bHQuQS5lbnVtZXJhYmxlJyk7CisgIHNob3VsZEJlKHRydWUsIE9i
amVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgJ0EnKSk7CisgIHNob3VsZEJlKCdvd25L
ZXlzKCl8Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEEpfGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihBKScsIGxvZy5qb2luKCd8JykpOworfSkoKTsKKworKGZ1bmN0aW9uIHRlc3RVbmRlZmluZWRQ
cm9wZXJ0eURlc2NyaXB0b3IoKSB7CisgICAgdmFyIGxvZyA9IFtdOworICAgIHZhciBQID0gbmV3
IFByb3h5KHt9LCB7CisgICAgICAgIG93bktleXMoKSB7CisgICAgICAgICAgICBsb2cucHVzaChg
b3duS2V5cygpYCk7CisgICAgICAgICAgICByZXR1cm4gWydmYWtlUHJvcGVydHknXTsKKyAgICAg
ICAgfSwKKyAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIG5hbWUpIHsKKyAgICAg
ICAgICAgIGxvZy5wdXNoKGBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoJHtuYW1lfSlgKTsKKyAg
ICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIH0sCisgICAgICAgIGdldCgpIHsg
dGhyb3cgbmV3IEVycm9yKCdbW0dldF1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0s
CisgICAgICAgIHNldCgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW1NldF1dIHRyYXAgc2hvdWxkIGJl
IHVucmVhY2hhYmxlJyk7IH0sCisgICAgICAgIGRlbGV0ZVByb3BlcnR5KCkgeyB0aHJvdyBuZXcg
RXJyb3IoJ1tbRGVsZXRlXV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKKyAgICAg
ICAgZGVmaW5lUHJvcGVydHkoKSB7IHRocm93IG5ldyBFcnJvcignW1tEZWZpbmVPd25Qcm9wZXJ0
eV1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0KKyAgICB9KTsKKworICAgIHZhciBy
ZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhQKTsKKyAgICBzaG91bGRC
ZShmYWxzZSwgcmVzdWx0Lmhhc093blByb3BlcnR5KCdmYWtlUHJvcGVydHknKSk7CisgICAgc2hv
dWxkQmUoZmFsc2UsICdmYWtlUHJvcGVydHknIGluIHJlc3VsdCk7CisgICAgc2hvdWxkQmUoJ293
bktleXMoKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZmFrZVByb3BlcnR5KScsIGxvZy5qb2lu
KCd8JykpOworfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9PYmplY3Rfc3RhdGlj
X21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGVmNzQ2Yzk1ZmM0OTk0OWViZjc0NDI4MWNjOTM5ODBiYTI3YTMxOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvT2JqZWN0X3N0YXRpY19tZXRo
b2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLmpzCkBAIC0wLDAgKzEsMTQ4IEBA
CitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNn
ID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICcnOworICAgIGVsc2UKKyAgICAgICAgbXNnID0g
JyBmb3IgJyArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWUnICsgbXNnICsgJzogJyArIGFjdHVhbCArICcuIEV4cGVj
dGVkICcgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
VHlwZSkgeworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdFeHBlY3RlZCAnICsgZnVuYyArICcoKSB0byB0aHJvdyAnICsgZXJyb3JUeXBlLm5hbWUg
KyAnLCBidXQgZGlkIG5vdCB0aHJvdy4nKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgZXJyb3JUeXBlKSByZXR1cm47CisgICAgICAgIHRocm93IG5ldyBFcnJv
cignRXhwZWN0ZWQgJyArIGZ1bmMgKyAnKCkgdG8gdGhyb3cgJyArIGVycm9yVHlwZS5uYW1lICsg
JywgYnV0IHRocmV3ICcgKyBlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlRGF0YVBy
b3BlcnR5KGV4cGVjdGVkLCB2YWx1ZSwgbmFtZSkgeworICAgIGlmIChuYW1lID09PSB2b2lkIDAp
CisgICAgICAgIG5hbWUgPSAnPHByb3BlcnR5IGRlc2NyaXB0b3I+JzsKKyAgICBzaG91bGRCZSh2
YWx1ZSwgZXhwZWN0ZWQudmFsdWUsIG5hbWUgKyAnLnZhbHVlJyk7CisgICAgc2hvdWxkQmUodHJ1
ZSwgZXhwZWN0ZWQuZW51bWVyYWJsZSwgbmFtZSArICcuZW51bWVyYWJsZScpOworICAgIHNob3Vs
ZEJlKHRydWUsIGV4cGVjdGVkLmNvbmZpZ3VyYWJsZSwgbmFtZSArICcuY29uZmlndXJhYmxlJyk7
CisgICAgc2hvdWxkQmUodHJ1ZSwgZXhwZWN0ZWQud3JpdGFibGUsIG5hbWUgKyAnLndyaXRhYmxl
Jyk7CisgICAgc2hvdWxkQmUodW5kZWZpbmVkLCBleHBlY3RlZC5nZXQsIG5hbWUgKyAnLmdldCcp
OworICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgZXhwZWN0ZWQuc2V0LCBuYW1lICsgJy5zZXQnKTsK
K30KKworKGZ1bmN0aW9uIHRlc3RNZXRhKCkgeworICAgIHNob3VsZEJlKDEsIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JzLmxlbmd0aCk7CisKKyAgICBzaG91bGRCZSgnZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9ycycsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLm5hbWUp
OworCisgICAgdmFyIHByb3BlcnR5RGVzY3JpcHRvciA9IFJlZmxlY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKE9iamVjdCwgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcnMnKTsKKyAgICBzaG91
bGRCZShmYWxzZSwgcHJvcGVydHlEZXNjcmlwdG9yLmVudW1lcmFibGUpOworICAgIHNob3VsZEJl
KHRydWUsIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZSk7CisgICAgc2hvdWxkQmUodHJ1ZSwg
cHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7CisKKyAgICBzaG91bGRUaHJvdygoKSA9
PiBuZXcgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoe30pLCBUeXBlRXJyb3IpOwor
fSkoKTsKKworKGZ1bmN0aW9uIHRlc3RUb09iamVjdCgpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhudWxsKSwgVHlwZUVycm9yKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh1bmRl
ZmluZWQpLCBUeXBlRXJyb3IpOworICAgIHNob3VsZFRocm93KCgpID0+IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzKCksIFR5cGVFcnJvcik7Cit9KSgpOworCisoZnVuY3Rpb24gdGVz
dFByb3RvdHlwZVByb3BlcnRpZXMoKSB7CisgICAgZnVuY3Rpb24gRigpIHt9OworICAgIEYucHJv
dG90eXBlLmEgPSAnQSc7CisgICAgRi5wcm90b3R5cGUuYiA9ICdCJzsKKyAgICBGLnByb3RvdHlw
ZVs5OTk5XSA9ICcwJzsKKyAgICBGLnByb3RvdHlwZVswXSA9ICcwJzsKKworICAgIHZhciBGMiA9
IG5ldyBGKCk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRjIsIHsKKyAgICAgICAgJ2In
OiB7CisgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZh
bHVlOiAnU2hhZG93ZWQgIkIiJworICAgICAgICB9LAorICAgICAgICAnYyc6IHsKKyAgICAgICAg
ICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAor
ICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6ICdDJworICAg
ICAgICB9LAorICAgICAgICA5OTk4OiB7CisgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAor
ICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgd3JpdGFibGU6IHRy
dWUsCisgICAgICAgICAgICB2YWx1ZTogJ1gnCisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZh
ciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhGMik7CisKKyAgICBz
aG91bGRCZSh1bmRlZmluZWQsIHJlc3VsdFswXSk7CisKKyAgICBzaG91bGRCZShyZXN1bHRbOTk5
OF0uZW51bWVyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUocmVzdWx0Wzk5OThdLmNvbmZpZ3Vy
YWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUocmVzdWx0Wzk5OThdLndyaXRhYmxlLCB0cnVlKTsK
KyAgICBzaG91bGRCZShyZXN1bHRbOTk5OF0udmFsdWUsICdYJykKKworICAgIHNob3VsZEJlKHVu
ZGVmaW5lZCwgcmVzdWx0Wzk5OTldKTsKKworICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgcmVzdWx0
LmEpOworCisgICAgc2hvdWxkQmUocmVzdWx0LmIuZW51bWVyYWJsZSwgZmFsc2UpOworICAgIHNo
b3VsZEJlKHJlc3VsdC5iLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUocmVzdWx0
LmIud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZXN1bHQuYi52YWx1ZSwgJ1NoYWRv
d2VkICJCIicpOworCisgICAgc2hvdWxkQmUocmVzdWx0LmMuZW51bWVyYWJsZSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKHJlc3VsdC5jLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
cmVzdWx0LmMud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZXN1bHQuYy52YWx1ZSwg
J0MnKTsKK30pKCk7CisKKyhmdW5jdGlvbiB0ZXN0R2xvYmFsUHJveHkoZ2xvYmFsKSB7CisgICAg
dmFyIHN5bWJvbCA9IFN5bWJvbCgndGVzdCcpOworICAgIGdsb2JhbFtzeW1ib2xdID0gJ1N5bWJv
bCh0ZXN0KSc7CisKKyAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcnMoZ2xvYmFsKTsKKworICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFtzeW1ib2xd
LCAnU3ltYm9sKHRlc3QpJywgJ2dsb2JhbFtTeW1ib2wodGVzdCldJyk7CisgICAgZGVsZXRlIGds
b2JhbFtzeW1ib2xdOworfSkodGhpcyk7CisKKyhmdW5jdGlvbiB0ZXN0SW5kZXhlZFByb3BlcnRp
ZXMoKSB7CisgICAgdmFyIG9iamVjdCA9IHsgMDogJ3Rlc3QnIH07CisgICAgdmFyIHJlc3VsdCA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CisgICAgc2hvdWxkQmVE
YXRhUHJvcGVydHkocmVzdWx0WzBdLCAndGVzdCcsICdyZXN1bHRbMF0nKTsKKyAgICBzaG91bGRC
ZURhdGFQcm9wZXJ0eShyZXN1bHRbJzAnXSwgJ3Rlc3QnLCAncmVzdWx0WyIwIl0nKTsKKyAgICBz
aG91bGRCZShyZXN1bHRbMF0sIHJlc3VsdFsnMCddKTsKK30pKCk7CisKKworKGZ1bmN0aW9uIHRl
c3RQcm9wZXJ0aWVzSW5kZXhlZFNldHRlck9uUHJvdG90eXBlVGhyb3dzKCkgeworICAgIHZhciBz
eW1ib2wgPSBTeW1ib2woJ3Rlc3QnKTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPYmpl
Y3QucHJvdG90eXBlLCB7CisgICAgICAgIDA6IHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTog
dHJ1ZSwKKyAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuOyB9LAorICAgICAgICAgICAgc2V0KHYp
IHsgdGhyb3cgbmV3IEVycm9yKCJTZXR0ZXIgb24gcHJvdG90eXBlIHNob3VsZCBiZSB1bnJlYWNo
YWJsZSEiKTsgfQorICAgICAgICB9LAorICAgICAgICBhOiB7CisgICAgICAgICAgICBjb25maWd1
cmFibGU6IHRydWUsCisgICAgICAgICAgICBnZXQoKSB7IHJldHVybjsgfSwKKyAgICAgICAgICAg
IHNldCh2KSB7IHRocm93IG5ldyBFcnJvcigiU2V0dGVyIG9uIHByb3RvdHlwZSBzaG91bGQgYmUg
dW5yZWFjaGFibGUhIik7IH0KKyAgICAgICAgfSwKKyAgICAgICAgW3N5bWJvbF06IHsKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuOyB9
LAorICAgICAgICAgICAgc2V0KHYpIHsgdGhyb3cgbmV3IEVycm9yKCJTZXR0ZXIgb24gcHJvdG90
eXBlIHNob3VsZCBiZSB1bnJlYWNoYWJsZSEiKTsgfQorICAgICAgICB9CisgICAgfSk7CisgICAg
dmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHsgMDogMSwgYTog
MiwgW3N5bWJvbF06IDMgfSkKKyAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZVswXTsKKyAgICBk
ZWxldGUgT2JqZWN0LnByb3RvdHlwZS5hOworICAgIGRlbGV0ZSBPYmplY3QucHJvdG90eXBlW3N5
bWJvbF07CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0WzBdLCAxLCAncmVzdWx0WzBd
Jyk7CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0LmEsIDIsICdyZXN1bHRbImEiXScp
OworICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFtzeW1ib2xdLCAzLCAncmVzdWx0W3N5
bWJvbF0nKTsKK30pKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284648</attachid>
            <date>2016-07-26 15:47:01 -0700</date>
            <delta_ts>2016-07-26 16:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159409-20160726184551.patch</filename>
            <type>text/plain</type>
            <size>23617</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDMxMDkyZTBjMzJhMTcwMTRjN2I2OTQzOTU4NTU4NTY0OTE0MTM3Li45NDg0MGI2MTE0ZjljNDdm
ZWRhNGMyZjhjNTZkNTk4OTlkZTVlYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wNy0yNiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHNob3Vs
ZCBub3QgYWRkIHVuZGVmaW5lZCBwcm9wcyB0byByZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQwOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyk6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L09i
amVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94
eS5qczoKKyAgICAgICAgKHRlc3RQcm9wZXJ0aWVzSW5kZXhlZFNldHRlck9uUHJvdG90eXBlVGhy
b3dzLnNldCBnZXQgdmFyKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RQcm9wZXJ0aWVzSW5kZXhl
ZFNldHRlck9uUHJvdG90eXBlVGhyb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Jz
LXByb3h5LmpzOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9P
YmplY3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMtcHJv
eHkuanMuCisgICAgICAgICogdGVzdHMvc3RyZXNzL09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzLmpzLgorCiAyMDE2LTA3LTI2ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIERFQlVHX1dJVEhfQlJFQUtQT0lO
VCBjb25maWd1cmF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGM3OTUwNDlkM2Y0ZTYyYTk3YzgxZjNhNmM3NGMz
NDhiNmRkOTE5ODMuLjI2YTIzNmNkYjAxZjVlMWQ4NzJhYzBhNTVmYzRmNjc2ZjAwMWY0ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTI2MywxMCArMjYzLDE4IEBAIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUg
OiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIEpTVmFsdWUgZnJvbURlc2NyaXB0b3IgPSBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgICAgICBi
b29sIGRpZEdldERlc2NyaXB0b3IgPSBvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAorICAgICAgICBp
ZiAoIWRpZEdldERlc2NyaXB0b3IpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBK
U09iamVjdCogZnJvbURlc2NyaXB0b3IgPSBjb25zdHJ1Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIGRlc2NyaXB0b3IpOworICAgICAgICBpZiAoIWZyb21EZXNjcmlwdG9yKQor
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZGVzY3JpcHRvcnMpOwogICAgICAgICBkZXNjcmlwdG9ycy0+cHV0T3duRGF0YVBy
b3BlcnR5TWF5QmVJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUsIGZyb21EZXNjcmlwdG9yLCBzbG90
KTsKICAgICAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggM2E1Y2QyZGI1Yjc2Mjc5YWNjNzg1ZGQwNzg4ZjdhYmNj
ZjVhMTcyZS4uODRjMzc0MDA1YTMxOWY0YTRmZGVmN2Y4NmVmNDE2ZDI2MDkyZjU3OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtMTIzMiw5ICsxMjMyLDMgQEAKICAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5t
YXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
LSMgTGF0ZS1zdGFnZSBwcm9wb3NhbHMgZm9yIGEgZnV0dXJlIEVDTUFTY3JpcHQgc3RhbmRhcmQK
LSMgRklYTUU6IG1vdmUgdGhlc2UgdG8gYSBuZXcgZGlyZWN0b3J5PwotLSBwYXRoOiBlczYvT2Jq
ZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLmpzCi0g
IGNtZDogcnVuRVM2IDpub3JtYWwKLS0gcGF0aDogZXM2L09iamVjdF9zdGF0aWNfbWV0aG9kc19P
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qcwotICBjbWQ6IHJ1bkVTNiA6
ZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9PYmplY3Rf
c3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMtcHJveHkuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L09iamVjdF9zdGF0aWNfbWV0aG9kc19P
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjI3ODFkY2JiYjkyODlmNjc2MzZiODNmNWZmNzJkY2IzZjY3MWUxZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L09iamVjdF9zdGF0aWNfbWV0aG9kc19PYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ycy1wcm94eS5qcworKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAg
QEAKLWZ1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgewotICAgIGlmICht
c2cgPT09IHZvaWQgMCkKLSAgICAgICAgbXNnID0gJyc7Ci0gICAgZWxzZQotICAgICAgICBtc2cg
PSAnIGZvciAnICsgbXNnOwotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZScgKyBtc2cgKyAnOiAnICsgYWN0dWFsICsgJy4gRXhw
ZWN0ZWQgJyArIGV4cGVjdGVkKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVEYXRhUHJvcGVydHko
ZXhwZWN0ZWQsIHZhbHVlLCBuYW1lKSB7Ci0gICAgaWYgKG5hbWUgPT09IHZvaWQgMCkKLSAgICAg
ICAgbmFtZSA9ICc8cHJvcGVydHkgZGVzY3JpcHRvcj4nOwotICAgIHNob3VsZEJlKHZhbHVlLCBl
eHBlY3RlZC52YWx1ZSwgbmFtZSArICcudmFsdWUnKTsKLSAgICBzaG91bGRCZSh0cnVlLCBleHBl
Y3RlZC5lbnVtZXJhYmxlLCBuYW1lICsgJy5lbnVtZXJhYmxlJyk7Ci0gICAgc2hvdWxkQmUodHJ1
ZSwgZXhwZWN0ZWQuY29uZmlndXJhYmxlLCBuYW1lICsgJy5jb25maWd1cmFibGUnKTsKLSAgICBz
aG91bGRCZSh0cnVlLCBleHBlY3RlZC53cml0YWJsZSwgbmFtZSArICcud3JpdGFibGUnKTsKLSAg
ICBzaG91bGRCZSh1bmRlZmluZWQsIGV4cGVjdGVkLmdldCwgbmFtZSArICcuZ2V0Jyk7Ci0gICAg
c2hvdWxkQmUodW5kZWZpbmVkLCBleHBlY3RlZC5zZXQsIG5hbWUgKyAnLnNldCcpOwotfQotCi0o
ZnVuY3Rpb24gdGVzdFByb3BlcnR5RmlsdGVyaW5nQW5kT3JkZXIoKSB7Ci0gICAgdmFyIGxvZyA9
IFtdOwotICAgIHZhciBzeW0gPSBTeW1ib2woJ3Rlc3QnKTsKLSAgICB2YXIgTyA9IHsKLSAgICAg
ICAgMDogMCwKLSAgICAgICAgW3N5bV06IDMsCi0gICAgICAgICdhJzogMiwKLSAgICAgICAgMTog
MQotICAgIH07Ci0KLSAgICB2YXIgUCA9IG5ldyBQcm94eShPLCB7Ci0gICAgICAgIG93bktleXMo
dGFyZ2V0KSB7Ci0gICAgICAgICAgICBsb2cucHVzaCgnb3duS2V5cygpJyk7Ci0gICAgICAgICAg
ICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCk7Ci0gICAgICAgIH0sCi0gICAgICAgIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIG5hbWUpIHsKLSAgICAgICAgICAgIGxvZy5w
dXNoKGBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoJHtTdHJpbmcobmFtZSl9KWApOwotICAgICAg
ICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgbmFt
ZSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0dldF1d
IHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCi0gICAgICAgIHNldCgpIHsgdGhyb3cg
bmV3IEVycm9yKCdbW1NldF1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCi0gICAg
ICAgIGRlbGV0ZVByb3BlcnR5KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tbRGVsZXRlXV0gdHJhcCBz
aG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKLSAgICAgICAgZGVmaW5lUHJvcGVydHkoKSB7IHRo
cm93IG5ldyBFcnJvcignW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIHRyYXAgc2hvdWxkIGJlIHVucmVh
Y2hhYmxlJyk7IH0KLSAgICB9KTsKLQotICAgIHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9ycyhQKTsKLSAgICBzaG91bGRCZSgnb3duS2V5cygpfGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigwKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoMSl8Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGEpfGdldE93blByb3BlcnR5RGVzY3JpcHRvcihTeW1ib2woZm9vKSknLCBs
b2cuam9pbignfCcpKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbMF0sIDAsICdy
ZXN1bHRbMF0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbMV0sIDEsICdyZXN1
bHRbMV0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQuYSwgMSwgJ3Jlc3VsdFsi
YSJdJyk7Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0W3N5bV0sIDEsICdyZXN1bHRb
U3ltYm9sKGZvbyldJyk7Ci0KLSAgICB2YXIgcmVzdWx0MiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzKE8pOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdDJbMF0sIDAs
ICdyZXN1bHQyWzBdJyk7Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0MlsxXSwgMSwg
J3Jlc3VsdDJbMV0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQyLmEsIDEsICdy
ZXN1bHQyWyJhIl0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQyW3N5bV0sIDEs
ICdyZXN1bHQyW1N5bWJvbChmb28pXScpOwotfSkoKTsKLQotKGZ1bmN0aW9uIHRlc3REdXBsaWNh
dGVQcm9wZXJ0eU5hbWVzKCkgewotICAgIHZhciBpID0gMDsKLSAgICB2YXIgbG9nID0gW107Ci0g
ICAgdmFyIFAgPSBuZXcgUHJveHkoe30sIHsKLSAgICBvd25LZXlzKCkgewotICAgICAgICBsb2cu
cHVzaChgb3duS2V5cygpYCk7Ci0gICAgICAgIHJldHVybiBbICdBJywgJ0EnIF07Ci0gICAgfSwK
LSAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgbmFtZSkgewotICAgICAgICBsb2cucHVz
aChgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCR7bmFtZX0pYCk7Ci0gICAgICAgIGlmIChpKysp
IHJldHVybjsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1
ZSwKLSAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKLSAgICAgICAgICAgIHZhbHVlOiAnVkFM
VUUnCi0gICAgICAgIH07Ci0gICAgfSwKLSAgICBnZXQoKSB7IHRocm93IG5ldyBFcnJvcignW1tH
ZXRdXSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScpOyB9LAotICAgIHNldCgpIHsgdGhyb3cg
bmV3IEVycm9yKCdbW1NldF1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hhYmxlJyk7IH0sCi0gICAg
ZGVsZXRlUHJvcGVydHkoKSB7IHRocm93IG5ldyBFcnJvcignW1tEZWxldGVdXSB0cmFwIHNob3Vs
ZCBiZSB1bnJlYWNoYWJsZScpOyB9LAotICAgIGRlZmluZVByb3BlcnR5KCkgeyB0aHJvdyBuZXcg
RXJyb3IoJ1tbRGVmaW5lT3duUHJvcGVydHldXSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScp
OyB9Ci0gIH0pOwotCi0gIHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ycyhQKTsKLSAgc2hvdWxkQmUodm9pZCAwLCByZXN1bHQuQSk7Ci0gIHNob3VsZEJlKHRydWUs
IE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgJ0EnKSk7Ci0gIHNob3VsZEJlKCdv
d25LZXlzKCl8Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEEpfGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihBKScsIGxvZy5qb2luKCd8JykpOwotfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9P
YmplY3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMzBlN2UwZTcyMTliYWRlOGJkYWYxOTM2
MDc3OTVkOGUwMGYwYTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9PYmplY3Rfc3RhdGljX21ldGhv
ZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxNTMgKzAsMCBAQAotZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7
Ci0gICAgaWYgKG1zZyA9PT0gdm9pZCAwKQotICAgICAgICBtc2cgPSAnJzsKLSAgICBlbHNlCi0g
ICAgICAgIG1zZyA9ICcgZm9yICcgKyBtc2c7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlJyArIG1zZyArICc6ICcgKyBhY3R1
YWwgKyAnLiBFeHBlY3RlZCAnICsgZXhwZWN0ZWQpOwotfQotCi1mdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKLSAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKLSAg
ICB2YXIgZXJyb3IgPSBudWxsOwotICAgIHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKLSAgICAgICAgZXJyb3IgPSBl
OwotICAgIH0KLSAgICBpZiAoIWVycm9yVGhyb3duKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J25vdCB0aHJvd24nKTsKLSAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQot
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOwot
fQotCi1mdW5jdGlvbiBzaG91bGRCZURhdGFQcm9wZXJ0eShleHBlY3RlZCwgdmFsdWUsIG5hbWUp
IHsKLSAgICBpZiAobmFtZSA9PT0gdm9pZCAwKQotICAgICAgICBuYW1lID0gJzxwcm9wZXJ0eSBk
ZXNjcmlwdG9yPic7Ci0gICAgc2hvdWxkQmUodmFsdWUsIGV4cGVjdGVkLnZhbHVlLCBuYW1lICsg
Jy52YWx1ZScpOwotICAgIHNob3VsZEJlKHRydWUsIGV4cGVjdGVkLmVudW1lcmFibGUsIG5hbWUg
KyAnLmVudW1lcmFibGUnKTsKLSAgICBzaG91bGRCZSh0cnVlLCBleHBlY3RlZC5jb25maWd1cmFi
bGUsIG5hbWUgKyAnLmNvbmZpZ3VyYWJsZScpOwotICAgIHNob3VsZEJlKHRydWUsIGV4cGVjdGVk
LndyaXRhYmxlLCBuYW1lICsgJy53cml0YWJsZScpOwotICAgIHNob3VsZEJlKHVuZGVmaW5lZCwg
ZXhwZWN0ZWQuZ2V0LCBuYW1lICsgJy5nZXQnKTsKLSAgICBzaG91bGRCZSh1bmRlZmluZWQsIGV4
cGVjdGVkLnNldCwgbmFtZSArICcuc2V0Jyk7Ci19Ci0KLShmdW5jdGlvbiB0ZXN0TWV0YSgpIHsK
LSAgICBzaG91bGRCZSgxLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy5sZW5ndGgp
OwotCi0gICAgc2hvdWxkQmUoJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcnMnLCBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9ycy5uYW1lKTsKLQotICAgIHZhciBwcm9wZXJ0eURlc2NyaXB0
b3IgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QsICdnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JzJyk7Ci0gICAgc2hvdWxkQmUoZmFsc2UsIHByb3BlcnR5RGVzY3JpcHRv
ci5lbnVtZXJhYmxlKTsKLSAgICBzaG91bGRCZSh0cnVlLCBwcm9wZXJ0eURlc2NyaXB0b3Iud3Jp
dGFibGUpOwotICAgIHNob3VsZEJlKHRydWUsIHByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFi
bGUpOwotCi0gICAgc2hvdWxkVGhyb3coKCkgPT4gbmV3IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JzKHt9KSwgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3Ig
KGV2YWx1YXRpbmcgJ25ldyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh7fSknKSIp
OwotfSkoKTsKLQotKGZ1bmN0aW9uIHRlc3RUb09iamVjdCgpIHsKLSAgICBzaG91bGRUaHJvdygo
KSA9PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhudWxsKSwgIlR5cGVFcnJvcjog
bnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9ycyhudWxsKScpIik7Ci0gICAgc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcnModW5kZWZpbmVkKSwgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JzKHVuZGVmaW5lZCknKSIpOwotICAgIHNob3VsZFRocm93KCgpID0+IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzKCksICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycygpJykiKTsK
LX0pKCk7Ci0KLShmdW5jdGlvbiB0ZXN0UHJvdG90eXBlUHJvcGVydGllcygpIHsKLSAgICBmdW5j
dGlvbiBGKCkge307Ci0gICAgRi5wcm90b3R5cGUuYSA9ICdBJzsKLSAgICBGLnByb3RvdHlwZS5i
ID0gJ0InOwotICAgIEYucHJvdG90eXBlWzk5OTldID0gJzAnOwotICAgIEYucHJvdG90eXBlWzBd
ID0gJzAnOwotCi0gICAgdmFyIEYyID0gbmV3IEYoKTsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dGllcyhGMiwgewotICAgICAgICAnYic6IHsKLSAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNl
LAotICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAotICAgICAgICAgICAgd3JpdGFibGU6
IGZhbHNlLAotICAgICAgICAgICAgdmFsdWU6ICdTaGFkb3dlZCAiQiInCi0gICAgICAgIH0sCi0g
ICAgICAgICdjJzogewotICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCi0gICAgICAgICAg
ICBjb25maWd1cmFibGU6IHRydWUsCi0gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsCi0gICAg
ICAgICAgICB2YWx1ZTogJ0MnCi0gICAgICAgIH0sCi0gICAgICAgIDk5OTg6IHsKLSAgICAgICAg
ICAgIGVudW1lcmFibGU6IHRydWUsCi0gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCi0g
ICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIHZhbHVlOiAnWCcKLSAgICAg
ICAgfQotICAgIH0pOwotCi0gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JzKEYyKTsKLQotICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgcmVzdWx0WzBdKTsKLQot
ICAgIHNob3VsZEJlKHJlc3VsdFs5OTk4XS5lbnVtZXJhYmxlLCB0cnVlKTsKLSAgICBzaG91bGRC
ZShyZXN1bHRbOTk5OF0uY29uZmlndXJhYmxlLCB0cnVlKTsKLSAgICBzaG91bGRCZShyZXN1bHRb
OTk5OF0ud3JpdGFibGUsIHRydWUpOwotICAgIHNob3VsZEJlKHJlc3VsdFs5OTk4XS52YWx1ZSwg
J1gnKQotCi0gICAgc2hvdWxkQmUodW5kZWZpbmVkLCByZXN1bHRbOTk5OV0pOwotCi0gICAgc2hv
dWxkQmUodW5kZWZpbmVkLCByZXN1bHQuYSk7Ci0KLSAgICBzaG91bGRCZShyZXN1bHQuYi5lbnVt
ZXJhYmxlLCBmYWxzZSk7Ci0gICAgc2hvdWxkQmUocmVzdWx0LmIuY29uZmlndXJhYmxlLCB0cnVl
KTsKLSAgICBzaG91bGRCZShyZXN1bHQuYi53cml0YWJsZSwgZmFsc2UpOwotICAgIHNob3VsZEJl
KHJlc3VsdC5iLnZhbHVlLCAnU2hhZG93ZWQgIkIiJyk7Ci0KLSAgICBzaG91bGRCZShyZXN1bHQu
Yy5lbnVtZXJhYmxlLCBmYWxzZSk7Ci0gICAgc2hvdWxkQmUocmVzdWx0LmMuY29uZmlndXJhYmxl
LCB0cnVlKTsKLSAgICBzaG91bGRCZShyZXN1bHQuYy53cml0YWJsZSwgZmFsc2UpOwotICAgIHNo
b3VsZEJlKHJlc3VsdC5jLnZhbHVlLCAnQycpOwotfSkoKTsKLQotKGZ1bmN0aW9uIHRlc3RHbG9i
YWxQcm94eShnbG9iYWwpIHsKLSAgICB2YXIgc3ltYm9sID0gU3ltYm9sKCd0ZXN0Jyk7Ci0gICAg
Z2xvYmFsW3N5bWJvbF0gPSAnU3ltYm9sKHRlc3QpJzsKLQotICAgIHZhciByZXN1bHQgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhnbG9iYWwpOwotCi0gICAgc2hvdWxkQmVEYXRh
UHJvcGVydHkocmVzdWx0W3N5bWJvbF0sICdTeW1ib2wodGVzdCknLCAnZ2xvYmFsW1N5bWJvbCh0
ZXN0KV0nKTsKLSAgICBkZWxldGUgZ2xvYmFsW3N5bWJvbF07Ci19KSh0aGlzKTsKLQotKGZ1bmN0
aW9uIHRlc3RJbmRleGVkUHJvcGVydGllcygpIHsKLSAgICB2YXIgb2JqZWN0ID0geyAwOiAndGVz
dCcgfTsKLSAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMo
b2JqZWN0KTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbMF0sICd0ZXN0JywgJ3Jl
c3VsdFswXScpOwotICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFsnMCddLCAndGVzdCcs
ICdyZXN1bHRbIjAiXScpOwotICAgIHNob3VsZEJlKHJlc3VsdFswXSwgcmVzdWx0WycwJ10pOwot
fSkoKTsKLQotCi0oZnVuY3Rpb24gdGVzdFByb3BlcnRpZXNJbmRleGVkU2V0dGVyT25Qcm90b3R5
cGVUaHJvd3MoKSB7Ci0gICAgdmFyIHN5bWJvbCA9IFN5bWJvbCgndGVzdCcpOwotICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0aWVzKE9iamVjdC5wcm90b3R5cGUsIHsKLSAgICAgICAgMDogewotICAg
ICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAotICAgICAgICAgICAgZ2V0KCkgeyByZXR1cm47
IH0sCi0gICAgICAgICAgICBzZXQodikgeyB0aHJvdyBuZXcgRXJyb3IoIlNldHRlciBvbiBwcm90
b3R5cGUgc2hvdWxkIGJlIHVucmVhY2hhYmxlISIpOyB9Ci0gICAgICAgIH0sCi0gICAgICAgIGE6
IHsKLSAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIGdldCgpIHsg
cmV0dXJuOyB9LAotICAgICAgICAgICAgc2V0KHYpIHsgdGhyb3cgbmV3IEVycm9yKCJTZXR0ZXIg
b24gcHJvdG90eXBlIHNob3VsZCBiZSB1bnJlYWNoYWJsZSEiKTsgfQotICAgICAgICB9LAotICAg
ICAgICBbc3ltYm9sXTogewotICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAotICAgICAg
ICAgICAgZ2V0KCkgeyByZXR1cm47IH0sCi0gICAgICAgICAgICBzZXQodikgeyB0aHJvdyBuZXcg
RXJyb3IoIlNldHRlciBvbiBwcm90b3R5cGUgc2hvdWxkIGJlIHVucmVhY2hhYmxlISIpOyB9Ci0g
ICAgICAgIH0KLSAgICB9KTsKLSAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcnMoeyAwOiAxLCBhOiAyLCBbc3ltYm9sXTogMyB9KQotICAgIGRlbGV0ZSBPYmpl
Y3QucHJvdG90eXBlWzBdOwotICAgIGRlbGV0ZSBPYmplY3QucHJvdG90eXBlLmE7Ci0gICAgZGVs
ZXRlIE9iamVjdC5wcm90b3R5cGVbc3ltYm9sXTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShy
ZXN1bHRbMF0sIDEsICdyZXN1bHRbMF0nKTsKLSAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1
bHQuYSwgMiwgJ3Jlc3VsdFsiYSJdJyk7Ci0gICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0
W3N5bWJvbF0sIDMsICdyZXN1bHRbc3ltYm9sXScpOwotfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9PYmplY3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcnMtcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQwOTA4NmRhYjU3NDExYmFlMGQ4
ZGY3M2U5MTcyYWJkZTQ5Yzg2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JzLXByb3h5LmpzCkBAIC0wLDAgKzEsMTEzIEBACitmdW5jdGlvbiBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisg
ICAgICAgIG1zZyA9ICcnOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gJyBmb3IgJyArIG1zZzsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWUnICsgbXNnICsgJzogJyArIGFjdHVhbCArICcuIEV4cGVjdGVkICcgKyBleHBlY3Rl
ZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlRGF0YVByb3BlcnR5KGV4cGVjdGVkLCB2YWx1ZSwg
bmFtZSkgeworICAgIGlmIChuYW1lID09PSB2b2lkIDApCisgICAgICAgIG5hbWUgPSAnPHByb3Bl
cnR5IGRlc2NyaXB0b3I+JzsKKyAgICBzaG91bGRCZSh2YWx1ZSwgZXhwZWN0ZWQudmFsdWUsIG5h
bWUgKyAnLnZhbHVlJyk7CisgICAgc2hvdWxkQmUodHJ1ZSwgZXhwZWN0ZWQuZW51bWVyYWJsZSwg
bmFtZSArICcuZW51bWVyYWJsZScpOworICAgIHNob3VsZEJlKHRydWUsIGV4cGVjdGVkLmNvbmZp
Z3VyYWJsZSwgbmFtZSArICcuY29uZmlndXJhYmxlJyk7CisgICAgc2hvdWxkQmUodHJ1ZSwgZXhw
ZWN0ZWQud3JpdGFibGUsIG5hbWUgKyAnLndyaXRhYmxlJyk7CisgICAgc2hvdWxkQmUodW5kZWZp
bmVkLCBleHBlY3RlZC5nZXQsIG5hbWUgKyAnLmdldCcpOworICAgIHNob3VsZEJlKHVuZGVmaW5l
ZCwgZXhwZWN0ZWQuc2V0LCBuYW1lICsgJy5zZXQnKTsKK30KKworKGZ1bmN0aW9uIHRlc3RQcm9w
ZXJ0eUZpbHRlcmluZ0FuZE9yZGVyKCkgeworICAgIHZhciBsb2cgPSBbXTsKKyAgICB2YXIgc3lt
ID0gU3ltYm9sKCd0ZXN0Jyk7CisgICAgdmFyIE8gPSB7CisgICAgICAgIDA6IDAsCisgICAgICAg
IFtzeW1dOiAzLAorICAgICAgICAnYSc6IDIsCisgICAgICAgIDE6IDEKKyAgICB9OworCisgICAg
dmFyIFAgPSBuZXcgUHJveHkoTywgeworICAgICAgICBvd25LZXlzKHRhcmdldCkgeworICAgICAg
ICAgICAgbG9nLnB1c2goJ293bktleXMoKScpOworICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Qu
b3duS2V5cyh0YXJnZXQpOworICAgICAgICB9LAorICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IodGFyZ2V0LCBuYW1lKSB7CisgICAgICAgICAgICBsb2cucHVzaChgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKCR7U3RyaW5nKG5hbWUpfSlgKTsKKyAgICAgICAgICAgIHJldHVybiBSZWZs
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIG5hbWUpOworICAgICAgICB9LAor
ICAgICAgICBnZXQoKSB7IHRocm93IG5ldyBFcnJvcignW1tHZXRdXSB0cmFwIHNob3VsZCBiZSB1
bnJlYWNoYWJsZScpOyB9LAorICAgICAgICBzZXQoKSB7IHRocm93IG5ldyBFcnJvcignW1tTZXRd
XSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScpOyB9LAorICAgICAgICBkZWxldGVQcm9wZXJ0
eSgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0RlbGV0ZV1dIHRyYXAgc2hvdWxkIGJlIHVucmVhY2hh
YmxlJyk7IH0sCisgICAgICAgIGRlZmluZVByb3BlcnR5KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tb
RGVmaW5lT3duUHJvcGVydHldXSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScpOyB9CisgICAg
fSk7CisKKyAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMo
UCk7CisgICAgc2hvdWxkQmUoJ293bktleXMoKXxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoMCl8
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKDEpfGdldE93blByb3BlcnR5RGVzY3JpcHRvcihhKXxn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3ltYm9sKHRlc3QpKScsIGxvZy5qb2luKCd8JykpOwor
ICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFswXSwgMCwgJ3Jlc3VsdFswXScpOworICAg
IHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFsxXSwgMSwgJ3Jlc3VsdFsxXScpOworICAgIHNo
b3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdC5hLCAyLCAncmVzdWx0WyJhIl0nKTsKKyAgICBzaG91
bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbc3ltXSwgMywgJ3Jlc3VsdFtTeW1ib2wodGVzdCldJyk7
CisKKyAgICB2YXIgcmVzdWx0MiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKE8p
OworICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdDJbMF0sIDAsICdyZXN1bHQyWzBdJyk7
CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0MlsxXSwgMSwgJ3Jlc3VsdDJbMV0nKTsK
KyAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQyLmEsIDIsICdyZXN1bHQyWyJhIl0nKTsK
KyAgICBzaG91bGRCZURhdGFQcm9wZXJ0eShyZXN1bHQyW3N5bV0sIDMsICdyZXN1bHQyW1N5bWJv
bCh0ZXN0KV0nKTsKK30pKCk7CisKKyhmdW5jdGlvbiB0ZXN0RHVwbGljYXRlUHJvcGVydHlOYW1l
cygpIHsKKyAgICB2YXIgaSA9IDA7CisgICAgdmFyIGxvZyA9IFtdOworICAgIHZhciBQID0gbmV3
IFByb3h5KHt9LCB7CisgICAgb3duS2V5cygpIHsKKyAgICAgICAgbG9nLnB1c2goYG93bktleXMo
KWApOworICAgICAgICByZXR1cm4gWyAnQScsICdBJyBdOworICAgIH0sCisgICAgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHQsIG5hbWUpIHsKKyAgICAgICAgbG9nLnB1c2goYGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigke25hbWV9KWApOworICAgICAgICBpZiAoaSsrKSByZXR1cm47CisgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAg
ICB3cml0YWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogJ1ZBTFVFJworICAgICAgICB9
OworICAgIH0sCisgICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tbR2V0XV0gdHJhcCBzaG91
bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKKyAgICBzZXQoKSB7IHRocm93IG5ldyBFcnJvcignW1tT
ZXRdXSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScpOyB9LAorICAgIGRlbGV0ZVByb3BlcnR5
KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tbRGVsZXRlXV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFi
bGUnKTsgfSwKKyAgICBkZWZpbmVQcm9wZXJ0eSgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0RlZmlu
ZU93blByb3BlcnR5XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfQorICB9KTsKKwor
ICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoUCk7CisgIHNo
b3VsZEJlKHRydWUsIHJlc3VsdC5BLmNvbmZpZ3VyYWJsZSwgJ2ZvciByZXN1bHQuQS5jb25maWd1
cmFibGUnKTsKKyAgc2hvdWxkQmUoZmFsc2UsIHJlc3VsdC5BLndyaXRhYmxlLCAnZm9yIHJlc3Vs
dC5BLndyaXRhYmxlJyk7CisgIHNob3VsZEJlKCdWQUxVRScsIHJlc3VsdC5BLnZhbHVlLCAnZm9y
IHJlc3VsdC5BLnZhbHVlJyk7CisgIHNob3VsZEJlKGZhbHNlLCByZXN1bHQuQS5lbnVtZXJhYmxl
LCAnZm9yIHJlc3VsdC5BLmVudW1lcmFibGUnKTsKKyAgc2hvdWxkQmUodHJ1ZSwgT2JqZWN0Lmhh
c093blByb3BlcnR5LmNhbGwocmVzdWx0LCAnQScpKTsKKyAgc2hvdWxkQmUoJ293bktleXMoKXxn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQSl8Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEEpJywg
bG9nLmpvaW4oJ3wnKSk7Cit9KSgpOworCisoZnVuY3Rpb24gdGVzdFVuZGVmaW5lZFByb3BlcnR5
RGVzY3JpcHRvcigpIHsKKyAgICB2YXIgbG9nID0gW107CisgICAgdmFyIFAgPSBuZXcgUHJveHko
e30sIHsKKyAgICAgICAgb3duS2V5cygpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKGBvd25LZXlz
KClgKTsKKyAgICAgICAgICAgIHJldHVybiBbJ2Zha2VQcm9wZXJ0eSddOworICAgICAgICB9LAor
ICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgbmFtZSkgeworICAgICAgICAgICAg
bG9nLnB1c2goYGdldE93blByb3BlcnR5RGVzY3JpcHRvcigke25hbWV9KWApOworICAgICAgICAg
ICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0KCkgeyB0aHJvdyBu
ZXcgRXJyb3IoJ1tbR2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfSwKKyAgICAg
ICAgc2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1tbU2V0XV0gdHJhcCBzaG91bGQgYmUgdW5yZWFj
aGFibGUnKTsgfSwKKyAgICAgICAgZGVsZXRlUHJvcGVydHkoKSB7IHRocm93IG5ldyBFcnJvcign
W1tEZWxldGVdXSB0cmFwIHNob3VsZCBiZSB1bnJlYWNoYWJsZScpOyB9LAorICAgICAgICBkZWZp
bmVQcm9wZXJ0eSgpIHsgdGhyb3cgbmV3IEVycm9yKCdbW0RlZmluZU93blByb3BlcnR5XV0gdHJh
cCBzaG91bGQgYmUgdW5yZWFjaGFibGUnKTsgfQorICAgIH0pOworCisgICAgdmFyIHJlc3VsdCA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKFApOworICAgIHNob3VsZEJlKGZhbHNl
LCByZXN1bHQuaGFzT3duUHJvcGVydHkoJ2Zha2VQcm9wZXJ0eScpKTsKKyAgICBzaG91bGRCZShm
YWxzZSwgJ2Zha2VQcm9wZXJ0eScgaW4gcmVzdWx0KTsKKyAgICBzaG91bGRCZSgnb3duS2V5cygp
fGdldE93blByb3BlcnR5RGVzY3JpcHRvcihmYWtlUHJvcGVydHkpJywgbG9nLmpvaW4oJ3wnKSk7
Cit9KSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9P
YmplY3Rfc3RhdGljX21ldGhvZHNfT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL09iamVjdF9zdGF0aWNfbWV0aG9k
c19PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjMwZTdl
MGU3MjE5YmFkZThiZGFmMTkzNjA3Nzk1ZDhlMDBmMGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9PYmplY3Rfc3RhdGljX21ldGhvZHNfT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMuanMKQEAgLTAsMCArMSwxNTMgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZv
aWQgMCkKKyAgICAgICAgbXNnID0gJyc7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAnIGZvciAn
ICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZScgKyBtc2cgKyAnOiAnICsgYWN0dWFsICsgJy4gRXhwZWN0ZWQgJyAr
IGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVEYXRhUHJvcGVydHkoZXhwZWN0ZWQsIHZhbHVlLCBuYW1lKSB7CisgICAgaWYgKG5hbWUgPT09
IHZvaWQgMCkKKyAgICAgICAgbmFtZSA9ICc8cHJvcGVydHkgZGVzY3JpcHRvcj4nOworICAgIHNo
b3VsZEJlKHZhbHVlLCBleHBlY3RlZC52YWx1ZSwgbmFtZSArICcudmFsdWUnKTsKKyAgICBzaG91
bGRCZSh0cnVlLCBleHBlY3RlZC5lbnVtZXJhYmxlLCBuYW1lICsgJy5lbnVtZXJhYmxlJyk7Cisg
ICAgc2hvdWxkQmUodHJ1ZSwgZXhwZWN0ZWQuY29uZmlndXJhYmxlLCBuYW1lICsgJy5jb25maWd1
cmFibGUnKTsKKyAgICBzaG91bGRCZSh0cnVlLCBleHBlY3RlZC53cml0YWJsZSwgbmFtZSArICcu
d3JpdGFibGUnKTsKKyAgICBzaG91bGRCZSh1bmRlZmluZWQsIGV4cGVjdGVkLmdldCwgbmFtZSAr
ICcuZ2V0Jyk7CisgICAgc2hvdWxkQmUodW5kZWZpbmVkLCBleHBlY3RlZC5zZXQsIG5hbWUgKyAn
LnNldCcpOworfQorCisoZnVuY3Rpb24gdGVzdE1ldGEoKSB7CisgICAgc2hvdWxkQmUoMSwgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMubGVuZ3RoKTsKKworICAgIHNob3VsZEJlKCdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzJywgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cnMubmFtZSk7CisKKyAgICB2YXIgcHJvcGVydHlEZXNjcmlwdG9yID0gUmVmbGVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycycpOwor
ICAgIHNob3VsZEJlKGZhbHNlLCBwcm9wZXJ0eURlc2NyaXB0b3IuZW51bWVyYWJsZSk7CisgICAg
c2hvdWxkQmUodHJ1ZSwgcHJvcGVydHlEZXNjcmlwdG9yLndyaXRhYmxlKTsKKyAgICBzaG91bGRC
ZSh0cnVlLCBwcm9wZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhYmxlKTsKKworICAgIHNob3VsZFRo
cm93KCgpID0+IG5ldyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh7fSksICJUeXBl
RXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoe30pJykiKTsKK30pKCk7CisKKyhmdW5jdGlv
biB0ZXN0VG9PYmplY3QoKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcnMobnVsbCksICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobnVsbCknKSIp
OworICAgIHNob3VsZFRocm93KCgpID0+IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Jz
KHVuZGVmaW5lZCksICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh1bmRlZmluZWQpJykiKTsK
KyAgICBzaG91bGRUaHJvdygoKSA9PiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycygp
LCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoKScpIik7Cit9KSgpOworCisoZnVuY3Rpb24g
dGVzdFByb3RvdHlwZVByb3BlcnRpZXMoKSB7CisgICAgZnVuY3Rpb24gRigpIHt9OworICAgIEYu
cHJvdG90eXBlLmEgPSAnQSc7CisgICAgRi5wcm90b3R5cGUuYiA9ICdCJzsKKyAgICBGLnByb3Rv
dHlwZVs5OTk5XSA9ICcwJzsKKyAgICBGLnByb3RvdHlwZVswXSA9ICcwJzsKKworICAgIHZhciBG
MiA9IG5ldyBGKCk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRjIsIHsKKyAgICAgICAg
J2InOiB7CisgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIGNvbmZp
Z3VyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKKyAgICAgICAgICAg
IHZhbHVlOiAnU2hhZG93ZWQgIkIiJworICAgICAgICB9LAorICAgICAgICAnYyc6IHsKKyAgICAg
ICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVl
LAorICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6ICdDJwor
ICAgICAgICB9LAorICAgICAgICA5OTk4OiB7CisgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVl
LAorICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAgd3JpdGFibGU6
IHRydWUsCisgICAgICAgICAgICB2YWx1ZTogJ1gnCisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHZhciByZXN1bHQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhGMik7CisKKyAg
ICBzaG91bGRCZSh1bmRlZmluZWQsIHJlc3VsdFswXSk7CisKKyAgICBzaG91bGRCZShyZXN1bHRb
OTk5OF0uZW51bWVyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUocmVzdWx0Wzk5OThdLmNvbmZp
Z3VyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUocmVzdWx0Wzk5OThdLndyaXRhYmxlLCB0cnVl
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbOTk5OF0udmFsdWUsICdYJykKKworICAgIHNob3VsZEJl
KHVuZGVmaW5lZCwgcmVzdWx0Wzk5OTldKTsKKworICAgIHNob3VsZEJlKHVuZGVmaW5lZCwgcmVz
dWx0LmEpOworCisgICAgc2hvdWxkQmUocmVzdWx0LmIuZW51bWVyYWJsZSwgZmFsc2UpOworICAg
IHNob3VsZEJlKHJlc3VsdC5iLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUocmVz
dWx0LmIud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZXN1bHQuYi52YWx1ZSwgJ1No
YWRvd2VkICJCIicpOworCisgICAgc2hvdWxkQmUocmVzdWx0LmMuZW51bWVyYWJsZSwgZmFsc2Up
OworICAgIHNob3VsZEJlKHJlc3VsdC5jLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUocmVzdWx0LmMud3JpdGFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZXN1bHQuYy52YWx1
ZSwgJ0MnKTsKK30pKCk7CisKKyhmdW5jdGlvbiB0ZXN0R2xvYmFsUHJveHkoZ2xvYmFsKSB7Cisg
ICAgdmFyIHN5bWJvbCA9IFN5bWJvbCgndGVzdCcpOworICAgIGdsb2JhbFtzeW1ib2xdID0gJ1N5
bWJvbCh0ZXN0KSc7CisKKyAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcnMoZ2xvYmFsKTsKKworICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFtzeW1i
b2xdLCAnU3ltYm9sKHRlc3QpJywgJ2dsb2JhbFtTeW1ib2wodGVzdCldJyk7CisgICAgZGVsZXRl
IGdsb2JhbFtzeW1ib2xdOworfSkodGhpcyk7CisKKyhmdW5jdGlvbiB0ZXN0SW5kZXhlZFByb3Bl
cnRpZXMoKSB7CisgICAgdmFyIG9iamVjdCA9IHsgMDogJ3Rlc3QnIH07CisgICAgdmFyIHJlc3Vs
dCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7CisgICAgc2hvdWxk
QmVEYXRhUHJvcGVydHkocmVzdWx0WzBdLCAndGVzdCcsICdyZXN1bHRbMF0nKTsKKyAgICBzaG91
bGRCZURhdGFQcm9wZXJ0eShyZXN1bHRbJzAnXSwgJ3Rlc3QnLCAncmVzdWx0WyIwIl0nKTsKKyAg
ICBzaG91bGRCZShyZXN1bHRbMF0sIHJlc3VsdFsnMCddKTsKK30pKCk7CisKKworKGZ1bmN0aW9u
IHRlc3RQcm9wZXJ0aWVzSW5kZXhlZFNldHRlck9uUHJvdG90eXBlVGhyb3dzKCkgeworICAgIHZh
ciBzeW1ib2wgPSBTeW1ib2woJ3Rlc3QnKTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhP
YmplY3QucHJvdG90eXBlLCB7CisgICAgICAgIDA6IHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSwKKyAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuOyB9LAorICAgICAgICAgICAgc2V0
KHYpIHsgdGhyb3cgbmV3IEVycm9yKCJTZXR0ZXIgb24gcHJvdG90eXBlIHNob3VsZCBiZSB1bnJl
YWNoYWJsZSEiKTsgfQorICAgICAgICB9LAorICAgICAgICBhOiB7CisgICAgICAgICAgICBjb25m
aWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICBnZXQoKSB7IHJldHVybjsgfSwKKyAgICAgICAg
ICAgIHNldCh2KSB7IHRocm93IG5ldyBFcnJvcigiU2V0dGVyIG9uIHByb3RvdHlwZSBzaG91bGQg
YmUgdW5yZWFjaGFibGUhIik7IH0KKyAgICAgICAgfSwKKyAgICAgICAgW3N5bWJvbF06IHsKKyAg
ICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGdldCgpIHsgcmV0dXJu
OyB9LAorICAgICAgICAgICAgc2V0KHYpIHsgdGhyb3cgbmV3IEVycm9yKCJTZXR0ZXIgb24gcHJv
dG90eXBlIHNob3VsZCBiZSB1bnJlYWNoYWJsZSEiKTsgfQorICAgICAgICB9CisgICAgfSk7Cisg
ICAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHsgMDogMSwg
YTogMiwgW3N5bWJvbF06IDMgfSkKKyAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZVswXTsKKyAg
ICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5hOworICAgIGRlbGV0ZSBPYmplY3QucHJvdG90eXBl
W3N5bWJvbF07CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0WzBdLCAxLCAncmVzdWx0
WzBdJyk7CisgICAgc2hvdWxkQmVEYXRhUHJvcGVydHkocmVzdWx0LmEsIDIsICdyZXN1bHRbImEi
XScpOworICAgIHNob3VsZEJlRGF0YVByb3BlcnR5KHJlc3VsdFtzeW1ib2xdLCAzLCAncmVzdWx0
W3N5bWJvbF0nKTsKK30pKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>