<?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>178462</bug_id>
          
          <creation_ts>2017-10-18 08:49:10 -0700</creation_ts>
          <short_desc>[Settings] Miscellaneous cleanup of the settings generation scripts</short_desc>
          <delta_ts>2017-10-18 10:11:27 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1361712</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-18 08:49:10 -0700</bug_when>
    <thetext>[Settings] Miscellaneous cleanup of the settings generation scripts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361713</commentid>
    <comment_count>1</comment_count>
      <attachid>324119</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-18 08:56:44 -0700</bug_when>
    <thetext>Created attachment 324119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361719</commentid>
    <comment_count>2</comment_count>
      <attachid>324121</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-18 09:11:03 -0700</bug_when>
    <thetext>Created attachment 324121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361745</commentid>
    <comment_count>3</comment_count>
      <attachid>324121</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-18 10:00:43 -0700</bug_when>
    <thetext>Comment on attachment 324121
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        - Make functions operating on the python Setting object member functions

python =&gt; Python

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:82
&gt; +        if self.setNeedsStyleRecalcInAllFrames:
&gt; +            return True
&gt; +        return False

return self.setNeedsStyleRecalcInAllFrames

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:87
&gt; +        if self.type == &apos;String&apos;:
&gt; +            return False
&gt; +        return True

return self.type != &apos;String&apos;

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:90
&gt; +        for prefix in [&quot;css&quot;, &quot;xss&quot;, &quot;ftp&quot;, &quot;dom&quot;]:

&quot; =&gt; &apos;

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:92
&gt; +                return &quot;set&quot; + uppercaseFirstN(self.name, len(prefix))

Ditto.

&gt; Source/WebCore/Scripts/GenerateSettings/Settings.py:93
&gt; +        return &quot;set&quot; + uppercaseFirstN(self.name, 1)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361754</commentid>
    <comment_count>4</comment_count>
      <attachid>324121</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-18 10:10:21 -0700</bug_when>
    <thetext>Comment on attachment 324121
Patch

Clearing flags on attachment: 324121

Committed r223612: &lt;https://trac.webkit.org/changeset/223612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361755</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-18 10:10:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361756</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-18 10:11:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/35053975&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324119</attachid>
            <date>2017-10-18 08:56:44 -0700</date>
            <delta_ts>2017-10-18 09:11:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178462-20171018085643.patch</filename>
            <type>text/plain</type>
            <size>31821</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTEwLTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNaXNjZWxsYW5lb3Vz
IGNsZWFudXAgb2YgdGhlIHNldHRpbmdzIGdlbmVyYXRpb24gc2NyaXB0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NDYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBTdG9wIGdlbmVyYXRpbmcgYW5k
IHJlbW92ZSBub3cgdW51c2VkIFNldHRpbmdzTWFjcm9zLmgKKyAgICAgICAgLSBNYWtlIGZ1bmN0
aW9ucyBvcGVyYXRpbmcgb24gdGhlIHB5dGhvbiBTZXR0aW5nIG9iamVjdCBtZW1iZXIgZnVuY3Rp
b25zCisgICAgICAgIC0gQWRkIHByZWRpY2F0ZSB0byBkZXRlcm1pbmUgaWYgYSBTZXR0aW5nJ3Mg
dHlwZSBpcyBhIHZhbHVlIHR5cGUsIGFsbG93aW5nCisgICAgICAgICAgdXMgdG8gZXhjbHVkZSB0
aG9zZSBmcm9tIHVzaW5nIGNvbnN0IHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNjcmlwdHMv
R2VuZXJhdGVTZXR0aW5ncy5weToKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3Mv
R2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAgKiBTY3JpcHRz
L0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSURMRmlsZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdz
SW1wbGVtZW50YXRpb25GaWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvR2VuZXJhdGVTZXR0aW5n
cy9HZW5lcmF0ZVNldHRpbmdzLnB5OgorICAgICAgICAqIFNjcmlwdHMvR2VuZXJhdGVTZXR0aW5n
cy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVy
YXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc01hY3Jvc0hlYWRl
ci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGlu
Z3MucHk6CisgICAgICAgICogV2ViQ29yZU1hY3Jvcy5jbWFrZToKKwogMjAxNy0xMC0xOCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtTZXR0aW5nc10gUmVwbGFjZSBt
YWNyb3MgaW4gU2V0dGluZ3MuaC9jcHAgd2l0aCBnZW5lcmF0ZWQgY29kZQpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MDAwLDggKzQwMDAsNyBAQCBHRU5FUkFURV9FVkVO
VF9GQUNUT1JZKCR7V0VCQ09SRV9ESVJ9L2RvCiBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURf
U09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRXZlbnRUYXJnZXRJbnRlcmZh
Y2VzLmgpCiAKIAotR0VORVJBVEVfU0VUVElOR1NfTUFDUk9TKCR7V0VCQ09SRV9ESVJ9L3BhZ2Uv
U2V0dGluZ3MuaW4gU2V0dGluZ3NNYWNyb3MuaCkKLWxpc3QoQVBQRU5EIFdlYkNvcmVfREVSSVZF
RF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9TZXR0aW5nc01hY3Jvcy5o
KQorR0VORVJBVEVfU0VUVElOR1NfTUFDUk9TKCR7V0VCQ09SRV9ESVJ9L3BhZ2UvU2V0dGluZ3Mu
aW4gU2V0dGluZ3MuaCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9TZXR0aW5ncy5oKQogbGlzdChBUFBFTkQgV2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1NldHRpbmdz
LmNwcCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjIzNjA3KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3MCwxMiAr
MTM3MCwxMSBAQCBHRU5FUkFURV9TRVRUSU5HU19TQ1JJUFRTID0gXAogICAgICQoV2ViQ29yZSkv
U2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3MucHkgXAogICAgICQoV2Vi
Q29yZSkvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NIZWFkZXJGaWxl
LnB5IFwKICAgICAkKFdlYkNvcmUpL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNl
dHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5IFwKLSAgICAkKFdlYkNvcmUpL1NjcmlwdHMvR2Vu
ZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzTWFjcm9zSGVhZGVyLnB5IFwKICAgICAkKFdl
YkNvcmUpL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9TZXR0aW5ncy5weSBcCiAgICAgJChXZWJD
b3JlKS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvX19pbml0X18ucHkKIAotYWxsIDogSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIFNldHRpbmdzLmNwcCBTZXR0aW5ncy5oIFNldHRpbmdz
TWFjcm9zLmgKLUludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQlaWRsIEludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQlY3BwIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQlaCBTZXR0aW5ncyVjcHAgU2V0
dGluZ3MlaCBTZXR0aW5nc01hY3JvcyVoIDogJChXZWJDb3JlKS9TY3JpcHRzL0dlbmVyYXRlU2V0
dGluZ3MucHkgJChHRU5FUkFURV9TRVRUSU5HU19TQ1JJUFRTKSBwYWdlL1NldHRpbmdzLmluCith
bGwgOiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbCBJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmNwcCBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggU2V0dGluZ3MuY3BwIFNldHRpbmdz
LmgKK0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQlaWRsIEludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQlY3BwIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQlaCBTZXR0aW5ncyVjcHAgU2V0dGluZ3Ml
aCA6ICQoV2ViQ29yZSkvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzLnB5ICQoR0VORVJBVEVfU0VU
VElOR1NfU0NSSVBUUykgcGFnZS9TZXR0aW5ncy5pbgogCSQoUFlUSE9OKSAkPCAtLWlucHV0ICQo
V2ViQ29yZSkvcGFnZS9TZXR0aW5ncy5pbgogCiAjIC0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlTWFjcm9zLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmVNYWNyb3MuY21ha2UJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmVNYWNyb3MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNiBAQCBtYWNy
byhHRU5FUkFURV9TRVRUSU5HU19NQUNST1MgX2luZmlsZSBfCiAgICAgIyBidWlsZCBpbiBwYXJh
bGxlbCBvciB0aGUgdHdvIGluc3RhbmNlcyBvZiB0aGUgcnVsZSBtYXkgY29uZmxpY3QuCiAgICAg
IyA8aHR0cHM6Ly9jbWFrZS5vcmcvY21ha2UvaGVscC92My4wL2NvbW1hbmQvYWRkX2N1c3RvbV9j
b21tYW5kLmh0bWw+CiAgICAgc2V0KF9leHRyYV9vdXRwdXQKLSAgICAgICAgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1NldHRpbmdzLmgKICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L1NldHRpbmdzLmNwcAogICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oCiAgICAgICAgICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcApAQCAtMjIy
LDcgKzIyMSw2IEBAIG1hY3JvKEdFTkVSQVRFX1NFVFRJTkdTX01BQ1JPUyBfaW5maWxlIF8KICAg
ICAgICAgJHtXRUJDT1JFX0RJUn0vU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlSW50
ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQogICAgICAgICAke1dFQkNPUkVfRElS
fS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkK
ICAgICAgICAgJHtXRUJDT1JFX0RJUn0vU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRl
U2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUucHkKLSAgICAgICAgJHtXRUJDT1JFX0RJUn0vU2Ny
aXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NNYWNyb3NIZWFkZXIucHkKICAg
ICAgICAgJHtXRUJDT1JFX0RJUn0vU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0
dGluZ3MucHkKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdz
L1NldHRpbmdzLnB5CiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvR2VuZXJhdGVTZXR0
aW5ncy9fX2luaXRfXy5weQpJbmRleDogU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNl
dHRpbmdzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVT
ZXR0aW5ncy5weQkocmV2aXNpb24gMjIzNjA3KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9H
ZW5lcmF0ZVNldHRpbmdzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIGRlZiBt
YWluKCk6CiAKICAgICBnZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZShvdXRwdXREaXJlY3Rvcnks
IHNldHRpbmdzKQogICAgIGdlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUob3V0cHV0
RGlyZWN0b3J5LCBzZXR0aW5ncykKLSAgICBnZW5lcmF0ZVNldHRpbmdzTWFjcm9zSGVhZGVyKG91
dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpCiAgICAgZ2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSURM
RmlsZShvdXRwdXREaXJlY3RvcnksIHNldHRpbmdzKQogICAgIGdlbmVyYXRlSW50ZXJuYWxTZXR0
aW5nc0hlYWRlckZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncykKICAgICBnZW5lcmF0ZUlu
dGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5n
cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0
ZUludGVybmFsU2V0dGluZ3NIZWFkZXJGaWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0dGluZ3NIZWFk
ZXJGaWxlLnB5CShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dl
bmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSGVhZGVyRmlsZS5weQkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBpbXBvcnQgb3MucGF0aAogCi1mcm9tIFNl
dHRpbmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcsIG1hcFRvSURMVHlw
ZSwgbWFrZVNldHRlckZ1bmN0aW9uTmFtZQorZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwg
bWFrZUNvbmRpdGlvbmFsU3RyaW5nCiAKIAogZGVmIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0hl
YWRlckZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC01MSwxMiArNTEsMTIgQEAg
ZGVmIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0hlYWRlckZpbGUobwogCiAgICAgZm9yIHNldHRp
bmdOYW1lIGluIHNvcnRlZChzZXR0aW5ncy5pdGVya2V5cygpKToKICAgICAgICAgc2V0dGluZyA9
IHNldHRpbmdzW3NldHRpbmdOYW1lXQotICAgICAgICBpZGxUeXBlID0gbWFwVG9JRExUeXBlKHNl
dHRpbmcpCisgICAgICAgIGlkbFR5cGUgPSBzZXR0aW5nLmlkbFR5cGUoKQogICAgICAgICBpZiBu
b3QgaWRsVHlwZToKICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgdHlwZSA9ICJjb25z
dCBTdHJpbmcmIiBpZiBzZXR0aW5nLnR5cGUgPT0gIlN0cmluZyIgZWxzZSBzZXR0aW5nLnR5cGUK
LSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgIHZvaWQgIiArIG1ha2VTZXR0ZXJGdW5jdGlv
bk5hbWUoc2V0dGluZykgKyAiKCIgKyB0eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIik7XG4i
KQorICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgdm9pZCAiICsgc2V0dGluZy5zZXR0ZXJG
dW5jdGlvbk5hbWUoKSArICIoIiArIHR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKTtcbiIp
CiAKICAgICBvdXRwdXRGaWxlLndyaXRlKCJcbiIpCiAgICAgb3V0cHV0RmlsZS53cml0ZSgicHJp
dmF0ZTpcbiIpCkBAIC02NCw3ICs2NCw3IEBAIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NI
ZWFkZXJGaWxlKG8KIAogICAgIGZvciBzZXR0aW5nTmFtZSBpbiBzb3J0ZWQoc2V0dGluZ3MuaXRl
cmtleXMoKSk6CiAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1tzZXR0aW5nTmFtZV0KLSAgICAg
ICAgaWRsVHlwZSA9IG1hcFRvSURMVHlwZShzZXR0aW5nKQorICAgICAgICBpZGxUeXBlID0gc2V0
dGluZy5pZGxUeXBlKCkKICAgICAgICAgaWYgbm90IGlkbFR5cGU6CiAgICAgICAgICAgICBjb250
aW51ZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2Vu
ZXJhdGVJbnRlcm5hbFNldHRpbmdzSURMRmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSURM
RmlsZS5weQkocmV2aXNpb24gMjIzNjA3KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5l
cmF0ZVNldHRpbmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0lETEZpbGUucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJvbSBTZXR0aW5n
cyBpbXBvcnQgbGljZW5zZSwgbWFwVG9JRExUeXBlLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lCitm
cm9tIFNldHRpbmdzIGltcG9ydCBsaWNlbnNlCiAKIAogZGVmIGdlbmVyYXRlSW50ZXJuYWxTZXR0
aW5nc0lETEZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC00MCwxMCArNDAsMTAg
QEAgZGVmIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0lETEZpbGUob3V0cAogCiAgICAgZm9yIHNl
dHRpbmdOYW1lIGluIHNvcnRlZChzZXR0aW5ncy5pdGVya2V5cygpKToKICAgICAgICAgc2V0dGlu
ZyA9IHNldHRpbmdzW3NldHRpbmdOYW1lXQotICAgICAgICBpZGxUeXBlID0gbWFwVG9JRExUeXBl
KHNldHRpbmcpCisgICAgICAgIGlkbFR5cGUgPSBzZXR0aW5nLmlkbFR5cGUoKQogICAgICAgICBp
ZiBub3QgaWRsVHlwZToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIG91dHB1dEZpbGUu
d3JpdGUoIiAgICB2b2lkICIgKyBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpICsgIigi
ICsgaWRsVHlwZSArICIgIiArIHNldHRpbmcubmFtZSArICIpO1xuIikKKyAgICAgICAgb3V0cHV0
RmlsZS53cml0ZSgiICAgIHZvaWQgIiArIHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1lKCkgKyAi
KCIgKyBpZGxUeXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIik7XG4iKQogCiAgICAgb3V0cHV0
RmlsZS53cml0ZSgifTtcbiIpCiAgICAgb3V0cHV0RmlsZS5jbG9zZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdz
SW1wbGVtZW50YXRpb25GaWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlv
bkZpbGUucHkJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2Vu
ZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAot
ZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZVNldHRlckZ1bmN0aW9uTmFtZSwgbWFr
ZUNvbmRpdGlvbmFsU3RyaW5nLCBtYXBUb0lETFR5cGUsIG1ha2VDb25kaXRpb25hbFN0cmluZwor
ZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYWtl
Q29uZGl0aW9uYWxTdHJpbmcKIAogCiBkZWYgZ2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVt
ZW50YXRpb25GaWxlKG91dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpOgpAQCAtNDYsMTQgKzQ2LDE0
IEBAIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGkKIAogICAgIGZvciBz
ZXR0aW5nTmFtZSBpbiBzb3J0ZWQoc2V0dGluZ3MuaXRlcmtleXMoKSk6CiAgICAgICAgIHNldHRp
bmcgPSBzZXR0aW5nc1tzZXR0aW5nTmFtZV0KLSAgICAgICAgaWRsVHlwZSA9IG1hcFRvSURMVHlw
ZShzZXR0aW5nKQorICAgICAgICBpZGxUeXBlID0gc2V0dGluZy5pZGxUeXBlKCkKICAgICAgICAg
aWYgbm90IGlkbFR5cGU6CiAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgIGlmIHNldHRp
bmcuY29uZGl0aW9uYWw6CiAgICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjaWYgIiArIG1h
a2VDb25kaXRpb25hbFN0cmluZyhzZXR0aW5nLmNvbmRpdGlvbmFsKSArICJcbiIpCiAKLSAgICAg
ICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICwgbV8iICsgc2V0dGluZy5uYW1lICsgIihwYWdlLT5z
ZXR0aW5ncygpLiIgKyBzZXR0aW5nLm5hbWUgKyAiKCkpXG4iKQorICAgICAgICBvdXRwdXRGaWxl
LndyaXRlKCIgICAgLCBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiKHBhZ2UtPnNldHRpbmdzKCkuIiAr
IHNldHRpbmcuZ2V0dGVyRnVuY3Rpb25OYW1lKCkgKyAiKCkpXG4iKQogCiAgICAgICAgIGlmIHNl
dHRpbmcuY29uZGl0aW9uYWw6CiAgICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjZW5kaWZc
biIpCkBAIC03MCwxNCArNzAsMTQgQEAgZGVmIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxl
bWVudGF0aQogCiAgICAgZm9yIHNldHRpbmdOYW1lIGluIHNvcnRlZChzZXR0aW5ncy5pdGVya2V5
cygpKToKICAgICAgICAgc2V0dGluZyA9IHNldHRpbmdzW3NldHRpbmdOYW1lXQotICAgICAgICBp
ZGxUeXBlID0gbWFwVG9JRExUeXBlKHNldHRpbmcpCisgICAgICAgIGlkbFR5cGUgPSBzZXR0aW5n
LmlkbFR5cGUoKQogICAgICAgICBpZiBub3QgaWRsVHlwZToKICAgICAgICAgICAgIGNvbnRpbnVl
CiAKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAgICAgICAgICAgIG91dHB1dEZp
bGUud3JpdGUoIiNpZiAiICsgbWFrZUNvbmRpdGlvbmFsU3RyaW5nKHNldHRpbmcuY29uZGl0aW9u
YWwpICsgIlxuIikKIAotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgbV9wYWdlLT5zZXR0
aW5ncygpLiIgKyBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpICsgIihtXyIgKyBzZXR0
aW5nLm5hbWUgKyAiKTtcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICBtX3BhZ2Ut
PnNldHRpbmdzKCkuIiArIHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1lKCkgKyAiKG1fIiArIHNl
dHRpbmcubmFtZSArICIpO1xuIikKIAogICAgICAgICBpZiBzZXR0aW5nLmNvbmRpdGlvbmFsOgog
ICAgICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2VuZGlmXG4iKQpAQCAtODYsMTkgKzg2LDE5
IEBAIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGkKIAogICAgIGZvciBz
ZXR0aW5nTmFtZSBpbiBzb3J0ZWQoc2V0dGluZ3MuaXRlcmtleXMoKSk6CiAgICAgICAgIHNldHRp
bmcgPSBzZXR0aW5nc1tzZXR0aW5nTmFtZV0KLSAgICAgICAgaWRsVHlwZSA9IG1hcFRvSURMVHlw
ZShzZXR0aW5nKQorICAgICAgICBpZGxUeXBlID0gc2V0dGluZy5pZGxUeXBlKCkKICAgICAgICAg
aWYgbm90IGlkbFR5cGU6CiAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgIHR5cGUgPSAi
Y29uc3QgU3RyaW5nJiIgaWYgc2V0dGluZy50eXBlID09ICJTdHJpbmciIGVsc2Ugc2V0dGluZy50
eXBlCiAKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgidm9pZCBJbnRlcm5hbFNldHRpbmdzR2Vu
ZXJhdGVkOjoiICsgbWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKSArICIoIiArIHR5cGUg
KyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKVxuIikKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgi
dm9pZCBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkOjoiICsgc2V0dGluZy5zZXR0ZXJGdW5jdGlv
bk5hbWUoKSArICIoIiArIHR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKVxuIikKICAgICAg
ICAgb3V0cHV0RmlsZS53cml0ZSgie1xuIikKIAogICAgICAgICBpZiBzZXR0aW5nLmNvbmRpdGlv
bmFsOgogICAgICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2lmICIgKyBtYWtlQ29uZGl0aW9u
YWxTdHJpbmcoc2V0dGluZy5jb25kaXRpb25hbCkgKyAiXG4iKQogCi0gICAgICAgIG91dHB1dEZp
bGUud3JpdGUoIiAgICBtX3BhZ2UtPnNldHRpbmdzKCkuIiArIG1ha2VTZXR0ZXJGdW5jdGlvbk5h
bWUoc2V0dGluZykgKyAiKCIgKyBzZXR0aW5nLm5hbWUgKyAiKTtcbiIpCisgICAgICAgIG91dHB1
dEZpbGUud3JpdGUoIiAgICBtX3BhZ2UtPnNldHRpbmdzKCkuIiArIHNldHRpbmcuc2V0dGVyRnVu
Y3Rpb25OYW1lKCkgKyAiKCIgKyBzZXR0aW5nLm5hbWUgKyAiKTtcbiIpCiAKICAgICAgICAgaWYg
c2V0dGluZy5jb25kaXRpb25hbDoKICAgICAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNlbHNl
XG4iKQpJbmRleDogU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVy
YXRlU2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5l
cmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3MucHkJKHJldmlzaW9uIDIyMzYwNykKKysrIFNv
dXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00LDQgKzQsMyBAQCBmcm9tIEdlbmVyYXRlSW50ZXJuYWxTZXR0
aW5nc0lETEZpbGUgaW1wCiBmcm9tIEdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0
aW9uRmlsZSBpbXBvcnQgKgogZnJvbSBHZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZSBpbXBvcnQg
KgogZnJvbSBHZW5lcmF0ZVNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlIGltcG9ydCAqCi1mcm9t
IEdlbmVyYXRlU2V0dGluZ3NNYWNyb3NIZWFkZXIgaW1wb3J0ICoKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3Mv
R2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVy
RmlsZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBpbXBvcnQgb3MucGF0
aAogCi1mcm9tIFNldHRpbmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcs
IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUsIG1ha2VQcmVmZXJyZWRDb25kaXRpb25hbAorZnJvbSBT
ZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYWtlUHJlZmVy
cmVkQ29uZGl0aW9uYWwKIAogCiBkZWYgZ2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUob3V0cHV0
RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC03OCwyMSArNzgsMjIgQEAgZGVmIGdlbmVyYXRlU2V0
dGluZ3NIZWFkZXJGaWxlKG91dHB1dERpcgogCiAKIGRlZiBwcmludEdldHRlckFuZFNldHRlcihv
dXRwdXRGaWxlLCBzZXR0aW5nKToKLSAgICBzZXR0ZXJGdW5jdGlvbk5hbWUgPSBtYWtlU2V0dGVy
RnVuY3Rpb25OYW1lKHNldHRpbmcpCisgICAgc2V0dGVyRnVuY3Rpb25OYW1lID0gc2V0dGluZy5z
ZXR0ZXJGdW5jdGlvbk5hbWUoKQorICAgIGdldHRlckZ1bmN0aW9uTmFtZSA9IHNldHRpbmcuZ2V0
dGVyRnVuY3Rpb25OYW1lKCkKIAotICAgIHdlYmNvcmVFeHBvcnQgPSAiV0VCQ09SRV9FWFBPUlQg
IiBpZiBzZXR0aW5nLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcyBlbHNlICIiCisgICAg
d2ViY29yZUV4cG9ydCA9ICJXRUJDT1JFX0VYUE9SVCAiIGlmIHNldHRpbmcuaGFzQ29tcGxleFNl
dHRlcigpIGVsc2UgIiIKIAotICAgIGlmIHNldHRpbmcudHlwZVswXS5pc2xvd2VyKCk6Ci0gICAg
ICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgc2V0dGluZy50eXBlICsgIiAiICsgc2V0dGlu
Zy5uYW1lICsgIigpIGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSArICI7IH1cbiIp
CisgICAgaWYgc2V0dGluZy50eXBlSXNWYWx1ZVR5cGUoKToKKyAgICAgICAgb3V0cHV0RmlsZS53
cml0ZSgiICAgICIgKyBzZXR0aW5nLnR5cGUgKyAiICIgKyBnZXR0ZXJGdW5jdGlvbk5hbWUgKyAi
KCkgY29uc3QgeyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1lICsgIjsgfVxuIikKICAgICAgICAg
b3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyB3ZWJjb3JlRXhwb3J0ICsgInZvaWQgIiArIHNldHRl
ckZ1bmN0aW9uTmFtZSArICIoIiArIHNldHRpbmcudHlwZSArICIgIiArIHNldHRpbmcubmFtZSAr
ICIpIikKICAgICBlbHNlOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgY29uc3QgIiAr
IHNldHRpbmcudHlwZSArICImICIgKyBzZXR0aW5nLm5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4g
bV8iICsgc2V0dGluZy5uYW1lICsgIjsgfSBcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUo
IiAgICBjb25zdCAiICsgc2V0dGluZy50eXBlICsgIiYgIiArIGdldHRlckZ1bmN0aW9uTmFtZSAr
ICIoKSBjb25zdCB7IHJldHVybiBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiOyB9XG4iKQogICAgICAg
ICBvdXRwdXRGaWxlLndyaXRlKCIgICAgIiArIHdlYmNvcmVFeHBvcnQgKyAidm9pZCAiICsgc2V0
dGVyRnVuY3Rpb25OYW1lICsgIihjb25zdCAiICsgc2V0dGluZy50eXBlICsgIiYgIiArIHNldHRp
bmcubmFtZSArICIpIikKIAotICAgIGlmIHNldHRpbmcuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxs
RnJhbWVzOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCI7IFxuIikKKyAgICBpZiBzZXR0aW5n
Lmhhc0NvbXBsZXhTZXR0ZXIoKToKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiO1xuIikKICAg
ICBlbHNlOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgeyBtXyIgKyBzZXR0aW5nLm5hbWUg
KyAiID0gIiArIHNldHRpbmcubmFtZSArICI7IH0gXG4iKQorICAgICAgICBvdXRwdXRGaWxlLndy
aXRlKCIgeyBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiID0gIiArIHNldHRpbmcubmFtZSArICI7IH1c
biIpCiAKIAogZGVmIHByaW50R2V0dGVyc0FuZFNldHRlcnMob3V0cHV0RmlsZSwgc29ydGVkVW5j
b25kaXRpb25hbFNldHRpbmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3NCeUNv
bmRpdGlvbmFsLCBzZXR0aW5ncyk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVy
YXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVT
ZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weQkocmV2aXNpb24gMjIzNjA3KQorKysgU291cmNl
L1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NJbXBsZW1l
bnRhdGlvbkZpbGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0
IG9zLnBhdGgKIAotZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFs
U3RyaW5nLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lLCBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwK
K2Zyb20gU2V0dGluZ3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywgbWFr
ZVByZWZlcnJlZENvbmRpdGlvbmFsCiAKIAogZGVmIGdlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRh
dGlvbkZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncyk6CkBAIC0xNDcsMTIgKzE0NywxMiBA
QCBkZWYgcHJpbnRJbml0aWFsaXplckxpc3Qob3V0cHV0RmlsZSwgc29yCiAKIAogZGVmIHByaW50
U2V0dGVyQm9keShvdXRwdXRGaWxlLCBzZXR0aW5nKToKLSAgICBpZiBub3Qgc2V0dGluZy5zZXRO
ZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM6CisgICAgaWYgbm90IHNldHRpbmcuaGFzQ29tcGxl
eFNldHRlcigpOgogICAgICAgICByZXR1cm4KIAotICAgIHNldHRlckZ1bmN0aW9uTmFtZSA9IG1h
a2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZykKKyAgICBzZXR0ZXJGdW5jdGlvbk5hbWUgPSBz
ZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSgpCiAKLSAgICBpZiBzZXR0aW5nLnR5cGVbMF0uaXNs
b3dlcigpOgorICAgIGlmIHNldHRpbmcudHlwZUlzVmFsdWVUeXBlKCk6CiAgICAgICAgIG91dHB1
dEZpbGUud3JpdGUoInZvaWQgU2V0dGluZ3M6OiIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKCIg
KyBzZXR0aW5nLnR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKVxuIikKICAgICBlbHNlOgog
ICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCJ2b2lkIFNldHRpbmdzOjoiICsgc2V0dGVyRnVuY3Rp
b25OYW1lICsgIihjb25zdCAiICsgc2V0dGluZy50eXBlICsgIiYgIiArIHNldHRpbmcubmFtZSAr
ICIpXG4iKQpAQCAtMTc0LDcgKzE3NCw3IEBAIGRlZiBwcmludFNldHRlckJvZGllcyhvdXRwdXRG
aWxlLCBzb3J0ZWQKICAgICAgICAgaGFzU2V0dGVyQm9keSA9IEZhbHNlCiAgICAgICAgIGZvciBz
ZXR0aW5nTmFtZSBpbiBzb3J0ZWQoc2V0dGluZ3NCeUNvbmRpdGlvbmFsW2NvbmRpdGlvbmFsXS5p
dGVya2V5cygpKToKICAgICAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1tzZXR0aW5nTmFtZV0K
LSAgICAgICAgICAgIGlmIHNldHRpbmcuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzOgor
ICAgICAgICAgICAgaWYgc2V0dGluZy5oYXNDb21wbGV4U2V0dGVyKCk6CiAgICAgICAgICAgICAg
ICAgaGFzU2V0dGVyQm9keSA9IFRydWUKICAgICAgICAgICAgICAgICBicmVhawogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc01h
Y3Jvc0hlYWRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVy
YXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc01hY3Jvc0hlYWRlci5weQkocmV2aXNpb24gMjIz
NjA3KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRl
U2V0dGluZ3NNYWNyb3NIZWFkZXIucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNzIgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoYykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJl
IG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi1pbXBvcnQgb3MucGF0aAotCi1mcm9tIFNldHRpbmdzIGltcG9ydCBsaWNlbnNlLCBt
YWtlQ29uZGl0aW9uYWxTdHJpbmcsIG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUsIG1ha2VQcmVmZXJy
ZWRDb25kaXRpb25hbAotCi0KLWRlZiBnZW5lcmF0ZVNldHRpbmdzTWFjcm9zSGVhZGVyKG91dHB1
dERpcmVjdG9yeSwgc2V0dGluZ3MpOgotICAgIHNldHRpbmdzQnlDb25kaXRpb25hbCA9IHt9Ci0g
ICAgdW5jb25kaXRpb25hbFNldHRpbmdzID0ge30KLQotICAgIGZvciBzZXR0aW5nTmFtZSBpbiBz
b3J0ZWQoc2V0dGluZ3MuaXRlcmtleXMoKSk6Ci0gICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1tz
ZXR0aW5nTmFtZV0KLSAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKLSAgICAgICAgICAg
IGlmIHNldHRpbmcuY29uZGl0aW9uYWwgbm90IGluIHNldHRpbmdzQnlDb25kaXRpb25hbDoKLSAg
ICAgICAgICAgICAgICBzZXR0aW5nc0J5Q29uZGl0aW9uYWxbc2V0dGluZy5jb25kaXRpb25hbF0g
PSB7fQotICAgICAgICAgICAgc2V0dGluZ3NCeUNvbmRpdGlvbmFsW3NldHRpbmcuY29uZGl0aW9u
YWxdW3NldHRpbmcubmFtZV0gPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1bmNv
bmRpdGlvbmFsU2V0dGluZ3Nbc2V0dGluZy5uYW1lXSA9IFRydWUKLQotICAgIG91dHB1dFBhdGgg
PSBvcy5wYXRoLmpvaW4ob3V0cHV0RGlyZWN0b3J5LCAiU2V0dGluZ3NNYWNyb3MuaCIpCi0gICAg
b3V0cHV0RmlsZSA9IG9wZW4ob3V0cHV0UGF0aCwgJ3cnKQotICAgIG91dHB1dEZpbGUud3JpdGUo
bGljZW5zZSgpKQotCi0gICAgIyBGSVhNRTogU29ydCBieSB0eXBlIHNvIGJvb2xzIGNvbWUgbGFz
dCBhbmQgYXJlIGJpdCBwYWNrZWQuCi0KLSAgICAjIEZJWE1FOiBDb252ZXJ0IHRvICNwcmFnbWEg
b25jZQotICAgIG91dHB1dEZpbGUud3JpdGUoIiNpZm5kZWYgU2V0dGluZ3NNYWNyb3NfaFxuIikK
LSAgICBvdXRwdXRGaWxlLndyaXRlKCIjZGVmaW5lIFNldHRpbmdzTWFjcm9zX2hcblxuIikKLQot
ICAgIHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0aW5nc05hbWVzID0gc29ydGVkKHVuY29uZGl0aW9u
YWxTZXR0aW5ncy5pdGVya2V5cygpKQotICAgIHNvcnRlZENvbmRpdGlvbmFscyA9IHNvcnRlZChz
ZXR0aW5nc0J5Q29uZGl0aW9uYWwuaXRlcmtleXMoKSkKLQotICAgIHByaW50Q29uZGl0aW9uYWxN
YWNyb3Mob3V0cHV0RmlsZSwgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0aW5nc0J5Q29uZGl0aW9u
YWwsIHNldHRpbmdzKQotCi0gICAgcHJpbnRHZXR0ZXJzQW5kU2V0dGVycyhvdXRwdXRGaWxlLCBz
b3J0ZWRVbmNvbmRpdGlvbmFsU2V0dGluZ3NOYW1lcywgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0
aW5ncykKLSAgICBwcmludE1lbWJlclZhcmlhYmxlcyhvdXRwdXRGaWxlLCBzb3J0ZWRVbmNvbmRp
dGlvbmFsU2V0dGluZ3NOYW1lcywgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0aW5ncykKLSAgICBw
cmludEluaXRpYWxpemVyTGlzdChvdXRwdXRGaWxlLCBzb3J0ZWRVbmNvbmRpdGlvbmFsU2V0dGlu
Z3NOYW1lcywgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0aW5ncykKLSAgICBwcmludFNldHRlckJv
ZGllcyhvdXRwdXRGaWxlLCBzb3J0ZWRVbmNvbmRpdGlvbmFsU2V0dGluZ3NOYW1lcywgc29ydGVk
Q29uZGl0aW9uYWxzLCBzZXR0aW5ncykKLQotICAgIG91dHB1dEZpbGUud3JpdGUoIiNlbmRpZiAv
LyBTZXR0aW5nc01hY3Jvc19oXG4iKQotICAgIG91dHB1dEZpbGUuY2xvc2UoKQotCi0KLWRlZiBw
cmludEdldHRlckFuZFNldHRlcihvdXRwdXRGaWxlLCBzZXR0aW5nKToKLSAgICBzZXR0ZXJGdW5j
dGlvbk5hbWUgPSBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpCi0KLSAgICAjIEV4cG9y
dCBpcyBvbmx5IG5lZWRlZCBpZiB0aGUgZGVmaW5pdGlvbiBpcyBub3QgaW4gdGhlIGhlYWRlci4K
LSAgICB3ZWJjb3JlRXhwb3J0ID0gIldFQkNPUkVfRVhQT1JUIiBpZiBzZXR0aW5nLnNldE5lZWRz
U3R5bGVSZWNhbGNJbkFsbEZyYW1lcyBlbHNlICIiCi0KLSAgICAjIEZJWE1FOiBXaGVuIHdlYmNv
cmVFeHBvcnQgaXMgIiIsIGxpbmUgaGFzIGV4dHJhIHNwYWNlLgotCi0gICAgaWYgc2V0dGluZy50
eXBlWzBdLmlzbG93ZXIoKToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBzZXR0
aW5nLnR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKCkgY29uc3QgeyByZXR1cm4gbV8iICsg
c2V0dGluZy5uYW1lICsgIjsgfSBcXFxuIikKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAg
ICIgKyB3ZWJjb3JlRXhwb3J0ICsgIiB2b2lkICIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKCIg
KyBzZXR0aW5nLnR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKSIpCi0gICAgZWxzZToKLSAg
ICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgIGNvbnN0ICIgKyBzZXR0aW5nLnR5cGUgKyAiJiAi
ICsgc2V0dGluZy5uYW1lICsgIigpIGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSAr
ICI7IH0gXFxcbiIpCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgd2ViY29yZUV4
cG9ydCArICIgdm9pZCAiICsgc2V0dGVyRnVuY3Rpb25OYW1lICsgIihjb25zdCAiICsgc2V0dGlu
Zy50eXBlICsgIiYgIiArIHNldHRpbmcubmFtZSArICIpIikKLQotICAgIGlmIHNldHRpbmcuc2V0
TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCI7
IFxcXG4iKQotICAgIGVsc2U6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiB7IG1fIiArIHNl
dHRpbmcubmFtZSArICIgPSAiICsgc2V0dGluZy5uYW1lICsgIjsgfSBcXFxuIikKLQotCi1kZWYg
cHJpbnRTZXR0ZXJCb2R5KG91dHB1dEZpbGUsIHNldHRpbmcpOgotICAgIGlmIG5vdCBzZXR0aW5n
LnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lczoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBz
ZXR0ZXJGdW5jdGlvbk5hbWUgPSBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpCi0KLSAg
ICBpZiBzZXR0aW5nLnR5cGVbMF0uaXNsb3dlcigpOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRl
KCJ2b2lkIFNldHRpbmdzOjoiICsgc2V0dGVyRnVuY3Rpb25OYW1lICsgIigiICsgc2V0dGluZy50
eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIikgXFxcbiIpCi0gICAgZWxzZToKLSAgICAgICAg
b3V0cHV0RmlsZS53cml0ZSgidm9pZCBTZXR0aW5nczo6IiArIHNldHRlckZ1bmN0aW9uTmFtZSAr
ICIoY29uc3QgIiArIHNldHRpbmcudHlwZSArICImICIgKyBzZXR0aW5nLm5hbWUgKyAiKSBcXFxu
IikKLQotICAgIG91dHB1dEZpbGUud3JpdGUoInsgXFxcbiIpCi0gICAgb3V0cHV0RmlsZS53cml0
ZSgiICAgIGlmIChtXyIgKyBzZXR0aW5nLm5hbWUgKyAiID09ICIgKyBzZXR0aW5nLm5hbWUgKyAi
KSBcXFxuIikKLSAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgICAgIHJldHVybjsgXFxcbiIpCi0g
ICAgb3V0cHV0RmlsZS53cml0ZSgiICAgIG1fIiArIHNldHRpbmcubmFtZSArICIgPSAiICsgc2V0
dGluZy5uYW1lICsgIjsgXFxcbiIpCi0gICAgb3V0cHV0RmlsZS53cml0ZSgiICAgIG1fcGFnZS0+
c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7IFxcXG4iKQotICAgIG91dHB1dEZpbGUu
d3JpdGUoIn0gXFxcbiIpCi0KLQotZGVmIHByaW50Q29uZGl0aW9uYWxNYWNyb3Mob3V0cHV0Rmls
ZSwgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0aW5nc0J5Q29uZGl0aW9uYWwsIHNldHRpbmdzKToK
LSAgICBmb3IgY29uZGl0aW9uYWwgaW4gc29ydGVkQ29uZGl0aW9uYWxzOgotICAgICAgICBvdXRw
dXRGaWxlLndyaXRlKCIjaWYgIiArIG1ha2VDb25kaXRpb25hbFN0cmluZyhjb25kaXRpb25hbCkg
KyAiXG4iKQotCi0gICAgICAgICMgR2V0dGVyL1NldHRlcnMKLQotICAgICAgICBzb3J0ZWRTZXR0
aW5nc05hbWVzID0gc29ydGVkKHNldHRpbmdzQnlDb25kaXRpb25hbFtjb25kaXRpb25hbF0uaXRl
cmtleXMoKSkKLQotICAgICAgICBwcmVmZXJyZWRDb25kaXRpb25hbCA9IG1ha2VQcmVmZXJyZWRD
b25kaXRpb25hbChjb25kaXRpb25hbCkKLQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjZGVm
aW5lICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfR0VUVEVSX0FORF9TRVRU
RVJTIFxcXG4iKQotCi0gICAgICAgIGZvciBzZXR0aW5nTmFtZSBpbiBzb3J0ZWRTZXR0aW5nc05h
bWVzOgotICAgICAgICAgICAgcHJpbnRHZXR0ZXJBbmRTZXR0ZXIob3V0cHV0RmlsZSwgc2V0dGlu
Z3Nbc2V0dGluZ05hbWVdKQotCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIi8vIEVuZCBvZiAi
ICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX0dFVFRFUl9BTkRfU0VUVEVSU1xu
IikKLQotICAgICAgICAjIE1lbWJlciB2YXJpYWJsZXMKLQotICAgICAgICBvdXRwdXRGaWxlLndy
aXRlKCIjZGVmaW5lICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfTk9OX0JP
T0xfTUVNQkVSX1ZBUklBQkxFUyBcXFxuIikKLQotICAgICAgICBmb3Igc2V0dGluZ05hbWUgaW4g
c29ydGVkU2V0dGluZ3NOYW1lczoKLSAgICAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1tzZXR0
aW5nTmFtZV0KLSAgICAgICAgICAgIGlmIHNldHRpbmcudHlwZSA9PSAnYm9vbCc6Ci0gICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsg
c2V0dGluZy50eXBlICsgIiBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiOyBcXFxuIikKLQotICAgICAg
ICBvdXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsg
Il9TRVRUSU5HU19OT05fQk9PTF9NRU1CRVJfVkFSSUFCTEVTXG4iKQotCi0gICAgICAgIG91dHB1
dEZpbGUud3JpdGUoIiNkZWZpbmUgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5H
U19CT09MX01FTUJFUl9WQVJJQUJMRVMgXFxcbiIpCi0KLSAgICAgICAgZm9yIHNldHRpbmdOYW1l
IGluIHNvcnRlZFNldHRpbmdzTmFtZXM6Ci0gICAgICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3Nb
c2V0dGluZ05hbWVdCi0gICAgICAgICAgICBpZiBzZXR0aW5nLnR5cGUgIT0gJ2Jvb2wnOgotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAg
IiArIHNldHRpbmcudHlwZSArICIgbV8iICsgc2V0dGluZy5uYW1lICsgIiA6IDE7IFxcXG4iKQot
Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIi8vIEVuZCBvZiAiICsgcHJlZmVycmVkQ29uZGl0
aW9uYWwgKyAiX1NFVFRJTkdTX0JPT0xfTUVNQkVSX1ZBUklBQkxFU1xuIikKLQotICAgICAgICAj
IEluaXRpYWxpemVycwotCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgIiArIHBy
ZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19OT05fQk9PTF9JTklUSUFMSVpFUlMgXFxc
biIpCi0KLSAgICAgICAgZm9yIHNldHRpbmdOYW1lIGluIHNvcnRlZFNldHRpbmdzTmFtZXM6Ci0g
ICAgICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3Nbc2V0dGluZ05hbWVdCi0gICAgICAgICAgICBp
ZiBzZXR0aW5nLnR5cGUgPT0gJ2Jvb2wnOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBpZiBub3Qgc2V0dGluZy5pbml0aWFsOgotICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgLCBtXyIgKyBzZXR0aW5nLm5hbWUg
KyAiKCIgKyBzZXR0aW5nLmluaXRpYWwgKyAiKSBcXFxuIikKLQotICAgICAgICBvdXRwdXRGaWxl
LndyaXRlKCIvLyBFbmQgb2YgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19O
T05fQk9PTF9JTklUSUFMSVpFUlNcbiIpCi0KLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2Rl
ZmluZSAiICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX0JPT0xfSU5JVElBTEla
RVJTIFxcXG4iKQotCi0gICAgICAgIGZvciBzZXR0aW5nTmFtZSBpbiBzb3J0ZWRTZXR0aW5nc05h
bWVzOgotICAgICAgICAgICAgc2V0dGluZyA9IHNldHRpbmdzW3NldHRpbmdOYW1lXQotICAgICAg
ICAgICAgaWYgc2V0dGluZy50eXBlICE9ICdib29sJzoKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgaWYgbm90IHNldHRpbmcuaW5pdGlhbDoKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICwgbV8iICsgc2V0dGlu
Zy5uYW1lICsgIigiICsgc2V0dGluZy5pbml0aWFsICsgIikgXFxcbiIpCi0KLSAgICAgICAgb3V0
cHV0RmlsZS53cml0ZSgiLy8gRW5kIG9mICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VU
VElOR1NfQk9PTF9JTklUSUFMSVpFUlNcbiIpCi0KLSAgICAgICAgIyBTZXR0ZXIgQm9kaWVzCi0K
LSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSAiICsgcHJlZmVycmVkQ29uZGl0aW9u
YWwgKyAiX1NFVFRJTkdTX1NFVFRFUl9CT0RJRVMgXFxcbiIpCi0KLSAgICAgICAgZm9yIHNldHRp
bmdOYW1lIGluIHNvcnRlZFNldHRpbmdzTmFtZXM6Ci0gICAgICAgICAgICBzZXR0aW5nID0gc2V0
dGluZ3Nbc2V0dGluZ05hbWVdCi0gICAgICAgICAgICBwcmludFNldHRlckJvZHkob3V0cHV0Rmls
ZSwgc2V0dGluZykKLQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgIiArIHBy
ZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19TRVRURVJfQk9ESUVTXG4iKQotCi0gICAg
ICAgIG91dHB1dEZpbGUud3JpdGUoIiNlbHNlXG4iKQotICAgICAgICBvdXRwdXRGaWxlLndyaXRl
KCIjZGVmaW5lICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfR0VUVEVSX0FO
RF9TRVRURVJTXG4iKQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjZGVmaW5lICIgKyBwcmVm
ZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfTk9OX0JPT0xfTUVNQkVSX1ZBUklBQkxFU1xu
IikKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSAiICsgcHJlZmVycmVkQ29uZGl0
aW9uYWwgKyAiX1NFVFRJTkdTX0JPT0xfTUVNQkVSX1ZBUklBQkxFU1xuIikKLSAgICAgICAgb3V0
cHV0RmlsZS53cml0ZSgiI2RlZmluZSAiICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJ
TkdTX05PTl9CT09MX0lOSVRJQUxJWkVSU1xuIikKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgi
I2RlZmluZSAiICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX0JPT0xfSU5JVElB
TElaRVJTXG4iKQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjZGVmaW5lICIgKyBwcmVmZXJy
ZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfU0VUVEVSX0JPRElFU1xuIikKLSAgICAgICAgb3V0
cHV0RmlsZS53cml0ZSgiI2VuZGlmXG4iKQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCJcbiIp
Ci0KLQotZGVmIHByaW50R2V0dGVyc0FuZFNldHRlcnMob3V0cHV0RmlsZSwgc29ydGVkVW5jb25k
aXRpb25hbFNldHRpbmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3MpOgotICAg
IG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgU0VUVElOR1NfR0VUVEVSU19BTkRfU0VUVEVSUyBc
XFxuIikKLQotICAgIGZvciB1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWUgaW4gc29ydGVkVW5jb25k
aXRpb25hbFNldHRpbmdzTmFtZXM6Ci0gICAgICAgIHByaW50R2V0dGVyQW5kU2V0dGVyKG91dHB1
dEZpbGUsIHNldHRpbmdzW3VuY29uZGl0aW9uYWxTZXR0aW5nTmFtZV0pCi0KLSAgICBmb3IgY29u
ZGl0aW9uYWwgaW4gc29ydGVkQ29uZGl0aW9uYWxzOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRl
KCIgICAgIiArIG1ha2VQcmVmZXJyZWRDb25kaXRpb25hbChjb25kaXRpb25hbCkgKyAiX1NFVFRJ
TkdTX0dFVFRFUl9BTkRfU0VUVEVSUyBcXFxuIikKLQotICAgIG91dHB1dEZpbGUud3JpdGUoIi8v
IEVuZCBvZiBTRVRUSU5HU19HRVRURVJTX0FORF9TRVRURVJTLlxuXG4iKQotCi0KLWRlZiBwcmlu
dE1lbWJlclZhcmlhYmxlcyhvdXRwdXRGaWxlLCBzb3J0ZWRVbmNvbmRpdGlvbmFsU2V0dGluZ3NO
YW1lcywgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0aW5ncyk6Ci0gICAgb3V0cHV0RmlsZS53cml0
ZSgiI2RlZmluZSBTRVRUSU5HU19NRU1CRVJfVkFSSUFCTEVTIFxcXG4iKQotCi0gICAgIyBXZSBs
aXN0IHRoZSBib29scyBsYXN0IHNvIHdlIGNhbiBiaXQgcGFjayB0aGVtLgotCi0gICAgZm9yIHVu
Y29uZGl0aW9uYWxTZXR0aW5nTmFtZSBpbiBzb3J0ZWRVbmNvbmRpdGlvbmFsU2V0dGluZ3NOYW1l
czoKLSAgICAgICAgc2V0dGluZyA9IHNldHRpbmdzW3VuY29uZGl0aW9uYWxTZXR0aW5nTmFtZV0K
LSAgICAgICAgaWYgc2V0dGluZy50eXBlID09ICJib29sIjoKLSAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgc2V0dGluZy50eXBlICsgIiBtXyIg
KyBzZXR0aW5nLm5hbWUgKyAiOyBcXFxuIikKLQotICAgIGZvciBjb25kaXRpb25hbCBpbiBzb3J0
ZWRDb25kaXRpb25hbHM6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgbWFrZVBy
ZWZlcnJlZENvbmRpdGlvbmFsKGNvbmRpdGlvbmFsKSArICJfU0VUVElOR1NfTk9OX0JPT0xfTUVN
QkVSX1ZBUklBQkxFUyBcXFxuIikKLQotICAgIGZvciB1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWUg
aW4gc29ydGVkVW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXM6Ci0gICAgICAgIHNldHRpbmcgPSBz
ZXR0aW5nc1t1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWVdCi0gICAgICAgIGlmIHNldHRpbmcudHlw
ZSAhPSAiYm9vbCI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBvdXRwdXRGaWxlLndy
aXRlKCIgICAgIiArIHNldHRpbmcudHlwZSArICIgbV8iICsgc2V0dGluZy5uYW1lICsgIiA6IDE7
IFxcXG4iKQotCi0gICAgZm9yIGNvbmRpdGlvbmFsIGluIHNvcnRlZENvbmRpdGlvbmFsczoKLSAg
ICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwo
Y29uZGl0aW9uYWwpICsgIl9TRVRUSU5HU19CT09MX01FTUJFUl9WQVJJQUJMRVMgXFxcbiIpCi0K
LSAgICBvdXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgU0VUVElOR1NfTUVNQkVSX1ZBUklBQkxF
Uy5cblxuIikKLQotCi1kZWYgcHJpbnRJbml0aWFsaXplckxpc3Qob3V0cHV0RmlsZSwgc29ydGVk
VW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3Mp
OgotICAgIG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgU0VUVElOR1NfSU5JVElBTElaRVJfTElT
VCBcXFxuIikKLQotICAgICMgV2UgbGlzdCB0aGUgYm9vbHMgbGFzdCBzbyB3ZSBjYW4gYml0IHBh
Y2sgdGhlbS4KLQotICAgIGZvciB1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWUgaW4gc29ydGVkVW5j
b25kaXRpb25hbFNldHRpbmdzTmFtZXM6Ci0gICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1t1bmNv
bmRpdGlvbmFsU2V0dGluZ05hbWVdCi0gICAgICAgIGlmIHNldHRpbmcudHlwZSA9PSAiYm9vbCI6
Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub3Qgc2V0dGluZy5pbml0aWFsOgot
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICwgbV8i
ICsgc2V0dGluZy5uYW1lICsgIigiICsgc2V0dGluZy5pbml0aWFsICsgIikgXFxcbiIpCi0KLSAg
ICBmb3IgY29uZGl0aW9uYWwgaW4gc29ydGVkQ29uZGl0aW9uYWxzOgotICAgICAgICBvdXRwdXRG
aWxlLndyaXRlKCIgICAgIiArIG1ha2VQcmVmZXJyZWRDb25kaXRpb25hbChjb25kaXRpb25hbCkg
KyAiX1NFVFRJTkdTX05PTl9CT09MX0lOSVRJQUxJWkVSUyBcXFxuIikKLQotICAgIGZvciB1bmNv
bmRpdGlvbmFsU2V0dGluZ05hbWUgaW4gc29ydGVkVW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXM6
Ci0gICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1t1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWVdCi0g
ICAgICAgIGlmIHNldHRpbmcudHlwZSAhPSAiYm9vbCI6Ci0gICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICBpZiBub3Qgc2V0dGluZy5pbml0aWFsOgotICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICwgbV8iICsgc2V0dGluZy5uYW1lICsgIigiICsg
c2V0dGluZy5pbml0aWFsICsgIikgXFxcbiIpCi0KLSAgICBmb3IgY29uZGl0aW9uYWwgaW4gc29y
dGVkQ29uZGl0aW9uYWxzOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgIiArIG1ha2VQ
cmVmZXJyZWRDb25kaXRpb25hbChjb25kaXRpb25hbCkgKyAiX1NFVFRJTkdTX0JPT0xfSU5JVElB
TElaRVJTIFxcXG4iKQotCi0gICAgb3V0cHV0RmlsZS53cml0ZSgiLy8gRW5kIG9mIFNFVFRJTkdT
X0lOSVRJQUxJWkVSX0xJU1QuXG5cbiIpCi0KLQotZGVmIHByaW50U2V0dGVyQm9kaWVzKG91dHB1
dEZpbGUsIHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0aW5nc05hbWVzLCBzb3J0ZWRDb25kaXRpb25h
bHMsIHNldHRpbmdzKToKLSAgICBvdXRwdXRGaWxlLndyaXRlKCIjZGVmaW5lIFNFVFRJTkdTX1NF
VFRFUl9CT0RJRVMgXFxcbiIpCi0KLSAgICBmb3IgdW5jb25kaXRpb25hbFNldHRpbmdOYW1lIGlu
IHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0aW5nc05hbWVzOgotICAgICAgICBzZXR0aW5nID0gc2V0
dGluZ3NbdW5jb25kaXRpb25hbFNldHRpbmdOYW1lXQotICAgICAgICBwcmludFNldHRlckJvZHko
b3V0cHV0RmlsZSwgc2V0dGluZykKLQotICAgIGZvciBjb25kaXRpb25hbCBpbiBzb3J0ZWRDb25k
aXRpb25hbHM6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgbWFrZVByZWZlcnJl
ZENvbmRpdGlvbmFsKGNvbmRpdGlvbmFsKSArICJfU0VUVElOR1NfU0VUVEVSX0JPRElFUyBcXFxu
IikKLQotICAgIG91dHB1dEZpbGUud3JpdGUoIi8vIEVuZCBvZiBTRVRUSU5HU19TRVRURVJfQk9E
SUVTLlxuXG4iKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvU2NyaXB0cy9H
ZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NNYWNyb3NIZWFkZXIucHkKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVT
ZXR0aW5ncy9TZXR0aW5ncy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9TZXR0aW5ncy5weQkod29ya2luZyBj
b3B5KQpAQCAtNzYsMTggKzc2LDQ2IEBAIGNsYXNzIFNldHRpbmc6CiAgICAgICAgICAgICByZXN1
bHQgKz0gIiBSRUNBTEM6IiArIHNlbGYuc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzCiAg
ICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBoYXNDb21wbGV4U2V0dGVyKHNlbGYpOgor
ICAgICAgICBpZiBzZWxmLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lczoKKyAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHR5cGVJc1Zh
bHVlVHlwZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi50eXBlID09ICdTdHJpbmcnOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgc2V0dGVy
RnVuY3Rpb25OYW1lKHNlbGYpOgorICAgICAgICBmb3IgcHJlZml4IGluIFsiY3NzIiwgInhzcyIs
ICJmdHAiLCAiZG9tIl06CisgICAgICAgICAgICBpZiBzZWxmLm5hbWUuc3RhcnRzd2l0aChwcmVm
aXgpOgorICAgICAgICAgICAgICAgIHJldHVybiAic2V0IiArIHVwcGVyY2FzZUZpcnN0TihzZWxm
Lm5hbWUsIGxlbihwcmVmaXgpKQorICAgICAgICByZXR1cm4gInNldCIgKyB1cHBlcmNhc2VGaXJz
dE4oc2VsZi5uYW1lLCAxKQorCisgICAgZGVmIGdldHRlckZ1bmN0aW9uTmFtZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYubmFtZQorCisgICAgZGVmIGlkbFR5cGUoc2VsZik6CisgICAgICAg
ICMgRklYTUU6IEFkZCBzdXBwb3J0IGZvciBtb3JlIHR5cGVzIGluY2x1ZGluZyBlbnVtZXJhdGUg
dHlwZXMuCisgICAgICAgIGlmIHNlbGYudHlwZSA9PSAnaW50JzoKKyAgICAgICAgICAgIHJldHVy
biAnbG9uZycKKyAgICAgICAgaWYgc2VsZi50eXBlID09ICd1bnNpZ25lZCc6CisgICAgICAgICAg
ICByZXR1cm4gJ3Vuc2lnbmVkIGxvbmcnCisgICAgICAgIGlmIHNlbGYudHlwZSA9PSAnZG91Ymxl
JzoKKyAgICAgICAgICAgIHJldHVybiAnZG91YmxlJworICAgICAgICBpZiBzZWxmLnR5cGUgPT0g
J2Zsb2F0JzoKKyAgICAgICAgICAgIHJldHVybiAnZmxvYXQnCisgICAgICAgIGlmIHNlbGYudHlw
ZSA9PSAnU3RyaW5nJzoKKyAgICAgICAgICAgIHJldHVybiAnRE9NU3RyaW5nJworICAgICAgICBp
ZiBzZWxmLnR5cGUgPT0gJ2Jvb2wnOgorICAgICAgICAgICAgcmV0dXJuICdib29sZWFuJworICAg
ICAgICByZXR1cm4gTm9uZQorCiAKIGRlZiB1cHBlcmNhc2VGaXJzdE4oc3RyaW5nLCBuKToKICAg
ICByZXR1cm4gc3RyaW5nWzpuXS51cHBlcigpICsgc3RyaW5nW246XQogCiAKLWRlZiBtYWtlU2V0
dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcpOgotICAgIGZvciBwcmVmaXggaW4gWyJjc3MiLCAieHNz
IiwgImZ0cCIsICJkb20iXToKLSAgICAgICAgaWYgc2V0dGluZy5uYW1lLnN0YXJ0c3dpdGgocHJl
Zml4KToKLSAgICAgICAgICAgIHJldHVybiAic2V0IiArIHVwcGVyY2FzZUZpcnN0TihzZXR0aW5n
Lm5hbWUsIGxlbihwcmVmaXgpKQotICAgIHJldHVybiAic2V0IiArIHVwcGVyY2FzZUZpcnN0Tihz
ZXR0aW5nLm5hbWUsIDEpCi0KLQogZGVmIG1ha2VQcmVmZXJyZWRDb25kaXRpb25hbChjb25kaXRp
b25hbCk6CiAgICAgcmV0dXJuIGNvbmRpdGlvbmFsLnNwbGl0KCd8JylbMF0KIApAQCAtOTcsMjMg
KzEyNSw2IEBAIGRlZiBtYWtlQ29uZGl0aW9uYWxTdHJpbmcoY29uZGl0aW9uYWwpOgogICAgIHJl
dHVybiAiRU5BQkxFKCIgKyAiKSB8fCBFTkFCTEUoIi5qb2luKGNvbmRpdGlvbmFscykgKyAiKSIK
IAogCi1kZWYgbWFwVG9JRExUeXBlKHNldHRpbmcpOgotICAgICMgRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBtb3JlIHR5cGVzIGluY2x1ZGluZyBlbnVtZXJhdGUgdHlwZXMuCi0gICAgaWYgc2V0dGlu
Zy50eXBlID09ICdpbnQnOgotICAgICAgICByZXR1cm4gJ2xvbmcnCi0gICAgaWYgc2V0dGluZy50
eXBlID09ICd1bnNpZ25lZCcgb3Igc2V0dGluZy50eXBlID09ICdzaXplX3QnOgotICAgICAgICBy
ZXR1cm4gJ3Vuc2lnbmVkIGxvbmcnCi0gICAgaWYgc2V0dGluZy50eXBlID09ICdkb3VibGUnOgot
ICAgICAgICByZXR1cm4gJ2RvdWJsZScKLSAgICBpZiBzZXR0aW5nLnR5cGUgPT0gJ2Zsb2F0JzoK
LSAgICAgICAgcmV0dXJuICdmbG9hdCcKLSAgICBpZiBzZXR0aW5nLnR5cGUgPT0gJ1N0cmluZyc6
Ci0gICAgICAgIHJldHVybiAnRE9NU3RyaW5nJwotICAgIGlmIHNldHRpbmcudHlwZSA9PSAnYm9v
bCc6Ci0gICAgICAgIHJldHVybiAnYm9vbGVhbicKLSAgICByZXR1cm4gTm9uZQotCi0KIGRlZiBw
YXJzZUlucHV0KGlucHV0KToKICAgICBzZXR0aW5ncyA9IHt9CiAgICAgZm9yIGxpbmUgaW4gb3Bl
bihpbnB1dCwgInIiKToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324121</attachid>
            <date>2017-10-18 09:11:03 -0700</date>
            <delta_ts>2017-10-18 10:10:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178462-20171018091102.patch</filename>
            <type>text/plain</type>
            <size>36364</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NldHRpbmdzXSBNaXNjZWxsYW5lb3Vz
IGNsZWFudXAgb2YgdGhlIHNldHRpbmdzIGdlbmVyYXRpb24gc2NyaXB0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NDYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBTdG9wIGdlbmVyYXRpbmcgYW5k
IHJlbW92ZSBub3cgdW51c2VkIFNldHRpbmdzTWFjcm9zLmgKKyAgICAgICAgLSBNYWtlIGZ1bmN0
aW9ucyBvcGVyYXRpbmcgb24gdGhlIHB5dGhvbiBTZXR0aW5nIG9iamVjdCBtZW1iZXIgZnVuY3Rp
b25zCisgICAgICAgIC0gQWRkIHByZWRpY2F0ZSB0byBkZXRlcm1pbmUgaWYgYSBTZXR0aW5nJ3Mg
dHlwZSBpcyBhIHZhbHVlIHR5cGUsIGFsbG93aW5nCisgICAgICAgICAgdXMgdG8gZXhjbHVkZSB0
aG9zZSBmcm9tIHVzaW5nIGNvbnN0IHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNjcmlwdHMv
R2VuZXJhdGVTZXR0aW5ncy5weToKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3Mv
R2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAgKiBTY3JpcHRz
L0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSURMRmlsZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdz
SW1wbGVtZW50YXRpb25GaWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvR2VuZXJhdGVTZXR0aW5n
cy9HZW5lcmF0ZVNldHRpbmdzLnB5OgorICAgICAgICAqIFNjcmlwdHMvR2VuZXJhdGVTZXR0aW5n
cy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5weToKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVy
YXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc01hY3Jvc0hlYWRl
ci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGlu
Z3MucHk6CisgICAgICAgICogV2ViQ29yZU1hY3Jvcy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTctMTAtMTggIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbU2V0dGluZ3NdIFJlcGxhY2UgbWFjcm9zIGluIFNl
dHRpbmdzLmgvY3BwIHdpdGggZ2VuZXJhdGVkIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNDAwMCw4ICs0MDAwLDcgQEAgR0VORVJBVEVfRVZFTlRfRkFDVE9SWSgk
e1dFQkNPUkVfRElSfS9kbwogbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oKQogCiAK
LUdFTkVSQVRFX1NFVFRJTkdTX01BQ1JPUygke1dFQkNPUkVfRElSfS9wYWdlL1NldHRpbmdzLmlu
IFNldHRpbmdzTWFjcm9zLmgpCi1saXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUyAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vU2V0dGluZ3NNYWNyb3MuaCkKK0dFTkVSQVRF
X1NFVFRJTkdTX01BQ1JPUygke1dFQkNPUkVfRElSfS9wYWdlL1NldHRpbmdzLmluIFNldHRpbmdz
LmgpCiBsaXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUyAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vU2V0dGluZ3MuaCkKIGxpc3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9TZXR0aW5ncy5jcHApCiBsaXN0
KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHApCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEzNzAsMTIgKzEzNzAsMTEgQEAg
R0VORVJBVEVfU0VUVElOR1NfU0NSSVBUUyA9IFwKICAgICAkKFdlYkNvcmUpL1NjcmlwdHMvR2Vu
ZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzLnB5IFwKICAgICAkKFdlYkNvcmUpL1Njcmlw
dHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSGVhZGVyRmlsZS5weSBcCiAgICAg
JChXZWJDb3JlKS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0ltcGxl
bWVudGF0aW9uRmlsZS5weSBcCi0gICAgJChXZWJDb3JlKS9TY3JpcHRzL0dlbmVyYXRlU2V0dGlu
Z3MvR2VuZXJhdGVTZXR0aW5nc01hY3Jvc0hlYWRlci5weSBcCiAgICAgJChXZWJDb3JlKS9TY3Jp
cHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkgXAogICAgICQoV2ViQ29yZSkvU2NyaXB0
cy9HZW5lcmF0ZVNldHRpbmdzL19faW5pdF9fLnB5CiAKLWFsbCA6IEludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuaWRsIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIEludGVybmFsU2V0dGlu
Z3NHZW5lcmF0ZWQuaCBTZXR0aW5ncy5jcHAgU2V0dGluZ3MuaCBTZXR0aW5nc01hY3Jvcy5oCi1J
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkJWlkbCBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkJWNw
cCBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkJWggU2V0dGluZ3MlY3BwIFNldHRpbmdzJWggU2V0
dGluZ3NNYWNyb3MlaCA6ICQoV2ViQ29yZSkvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzLnB5ICQo
R0VORVJBVEVfU0VUVElOR1NfU0NSSVBUUykgcGFnZS9TZXR0aW5ncy5pbgorYWxsIDogSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIFNldHRpbmdzLmNwcCBTZXR0aW5ncy5oCitJbnRlcm5h
bFNldHRpbmdzR2VuZXJhdGVkJWlkbCBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkJWNwcCBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkJWggU2V0dGluZ3MlY3BwIFNldHRpbmdzJWggOiAkKFdlYkNv
cmUpL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy5weSAkKEdFTkVSQVRFX1NFVFRJTkdTX1NDUklQ
VFMpIHBhZ2UvU2V0dGluZ3MuaW4KIAkkKFBZVEhPTikgJDwgLS1pbnB1dCAkKFdlYkNvcmUpL3Bh
Z2UvU2V0dGluZ3MuaW4KIAogIyAtLS0tLS0tLQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZU1hY3Jvcy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlTWFjcm9z
LmNtYWtlCShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlTWFjcm9z
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDYgQEAgbWFjcm8oR0VORVJBVEVf
U0VUVElOR1NfTUFDUk9TIF9pbmZpbGUgXwogICAgICMgYnVpbGQgaW4gcGFyYWxsZWwgb3IgdGhl
IHR3byBpbnN0YW5jZXMgb2YgdGhlIHJ1bGUgbWF5IGNvbmZsaWN0LgogICAgICMgPGh0dHBzOi8v
Y21ha2Uub3JnL2NtYWtlL2hlbHAvdjMuMC9jb21tYW5kL2FkZF9jdXN0b21fY29tbWFuZC5odG1s
PgogICAgIHNldChfZXh0cmFfb3V0cHV0Ci0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9TZXR0aW5ncy5oCiAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9TZXR0aW5ncy5jcHAKICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0lu
dGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaAogICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAKQEAgLTIyMiw3ICsyMjEsNiBA
QCBtYWNybyhHRU5FUkFURV9TRVRUSU5HU19NQUNST1MgX2luZmlsZSBfCiAgICAgICAgICR7V0VC
Q09SRV9ESVJ9L1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZUludGVybmFsU2V0dGlu
Z3NJbXBsZW1lbnRhdGlvbkZpbGUucHkKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vU2NyaXB0cy9H
ZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NIZWFkZXJGaWxlLnB5CiAgICAgICAgICR7
V0VCQ09SRV9ESVJ9L1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSW1w
bGVtZW50YXRpb25GaWxlLnB5Ci0gICAgICAgICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvR2VuZXJh
dGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzTWFjcm9zSGVhZGVyLnB5CiAgICAgICAgICR7V0VC
Q09SRV9ESVJ9L1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzLnB5CiAg
ICAgICAgICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9TZXR0aW5ncy5w
eQogICAgICAgICAke1dFQkNPUkVfRElSfS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvX19pbml0
X18ucHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MucHkJ
KHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0
aW5ncy5weQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBkZWYgbWFpbigpOgogCiAg
ICAgZ2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUob3V0cHV0RGlyZWN0b3J5LCBzZXR0aW5ncykK
ICAgICBnZW5lcmF0ZVNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlKG91dHB1dERpcmVjdG9yeSwg
c2V0dGluZ3MpCi0gICAgZ2VuZXJhdGVTZXR0aW5nc01hY3Jvc0hlYWRlcihvdXRwdXREaXJlY3Rv
cnksIHNldHRpbmdzKQogICAgIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0lETEZpbGUob3V0cHV0
RGlyZWN0b3J5LCBzZXR0aW5ncykKICAgICBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NIZWFkZXJG
aWxlKG91dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpCiAgICAgZ2VuZXJhdGVJbnRlcm5hbFNldHRp
bmdzSW1wbGVtZW50YXRpb25GaWxlKG91dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNl
dHRpbmdzSGVhZGVyRmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSGVhZGVyRmlsZS5weQko
cmV2aXNpb24gMjIzNjA3KQorKysgU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRp
bmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0hlYWRlckZpbGUucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJvbSBTZXR0aW5ncyBpbXBv
cnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYXBUb0lETFR5cGUsIG1ha2VTZXR0
ZXJGdW5jdGlvbk5hbWUKK2Zyb20gU2V0dGluZ3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRp
b25hbFN0cmluZwogCiAKIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NIZWFkZXJGaWxlKG91
dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpOgpAQCAtNTEsMTIgKzUxLDEyIEBAIGRlZiBnZW5lcmF0
ZUludGVybmFsU2V0dGluZ3NIZWFkZXJGaWxlKG8KIAogICAgIGZvciBzZXR0aW5nTmFtZSBpbiBz
b3J0ZWQoc2V0dGluZ3MuaXRlcmtleXMoKSk6CiAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1tz
ZXR0aW5nTmFtZV0KLSAgICAgICAgaWRsVHlwZSA9IG1hcFRvSURMVHlwZShzZXR0aW5nKQorICAg
ICAgICBpZGxUeXBlID0gc2V0dGluZy5pZGxUeXBlKCkKICAgICAgICAgaWYgbm90IGlkbFR5cGU6
CiAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgIHR5cGUgPSAiY29uc3QgU3RyaW5nJiIg
aWYgc2V0dGluZy50eXBlID09ICJTdHJpbmciIGVsc2Ugc2V0dGluZy50eXBlCi0gICAgICAgIG91
dHB1dEZpbGUud3JpdGUoIiAgICB2b2lkICIgKyBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lKHNldHRp
bmcpICsgIigiICsgdHlwZSArICIgIiArIHNldHRpbmcubmFtZSArICIpO1xuIikKKyAgICAgICAg
b3V0cHV0RmlsZS53cml0ZSgiICAgIHZvaWQgIiArIHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1l
KCkgKyAiKCIgKyB0eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIik7XG4iKQogCiAgICAgb3V0
cHV0RmlsZS53cml0ZSgiXG4iKQogICAgIG91dHB1dEZpbGUud3JpdGUoInByaXZhdGU6XG4iKQpA
QCAtNjQsNyArNjQsNyBAQCBkZWYgZ2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSGVhZGVyRmlsZShv
CiAKICAgICBmb3Igc2V0dGluZ05hbWUgaW4gc29ydGVkKHNldHRpbmdzLml0ZXJrZXlzKCkpOgog
ICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3Nbc2V0dGluZ05hbWVdCi0gICAgICAgIGlkbFR5cGUg
PSBtYXBUb0lETFR5cGUoc2V0dGluZykKKyAgICAgICAgaWRsVHlwZSA9IHNldHRpbmcuaWRsVHlw
ZSgpCiAgICAgICAgIGlmIG5vdCBpZGxUeXBlOgogICAgICAgICAgICAgY29udGludWUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlSW50ZXJu
YWxTZXR0aW5nc0lETEZpbGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0
cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0lETEZpbGUucHkJKHJl
dmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5n
cy9HZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJRExGaWxlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKIGltcG9ydCBvcy5wYXRoCiAKLWZyb20gU2V0dGluZ3MgaW1wb3J0IGxp
Y2Vuc2UsIG1hcFRvSURMVHlwZSwgbWFrZVNldHRlckZ1bmN0aW9uTmFtZQorZnJvbSBTZXR0aW5n
cyBpbXBvcnQgbGljZW5zZQogCiAKIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJRExGaWxl
KG91dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpOgpAQCAtNDAsMTAgKzQwLDEwIEBAIGRlZiBnZW5l
cmF0ZUludGVybmFsU2V0dGluZ3NJRExGaWxlKG91dHAKIAogICAgIGZvciBzZXR0aW5nTmFtZSBp
biBzb3J0ZWQoc2V0dGluZ3MuaXRlcmtleXMoKSk6CiAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5n
c1tzZXR0aW5nTmFtZV0KLSAgICAgICAgaWRsVHlwZSA9IG1hcFRvSURMVHlwZShzZXR0aW5nKQor
ICAgICAgICBpZGxUeXBlID0gc2V0dGluZy5pZGxUeXBlKCkKICAgICAgICAgaWYgbm90IGlkbFR5
cGU6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAg
dm9pZCAiICsgbWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKSArICIoIiArIGlkbFR5cGUg
KyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKTtcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUo
IiAgICB2b2lkICIgKyBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSgpICsgIigiICsgaWRsVHlw
ZSArICIgIiArIHNldHRpbmcubmFtZSArICIpO1xuIikKIAogICAgIG91dHB1dEZpbGUud3JpdGUo
In07XG4iKQogICAgIG91dHB1dEZpbGUuY2xvc2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvU2Ny
aXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0
aW9uRmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRl
U2V0dGluZ3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5CShy
ZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGlu
Z3MvR2VuZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIGltcG9ydCBvcy5wYXRoCiAKLWZyb20gU2V0dGlu
Z3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUsIG1ha2VDb25kaXRpb25h
bFN0cmluZywgbWFwVG9JRExUeXBlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcKK2Zyb20gU2V0dGlu
Z3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywgbWFrZUNvbmRpdGlvbmFs
U3RyaW5nCiAKIAogZGVmIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmls
ZShvdXRwdXREaXJlY3RvcnksIHNldHRpbmdzKToKQEAgLTQ2LDE0ICs0NiwxNCBAQCBkZWYgZ2Vu
ZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpCiAKICAgICBmb3Igc2V0dGluZ05hbWUg
aW4gc29ydGVkKHNldHRpbmdzLml0ZXJrZXlzKCkpOgogICAgICAgICBzZXR0aW5nID0gc2V0dGlu
Z3Nbc2V0dGluZ05hbWVdCi0gICAgICAgIGlkbFR5cGUgPSBtYXBUb0lETFR5cGUoc2V0dGluZykK
KyAgICAgICAgaWRsVHlwZSA9IHNldHRpbmcuaWRsVHlwZSgpCiAgICAgICAgIGlmIG5vdCBpZGxU
eXBlOgogICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICBpZiBzZXR0aW5nLmNvbmRpdGlv
bmFsOgogICAgICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2lmICIgKyBtYWtlQ29uZGl0aW9u
YWxTdHJpbmcoc2V0dGluZy5jb25kaXRpb25hbCkgKyAiXG4iKQogCi0gICAgICAgIG91dHB1dEZp
bGUud3JpdGUoIiAgICAsIG1fIiArIHNldHRpbmcubmFtZSArICIocGFnZS0+c2V0dGluZ3MoKS4i
ICsgc2V0dGluZy5uYW1lICsgIigpKVxuIikKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAg
ICwgbV8iICsgc2V0dGluZy5uYW1lICsgIihwYWdlLT5zZXR0aW5ncygpLiIgKyBzZXR0aW5nLmdl
dHRlckZ1bmN0aW9uTmFtZSgpICsgIigpKVxuIikKIAogICAgICAgICBpZiBzZXR0aW5nLmNvbmRp
dGlvbmFsOgogICAgICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2VuZGlmXG4iKQpAQCAtNzAs
MTQgKzcwLDE0IEBAIGRlZiBnZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGkKIAog
ICAgIGZvciBzZXR0aW5nTmFtZSBpbiBzb3J0ZWQoc2V0dGluZ3MuaXRlcmtleXMoKSk6CiAgICAg
ICAgIHNldHRpbmcgPSBzZXR0aW5nc1tzZXR0aW5nTmFtZV0KLSAgICAgICAgaWRsVHlwZSA9IG1h
cFRvSURMVHlwZShzZXR0aW5nKQorICAgICAgICBpZGxUeXBlID0gc2V0dGluZy5pZGxUeXBlKCkK
ICAgICAgICAgaWYgbm90IGlkbFR5cGU6CiAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAg
IGlmIHNldHRpbmcuY29uZGl0aW9uYWw6CiAgICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIj
aWYgIiArIG1ha2VDb25kaXRpb25hbFN0cmluZyhzZXR0aW5nLmNvbmRpdGlvbmFsKSArICJcbiIp
CiAKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgIG1fcGFnZS0+c2V0dGluZ3MoKS4iICsg
bWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKSArICIobV8iICsgc2V0dGluZy5uYW1lICsg
Iik7XG4iKQorICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgbV9wYWdlLT5zZXR0aW5ncygp
LiIgKyBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSgpICsgIihtXyIgKyBzZXR0aW5nLm5hbWUg
KyAiKTtcbiIpCiAKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAgICAgICAgICAg
IG91dHB1dEZpbGUud3JpdGUoIiNlbmRpZlxuIikKQEAgLTg2LDE5ICs4NiwxOSBAQCBkZWYgZ2Vu
ZXJhdGVJbnRlcm5hbFNldHRpbmdzSW1wbGVtZW50YXRpCiAKICAgICBmb3Igc2V0dGluZ05hbWUg
aW4gc29ydGVkKHNldHRpbmdzLml0ZXJrZXlzKCkpOgogICAgICAgICBzZXR0aW5nID0gc2V0dGlu
Z3Nbc2V0dGluZ05hbWVdCi0gICAgICAgIGlkbFR5cGUgPSBtYXBUb0lETFR5cGUoc2V0dGluZykK
KyAgICAgICAgaWRsVHlwZSA9IHNldHRpbmcuaWRsVHlwZSgpCiAgICAgICAgIGlmIG5vdCBpZGxU
eXBlOgogICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICB0eXBlID0gImNvbnN0IFN0cmlu
ZyYiIGlmIHNldHRpbmcudHlwZSA9PSAiU3RyaW5nIiBlbHNlIHNldHRpbmcudHlwZQogCi0gICAg
ICAgIG91dHB1dEZpbGUud3JpdGUoInZvaWQgSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZDo6IiAr
IG1ha2VTZXR0ZXJGdW5jdGlvbk5hbWUoc2V0dGluZykgKyAiKCIgKyB0eXBlICsgIiAiICsgc2V0
dGluZy5uYW1lICsgIilcbiIpCisgICAgICAgIG91dHB1dEZpbGUud3JpdGUoInZvaWQgSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZDo6IiArIHNldHRpbmcuc2V0dGVyRnVuY3Rpb25OYW1lKCkgKyAi
KCIgKyB0eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIilcbiIpCiAgICAgICAgIG91dHB1dEZp
bGUud3JpdGUoIntcbiIpCiAKICAgICAgICAgaWYgc2V0dGluZy5jb25kaXRpb25hbDoKICAgICAg
ICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNpZiAiICsgbWFrZUNvbmRpdGlvbmFsU3RyaW5nKHNl
dHRpbmcuY29uZGl0aW9uYWwpICsgIlxuIikKIAotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLiIgKyBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lKHNldHRpbmcp
ICsgIigiICsgc2V0dGluZy5uYW1lICsgIik7XG4iKQorICAgICAgICBvdXRwdXRGaWxlLndyaXRl
KCIgICAgbV9wYWdlLT5zZXR0aW5ncygpLiIgKyBzZXR0aW5nLnNldHRlckZ1bmN0aW9uTmFtZSgp
ICsgIigiICsgc2V0dGluZy5uYW1lICsgIik7XG4iKQogCiAgICAgICAgIGlmIHNldHRpbmcuY29u
ZGl0aW9uYWw6CiAgICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjZWxzZVxuIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdz
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5n
cy9HZW5lcmF0ZVNldHRpbmdzLnB5CShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5ncy5weQkod29ya2luZyBj
b3B5KQpAQCAtNCw0ICs0LDMgQEAgZnJvbSBHZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJRExGaWxl
IGltcAogZnJvbSBHZW5lcmF0ZUludGVybmFsU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUgaW1w
b3J0ICoKIGZyb20gR2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUgaW1wb3J0ICoKIGZyb20gR2Vu
ZXJhdGVTZXR0aW5nc0ltcGxlbWVudGF0aW9uRmlsZSBpbXBvcnQgKgotZnJvbSBHZW5lcmF0ZVNl
dHRpbmdzTWFjcm9zSGVhZGVyIGltcG9ydCAqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0
dGluZ3NIZWFkZXJGaWxlLnB5CShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvR2VuZXJhdGVTZXR0aW5nc0hlYWRlckZpbGUucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogaW1wb3J0IG9zLnBhdGgKIAotZnJvbSBT
ZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlvbmFsU3RyaW5nLCBtYWtlU2V0dGVy
RnVuY3Rpb25OYW1lLCBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwKK2Zyb20gU2V0dGluZ3MgaW1w
b3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywgbWFrZVByZWZlcnJlZENvbmRpdGlv
bmFsCiAKIAogZGVmIGdlbmVyYXRlU2V0dGluZ3NIZWFkZXJGaWxlKG91dHB1dERpcmVjdG9yeSwg
c2V0dGluZ3MpOgpAQCAtNzgsMjEgKzc4LDIyIEBAIGRlZiBnZW5lcmF0ZVNldHRpbmdzSGVhZGVy
RmlsZShvdXRwdXREaXIKIAogCiBkZWYgcHJpbnRHZXR0ZXJBbmRTZXR0ZXIob3V0cHV0RmlsZSwg
c2V0dGluZyk6Ci0gICAgc2V0dGVyRnVuY3Rpb25OYW1lID0gbWFrZVNldHRlckZ1bmN0aW9uTmFt
ZShzZXR0aW5nKQorICAgIHNldHRlckZ1bmN0aW9uTmFtZSA9IHNldHRpbmcuc2V0dGVyRnVuY3Rp
b25OYW1lKCkKKyAgICBnZXR0ZXJGdW5jdGlvbk5hbWUgPSBzZXR0aW5nLmdldHRlckZ1bmN0aW9u
TmFtZSgpCiAKLSAgICB3ZWJjb3JlRXhwb3J0ID0gIldFQkNPUkVfRVhQT1JUICIgaWYgc2V0dGlu
Zy5zZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXMgZWxzZSAiIgorICAgIHdlYmNvcmVFeHBv
cnQgPSAiV0VCQ09SRV9FWFBPUlQgIiBpZiBzZXR0aW5nLmhhc0NvbXBsZXhTZXR0ZXIoKSBlbHNl
ICIiCiAKLSAgICBpZiBzZXR0aW5nLnR5cGVbMF0uaXNsb3dlcigpOgotICAgICAgICBvdXRwdXRG
aWxlLndyaXRlKCIgICAgIiArIHNldHRpbmcudHlwZSArICIgIiArIHNldHRpbmcubmFtZSArICIo
KSBjb25zdCB7IHJldHVybiBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiOyB9XG4iKQorICAgIGlmIHNl
dHRpbmcudHlwZUlzVmFsdWVUeXBlKCk6CisgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAi
ICsgc2V0dGluZy50eXBlICsgIiAiICsgZ2V0dGVyRnVuY3Rpb25OYW1lICsgIigpIGNvbnN0IHsg
cmV0dXJuIG1fIiArIHNldHRpbmcubmFtZSArICI7IH1cbiIpCiAgICAgICAgIG91dHB1dEZpbGUu
d3JpdGUoIiAgICAiICsgd2ViY29yZUV4cG9ydCArICJ2b2lkICIgKyBzZXR0ZXJGdW5jdGlvbk5h
bWUgKyAiKCIgKyBzZXR0aW5nLnR5cGUgKyAiICIgKyBzZXR0aW5nLm5hbWUgKyAiKSIpCiAgICAg
ZWxzZToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgIGNvbnN0ICIgKyBzZXR0aW5nLnR5
cGUgKyAiJiAiICsgc2V0dGluZy5uYW1lICsgIigpIGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRp
bmcubmFtZSArICI7IH0gXG4iKQorICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgY29uc3Qg
IiArIHNldHRpbmcudHlwZSArICImICIgKyBnZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKCkgY29uc3Qg
eyByZXR1cm4gbV8iICsgc2V0dGluZy5uYW1lICsgIjsgfVxuIikKICAgICAgICAgb3V0cHV0Rmls
ZS53cml0ZSgiICAgICIgKyB3ZWJjb3JlRXhwb3J0ICsgInZvaWQgIiArIHNldHRlckZ1bmN0aW9u
TmFtZSArICIoY29uc3QgIiArIHNldHRpbmcudHlwZSArICImICIgKyBzZXR0aW5nLm5hbWUgKyAi
KSIpCiAKLSAgICBpZiBzZXR0aW5nLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lczoKLSAg
ICAgICAgb3V0cHV0RmlsZS53cml0ZSgiOyBcbiIpCisgICAgaWYgc2V0dGluZy5oYXNDb21wbGV4
U2V0dGVyKCk6CisgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIjtcbiIpCiAgICAgZWxzZToKLSAg
ICAgICAgb3V0cHV0RmlsZS53cml0ZSgiIHsgbV8iICsgc2V0dGluZy5uYW1lICsgIiA9ICIgKyBz
ZXR0aW5nLm5hbWUgKyAiOyB9IFxuIikKKyAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiIHsgbV8i
ICsgc2V0dGluZy5uYW1lICsgIiA9ICIgKyBzZXR0aW5nLm5hbWUgKyAiOyB9XG4iKQogCiAKIGRl
ZiBwcmludEdldHRlcnNBbmRTZXR0ZXJzKG91dHB1dEZpbGUsIHNvcnRlZFVuY29uZGl0aW9uYWxT
ZXR0aW5nc05hbWVzLCBzb3J0ZWRDb25kaXRpb25hbHMsIHNldHRpbmdzQnlDb25kaXRpb25hbCwg
c2V0dGluZ3MpOgpJbmRleDogU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdz
L0dlbmVyYXRlU2V0dGluZ3NJbXBsZW1lbnRhdGlvbkZpbGUucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NJbXBs
ZW1lbnRhdGlvbkZpbGUucHkJKHJldmlzaW9uIDIyMzYwNykKKysrIFNvdXJjZS9XZWJDb3JlL1Nj
cmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxl
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIGltcG9ydCBvcy5wYXRoCiAK
LWZyb20gU2V0dGluZ3MgaW1wb3J0IGxpY2Vuc2UsIG1ha2VDb25kaXRpb25hbFN0cmluZywgbWFr
ZVNldHRlckZ1bmN0aW9uTmFtZSwgbWFrZVByZWZlcnJlZENvbmRpdGlvbmFsCitmcm9tIFNldHRp
bmdzIGltcG9ydCBsaWNlbnNlLCBtYWtlQ29uZGl0aW9uYWxTdHJpbmcsIG1ha2VQcmVmZXJyZWRD
b25kaXRpb25hbAogCiAKIGRlZiBnZW5lcmF0ZVNldHRpbmdzSW1wbGVtZW50YXRpb25GaWxlKG91
dHB1dERpcmVjdG9yeSwgc2V0dGluZ3MpOgpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgZGVmIHByaW50
SW5pdGlhbGl6ZXJMaXN0KG91dHB1dEZpbGUsIHNvcgogCiAKIGRlZiBwcmludFNldHRlckJvZHko
b3V0cHV0RmlsZSwgc2V0dGluZyk6Ci0gICAgaWYgbm90IHNldHRpbmcuc2V0TmVlZHNTdHlsZVJl
Y2FsY0luQWxsRnJhbWVzOgorICAgIGlmIG5vdCBzZXR0aW5nLmhhc0NvbXBsZXhTZXR0ZXIoKToK
ICAgICAgICAgcmV0dXJuCiAKLSAgICBzZXR0ZXJGdW5jdGlvbk5hbWUgPSBtYWtlU2V0dGVyRnVu
Y3Rpb25OYW1lKHNldHRpbmcpCisgICAgc2V0dGVyRnVuY3Rpb25OYW1lID0gc2V0dGluZy5zZXR0
ZXJGdW5jdGlvbk5hbWUoKQogCi0gICAgaWYgc2V0dGluZy50eXBlWzBdLmlzbG93ZXIoKToKKyAg
ICBpZiBzZXR0aW5nLnR5cGVJc1ZhbHVlVHlwZSgpOgogICAgICAgICBvdXRwdXRGaWxlLndyaXRl
KCJ2b2lkIFNldHRpbmdzOjoiICsgc2V0dGVyRnVuY3Rpb25OYW1lICsgIigiICsgc2V0dGluZy50
eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIilcbiIpCiAgICAgZWxzZToKICAgICAgICAgb3V0
cHV0RmlsZS53cml0ZSgidm9pZCBTZXR0aW5nczo6IiArIHNldHRlckZ1bmN0aW9uTmFtZSArICIo
Y29uc3QgIiArIHNldHRpbmcudHlwZSArICImICIgKyBzZXR0aW5nLm5hbWUgKyAiKVxuIikKQEAg
LTE3NCw3ICsxNzQsNyBAQCBkZWYgcHJpbnRTZXR0ZXJCb2RpZXMob3V0cHV0RmlsZSwgc29ydGVk
CiAgICAgICAgIGhhc1NldHRlckJvZHkgPSBGYWxzZQogICAgICAgICBmb3Igc2V0dGluZ05hbWUg
aW4gc29ydGVkKHNldHRpbmdzQnlDb25kaXRpb25hbFtjb25kaXRpb25hbF0uaXRlcmtleXMoKSk6
CiAgICAgICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3Nbc2V0dGluZ05hbWVdCi0gICAgICAgICAg
ICBpZiBzZXR0aW5nLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lczoKKyAgICAgICAgICAg
IGlmIHNldHRpbmcuaGFzQ29tcGxleFNldHRlcigpOgogICAgICAgICAgICAgICAgIGhhc1NldHRl
ckJvZHkgPSBUcnVlCiAgICAgICAgICAgICAgICAgYnJlYWsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdzL0dlbmVyYXRlU2V0dGluZ3NNYWNyb3NIZWFkZXIu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNldHRpbmdz
L0dlbmVyYXRlU2V0dGluZ3NNYWNyb3NIZWFkZXIucHkJKHJldmlzaW9uIDIyMzYwNykKKysrIFNv
dXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0aW5ncy9HZW5lcmF0ZVNldHRpbmdzTWFj
cm9zSGVhZGVyLnB5CShub25leGlzdGVudCkKQEAgLTEsMjcyICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1w
b3J0IG9zLnBhdGgKLQotZnJvbSBTZXR0aW5ncyBpbXBvcnQgbGljZW5zZSwgbWFrZUNvbmRpdGlv
bmFsU3RyaW5nLCBtYWtlU2V0dGVyRnVuY3Rpb25OYW1lLCBtYWtlUHJlZmVycmVkQ29uZGl0aW9u
YWwKLQotCi1kZWYgZ2VuZXJhdGVTZXR0aW5nc01hY3Jvc0hlYWRlcihvdXRwdXREaXJlY3Rvcnks
IHNldHRpbmdzKToKLSAgICBzZXR0aW5nc0J5Q29uZGl0aW9uYWwgPSB7fQotICAgIHVuY29uZGl0
aW9uYWxTZXR0aW5ncyA9IHt9Ci0KLSAgICBmb3Igc2V0dGluZ05hbWUgaW4gc29ydGVkKHNldHRp
bmdzLml0ZXJrZXlzKCkpOgotICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3Nbc2V0dGluZ05hbWVd
Ci0gICAgICAgIGlmIHNldHRpbmcuY29uZGl0aW9uYWw6Ci0gICAgICAgICAgICBpZiBzZXR0aW5n
LmNvbmRpdGlvbmFsIG5vdCBpbiBzZXR0aW5nc0J5Q29uZGl0aW9uYWw6Ci0gICAgICAgICAgICAg
ICAgc2V0dGluZ3NCeUNvbmRpdGlvbmFsW3NldHRpbmcuY29uZGl0aW9uYWxdID0ge30KLSAgICAg
ICAgICAgIHNldHRpbmdzQnlDb25kaXRpb25hbFtzZXR0aW5nLmNvbmRpdGlvbmFsXVtzZXR0aW5n
Lm5hbWVdID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5jb25kaXRpb25hbFNl
dHRpbmdzW3NldHRpbmcubmFtZV0gPSBUcnVlCi0KLSAgICBvdXRwdXRQYXRoID0gb3MucGF0aC5q
b2luKG91dHB1dERpcmVjdG9yeSwgIlNldHRpbmdzTWFjcm9zLmgiKQotICAgIG91dHB1dEZpbGUg
PSBvcGVuKG91dHB1dFBhdGgsICd3JykKLSAgICBvdXRwdXRGaWxlLndyaXRlKGxpY2Vuc2UoKSkK
LQotICAgICMgRklYTUU6IFNvcnQgYnkgdHlwZSBzbyBib29scyBjb21lIGxhc3QgYW5kIGFyZSBi
aXQgcGFja2VkLgotCi0gICAgIyBGSVhNRTogQ29udmVydCB0byAjcHJhZ21hIG9uY2UKLSAgICBv
dXRwdXRGaWxlLndyaXRlKCIjaWZuZGVmIFNldHRpbmdzTWFjcm9zX2hcbiIpCi0gICAgb3V0cHV0
RmlsZS53cml0ZSgiI2RlZmluZSBTZXR0aW5nc01hY3Jvc19oXG5cbiIpCi0KLSAgICBzb3J0ZWRV
bmNvbmRpdGlvbmFsU2V0dGluZ3NOYW1lcyA9IHNvcnRlZCh1bmNvbmRpdGlvbmFsU2V0dGluZ3Mu
aXRlcmtleXMoKSkKLSAgICBzb3J0ZWRDb25kaXRpb25hbHMgPSBzb3J0ZWQoc2V0dGluZ3NCeUNv
bmRpdGlvbmFsLml0ZXJrZXlzKCkpCi0KLSAgICBwcmludENvbmRpdGlvbmFsTWFjcm9zKG91dHB1
dEZpbGUsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3NCeUNvbmRpdGlvbmFsLCBzZXR0aW5n
cykKLQotICAgIHByaW50R2V0dGVyc0FuZFNldHRlcnMob3V0cHV0RmlsZSwgc29ydGVkVW5jb25k
aXRpb25hbFNldHRpbmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3MpCi0gICAg
cHJpbnRNZW1iZXJWYXJpYWJsZXMob3V0cHV0RmlsZSwgc29ydGVkVW5jb25kaXRpb25hbFNldHRp
bmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3MpCi0gICAgcHJpbnRJbml0aWFs
aXplckxpc3Qob3V0cHV0RmlsZSwgc29ydGVkVW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXMsIHNv
cnRlZENvbmRpdGlvbmFscywgc2V0dGluZ3MpCi0gICAgcHJpbnRTZXR0ZXJCb2RpZXMob3V0cHV0
RmlsZSwgc29ydGVkVW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXMsIHNvcnRlZENvbmRpdGlvbmFs
cywgc2V0dGluZ3MpCi0KLSAgICBvdXRwdXRGaWxlLndyaXRlKCIjZW5kaWYgLy8gU2V0dGluZ3NN
YWNyb3NfaFxuIikKLSAgICBvdXRwdXRGaWxlLmNsb3NlKCkKLQotCi1kZWYgcHJpbnRHZXR0ZXJB
bmRTZXR0ZXIob3V0cHV0RmlsZSwgc2V0dGluZyk6Ci0gICAgc2V0dGVyRnVuY3Rpb25OYW1lID0g
bWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKQotCi0gICAgIyBFeHBvcnQgaXMgb25seSBu
ZWVkZWQgaWYgdGhlIGRlZmluaXRpb24gaXMgbm90IGluIHRoZSBoZWFkZXIuCi0gICAgd2ViY29y
ZUV4cG9ydCA9ICJXRUJDT1JFX0VYUE9SVCIgaWYgc2V0dGluZy5zZXROZWVkc1N0eWxlUmVjYWxj
SW5BbGxGcmFtZXMgZWxzZSAiIgotCi0gICAgIyBGSVhNRTogV2hlbiB3ZWJjb3JlRXhwb3J0IGlz
ICIiLCBsaW5lIGhhcyBleHRyYSBzcGFjZS4KLQotICAgIGlmIHNldHRpbmcudHlwZVswXS5pc2xv
d2VyKCk6Ci0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgc2V0dGluZy50eXBlICsg
IiAiICsgc2V0dGluZy5uYW1lICsgIigpIGNvbnN0IHsgcmV0dXJuIG1fIiArIHNldHRpbmcubmFt
ZSArICI7IH0gXFxcbiIpCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAiICsgd2ViY29y
ZUV4cG9ydCArICIgdm9pZCAiICsgc2V0dGVyRnVuY3Rpb25OYW1lICsgIigiICsgc2V0dGluZy50
eXBlICsgIiAiICsgc2V0dGluZy5uYW1lICsgIikiKQotICAgIGVsc2U6Ci0gICAgICAgIG91dHB1
dEZpbGUud3JpdGUoIiAgICBjb25zdCAiICsgc2V0dGluZy50eXBlICsgIiYgIiArIHNldHRpbmcu
bmFtZSArICIoKSBjb25zdCB7IHJldHVybiBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiOyB9IFxcXG4i
KQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgIiArIHdlYmNvcmVFeHBvcnQgKyAiIHZv
aWQgIiArIHNldHRlckZ1bmN0aW9uTmFtZSArICIoY29uc3QgIiArIHNldHRpbmcudHlwZSArICIm
ICIgKyBzZXR0aW5nLm5hbWUgKyAiKSIpCi0KLSAgICBpZiBzZXR0aW5nLnNldE5lZWRzU3R5bGVS
ZWNhbGNJbkFsbEZyYW1lczoKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiOyBcXFxuIikKLSAg
ICBlbHNlOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgeyBtXyIgKyBzZXR0aW5nLm5hbWUg
KyAiID0gIiArIHNldHRpbmcubmFtZSArICI7IH0gXFxcbiIpCi0KLQotZGVmIHByaW50U2V0dGVy
Qm9keShvdXRwdXRGaWxlLCBzZXR0aW5nKToKLSAgICBpZiBub3Qgc2V0dGluZy5zZXROZWVkc1N0
eWxlUmVjYWxjSW5BbGxGcmFtZXM6Ci0gICAgICAgIHJldHVybgotCi0gICAgc2V0dGVyRnVuY3Rp
b25OYW1lID0gbWFrZVNldHRlckZ1bmN0aW9uTmFtZShzZXR0aW5nKQotCi0gICAgaWYgc2V0dGlu
Zy50eXBlWzBdLmlzbG93ZXIoKToKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgidm9pZCBTZXR0
aW5nczo6IiArIHNldHRlckZ1bmN0aW9uTmFtZSArICIoIiArIHNldHRpbmcudHlwZSArICIgIiAr
IHNldHRpbmcubmFtZSArICIpIFxcXG4iKQotICAgIGVsc2U6Ci0gICAgICAgIG91dHB1dEZpbGUu
d3JpdGUoInZvaWQgU2V0dGluZ3M6OiIgKyBzZXR0ZXJGdW5jdGlvbk5hbWUgKyAiKGNvbnN0ICIg
KyBzZXR0aW5nLnR5cGUgKyAiJiAiICsgc2V0dGluZy5uYW1lICsgIikgXFxcbiIpCi0KLSAgICBv
dXRwdXRGaWxlLndyaXRlKCJ7IFxcXG4iKQotICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICBpZiAo
bV8iICsgc2V0dGluZy5uYW1lICsgIiA9PSAiICsgc2V0dGluZy5uYW1lICsgIikgXFxcbiIpCi0g
ICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICAgICByZXR1cm47IFxcXG4iKQotICAgIG91dHB1dEZp
bGUud3JpdGUoIiAgICBtXyIgKyBzZXR0aW5nLm5hbWUgKyAiID0gIiArIHNldHRpbmcubmFtZSAr
ICI7IFxcXG4iKQotICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICBtX3BhZ2UtPnNldE5lZWRzUmVj
YWxjU3R5bGVJbkFsbEZyYW1lcygpOyBcXFxuIikKLSAgICBvdXRwdXRGaWxlLndyaXRlKCJ9IFxc
XG4iKQotCi0KLWRlZiBwcmludENvbmRpdGlvbmFsTWFjcm9zKG91dHB1dEZpbGUsIHNvcnRlZENv
bmRpdGlvbmFscywgc2V0dGluZ3NCeUNvbmRpdGlvbmFsLCBzZXR0aW5ncyk6Ci0gICAgZm9yIGNv
bmRpdGlvbmFsIGluIHNvcnRlZENvbmRpdGlvbmFsczoKLSAgICAgICAgb3V0cHV0RmlsZS53cml0
ZSgiI2lmICIgKyBtYWtlQ29uZGl0aW9uYWxTdHJpbmcoY29uZGl0aW9uYWwpICsgIlxuIikKLQot
ICAgICAgICAjIEdldHRlci9TZXR0ZXJzCi0KLSAgICAgICAgc29ydGVkU2V0dGluZ3NOYW1lcyA9
IHNvcnRlZChzZXR0aW5nc0J5Q29uZGl0aW9uYWxbY29uZGl0aW9uYWxdLml0ZXJrZXlzKCkpCi0K
LSAgICAgICAgcHJlZmVycmVkQ29uZGl0aW9uYWwgPSBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwo
Y29uZGl0aW9uYWwpCi0KLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSAiICsgcHJl
ZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX0dFVFRFUl9BTkRfU0VUVEVSUyBcXFxuIikK
LQotICAgICAgICBmb3Igc2V0dGluZ05hbWUgaW4gc29ydGVkU2V0dGluZ3NOYW1lczoKLSAgICAg
ICAgICAgIHByaW50R2V0dGVyQW5kU2V0dGVyKG91dHB1dEZpbGUsIHNldHRpbmdzW3NldHRpbmdO
YW1lXSkKLQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgIiArIHByZWZlcnJl
ZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19HRVRURVJfQU5EX1NFVFRFUlNcbiIpCi0KLSAgICAg
ICAgIyBNZW1iZXIgdmFyaWFibGVzCi0KLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmlu
ZSAiICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX05PTl9CT09MX01FTUJFUl9W
QVJJQUJMRVMgXFxcbiIpCi0KLSAgICAgICAgZm9yIHNldHRpbmdOYW1lIGluIHNvcnRlZFNldHRp
bmdzTmFtZXM6Ci0gICAgICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3Nbc2V0dGluZ05hbWVdCi0g
ICAgICAgICAgICBpZiBzZXR0aW5nLnR5cGUgPT0gJ2Jvb2wnOgotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgIiArIHNldHRpbmcudHlw
ZSArICIgbV8iICsgc2V0dGluZy5uYW1lICsgIjsgXFxcbiIpCi0KLSAgICAgICAgb3V0cHV0Rmls
ZS53cml0ZSgiLy8gRW5kIG9mICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1Nf
Tk9OX0JPT0xfTUVNQkVSX1ZBUklBQkxFU1xuIikKLQotICAgICAgICBvdXRwdXRGaWxlLndyaXRl
KCIjZGVmaW5lICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfQk9PTF9NRU1C
RVJfVkFSSUFCTEVTIFxcXG4iKQotCi0gICAgICAgIGZvciBzZXR0aW5nTmFtZSBpbiBzb3J0ZWRT
ZXR0aW5nc05hbWVzOgotICAgICAgICAgICAgc2V0dGluZyA9IHNldHRpbmdzW3NldHRpbmdOYW1l
XQotICAgICAgICAgICAgaWYgc2V0dGluZy50eXBlICE9ICdib29sJzoKLSAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBzZXR0aW5n
LnR5cGUgKyAiIG1fIiArIHNldHRpbmcubmFtZSArICIgOiAxOyBcXFxuIikKLQotICAgICAgICBv
dXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9T
RVRUSU5HU19CT09MX01FTUJFUl9WQVJJQUJMRVNcbiIpCi0KLSAgICAgICAgIyBJbml0aWFsaXpl
cnMKLQotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIjZGVmaW5lICIgKyBwcmVmZXJyZWRDb25k
aXRpb25hbCArICJfU0VUVElOR1NfTk9OX0JPT0xfSU5JVElBTElaRVJTIFxcXG4iKQotCi0gICAg
ICAgIGZvciBzZXR0aW5nTmFtZSBpbiBzb3J0ZWRTZXR0aW5nc05hbWVzOgotICAgICAgICAgICAg
c2V0dGluZyA9IHNldHRpbmdzW3NldHRpbmdOYW1lXQotICAgICAgICAgICAgaWYgc2V0dGluZy50
eXBlID09ICdib29sJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYg
bm90IHNldHRpbmcuaW5pdGlhbDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAg
ICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICwgbV8iICsgc2V0dGluZy5uYW1lICsgIigiICsgc2V0
dGluZy5pbml0aWFsICsgIikgXFxcbiIpCi0KLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiLy8g
RW5kIG9mICIgKyBwcmVmZXJyZWRDb25kaXRpb25hbCArICJfU0VUVElOR1NfTk9OX0JPT0xfSU5J
VElBTElaRVJTXG4iKQotCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgIiArIHBy
ZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19CT09MX0lOSVRJQUxJWkVSUyBcXFxuIikK
LQotICAgICAgICBmb3Igc2V0dGluZ05hbWUgaW4gc29ydGVkU2V0dGluZ3NOYW1lczoKLSAgICAg
ICAgICAgIHNldHRpbmcgPSBzZXR0aW5nc1tzZXR0aW5nTmFtZV0KLSAgICAgICAgICAgIGlmIHNl
dHRpbmcudHlwZSAhPSAnYm9vbCc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIGlmIG5vdCBzZXR0aW5nLmluaXRpYWw6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAsIG1fIiArIHNldHRpbmcubmFtZSArICIo
IiArIHNldHRpbmcuaW5pdGlhbCArICIpIFxcXG4iKQotCi0gICAgICAgIG91dHB1dEZpbGUud3Jp
dGUoIi8vIEVuZCBvZiAiICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX0JPT0xf
SU5JVElBTElaRVJTXG4iKQotCi0gICAgICAgICMgU2V0dGVyIEJvZGllcwotCi0gICAgICAgIG91
dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRU
SU5HU19TRVRURVJfQk9ESUVTIFxcXG4iKQotCi0gICAgICAgIGZvciBzZXR0aW5nTmFtZSBpbiBz
b3J0ZWRTZXR0aW5nc05hbWVzOgotICAgICAgICAgICAgc2V0dGluZyA9IHNldHRpbmdzW3NldHRp
bmdOYW1lXQotICAgICAgICAgICAgcHJpbnRTZXR0ZXJCb2R5KG91dHB1dEZpbGUsIHNldHRpbmcp
Ci0KLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiLy8gRW5kIG9mICIgKyBwcmVmZXJyZWRDb25k
aXRpb25hbCArICJfU0VUVElOR1NfU0VUVEVSX0JPRElFU1xuIikKLQotICAgICAgICBvdXRwdXRG
aWxlLndyaXRlKCIjZWxzZVxuIikKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSAi
ICsgcHJlZmVycmVkQ29uZGl0aW9uYWwgKyAiX1NFVFRJTkdTX0dFVFRFUl9BTkRfU0VUVEVSU1xu
IikKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSAiICsgcHJlZmVycmVkQ29uZGl0
aW9uYWwgKyAiX1NFVFRJTkdTX05PTl9CT09MX01FTUJFUl9WQVJJQUJMRVNcbiIpCi0gICAgICAg
IG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9T
RVRUSU5HU19CT09MX01FTUJFUl9WQVJJQUJMRVNcbiIpCi0gICAgICAgIG91dHB1dEZpbGUud3Jp
dGUoIiNkZWZpbmUgIiArIHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19OT05fQk9P
TF9JTklUSUFMSVpFUlNcbiIpCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUgIiAr
IHByZWZlcnJlZENvbmRpdGlvbmFsICsgIl9TRVRUSU5HU19CT09MX0lOSVRJQUxJWkVSU1xuIikK
LSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSAiICsgcHJlZmVycmVkQ29uZGl0aW9u
YWwgKyAiX1NFVFRJTkdTX1NFVFRFUl9CT0RJRVNcbiIpCi0gICAgICAgIG91dHB1dEZpbGUud3Jp
dGUoIiNlbmRpZlxuIikKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiXG4iKQotCi0KLWRlZiBw
cmludEdldHRlcnNBbmRTZXR0ZXJzKG91dHB1dEZpbGUsIHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0
aW5nc05hbWVzLCBzb3J0ZWRDb25kaXRpb25hbHMsIHNldHRpbmdzKToKLSAgICBvdXRwdXRGaWxl
LndyaXRlKCIjZGVmaW5lIFNFVFRJTkdTX0dFVFRFUlNfQU5EX1NFVFRFUlMgXFxcbiIpCi0KLSAg
ICBmb3IgdW5jb25kaXRpb25hbFNldHRpbmdOYW1lIGluIHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0
aW5nc05hbWVzOgotICAgICAgICBwcmludEdldHRlckFuZFNldHRlcihvdXRwdXRGaWxlLCBzZXR0
aW5nc1t1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWVdKQotCi0gICAgZm9yIGNvbmRpdGlvbmFsIGlu
IHNvcnRlZENvbmRpdGlvbmFsczoKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBt
YWtlUHJlZmVycmVkQ29uZGl0aW9uYWwoY29uZGl0aW9uYWwpICsgIl9TRVRUSU5HU19HRVRURVJf
QU5EX1NFVFRFUlMgXFxcbiIpCi0KLSAgICBvdXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgU0VU
VElOR1NfR0VUVEVSU19BTkRfU0VUVEVSUy5cblxuIikKLQotCi1kZWYgcHJpbnRNZW1iZXJWYXJp
YWJsZXMob3V0cHV0RmlsZSwgc29ydGVkVW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXMsIHNvcnRl
ZENvbmRpdGlvbmFscywgc2V0dGluZ3MpOgotICAgIG91dHB1dEZpbGUud3JpdGUoIiNkZWZpbmUg
U0VUVElOR1NfTUVNQkVSX1ZBUklBQkxFUyBcXFxuIikKLQotICAgICMgV2UgbGlzdCB0aGUgYm9v
bHMgbGFzdCBzbyB3ZSBjYW4gYml0IHBhY2sgdGhlbS4KLQotICAgIGZvciB1bmNvbmRpdGlvbmFs
U2V0dGluZ05hbWUgaW4gc29ydGVkVW5jb25kaXRpb25hbFNldHRpbmdzTmFtZXM6Ci0gICAgICAg
IHNldHRpbmcgPSBzZXR0aW5nc1t1bmNvbmRpdGlvbmFsU2V0dGluZ05hbWVdCi0gICAgICAgIGlm
IHNldHRpbmcudHlwZSA9PSAiYm9vbCI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBv
dXRwdXRGaWxlLndyaXRlKCIgICAgIiArIHNldHRpbmcudHlwZSArICIgbV8iICsgc2V0dGluZy5u
YW1lICsgIjsgXFxcbiIpCi0KLSAgICBmb3IgY29uZGl0aW9uYWwgaW4gc29ydGVkQ29uZGl0aW9u
YWxzOgotICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgIiArIG1ha2VQcmVmZXJyZWRDb25k
aXRpb25hbChjb25kaXRpb25hbCkgKyAiX1NFVFRJTkdTX05PTl9CT09MX01FTUJFUl9WQVJJQUJM
RVMgXFxcbiIpCi0KLSAgICBmb3IgdW5jb25kaXRpb25hbFNldHRpbmdOYW1lIGluIHNvcnRlZFVu
Y29uZGl0aW9uYWxTZXR0aW5nc05hbWVzOgotICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3NbdW5j
b25kaXRpb25hbFNldHRpbmdOYW1lXQotICAgICAgICBpZiBzZXR0aW5nLnR5cGUgIT0gImJvb2wi
OgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIg
KyBzZXR0aW5nLnR5cGUgKyAiIG1fIiArIHNldHRpbmcubmFtZSArICIgOiAxOyBcXFxuIikKLQot
ICAgIGZvciBjb25kaXRpb25hbCBpbiBzb3J0ZWRDb25kaXRpb25hbHM6Ci0gICAgICAgIG91dHB1
dEZpbGUud3JpdGUoIiAgICAiICsgbWFrZVByZWZlcnJlZENvbmRpdGlvbmFsKGNvbmRpdGlvbmFs
KSArICJfU0VUVElOR1NfQk9PTF9NRU1CRVJfVkFSSUFCTEVTIFxcXG4iKQotCi0gICAgb3V0cHV0
RmlsZS53cml0ZSgiLy8gRW5kIG9mIFNFVFRJTkdTX01FTUJFUl9WQVJJQUJMRVMuXG5cbiIpCi0K
LQotZGVmIHByaW50SW5pdGlhbGl6ZXJMaXN0KG91dHB1dEZpbGUsIHNvcnRlZFVuY29uZGl0aW9u
YWxTZXR0aW5nc05hbWVzLCBzb3J0ZWRDb25kaXRpb25hbHMsIHNldHRpbmdzKToKLSAgICBvdXRw
dXRGaWxlLndyaXRlKCIjZGVmaW5lIFNFVFRJTkdTX0lOSVRJQUxJWkVSX0xJU1QgXFxcbiIpCi0K
LSAgICAjIFdlIGxpc3QgdGhlIGJvb2xzIGxhc3Qgc28gd2UgY2FuIGJpdCBwYWNrIHRoZW0uCi0K
LSAgICBmb3IgdW5jb25kaXRpb25hbFNldHRpbmdOYW1lIGluIHNvcnRlZFVuY29uZGl0aW9uYWxT
ZXR0aW5nc05hbWVzOgotICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3NbdW5jb25kaXRpb25hbFNl
dHRpbmdOYW1lXQotICAgICAgICBpZiBzZXR0aW5nLnR5cGUgPT0gImJvb2wiOgotICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgaWYgbm90IHNldHRpbmcuaW5pdGlhbDoKLSAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgIG91dHB1dEZpbGUud3JpdGUoIiAgICAsIG1fIiArIHNldHRpbmcu
bmFtZSArICIoIiArIHNldHRpbmcuaW5pdGlhbCArICIpIFxcXG4iKQotCi0gICAgZm9yIGNvbmRp
dGlvbmFsIGluIHNvcnRlZENvbmRpdGlvbmFsczoKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgi
ICAgICIgKyBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwoY29uZGl0aW9uYWwpICsgIl9TRVRUSU5H
U19OT05fQk9PTF9JTklUSUFMSVpFUlMgXFxcbiIpCi0KLSAgICBmb3IgdW5jb25kaXRpb25hbFNl
dHRpbmdOYW1lIGluIHNvcnRlZFVuY29uZGl0aW9uYWxTZXR0aW5nc05hbWVzOgotICAgICAgICBz
ZXR0aW5nID0gc2V0dGluZ3NbdW5jb25kaXRpb25hbFNldHRpbmdOYW1lXQotICAgICAgICBpZiBz
ZXR0aW5nLnR5cGUgIT0gImJvb2wiOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYg
bm90IHNldHRpbmcuaW5pdGlhbDoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIG91dHB1
dEZpbGUud3JpdGUoIiAgICAsIG1fIiArIHNldHRpbmcubmFtZSArICIoIiArIHNldHRpbmcuaW5p
dGlhbCArICIpIFxcXG4iKQotCi0gICAgZm9yIGNvbmRpdGlvbmFsIGluIHNvcnRlZENvbmRpdGlv
bmFsczoKLSAgICAgICAgb3V0cHV0RmlsZS53cml0ZSgiICAgICIgKyBtYWtlUHJlZmVycmVkQ29u
ZGl0aW9uYWwoY29uZGl0aW9uYWwpICsgIl9TRVRUSU5HU19CT09MX0lOSVRJQUxJWkVSUyBcXFxu
IikKLQotICAgIG91dHB1dEZpbGUud3JpdGUoIi8vIEVuZCBvZiBTRVRUSU5HU19JTklUSUFMSVpF
Ul9MSVNULlxuXG4iKQotCi0KLWRlZiBwcmludFNldHRlckJvZGllcyhvdXRwdXRGaWxlLCBzb3J0
ZWRVbmNvbmRpdGlvbmFsU2V0dGluZ3NOYW1lcywgc29ydGVkQ29uZGl0aW9uYWxzLCBzZXR0aW5n
cyk6Ci0gICAgb3V0cHV0RmlsZS53cml0ZSgiI2RlZmluZSBTRVRUSU5HU19TRVRURVJfQk9ESUVT
IFxcXG4iKQotCi0gICAgZm9yIHVuY29uZGl0aW9uYWxTZXR0aW5nTmFtZSBpbiBzb3J0ZWRVbmNv
bmRpdGlvbmFsU2V0dGluZ3NOYW1lczoKLSAgICAgICAgc2V0dGluZyA9IHNldHRpbmdzW3VuY29u
ZGl0aW9uYWxTZXR0aW5nTmFtZV0KLSAgICAgICAgcHJpbnRTZXR0ZXJCb2R5KG91dHB1dEZpbGUs
IHNldHRpbmcpCi0KLSAgICBmb3IgY29uZGl0aW9uYWwgaW4gc29ydGVkQ29uZGl0aW9uYWxzOgot
ICAgICAgICBvdXRwdXRGaWxlLndyaXRlKCIgICAgIiArIG1ha2VQcmVmZXJyZWRDb25kaXRpb25h
bChjb25kaXRpb25hbCkgKyAiX1NFVFRJTkdTX1NFVFRFUl9CT0RJRVMgXFxcbiIpCi0KLSAgICBv
dXRwdXRGaWxlLndyaXRlKCIvLyBFbmQgb2YgU0VUVElOR1NfU0VUVEVSX0JPRElFUy5cblxuIikK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvR2VuZXJhdGVTZXR0
aW5ncy9HZW5lcmF0ZVNldHRpbmdzTWFjcm9zSGVhZGVyLnB5Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0
dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU2NyaXB0cy9HZW5lcmF0ZVNl
dHRpbmdzL1NldHRpbmdzLnB5CShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL0dlbmVyYXRlU2V0dGluZ3MvU2V0dGluZ3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDE4ICs3Niw0NiBAQCBjbGFzcyBTZXR0aW5nOgogICAgICAgICAgICAgcmVzdWx0ICs9ICIgUkVD
QUxDOiIgKyBzZWxmLnNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcwogICAgICAgICByZXR1
cm4gcmVzdWx0CiAKKyAgICBkZWYgaGFzQ29tcGxleFNldHRlcihzZWxmKToKKyAgICAgICAgaWYg
c2VsZi5zZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM6CisgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiB0eXBlSXNWYWx1ZVR5cGUoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYudHlwZSA9PSAnU3RyaW5nJzoKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHNldHRlckZ1bmN0aW9uTmFt
ZShzZWxmKToKKyAgICAgICAgZm9yIHByZWZpeCBpbiBbImNzcyIsICJ4c3MiLCAiZnRwIiwgImRv
bSJdOgorICAgICAgICAgICAgaWYgc2VsZi5uYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gInNldCIgKyB1cHBlcmNhc2VGaXJzdE4oc2VsZi5uYW1lLCBsZW4o
cHJlZml4KSkKKyAgICAgICAgcmV0dXJuICJzZXQiICsgdXBwZXJjYXNlRmlyc3ROKHNlbGYubmFt
ZSwgMSkKKworICAgIGRlZiBnZXR0ZXJGdW5jdGlvbk5hbWUoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLm5hbWUKKworICAgIGRlZiBpZGxUeXBlKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3IgbW9yZSB0eXBlcyBpbmNsdWRpbmcgZW51bWVyYXRlIHR5cGVzLgorICAg
ICAgICBpZiBzZWxmLnR5cGUgPT0gJ2ludCc6CisgICAgICAgICAgICByZXR1cm4gJ2xvbmcnCisg
ICAgICAgIGlmIHNlbGYudHlwZSA9PSAndW5zaWduZWQnOgorICAgICAgICAgICAgcmV0dXJuICd1
bnNpZ25lZCBsb25nJworICAgICAgICBpZiBzZWxmLnR5cGUgPT0gJ2RvdWJsZSc6CisgICAgICAg
ICAgICByZXR1cm4gJ2RvdWJsZScKKyAgICAgICAgaWYgc2VsZi50eXBlID09ICdmbG9hdCc6Cisg
ICAgICAgICAgICByZXR1cm4gJ2Zsb2F0JworICAgICAgICBpZiBzZWxmLnR5cGUgPT0gJ1N0cmlu
Zyc6CisgICAgICAgICAgICByZXR1cm4gJ0RPTVN0cmluZycKKyAgICAgICAgaWYgc2VsZi50eXBl
ID09ICdib29sJzoKKyAgICAgICAgICAgIHJldHVybiAnYm9vbGVhbicKKyAgICAgICAgcmV0dXJu
IE5vbmUKKwogCiBkZWYgdXBwZXJjYXNlRmlyc3ROKHN0cmluZywgbik6CiAgICAgcmV0dXJuIHN0
cmluZ1s6bl0udXBwZXIoKSArIHN0cmluZ1tuOl0KIAogCi1kZWYgbWFrZVNldHRlckZ1bmN0aW9u
TmFtZShzZXR0aW5nKToKLSAgICBmb3IgcHJlZml4IGluIFsiY3NzIiwgInhzcyIsICJmdHAiLCAi
ZG9tIl06Ci0gICAgICAgIGlmIHNldHRpbmcubmFtZS5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAg
ICAgICAgICByZXR1cm4gInNldCIgKyB1cHBlcmNhc2VGaXJzdE4oc2V0dGluZy5uYW1lLCBsZW4o
cHJlZml4KSkKLSAgICByZXR1cm4gInNldCIgKyB1cHBlcmNhc2VGaXJzdE4oc2V0dGluZy5uYW1l
LCAxKQotCi0KIGRlZiBtYWtlUHJlZmVycmVkQ29uZGl0aW9uYWwoY29uZGl0aW9uYWwpOgogICAg
IHJldHVybiBjb25kaXRpb25hbC5zcGxpdCgnfCcpWzBdCiAKQEAgLTk3LDIzICsxMjUsNiBAQCBk
ZWYgbWFrZUNvbmRpdGlvbmFsU3RyaW5nKGNvbmRpdGlvbmFsKToKICAgICByZXR1cm4gIkVOQUJM
RSgiICsgIikgfHwgRU5BQkxFKCIuam9pbihjb25kaXRpb25hbHMpICsgIikiCiAKIAotZGVmIG1h
cFRvSURMVHlwZShzZXR0aW5nKToKLSAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbW9yZSB0
eXBlcyBpbmNsdWRpbmcgZW51bWVyYXRlIHR5cGVzLgotICAgIGlmIHNldHRpbmcudHlwZSA9PSAn
aW50JzoKLSAgICAgICAgcmV0dXJuICdsb25nJwotICAgIGlmIHNldHRpbmcudHlwZSA9PSAndW5z
aWduZWQnIG9yIHNldHRpbmcudHlwZSA9PSAnc2l6ZV90JzoKLSAgICAgICAgcmV0dXJuICd1bnNp
Z25lZCBsb25nJwotICAgIGlmIHNldHRpbmcudHlwZSA9PSAnZG91YmxlJzoKLSAgICAgICAgcmV0
dXJuICdkb3VibGUnCi0gICAgaWYgc2V0dGluZy50eXBlID09ICdmbG9hdCc6Ci0gICAgICAgIHJl
dHVybiAnZmxvYXQnCi0gICAgaWYgc2V0dGluZy50eXBlID09ICdTdHJpbmcnOgotICAgICAgICBy
ZXR1cm4gJ0RPTVN0cmluZycKLSAgICBpZiBzZXR0aW5nLnR5cGUgPT0gJ2Jvb2wnOgotICAgICAg
ICByZXR1cm4gJ2Jvb2xlYW4nCi0gICAgcmV0dXJuIE5vbmUKLQotCiBkZWYgcGFyc2VJbnB1dChp
bnB1dCk6CiAgICAgc2V0dGluZ3MgPSB7fQogICAgIGZvciBsaW5lIGluIG9wZW4oaW5wdXQsICJy
Iik6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyMjM2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1NDgsOCArMjU0OCw2
IEBACiAJCTUzRTI5RTVGMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Uy
OUU1RDE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICovOyB9
OwogCQk1M0VEM0ZERTE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
RUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3Bw
ICovOyB9OwogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmggKi87IH07Ci0JCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07Ci0JCTUzRUY3NjZDMTY1
MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1MENCNDIxRTk1NUUzQzAwMTExQUEwIC8q
IEltYWdlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1NTBDQjQxMUU5NTVFM0MwMDExMUFBMCAvKiBJbWFnZVR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1MTEsNyArNzUwOSw2IEBA
CiAJCQkJMTQwM0JBMEYwOUVCMThGOTAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQkxNERDMEQzODA5RkVEMDczMDA3QjAyMzUgLyogSlNO
b2RlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQk3Q0Q1OERGRTFGOTU2NUVD
MDAxMTI3OTEgLyogU2V0dGluZ3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAotCQkJ
CTUzRUY3NjZDMTY1MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8sCiAJCQkJMDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05h
bWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQkxQTE0MTRCNjEzQTBGMDUw
MDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLywKIAkJCSk7CkBAIC0xMDQ4Nyw3ICsxMDQ4NCw2IEBACiAJCTUzRTI5RTVEMTY3QThB
MTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNFRDNGREMxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1M0VGNzY2
QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTQ4OCw3ICsxOTQ4NCw2IEBACiAJCQkJMjZBQTBGOUYxOEQy
QTFDMTAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5cGVNYXAuZ3BlcmYgKi8sCiAJ
CQkJN0NFQjU3RUExRjk1NjUxNTAwMDk3QUVDIC8qIFNldHRpbmdzLmNwcCAqLywKIAkJCQk3Q0VC
NTdFOTFGOTU2NTE1MDAwOTdBRUMgLyogU2V0dGluZ3MuaCAqLywKLQkJCQk1M0VGNzY2QTE2NTMw
QTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLywKIAkJCQk5OTA4QjBGRDFCQ0FEMDdE
MDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2
MUJCMzExMEQwMEI3NjRDOSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovLAogCQkJCTgz
ODZBOTZFMTlGNjFFNEYwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovLApAQCAtMzAxODUs
NyArMzAxODAsNiBAQAogCQkJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rp
b25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Q1OERGQjFGOTU2NUE1MDAxMTI3OTEg
LyogU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQzk3MjJFMUY5M0UzMzYwMDA0RDRD
RiAvKiBTZXR0aW5nc0Jhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzRUY3NjZCMTY1MzBBNjEw
MDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAx
MkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVC
OEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NkQxNjk2NDEzNDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>