<?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>184699</bug_id>
          
          <creation_ts>2018-04-17 09:54:39 -0700</creation_ts>
          <short_desc>[GTK] Generate a JSC bundle on the 64 and 32 bit release bots and upload it to webkitgtk.org</short_desc>
          <delta_ts>2020-06-25 13:33:00 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179945</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=213615</see_also>
          <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="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Carlos Alberto Lopez Perez">clopez</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>lforschler</cc>
    
    <cc>mathias</cc>
    
    <cc>ossy</cc>
    
    <cc>psaavedra</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415187</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-17 09:54:39 -0700</bug_when>
    <thetext>The developers from the jsvu project &lt;https://github.com/GoogleChromeLabs/jsvu&gt; will like access to the JSC built products the x86_64 and x86_32 WebKitGTK+ (Linux) bots generate daily at http://build.webkit.org/waterfall?category=GTK

More details: https://lists.webkit.org/pipermail/webkit-dev/2017-December/029805.html

In order to provide this JSC bundle, the first idea was to re-use the current built products that the x86_64 bot generates for testing on the test bots.
But there is an issue with this built products, and is that they don&apos;t bundle any libraries from JHBuild or the system.

And adding this libraries would cause the size of the bundle to grow significantly, and it will not work in any case for the 32-bit bot as this one doesn&apos;t generate a built product at all currently.

So a better idea may be to generate a new bundle specifically for JSC with only the jsc binary and the libraries that links with it.

This bundle can be generated and uploaded in a new step for the GTK release build bots (x86_64 and x86_32 bit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415213</commentid>
    <comment_count>1</comment_count>
      <attachid>338131</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-17 11:08:14 -0700</bug_when>
    <thetext>Created attachment 338131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415214</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 11:10:51 -0700</bug_when>
    <thetext>Attachment 338131 did not pass style-queue:


ERROR: Tools/BuildSlaveSupport/build.webkit.org-config/factories.py:66:  [BuildFactory.__init__] Undefined variable &apos;GenerateJSCBundle&apos;  [pylint/E0602] [5]
ERROR: Tools/BuildSlaveSupport/build.webkit.org-config/factories.py:101:  [TestFactory.__init__] Undefined variable &apos;GenerateJSCBundle&apos;  [pylint/E0602] [5]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415215</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-17 11:13:10 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #2)
&gt; Attachment 338131 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Tools/BuildSlaveSupport/build.webkit.org-config/factories.py:66: 
&gt; [BuildFactory.__init__] Undefined variable &apos;GenerateJSCBundle&apos; 
&gt; [pylint/E0602] [5]
&gt; ERROR: Tools/BuildSlaveSupport/build.webkit.org-config/factories.py:101: 
&gt; [TestFactory.__init__] Undefined variable &apos;GenerateJSCBundle&apos; 
&gt; [pylint/E0602] [5]
&gt; Total errors found: 2 in 6 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

BTW, this warnings are incorrect. GenerateJSCBundle() is implemented on steps.py but the tool seems confused with that. I double-checked with the script run-buildbot-test.py that the master starts fine with this config changes and does what is expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415230</commentid>
    <comment_count>4</comment_count>
      <attachid>338136</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-17 11:50:57 -0700</bug_when>
    <thetext>Created attachment 338136
Patch

Patch v2, minor cosmetic changes on the script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415232</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-17 11:53:19 -0700</bug_when>
    <thetext>Attachment 338136 did not pass style-queue:


ERROR: Tools/BuildSlaveSupport/build.webkit.org-config/factories.py:66:  [BuildFactory.__init__] Undefined variable &apos;GenerateJSCBundle&apos;  [pylint/E0602] [5]
ERROR: Tools/BuildSlaveSupport/build.webkit.org-config/factories.py:101:  [TestFactory.__init__] Undefined variable &apos;GenerateJSCBundle&apos;  [pylint/E0602] [5]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419036</commentid>
    <comment_count>6</comment_count>
      <attachid>338136</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2018-04-30 10:29:52 -0700</bug_when>
    <thetext>Comment on attachment 338136
Patch

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

LGTM, and I installed the packages and deployed the file in 32bot =) sorry for the delay!

&gt; Tools/Scripts/generate-jsc-bundle:124
&gt; +    # Clean everthing from previous runs

everything*

&gt; Tools/Scripts/generate-jsc-bundle:142
&gt; +    # jsvu project preffers .zip rather than .tar.xz

prefers*

Interesting, I wasn&apos;t aware of jsvu =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419623</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-05-02 05:00:47 -0700</bug_when>
    <thetext>Committed r231230: &lt;https://trac.webkit.org/changeset/231230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419624</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-02 05:01:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/39900292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419804</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-05-02 13:08:07 -0700</bug_when>
    <thetext>Committed r231256: &lt;https://trac.webkit.org/changeset/231256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338131</attachid>
            <date>2018-04-17 11:08:14 -0700</date>
            <delta_ts>2018-04-17 11:50:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184699-20180417200813.patch</filename>
            <type>text/plain</type>
            <size>23858</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzA2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjM5NTYwNjRmN2QyN2QwM2U2MjA5NjZiN2U4ZTg1YjA1
ZmQ5NGJlZS4uYjk3MmQ5OTVkNjhlOWZhYTY4MmJiN2NjYzU4ZTI3Mjc5ZjYzZmQyZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDE4LTA0LTE3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIEdlbmVyYXRlIGEgSlNDIGJ1bmRsZSBvbiB0aGUgNjQg
YW5kIDMyIGJpdCByZWxlYXNlIGJvdHMgYW5kIHVwbG9hZCBpdCB0byB3ZWJraXRndGsub3JnCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2OTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMg
YSBuZXcgc3RlcCBmb3IgdGhlIEdUSyA2NC1iaXQgcmVsZWFzZSBidWlsZCBib3QgYW5kIHRoZQor
ICAgICAgICBHVEsgMzItYml0IHJlbGVhc2UgYnVpbGQmdGVzdCBib3QuCisKKyAgICAgICAgVGhp
cyBzdGVwIHdpbGwgYmUgcnVuIGFzIG9uZSBvZiB0aGUgbGFzdHMgb25lcyAoYWZ0ZXIgdGhlIHBy
b2R1Y3QKKyAgICAgICAgaXMgYnVpbHQpIGFuZCB3aWxsIGV4ZWN1dGUgdGhlIHNjcmlwdCBnZW5l
cmF0ZS1qc2MtYnVuZGxlLgorICAgICAgICBUaGlzIHNjcmlwdCB3aWxsIHRha2UgY2FyZSBvZiBj
cmVhdGluZyBhIEpTQyBidW5kbGUgYW5kIHVwbG9hZGluZworICAgICAgICBpdCB0byBhIHNlcnZl
ciBkZWZpbmVkIG9uIGEgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgaGFzIHRvIGJlCisgICAgICAg
IGRlcGxveWVkIG9uIHRoZSBib3RzIHdpdGggdGhlIHJlcXVpcmVkIHNlcnZlciBkYXRhIGFuZCBj
cmVkZW50aWFscworICAgICAgICBmb3IgdGhpcyB1cGxvYWQuCisKKyAgICAgICAgSW4gdGhpcyBj
YXNlLCB0aGUgYnVpbHQgcHJvZHVjdHMgc2hvdWxkIHRoZW4gYmUgYWNjZXNzaWJsZSBhdAorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXRndGsub3JnL2pzYy1idWlsdC1wcm9kdWN0cz4uIEJ1dCB0aGUg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaXMgbm90IHRpZWQgdG8gYW55IHNwZWNpZmljIHNlcnZl
ci4gQWxsIHRoZSBkZXRhaWxzIGFib3V0IHdoZXJlCisgICAgICAgIHRvIHVwbG9hZCB0aGUgZmls
ZSBpcyBkb25lIGluIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGlzIGtlcHQKKyAgICAgICAgcHJp
dmF0ZSBvbiBlYWNoIGJvdCBvdXRzaWRlIG9mIHRoZSBXZWJLaXQgc291cmNlIHRyZWUuCisKKyAg
ICAgICAgVGhlIHNjcmlwdCBhbHNvIHN1cHBvcnRzIGdlbmVyYXRpbmcgYSBKU0MgYnVuZGxlIGxv
Y2FsbHkgYW5kIG5vdAorICAgICAgICB1cGxvYWRpbmcgaXQgYW55d2hlcmUuIFRoaXMgaXMgdGhl
IGRlZmF1bHQgbW9kZSBvZiBydW5uaW5nLgorICAgICAgICBUaGUgcmVtb3RlIHVwbG9hZCB3aWxs
IG9ubHkgYmUgYWN0aXZhdGVkIGlmIGEgLS1yZW1vdGUtY29uZmlnLWZpbGUKKyAgICAgICAgcGFy
YW1ldGVyIGlzIHBhc3NlZCAod2hpY2ggaXMgZG9uZSBmcm9tIHRoZSBidWlsZGJvdCBjb25maWcp
CisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9j
b25maWcuanNvbjoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9mYWN0b3JpZXMucHk6CisgICAgICAgIChCdWlsZEZhY3RvcnkpOgorICAgICAgICAo
QnVpbGRGYWN0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKFRlc3RGYWN0b3J5KToKKyAgICAgICAg
KFRlc3RGYWN0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKEJ1aWxkQW5kR2VuZXJhdGVKU0NCdW5k
bGVGYWN0b3J5KToKKyAgICAgICAgKEJ1aWxkQW5kTm9uTGF5b3V0VGVzdEFuZEdlbmVyYXRlSlND
QnVuZGxlRmFjdG9yeSk6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvc3RlcHMucHk6CisgICAgICAgIChHZW5lcmF0ZUpTQ0J1bmRsZSk6CisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlOiBBZGRlZC4K
KyAgICAgICAgKGxkZF9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIpOgorICAgICAgICAoZ2VuZXJh
dGVfcmVhZG1lKToKKyAgICAgICAgKGdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KToKKyAgICAgICAg
KGNvcHlfYW5kX3JlbW92ZV9ycGF0aCk6CisgICAgICAgIChjcmVhdGVKU0NCdW5kbGUpOgorICAg
ICAgICAoc2hhMjU2c3VtKToKKyAgICAgICAgKHVwbG9hZEpTQ0J1bmRsZSk6CisgICAgICAgICht
YWluKToKKwogMjAxOC0wNC0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dMSUJdIEFkZCBBUEkgdG8gY2xlYXIgSlNDQ29udGV4dCB1bmNh
dWdodCBleGNlcHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24KaW5kZXggMDQ5MjI3NDdhZTQwYTU3
ZTZlZWQ0MTdmMmQ3NTEzODZkZTdiYTQyMS4uOTRlZWY1MzVhMDYxNDkzNTQ0YjkyMTk1ZTFlY2E5
YmZiNjdkYTNjMyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24KKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24KQEAgLTIzMSwxMiArMjMxLDEyIEBA
CiAgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbImJvdDUwNyIsICJib3Q1MDQi
XQogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlIiwgInR5cGUi
OiAiQnVpbGRBbmROb25MYXlvdXRUZXN0IiwgImJ1aWxkZGlyIjogImd0ay1saW51eC0zMi1yZWxl
YXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEsgTGludXggMzItYml0IFJl
bGVhc2UiLCAidHlwZSI6ICJCdWlsZEFuZE5vbkxheW91dFRlc3RBbmRHZW5lcmF0ZUpTQ0J1bmRs
ZSIsICJidWlsZGRpciI6ICJndGstbGludXgtMzItcmVsZWFzZSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJj
aGl0ZWN0dXJlcyI6IFsiaTM4NiJdLAogICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVz
IjogWyJndGstbGludXgtc2xhdmUtMSJdCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEsgTGludXgg
NjQtYml0IFJlbGVhc2UgKEJ1aWxkKSIsICJ0eXBlIjogIkJ1aWxkIiwgImJ1aWxkZGlyIjogImd0
ay1saW51eC02NC1yZWxlYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEsg
TGludXggNjQtYml0IFJlbGVhc2UgKEJ1aWxkKSIsICJ0eXBlIjogIkJ1aWxkQW5kR2VuZXJhdGVK
U0NCdW5kbGUiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UiLAogICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAogICAgICAgICAgICAgICAgICAgICAgICJ0
cmlnZ2VycyI6IFsiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtdGVzdHMiLCAiZ3RrLWxpbnV4LTY0LXJl
bGVhc2Utd2F5bGFuZC10ZXN0cyIsICJndGstbGludXgtNjQtcmVsZWFzZS1wZXJmLXRlc3RzIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbImd0ay1saW51eC1zbGF2ZS0y
Il0KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL2ZhY3Rvcmllcy5weSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL2ZhY3Rvcmllcy5weQppbmRleCA2MWRlMGNkYmMxNGNjZTA0NzIzNDQyYzlj
YjM2ZWNmOWY5MzFkYjhlLi4wMDdmMDk3YmEwYWYzOTM3YzFiNjA3MmU4ZDVjOWJlZjMzOTUwOTY2
IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9mYWN0b3JpZXMucHkKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvZmFjdG9yaWVzLnB5CkBAIC00Niw2ICs0Niw4IEBAIGNsYXNzIEZhY3Rv
cnkoZmFjdG9yeS5CdWlsZEZhY3RvcnkpOgogCiAKIGNsYXNzIEJ1aWxkRmFjdG9yeShGYWN0b3J5
KToKKyAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gRmFsc2UKKwogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9
Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBTVk5NaXJyb3I9Tm9uZSk6CiAgICAgICAg
IEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXMsIFRydWUsIGFkZGl0aW9uYWxBcmd1bWVudHMsIFNWTk1pcnJvcikKIApAQCAtNjAsNiAr
NjIsOCBAQCBjbGFzcyBCdWlsZEZhY3RvcnkoRmFjdG9yeSk6CiAgICAgICAgICAgICBpZiBwbGF0
Zm9ybS5zdGFydHN3aXRoKCdtYWMnKSBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCdpb3Mtc2ltdWxh
dG9yJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEFyY2hpdmVNaW5pZmllZEJ1aWx0
UHJvZHVjdCgpKQogICAgICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChVcGxvYWRNaW5pZmllZEJ1
aWx0UHJvZHVjdCgpKQorICAgICAgICAgICAgaWYgc2VsZi5TaG91bGRSdW5KU0NCdW5kbGVTdGVw
OgorICAgICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChHZW5lcmF0ZUpTQ0J1bmRsZSgpKQogICAg
ICAgICAgICAgc2VsZi5hZGRTdGVwKFRyYW5zZmVyVG9TMygpKQogICAgICAgICAgICAgc2VsZi5h
ZGRTdGVwKHRyaWdnZXIuVHJpZ2dlcihzY2hlZHVsZXJOYW1lcz10cmlnZ2VycykpCiAKQEAgLTY3
LDYgKzcxLDcgQEAgY2xhc3MgQnVpbGRGYWN0b3J5KEZhY3RvcnkpOgogY2xhc3MgVGVzdEZhY3Rv
cnkoRmFjdG9yeSk6CiAgICAgSlNDVGVzdENsYXNzID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0cwog
ICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzCisgICAgU2hvdWxkUnVuSlNDQnVu
ZGxlU3RlcCA9IEZhbHNlCiAKICAgICBkZWYgZ2V0UHJvZHVjdChzZWxmKToKICAgICAgICAgc2Vs
Zi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCkBAIC05Miw2ICs5Nyw4IEBAIGNsYXNz
IFRlc3RGYWN0b3J5KEZhY3RvcnkpOgogICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEFyY2hpdmVU
ZXN0UmVzdWx0cygpKQogICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFVwbG9hZFRlc3RSZXN1bHRz
KCkpCiAgICAgICAgICAgICBzZWxmLmFkZFN0ZXAoRXh0cmFjdFRlc3RSZXN1bHRzKCkpCisgICAg
ICAgIGlmIHNlbGYuU2hvdWxkUnVuSlNDQnVuZGxlU3RlcDoKKyAgICAgICAgICAgIHNlbGYuYWRk
U3RlcChHZW5lcmF0ZUpTQ0J1bmRsZSgpKQogICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIjoK
ICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5HdGtBUElUZXN0cygpKQogICAgICAgICAgICAg
c2VsZi5hZGRTdGVwKFJ1bldlYkRyaXZlclRlc3RzKCkpCkBAIC0xNTEsNiArMTU4LDE0IEBAIGNs
YXNzIFRlc3RBbGxCdXRKU0NGYWN0b3J5KFRlc3RGYWN0b3J5KToKICAgICBKU0NUZXN0Q2xhc3Mg
PSBOb25lCiAKIAorY2xhc3MgQnVpbGRBbmRHZW5lcmF0ZUpTQ0J1bmRsZUZhY3RvcnkoQnVpbGRG
YWN0b3J5KToKKyAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gVHJ1ZQorCisKK2NsYXNzIEJ1
aWxkQW5kTm9uTGF5b3V0VGVzdEFuZEdlbmVyYXRlSlNDQnVuZGxlRmFjdG9yeShCdWlsZEFuZE5v
bkxheW91dFRlc3RGYWN0b3J5KToKKyAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gVHJ1ZQor
CisKIGNsYXNzIFRlc3RKU0NGYWN0b3J5KEZhY3RvcnkpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFyZ3Vt
ZW50cz1Ob25lLCBTVk5NaXJyb3I9Tm9uZSk6CiAgICAgICAgIEZhY3RvcnkuX19pbml0X18oc2Vs
ZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIEZhbHNlLCBhZGRpdGlv
bmFsQXJndW1lbnRzLCBTVk5NaXJyb3IpCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwcy5weSBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CmluZGV4IDBjOTg3ZDQ0YjAz
YWM2NDVjMWNiNzM4ZDM1ZjgzY2FmMDUyYTdhMTcuLjUwMjQwZDNjNjhiYTRkNzcxNTk4MDYxMDM5
YmI3OWI4ODFjOWVkMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CkBAIC0yNjAsNiArMjYwLDE1IEBAIGNs
YXNzIEFyY2hpdmVNaW5pZmllZEJ1aWx0UHJvZHVjdChBcmNoaXZlQnVpbHRQcm9kdWN0KToKICAg
ICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMi
KSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFyY2hpdmUiLCAiLS1t
aW5pZnkiXQogCiAKK2NsYXNzIEdlbmVyYXRlSlNDQnVuZGxlKHNoZWxsLlNoZWxsQ29tbWFuZCk6
CisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2Mt
YnVuZGxlIiwgIi0tYnVpbGRlci1uYW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUp
cyIpLAorICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxh
dGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLAorICAgICAg
ICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcmV2aXNpb249JShnb3RfcmV2aXNpb24pcyIpLCAi
LS1yZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4vcmVtb3RlLWpzYy1idW5kbGUtdXBsb2FkLWNv
bmZpZy5qc29uIl0KKyAgICBuYW1lID0gImdlbmVyYXRlLWpzYy1idW5kbGUiCisgICAgZGVzY3Jp
cHRpb24gPSBbImdlbmVyYXRpbmcganNjIGJ1bmRsZSJdCisgICAgZGVzY3JpcHRpb25Eb25lID0g
WyJnZW5lcmF0ZWQganNjIGJ1bmRsZSJdCisgICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCisKIGNs
YXNzIEV4dHJhY3RCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKICAgICBjb21tYW5k
ID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFy
Y2hpdmUiLAogICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxs
UGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiZXh0
cmFjdCJdCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IGM5MzRlN2M5Mzhh
MDRjMmVjZThhOTA4YzQ2OGFmN2U3NzNjYTQwYWUuLjRjYjZmYzIyZWVhZjJjYzlkODk3MWE0YjE2
MjNkYzEyMWEzZjc2Y2QgMTAwNzU1Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5CkBAIC00
NDgsMTAgKzQ0OCwxMCBAQCBleHBlY3RlZF9idWlsZF9zdGVwcyA9IHsKICAgICAnSlNDT25seSBM
aW51eCBBQXJjaDY0IFJlbGVhc2UnOiBbJ2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAnZGVsZXRl
IFdlYktpdEJ1aWxkIGRpcmVjdG9yeScsICdkZWxldGUgc3RhbGUgYnVpbGQgZmlsZXMnLCAnY29t
cGlsZS13ZWJraXQnLCAnanNjb3JlLXRlc3QnXSwKICAgICAnSlNDT25seSBMaW51eCBNSVBTMzJl
bCBSZWxlYXNlJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2RlbGV0ZSBXZWJLaXRCdWls
ZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2NvbXBpbGUtd2Via2l0
JywgJ2pzY29yZS10ZXN0J10sCiAKLSAgICAnR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlJzogWydj
b25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nlc3NlcycsICdkZWxldGUgV2Vi
S2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWlsZCBmaWxlcycsICdqaGJ1aWxk
JywgJ2NvbXBpbGUtd2Via2l0JywgJ2pzY29yZS10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Vi
a2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2Vu
ZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdBUEkgdGVzdHMnLCAnd2ViZHJpdmVy
LXRlc3QnXSwKKyAgICAnR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlJzogWydjb25maWd1cmUgYnVp
bGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nlc3NlcycsICdkZWxldGUgV2ViS2l0QnVpbGQgZGly
ZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWlsZCBmaWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUt
d2Via2l0JywgJ2pzY29yZS10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0
JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3Rz
JywgJ2Rhc2hib2FyZC10ZXN0cycsICdnZW5lcmF0ZS1qc2MtYnVuZGxlJywgJ0FQSSB0ZXN0cycs
ICd3ZWJkcml2ZXItdGVzdCddLAogICAgICdHVEsgTGludXggNjQtYml0IERlYnVnIChCdWlsZCkn
OiBbJ2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAna2lsbCBvbGQgcHJvY2Vzc2VzJywgJ2RlbGV0
ZSBXZWJLaXRCdWlsZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2po
YnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9h
ZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCiAgICAgJ0dUSyBMaW51eCA2NC1iaXQg
RGVidWcgKFRlc3RzKSc6IFsnY29uZmlndXJlIGJ1aWxkJywgJ3N2bicsICdraWxsIG9sZCBwcm9j
ZXNzZXMnLCAnZGVsZXRlIFdlYktpdEJ1aWxkIGRpcmVjdG9yeScsICdkZWxldGUgc3RhbGUgYnVp
bGQgZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3Qt
YnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICdsYXlvdXQtdGVzdCcsICd3ZWJraXRweS10
ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAnYXJjaGl2ZS10ZXN0
LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCcsICdBUEkgdGVzdHMnLCAn
d2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNlIChCdWlsZCkn
OiBbJ2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAna2lsbCBvbGQgcHJvY2Vzc2VzJywgJ2RlbGV0
ZSBXZWJLaXRCdWlsZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2po
YnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9h
ZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCisgICAgJ0dUSyBMaW51eCA2NC1iaXQg
UmVsZWFzZSAoQnVpbGQpJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHBy
b2Nlc3NlcycsICdkZWxldGUgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBi
dWlsZCBmaWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQt
cHJvZHVjdCcsICd1cGxvYWQnLCAnZ2VuZXJhdGUtanNjLWJ1bmRsZScsICd0cmFuc2Zlci10by1z
MycsICd0cmlnZ2VyJ10sCiAgICAgJ0dUSyBMaW51eCA2NC1iaXQgUmVsZWFzZSAoUGVyZiknOiBb
J2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAna2lsbCBvbGQgcHJvY2Vzc2VzJywgJ2RlbGV0ZSBX
ZWJLaXRCdWlsZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2poYnVp
bGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAn
cGVyZi10ZXN0JywgJ2JlbmNobWFyay10ZXN0J10sCiAgICAgJ0dUSyBMaW51eCA2NC1iaXQgUmVs
ZWFzZSAoVGVzdHMpJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nl
c3NlcycsICdkZWxldGUgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWls
ZCBmaWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1i
dWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5LXRl
c3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVp
bHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRlc3Qt
cmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQSSB0ZXN0cycsICd3
ZWJkcml2ZXItdGVzdCddLAogICAgICdHVEsgTGludXggNjQtYml0IFJlbGVhc2UgV2F5bGFuZCAo
VGVzdHMpJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nlc3Nlcycs
ICdkZWxldGUgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWlsZCBmaWxl
cycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1w
cm9kdWN0JywgJ2pzY29yZS10ZXN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAn
d2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMt
Z2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRlc3QtcmVzdWx0
cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQSSB0ZXN0cycsICd3ZWJkcml2
ZXItdGVzdCddLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxl
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxYjlhYmE5
YTc3NWM1YTMyNzg0NzVmM2MwNjIyNDAxMzI0NGVlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWpzYy1idW5kbGUKQEAgLTAsMCArMSwyNDUgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMKKyMgICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyMgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorIyAgICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYmFzZTY0
CitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBv
cworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0
ZW1wZmlsZQoraW1wb3J0IHppcGZpbGUKKwordG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgu
bm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcu
LicpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5
LCAnVG9vbHMnLCAnamhidWlsZCcpKQoraW1wb3J0IGpoYnVpbGR1dGlscworCisKKyMgSWRlYWxs
eSB3ZSBzaG91bGQgdXNlIHNvbWV0aGluZyBsaWtlIGxkZHRyZWUgb3IgY3JlYXRlIG91ciBvd24g
dmVyc2lvbiBvZiB0aGF0CisjIEJ1dCBpbiBwcmFjdGljZSBmb3IganNjIGJ1bmRsZXMgdGhlcmUg
aXNuJ3QgcmVjdXJzaXZlIGxpYnJhcnkgZW50cmllcywgc28gd2UKKyMgdXNlIHN0YW5kYXJkIGxk
ZCBoZXJlIGp1c3QgdG8gYXZvaWQgaGF2aW5nIHRvIHJlcXVpcmUgbGRkdHJlZS4KK2RlZiBsZGRf
Z2V0X2xpYnNfYW5kX2ludGVycHJldGVyKGJpbmFyeSk6CisgICAgbGRkQ29tbWFuZCA9IFsnbGRk
JywgYmluYXJ5XQorICAgIGxkZFByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGxkZENvbW1hbmQs
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICBz
dGRvdXQsIHN0ZGVyciA9IGxkZFByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgIGlmIGxkZFByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZSBsZGQg
Y29tbWFuZCByZXR1cm5lZCBub24temVybyBzdGF0dXMnKQorICAgIGxpYnMgPSBbXQorICAgIGZv
ciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlw
KCkKKyAgICAgICAgaWYgJz0+JyBpbiBsaW5lOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Bs
aXQoJz0+JylbMV0uc3RyaXAoKQorICAgICAgICAgICAgaWYgJ25vdCBmb3VuZCcgaW4gbGluZToK
KyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1NvbWUgZGVwZW5kZW5jaWVzIGNh
biBub3QgYmUgZm91bmQgd2l0aCBsZGQuJykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0
KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobGluZSk6Cisg
ICAgICAgICAgICAgICAgbGlicy5hcHBlbmQobGluZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcgJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgaWYgb3Mu
cGF0aC5pc2ZpbGUobGluZSk6CisgICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBsaW5lCisg
ICAgcmV0dXJuIGxpYnMsIGludGVycHJldGVyCisKKworZGVmIGdlbmVyYXRlX3JlYWRtZShidW5k
bGVUbXBEaXIsIGJ1aWxkZXJOYW1lLCBjb25maWd1cmF0aW9uLCBwbGF0Zm9ybSwgcmV2aXNpb24p
OgorICAgIHByaW50KCdHZW5lcmF0ZSBSRUFETUUudHh0IGZpbGUnKQorICAgIHJlYWRtZUZpbGUg
PSBvcy5wYXRoLmpvaW4oYnVuZGxlVG1wRGlyLCAnUkVBRE1FLnR4dCcpCisgICAgd2l0aCBvcGVu
KHJlYWRtZUZpbGUsICd3JykgYXMgcmVhZG1lSGFuZGxlOgorICAgICAgICByZWFkbWVIYW5kbGUu
d3JpdGUoJ0pTQyBidW5kbGUgZGV0YWlsc1xuJykKKyAgICAgICAgcmVhZG1lSGFuZGxlLndyaXRl
KCcgQnVpbGRlciBuYW1lOiAlc1xuJyAlIGJ1aWxkZXJOYW1lKQorICAgICAgICByZWFkbWVIYW5k
bGUud3JpdGUoJyBCdWlsZGVyIGRhdGU6ICVzXG4nICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCku
aXNvZm9ybWF0KCkpCisgICAgICAgIHJlYWRtZUhhbmRsZS53cml0ZSgnIENvbmZpZ3VyYXRpb246
ICVzXG4nICUgY29uZmlndXJhdGlvbikKKyAgICAgICAgcmVhZG1lSGFuZGxlLndyaXRlKCcgV2Vi
S2l0IFBsYXRmb3JtOiAlc1xuJyAlIHBsYXRmb3JtKQorICAgICAgICByZWFkbWVIYW5kbGUud3Jp
dGUoJyBXZWJLaXQgUmV2aXNpb246ICVzXG4nICUgcmV2aXNpb24pCisgICAgICAgIHJlYWRtZUhh
bmRsZS53cml0ZSgnXG5JbnN0cnVjdGlvbnM6IEV4ZWN1dGUgdGhlIHJ1bi1qc2Mgd3JhcHBlciBz
Y3JpcHQuXG4nKQorICAgIHJldHVybiBUcnVlCisKKworZGVmIGdlbmVyYXRlX3dyYXBwZXJfc2Ny
aXB0KGJ1bmRsZVRtcERpciwgaW50ZXJwcmV0ZXIpOgorICAgIHByaW50KCdHZW5lcmF0ZSB3cmFw
cGVyIHNjcmlwdCBydW4tanNjJykKKyAgICBzY3JpcHRGaWxlID0gb3MucGF0aC5qb2luKGJ1bmRs
ZVRtcERpciwgJ3J1bi1qc2MnKQorICAgIHdpdGggb3BlbihzY3JpcHRGaWxlLCAndycpIGFzIHNj
cmlwdEhhbmRsZToKKyAgICAgICAgc2NyaXB0SGFuZGxlLndyaXRlKCcjIS9iaW4vc2hcbicpCisg
ICAgICAgIHNjcmlwdEhhbmRsZS53cml0ZSgnTVlESVI9IiQoZGlybmFtZSAkKHJlYWRsaW5rIC1m
ICQwKSkiXG4nKQorICAgICAgICBzY3JpcHRIYW5kbGUud3JpdGUoJ2V4cG9ydCBMRF9MSUJSQVJZ
X1BBVEg9IiR7TVlESVJ9L2xpYiJcbicpCisgICAgICAgIHNjcmlwdEhhbmRsZS53cml0ZSgnZXhl
YyAiJHtNWURJUn0vbGliLyVzIiAiJHtNWURJUn0vYmluL2pzYyIgJEBcbicgJSBvcy5wYXRoLmJh
c2VuYW1lKGludGVycHJldGVyKSkKKyAgICBvcy5jaG1vZChzY3JpcHRGaWxlLCAwNzU1KQorCisK
K2RlZiBjb3B5X2FuZF9yZW1vdmVfcnBhdGgob3JpZ0ZpbGUsIGRlc3RpbmF0aW9uRGlyLCB0eXBl
PSdiaW4nKToKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3JpZ0ZpbGUpOgorICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdDYW4gbm90IGZpbmQgZmlsZSAlcycgJSBvcmlnRmlsZSkKKyAgICBw
cmludCgnQ29weSB0byBidW5kbGUgWyVzXTogJXMnICUgKHR5cGUsIG9yaWdGaWxlKSkKKyAgICBz
aHV0aWwuY29weShvcmlnRmlsZSwgZGVzdGluYXRpb25EaXIpCisgICAgdHJ5OgorICAgICAgICBw
YXRjaEVsZkNvbW1hbmQgPSBbJ3BhdGNoZWxmJywgJy0tcmVtb3ZlLXJwYXRoJywgb3MucGF0aC5q
b2luKGRlc3RpbmF0aW9uRGlyLCBvcy5wYXRoLmJhc2VuYW1lKG9yaWdGaWxlKSldCisgICAgICAg
IGlmIHN1YnByb2Nlc3MuY2FsbChwYXRjaEVsZkNvbW1hbmQpICE9IDA6CisgICAgICAgICAgICBw
cmludCgnV0FSTklORzogVGhlIHBhdGNoZWxmIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3Rh
dHVzJykKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBpZiBlLmVycm5vID09IG9z
LmVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHByaW50KCdXQVJOSU5HOiBwYXRjaGVsZiBub3Qg
Zm91bmQuIE5vdCBtb2RpZnlpbmcgcnBhdGgnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmFpc2UKKworCitkZWYgY3JlYXRlSlNDQnVuZGxlKGNvbmZpZ3VyYXRpb24sIHJldmlzaW9uPU5v
bmUsIGJ1aWxkZXJOYW1lPU5vbmUsIHBsYXRmb3JtPU5vbmUpOgorICAgIGJ1aWxkRGlyID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4n
LCAnLi4nLCAnV2ViS2l0QnVpbGQnKSkKKyAgICBiaW5EaXIgPSBvcy5wYXRoLmpvaW4oYnVpbGRE
aXIsIGNvbmZpZ3VyYXRpb24uY2FwaXRhbGl6ZSgpLCAnYmluJykKKyAgICBsaWJEaXIgPSBvcy5w
YXRoLmpvaW4oYnVpbGREaXIsIGNvbmZpZ3VyYXRpb24uY2FwaXRhbGl6ZSgpLCAnbGliJykKKyAg
ICBqc2NCaW5hcnkgPSBvcy5wYXRoLmpvaW4oYmluRGlyLCAnanNjJykKKyAgICBpZiBub3Qgb3Mu
cGF0aC5pc2ZpbGUoanNjQmluYXJ5KSBvciBub3Qgb3MuYWNjZXNzKGpzY0JpbmFyeSwgb3MuWF9P
Syk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBmaW5kIGpzYyBhdCAlcycgJSBq
c2NCaW5hcnkpCisKKyAgICAjIERlZmluZSBuYW1lcyBhbmQgcGF0aHMgZm9yIHRoZSBnZW5lcmF0
aW9uIG9mIHRoZSBidW5kbGUuCisgICAgYnVuZGxlVG1wRGlyID0gb3MucGF0aC5qb2luKGJ1aWxk
RGlyLCAnanNjX3RtcCcpCisgICAgYnVuZGxlVG1wTGliRGlyID0gb3MucGF0aC5qb2luKGJ1bmRs
ZVRtcERpciwgJ2xpYicpCisgICAgYnVuZGxlVG1wQmluRGlyID0gb3MucGF0aC5qb2luKGJ1bmRs
ZVRtcERpciwgJ2JpbicpCisgICAgYnVuZGxlRmlsZU5hbWUgPSAnanNjXycgKyBjb25maWd1cmF0
aW9uCisgICAgYnVuZGxlRmlsZUNvbXByZXNzZWQgPSBvcy5wYXRoLmpvaW4oYnVpbGREaXIsIGJ1
bmRsZUZpbGVOYW1lICsgJy56aXAnKQorCisgICAgIyBDbGVhbiBldmVydGhpbmcgZnJvbSBwcmV2
aW91cyBydW5zCisgICAgaWYgb3MucGF0aC5pc2RpcihidW5kbGVUbXBEaXIpOgorICAgICAgICBz
aHV0aWwucm10cmVlKGJ1bmRsZVRtcERpcikKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShidW5kbGVG
aWxlQ29tcHJlc3NlZCk6CisgICAgICAgIG9zLnJlbW92ZShidW5kbGVGaWxlQ29tcHJlc3NlZCkK
KworICAgICMgQ3JlYXRlIGJ1bmRsZVRtcERpciBhbmQgcHV0IHRoZXJlIGV2ZXJ5dGhpbmcgbmVl
ZGVkLgorICAgIG9zLm1ha2VkaXJzKGJ1bmRsZVRtcERpcikKKyAgICBvcy5tYWtlZGlycyhidW5k
bGVUbXBMaWJEaXIpCisgICAgb3MubWFrZWRpcnMoYnVuZGxlVG1wQmluRGlyKQorICAgIGNvcHlf
YW5kX3JlbW92ZV9ycGF0aChqc2NCaW5hcnksIGJ1bmRsZVRtcEJpbkRpciwgdHlwZT0nYmluJykK
KyAgICBsaWJyYXJpZXMsIGludGVycHJldGVyID0gbGRkX2dldF9saWJzX2FuZF9pbnRlcnByZXRl
cihqc2NCaW5hcnkpCisgICAgY29weV9hbmRfcmVtb3ZlX3JwYXRoKGludGVycHJldGVyLCBidW5k
bGVUbXBMaWJEaXIsIHR5cGU9J2ludGVycHJldGVyJykKKyAgICBmb3IgbGlicmFyeSBpbiBsaWJy
YXJpZXM6CisgICAgICAgIGNvcHlfYW5kX3JlbW92ZV9ycGF0aChsaWJyYXJ5LCBidW5kbGVUbXBM
aWJEaXIsIHR5cGU9J2xpYicpCisgICAgZ2VuZXJhdGVfcmVhZG1lKGJ1bmRsZVRtcERpciwgYnVp
bGRlck5hbWUsIGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtLCByZXZpc2lvbikKKyAgICBnZW5lcmF0
ZV93cmFwcGVyX3NjcmlwdChidW5kbGVUbXBEaXIsIGludGVycHJldGVyKQorCisgICAgIyBqc3Z1
IHByb2plY3QgcHJlZmZlcnMgLnppcCByYXRoZXIgdGhhbiAudGFyLnh6CisgICAgd2l0aCB6aXBm
aWxlLlppcEZpbGUoYnVuZGxlRmlsZUNvbXByZXNzZWQsICd3JywgY29tcHJlc3Npb249emlwZmls
ZS5aSVBfREVGTEFURUQpIGFzIHppcEhhbmRsZToKKyAgICAgICAgZm9yIGRpcm5hbWUsIHN1YmRp
cnMsIGZpbGVzIGluIG9zLndhbGsoYnVuZGxlVG1wRGlyKToKKyAgICAgICAgICAgIGZvciBmaWxl
bmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBzeXN0ZW1GaWxlUGF0aCA9IG9zLnBhdGgu
am9pbihkaXJuYW1lLCBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICB6aXBGaWxlUGF0aCA9IHN5
c3RlbUZpbGVQYXRoLnJlcGxhY2UoYnVuZGxlVG1wRGlyLCAnJywgMSkubHN0cmlwKCcvJykKKyAg
ICAgICAgICAgICAgICB6aXBIYW5kbGUud3JpdGUoc3lzdGVtRmlsZVBhdGgsIHppcEZpbGVQYXRo
KQorCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGJ1bmRsZUZpbGVDb21wcmVzc2VkKToKKyAg
ICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBmaWxlICVzJyAl
IGJ1bmRsZUZpbGVDb21wcmVzc2VkKQorICAgIHJldHVybiBidW5kbGVGaWxlQ29tcHJlc3NlZAor
CisKK2RlZiBzaGEyNTZzdW0oYnVuZGxlRmlsZVBhdGgpOgorICAgIGltcG9ydCBoYXNobGliCisg
ICAgaGFzaCA9IGhhc2hsaWIuc2hhMjU2KCkKKyAgICB3aXRoIG9wZW4oYnVuZGxlRmlsZVBhdGgs
ICdyYicpIGFzIGY6CisgICAgICAgIGZvciBjaHVuayBpbiBpdGVyKGxhbWJkYTogZi5yZWFkKDQw
OTYpLCBiJycpOgorICAgICAgICAgICAgaGFzaC51cGRhdGUoY2h1bmspCisgICAgcmV0dXJuIGhh
c2guaGV4ZGlnZXN0KCkKKworCisjIFRoZSBleHBlY3RlZCBmb3JtYXQgZm9yIC0tcmVtb3RlLWNv
bmZpZy1maWxlIGlzIHNvbWV0aGluZyBsaWtlOgorIyB7CisjICJzZXJ2ZXJuYW1lIjogIndlYmtp
dGd0ay5vcmciLAorIyAic2VydmVyYWRkcmVzcyI6ICJ3ZWJraXRndGsuaW50cmFuZXQtYWRkcmVz
cy5sb2NhbCIsCisjICJzZXJ2ZXJwb3J0IjogIjIzIiwKKyMgInVzZXJuYW1lIjogInVwbG9hZC1i
b3QtNjQiLAorIyAiYmFzZXVybCI6ICJodHRwczovL3dlYmtpdGd0ay5vcmcvanNjLWJ1aWx0LXBy
b2R1Y3RzL3g4Nl82NCIsCisjICJzc2hrZXkiOiAib3V0cHV0IG9mIHRoZSBwcml2IGtleSBpbiBi
YXNlNjQuIEUuZy4gY2F0IH4vLnNzaC9pZF9yc2F8YmFzZTY0IC13MCIKKyMgfQorZGVmIHVwbG9h
ZEpTQ0J1bmRsZShidW5kbGVGaWxlUGF0aCwgcmVtb3RlQ29uZmlnRmlsZSwgY29uZmlndXJhdGlv
biwgcmV2aXNpb24pOgorICAgIHJlbW90ZURhdGEgPSBqc29uLmxvYWQob3BlbihyZW1vdGVDb25m
aWdGaWxlKSkKKyAgICByZW1vdGVGaWxlTmFtZSA9IHN0cihyZXZpc2lvbikgKyAnLnppcCcKKyAg
ICByZW1vdGVGaWxlQnVuZGxlUGF0aE5hbWUgPSBvcy5wYXRoLmpvaW4oY29uZmlndXJhdGlvbiwg
cmVtb3RlRmlsZU5hbWUpCisgICAgcmVtb3RlRmlsZUhhc2hQYXRoTmFtZSA9IG9zLnBhdGguam9p
bihjb25maWd1cmF0aW9uLCBzdHIocmV2aXNpb24pICsgJy5zaGEyNTZzdW0nKQorICAgIHdpdGgg
dGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkgYXMgc3Noa2V5ZmlsZToKKyAgICAgICAgIyBJ
biB0aGVvcnkgTmFtZWRUZW1wb3JhcnlGaWxlKCkgaXMgYWxyZWFkeSBjcmVhdGVkIDA2MDAuIEJ1
dCBpdCBkb24ndCBodXJ0cyBlbnN1cmluZyB0aGlzIGFnYWluIGhlcmUuCisgICAgICAgIG9zLmNo
bW9kKHNzaGtleWZpbGUubmFtZSwgMDYwMCkKKyAgICAgICAgc3Noa2V5ZmlsZS53cml0ZShiYXNl
NjQuYjY0ZGVjb2RlKHJlbW90ZURhdGFbJ3NzaGtleSddKSkKKyAgICAgICAgc3Noa2V5ZmlsZS5m
bHVzaCgpCisgICAgICAgICMgR2VuZXJhdGUgYW5kIHVwbG9hZCBhbHNvIGEgc2hhMjU2IGhhc2gK
KyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKSBhcyBoYXNoY2hlY2tm
aWxlOgorICAgICAgICAgICAgaGFzaGZvcmJ1bmRsZSA9IHNoYTI1NnN1bShidW5kbGVGaWxlUGF0
aCkKKyAgICAgICAgICAgIHByaW50KCdzaGEyNTYgaGFzaCBmb3IgJXMgaXMgJXMgJyAlIChyZW1v
dGVGaWxlTmFtZSwgaGFzaGZvcmJ1bmRsZSkpCisgICAgICAgICAgICBvcy5jaG1vZChoYXNoY2hl
Y2tmaWxlLm5hbWUsIDA2NDQpCisgICAgICAgICAgICBoYXNoY2hlY2tmaWxlLndyaXRlKCclcyAl
c1xuJyAlIChoYXNoZm9yYnVuZGxlLCByZW1vdGVGaWxlTmFtZSkpCisgICAgICAgICAgICBoYXNo
Y2hlY2tmaWxlLmZsdXNoKCkKKyAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3Jh
cnlGaWxlKCkgYXMgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZToKKyAgICAgICAgICAgICAgICB1cGxv
YWRpbnN0cnVjdGlvbnNmaWxlLndyaXRlKCdwcm9ncmVzc1xuJykKKyAgICAgICAgICAgICAgICB1
cGxvYWRpbnN0cnVjdGlvbnNmaWxlLndyaXRlKCdwdXQgJXMgJXNcbicgJSAoYnVuZGxlRmlsZVBh
dGgsIHJlbW90ZUZpbGVCdW5kbGVQYXRoTmFtZSkpCisgICAgICAgICAgICAgICAgdXBsb2FkaW5z
dHJ1Y3Rpb25zZmlsZS53cml0ZSgncHV0ICVzICVzXG4nICUgKGhhc2hjaGVja2ZpbGUubmFtZSwg
cmVtb3RlRmlsZUhhc2hQYXRoTmFtZSkpCisgICAgICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rp
b25zZmlsZS53cml0ZSgncXVpdFxuJykKKyAgICAgICAgICAgICAgICB1cGxvYWRpbnN0cnVjdGlv
bnNmaWxlLmZsdXNoKCkKKyAgICAgICAgICAgICAgICAjIFRoZSBpZGVhIG9mIHRoaXMgaXMgdG8g
ZW5zdXJlIHNjcCBkb2Vzbid0IGFzayBhbnkgcXVlc3Rpb24gKG5vdCBldmVuIG9uIHRoZSBmaXJz
dCBydW4pLgorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgYmUgc2VjdXJlIGVub3VnaCBh
Y2NvcmRpbmcgdG8gaHR0cHM6Ly93d3cuZ3JlbXdlbGwuY29tL3NzaC1taXRtLXB1YmxpYy1rZXkt
YXV0aGVudGljYXRpb24KKyAgICAgICAgICAgICAgICBzZnRwQ29tbWFuZCA9IFsnc2Z0cCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1vJywgJ1N0cmljdEhvc3RLZXlDaGVja2lu
Zz1ubycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1vJywgJ1VzZXJLbm93bkhv
c3RzRmlsZT0vZGV2L251bGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbycs
ICdMb2dMZXZlbD1FUlJPUicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1QJywg
cmVtb3RlRGF0YVsnc2VydmVycG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctaScsIHNzaGtleWZpbGUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LWInLCB1cGxvYWRpbnN0cnVjdGlvbnNmaWxlLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyVzQCVzJyAlIChyZW1vdGVEYXRhWyd1c2VybmFtZSddLCByZW1vdGVEYXRhWydz
ZXJ2ZXJhZGRyZXNzJ10pXQorICAgICAgICAgICAgICAgIHByaW50KCdVcGxvYWRpbmcgYnVuZGxl
IHRvICVzIGFzICVzIHdpdGggc2hhMjU2IGhhc2ggJXMnICUgKHJlbW90ZURhdGFbJ3NlcnZlcm5h
bWUnXSwgcmVtb3RlRmlsZUJ1bmRsZVBhdGhOYW1lLCBoYXNoZm9yYnVuZGxlKSkKKyAgICAgICAg
ICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoc2Z0cENvbW1hbmQpICE9IDA6CisgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGhlIHNmdHAgY29tbWFuZCByZXR1cm5lZCBu
b24temVybyBzdGF0dXMnKQorCisgICAgcHJpbnQoJ0RvbmU6IGFyY2hpdmUgc3VjZXNmdWxseSB1
cGxvYWRlZCB0byAlcy8lcycgJSAocmVtb3RlRGF0YVsnYmFzZXVybCddLCByZW1vdGVGaWxlQnVu
ZGxlUGF0aE5hbWUpKQorICAgIHJldHVybiAwCisKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIg
PSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoJ3VzYWdlOiAlcHJvZyBbb3B0aW9uc10nKQorICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLXBsYXRmb3JtJywgZGVzdD0ncGxhdGZvcm0nKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctLWRlYnVnJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdkZWJ1
ZycsIGRlc3Q9J2NvbmZpZ3VyYXRpb24nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXJlbGVh
c2UnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J3JlbGVhc2UnLCBkZXN0PSdjb25maWd1
cmF0aW9uJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1yZXZpc2lvbicsIGFjdGlvbj0nc3Rv
cmUnLCB0eXBlPSdzdHJpbmcnLCBkZXN0PSdyZXZpc2lvbicpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy0tYnVpbGRlci1uYW1lJywgYWN0aW9uPSdzdG9yZScsIHR5cGU9J3N0cmluZycsIGRlc3Q9
J2J1aWxkZXJuYW1lJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1yZW1vdGUtY29uZmlnLWZp
bGUnLCBhY3Rpb249J3N0b3JlJywgIHR5cGU9J3N0cmluZycsIGRlc3Q9J3JlbW90ZUNvbmZpZ0Zp
bGUnKQorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBu
b3Qgb3B0aW9ucy5wbGF0Zm9ybToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdQbGF0Zm9ybSBpcyBy
ZXF1aXJlZCcpCisgICAgICAgIHJldHVybiAxCisgICAgaWYgbm90IG9wdGlvbnMuY29uZmlndXJh
dGlvbjoKKyAgICAgICAgcGFyc2VyLmVycm9yKCdDb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkJykK
KyAgICAgICAgcmV0dXJuIDEKKworICAgIHBsYXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybS5sb3dl
cigpCisgICAgY29uZmlndXJhdGlvbiA9IG9wdGlvbnMuY29uZmlndXJhdGlvbi5sb3dlcigpCisg
ICAgaWYgcGxhdGZvcm0gPT0gJ2d0ayc6CisgICAgICAgIGpoYnVpbGR1dGlscy5lbnRlcl9qaGJ1
aWxkX2Vudmlyb25tZW50X2lmX2F2YWlsYWJsZShwbGF0Zm9ybSkKKyAgICBlbHNlOgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdVbnN1cHBvcnRlZCBwbGF0Zm9ybScpCisKKyAg
ICBidW5kbGVGaWxlUGF0aCA9IGNyZWF0ZUpTQ0J1bmRsZShjb25maWd1cmF0aW9uLCBvcHRpb25z
LnJldmlzaW9uLCBvcHRpb25zLmJ1aWxkZXJuYW1lLCBwbGF0Zm9ybSkKKyAgICBwcmludCgnQnVu
ZGxlIGZpbGUgY3JlYXRlZCBhdDogJXMnICUgYnVuZGxlRmlsZVBhdGgpCisgICAgaWYgb3B0aW9u
cy5yZW1vdGVDb25maWdGaWxlIGlzIG5vdCBOb25lIGFuZCBvcy5wYXRoLmlzZmlsZShvcHRpb25z
LnJlbW90ZUNvbmZpZ0ZpbGUpOgorICAgICAgICByZXR1cm4gdXBsb2FkSlNDQnVuZGxlKGJ1bmRs
ZUZpbGVQYXRoLCBvcHRpb25zLnJlbW90ZUNvbmZpZ0ZpbGUsIG9wdGlvbnMuY29uZmlndXJhdGlv
biwgb3B0aW9ucy5yZXZpc2lvbikKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338136</attachid>
            <date>2018-04-17 11:50:57 -0700</date>
            <delta_ts>2018-04-30 10:29:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184699-20180417205055.patch</filename>
            <type>text/plain</type>
            <size>23772</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzA2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjM5NTYwNjRmN2QyN2QwM2U2MjA5NjZiN2U4ZTg1YjA1
ZmQ5NGJlZS4uYjk3MmQ5OTVkNjhlOWZhYTY4MmJiN2NjYzU4ZTI3Mjc5ZjYzZmQyZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDE4LTA0LTE3ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIEdlbmVyYXRlIGEgSlNDIGJ1bmRsZSBvbiB0aGUgNjQg
YW5kIDMyIGJpdCByZWxlYXNlIGJvdHMgYW5kIHVwbG9hZCBpdCB0byB3ZWJraXRndGsub3JnCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ2OTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMg
YSBuZXcgc3RlcCBmb3IgdGhlIEdUSyA2NC1iaXQgcmVsZWFzZSBidWlsZCBib3QgYW5kIHRoZQor
ICAgICAgICBHVEsgMzItYml0IHJlbGVhc2UgYnVpbGQmdGVzdCBib3QuCisKKyAgICAgICAgVGhp
cyBzdGVwIHdpbGwgYmUgcnVuIGFzIG9uZSBvZiB0aGUgbGFzdHMgb25lcyAoYWZ0ZXIgdGhlIHBy
b2R1Y3QKKyAgICAgICAgaXMgYnVpbHQpIGFuZCB3aWxsIGV4ZWN1dGUgdGhlIHNjcmlwdCBnZW5l
cmF0ZS1qc2MtYnVuZGxlLgorICAgICAgICBUaGlzIHNjcmlwdCB3aWxsIHRha2UgY2FyZSBvZiBj
cmVhdGluZyBhIEpTQyBidW5kbGUgYW5kIHVwbG9hZGluZworICAgICAgICBpdCB0byBhIHNlcnZl
ciBkZWZpbmVkIG9uIGEgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgaGFzIHRvIGJlCisgICAgICAg
IGRlcGxveWVkIG9uIHRoZSBib3RzIHdpdGggdGhlIHJlcXVpcmVkIHNlcnZlciBkYXRhIGFuZCBj
cmVkZW50aWFscworICAgICAgICBmb3IgdGhpcyB1cGxvYWQuCisKKyAgICAgICAgSW4gdGhpcyBj
YXNlLCB0aGUgYnVpbHQgcHJvZHVjdHMgc2hvdWxkIHRoZW4gYmUgYWNjZXNzaWJsZSBhdAorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXRndGsub3JnL2pzYy1idWlsdC1wcm9kdWN0cz4uIEJ1dCB0aGUg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgaXMgbm90IHRpZWQgdG8gYW55IHNwZWNpZmljIHNlcnZl
ci4gQWxsIHRoZSBkZXRhaWxzIGFib3V0IHdoZXJlCisgICAgICAgIHRvIHVwbG9hZCB0aGUgZmls
ZSBpcyBkb25lIGluIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGlzIGtlcHQKKyAgICAgICAgcHJp
dmF0ZSBvbiBlYWNoIGJvdCBvdXRzaWRlIG9mIHRoZSBXZWJLaXQgc291cmNlIHRyZWUuCisKKyAg
ICAgICAgVGhlIHNjcmlwdCBhbHNvIHN1cHBvcnRzIGdlbmVyYXRpbmcgYSBKU0MgYnVuZGxlIGxv
Y2FsbHkgYW5kIG5vdAorICAgICAgICB1cGxvYWRpbmcgaXQgYW55d2hlcmUuIFRoaXMgaXMgdGhl
IGRlZmF1bHQgbW9kZSBvZiBydW5uaW5nLgorICAgICAgICBUaGUgcmVtb3RlIHVwbG9hZCB3aWxs
IG9ubHkgYmUgYWN0aXZhdGVkIGlmIGEgLS1yZW1vdGUtY29uZmlnLWZpbGUKKyAgICAgICAgcGFy
YW1ldGVyIGlzIHBhc3NlZCAod2hpY2ggaXMgZG9uZSBmcm9tIHRoZSBidWlsZGJvdCBjb25maWcp
CisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9j
b25maWcuanNvbjoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9mYWN0b3JpZXMucHk6CisgICAgICAgIChCdWlsZEZhY3RvcnkpOgorICAgICAgICAo
QnVpbGRGYWN0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKFRlc3RGYWN0b3J5KToKKyAgICAgICAg
KFRlc3RGYWN0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKEJ1aWxkQW5kR2VuZXJhdGVKU0NCdW5k
bGVGYWN0b3J5KToKKyAgICAgICAgKEJ1aWxkQW5kTm9uTGF5b3V0VGVzdEFuZEdlbmVyYXRlSlND
QnVuZGxlRmFjdG9yeSk6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvc3RlcHMucHk6CisgICAgICAgIChHZW5lcmF0ZUpTQ0J1bmRsZSk6CisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlOiBBZGRlZC4K
KyAgICAgICAgKGxkZF9nZXRfbGlic19hbmRfaW50ZXJwcmV0ZXIpOgorICAgICAgICAoZ2VuZXJh
dGVfcmVhZG1lKToKKyAgICAgICAgKGdlbmVyYXRlX3dyYXBwZXJfc2NyaXB0KToKKyAgICAgICAg
KGNvcHlfYW5kX3JlbW92ZV9ycGF0aCk6CisgICAgICAgIChjcmVhdGVKU0NCdW5kbGUpOgorICAg
ICAgICAoc2hhMjU2c3VtKToKKyAgICAgICAgKHVwbG9hZEpTQ0J1bmRsZSk6CisgICAgICAgICht
YWluKToKKwogMjAxOC0wNC0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dMSUJdIEFkZCBBUEkgdG8gY2xlYXIgSlNDQ29udGV4dCB1bmNh
dWdodCBleGNlcHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24KaW5kZXggMDQ5MjI3NDdhZTQwYTU3
ZTZlZWQ0MTdmMmQ3NTEzODZkZTdiYTQyMS4uOTRlZWY1MzVhMDYxNDkzNTQ0YjkyMTk1ZTFlY2E5
YmZiNjdkYTNjMyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24KKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24KQEAgLTIzMSwxMiArMjMxLDEyIEBA
CiAgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbImJvdDUwNyIsICJib3Q1MDQi
XQogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlIiwgInR5cGUi
OiAiQnVpbGRBbmROb25MYXlvdXRUZXN0IiwgImJ1aWxkZGlyIjogImd0ay1saW51eC0zMi1yZWxl
YXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEsgTGludXggMzItYml0IFJl
bGVhc2UiLCAidHlwZSI6ICJCdWlsZEFuZE5vbkxheW91dFRlc3RBbmRHZW5lcmF0ZUpTQ0J1bmRs
ZSIsICJidWlsZGRpciI6ICJndGstbGludXgtMzItcmVsZWFzZSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJj
aGl0ZWN0dXJlcyI6IFsiaTM4NiJdLAogICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVz
IjogWyJndGstbGludXgtc2xhdmUtMSJdCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEsgTGludXgg
NjQtYml0IFJlbGVhc2UgKEJ1aWxkKSIsICJ0eXBlIjogIkJ1aWxkIiwgImJ1aWxkZGlyIjogImd0
ay1saW51eC02NC1yZWxlYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEsg
TGludXggNjQtYml0IFJlbGVhc2UgKEJ1aWxkKSIsICJ0eXBlIjogIkJ1aWxkQW5kR2VuZXJhdGVK
U0NCdW5kbGUiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UiLAogICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAogICAgICAgICAgICAgICAgICAgICAgICJ0
cmlnZ2VycyI6IFsiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtdGVzdHMiLCAiZ3RrLWxpbnV4LTY0LXJl
bGVhc2Utd2F5bGFuZC10ZXN0cyIsICJndGstbGludXgtNjQtcmVsZWFzZS1wZXJmLXRlc3RzIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbImd0ay1saW51eC1zbGF2ZS0y
Il0KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL2ZhY3Rvcmllcy5weSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL2ZhY3Rvcmllcy5weQppbmRleCA2MWRlMGNkYmMxNGNjZTA0NzIzNDQyYzlj
YjM2ZWNmOWY5MzFkYjhlLi4wMDdmMDk3YmEwYWYzOTM3YzFiNjA3MmU4ZDVjOWJlZjMzOTUwOTY2
IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9mYWN0b3JpZXMucHkKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvZmFjdG9yaWVzLnB5CkBAIC00Niw2ICs0Niw4IEBAIGNsYXNzIEZhY3Rv
cnkoZmFjdG9yeS5CdWlsZEZhY3RvcnkpOgogCiAKIGNsYXNzIEJ1aWxkRmFjdG9yeShGYWN0b3J5
KToKKyAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gRmFsc2UKKwogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9
Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBTVk5NaXJyb3I9Tm9uZSk6CiAgICAgICAg
IEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXMsIFRydWUsIGFkZGl0aW9uYWxBcmd1bWVudHMsIFNWTk1pcnJvcikKIApAQCAtNjAsNiAr
NjIsOCBAQCBjbGFzcyBCdWlsZEZhY3RvcnkoRmFjdG9yeSk6CiAgICAgICAgICAgICBpZiBwbGF0
Zm9ybS5zdGFydHN3aXRoKCdtYWMnKSBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCdpb3Mtc2ltdWxh
dG9yJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEFyY2hpdmVNaW5pZmllZEJ1aWx0
UHJvZHVjdCgpKQogICAgICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChVcGxvYWRNaW5pZmllZEJ1
aWx0UHJvZHVjdCgpKQorICAgICAgICAgICAgaWYgc2VsZi5TaG91bGRSdW5KU0NCdW5kbGVTdGVw
OgorICAgICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChHZW5lcmF0ZUpTQ0J1bmRsZSgpKQogICAg
ICAgICAgICAgc2VsZi5hZGRTdGVwKFRyYW5zZmVyVG9TMygpKQogICAgICAgICAgICAgc2VsZi5h
ZGRTdGVwKHRyaWdnZXIuVHJpZ2dlcihzY2hlZHVsZXJOYW1lcz10cmlnZ2VycykpCiAKQEAgLTY3
LDYgKzcxLDcgQEAgY2xhc3MgQnVpbGRGYWN0b3J5KEZhY3RvcnkpOgogY2xhc3MgVGVzdEZhY3Rv
cnkoRmFjdG9yeSk6CiAgICAgSlNDVGVzdENsYXNzID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0cwog
ICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzCisgICAgU2hvdWxkUnVuSlNDQnVu
ZGxlU3RlcCA9IEZhbHNlCiAKICAgICBkZWYgZ2V0UHJvZHVjdChzZWxmKToKICAgICAgICAgc2Vs
Zi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCkBAIC05Miw2ICs5Nyw4IEBAIGNsYXNz
IFRlc3RGYWN0b3J5KEZhY3RvcnkpOgogICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEFyY2hpdmVU
ZXN0UmVzdWx0cygpKQogICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFVwbG9hZFRlc3RSZXN1bHRz
KCkpCiAgICAgICAgICAgICBzZWxmLmFkZFN0ZXAoRXh0cmFjdFRlc3RSZXN1bHRzKCkpCisgICAg
ICAgIGlmIHNlbGYuU2hvdWxkUnVuSlNDQnVuZGxlU3RlcDoKKyAgICAgICAgICAgIHNlbGYuYWRk
U3RlcChHZW5lcmF0ZUpTQ0J1bmRsZSgpKQogICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIjoK
ICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5HdGtBUElUZXN0cygpKQogICAgICAgICAgICAg
c2VsZi5hZGRTdGVwKFJ1bldlYkRyaXZlclRlc3RzKCkpCkBAIC0xNTEsNiArMTU4LDE0IEBAIGNs
YXNzIFRlc3RBbGxCdXRKU0NGYWN0b3J5KFRlc3RGYWN0b3J5KToKICAgICBKU0NUZXN0Q2xhc3Mg
PSBOb25lCiAKIAorY2xhc3MgQnVpbGRBbmRHZW5lcmF0ZUpTQ0J1bmRsZUZhY3RvcnkoQnVpbGRG
YWN0b3J5KToKKyAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gVHJ1ZQorCisKK2NsYXNzIEJ1
aWxkQW5kTm9uTGF5b3V0VGVzdEFuZEdlbmVyYXRlSlNDQnVuZGxlRmFjdG9yeShCdWlsZEFuZE5v
bkxheW91dFRlc3RGYWN0b3J5KToKKyAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gVHJ1ZQor
CisKIGNsYXNzIFRlc3RKU0NGYWN0b3J5KEZhY3RvcnkpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFyZ3Vt
ZW50cz1Ob25lLCBTVk5NaXJyb3I9Tm9uZSk6CiAgICAgICAgIEZhY3RvcnkuX19pbml0X18oc2Vs
ZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIEZhbHNlLCBhZGRpdGlv
bmFsQXJndW1lbnRzLCBTVk5NaXJyb3IpCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwcy5weSBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CmluZGV4IDBjOTg3ZDQ0YjAz
YWM2NDVjMWNiNzM4ZDM1ZjgzY2FmMDUyYTdhMTcuLjUwMjQwZDNjNjhiYTRkNzcxNTk4MDYxMDM5
YmI3OWI4ODFjOWVkMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CkBAIC0yNjAsNiArMjYwLDE1IEBAIGNs
YXNzIEFyY2hpdmVNaW5pZmllZEJ1aWx0UHJvZHVjdChBcmNoaXZlQnVpbHRQcm9kdWN0KToKICAg
ICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMi
KSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFyY2hpdmUiLCAiLS1t
aW5pZnkiXQogCiAKK2NsYXNzIEdlbmVyYXRlSlNDQnVuZGxlKHNoZWxsLlNoZWxsQ29tbWFuZCk6
CisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2Mt
YnVuZGxlIiwgIi0tYnVpbGRlci1uYW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUp
cyIpLAorICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxh
dGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLAorICAgICAg
ICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcmV2aXNpb249JShnb3RfcmV2aXNpb24pcyIpLCAi
LS1yZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4vcmVtb3RlLWpzYy1idW5kbGUtdXBsb2FkLWNv
bmZpZy5qc29uIl0KKyAgICBuYW1lID0gImdlbmVyYXRlLWpzYy1idW5kbGUiCisgICAgZGVzY3Jp
cHRpb24gPSBbImdlbmVyYXRpbmcganNjIGJ1bmRsZSJdCisgICAgZGVzY3JpcHRpb25Eb25lID0g
WyJnZW5lcmF0ZWQganNjIGJ1bmRsZSJdCisgICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCisKIGNs
YXNzIEV4dHJhY3RCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKICAgICBjb21tYW5k
ID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFy
Y2hpdmUiLAogICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxs
UGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiZXh0
cmFjdCJdCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IGM5MzRlN2M5Mzhh
MDRjMmVjZThhOTA4YzQ2OGFmN2U3NzNjYTQwYWUuLjRjYjZmYzIyZWVhZjJjYzlkODk3MWE0YjE2
MjNkYzEyMWEzZjc2Y2QgMTAwNzU1Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5CkBAIC00
NDgsMTAgKzQ0OCwxMCBAQCBleHBlY3RlZF9idWlsZF9zdGVwcyA9IHsKICAgICAnSlNDT25seSBM
aW51eCBBQXJjaDY0IFJlbGVhc2UnOiBbJ2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAnZGVsZXRl
IFdlYktpdEJ1aWxkIGRpcmVjdG9yeScsICdkZWxldGUgc3RhbGUgYnVpbGQgZmlsZXMnLCAnY29t
cGlsZS13ZWJraXQnLCAnanNjb3JlLXRlc3QnXSwKICAgICAnSlNDT25seSBMaW51eCBNSVBTMzJl
bCBSZWxlYXNlJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2RlbGV0ZSBXZWJLaXRCdWls
ZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2NvbXBpbGUtd2Via2l0
JywgJ2pzY29yZS10ZXN0J10sCiAKLSAgICAnR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlJzogWydj
b25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nlc3NlcycsICdkZWxldGUgV2Vi
S2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWlsZCBmaWxlcycsICdqaGJ1aWxk
JywgJ2NvbXBpbGUtd2Via2l0JywgJ2pzY29yZS10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Vi
a2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2Vu
ZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdBUEkgdGVzdHMnLCAnd2ViZHJpdmVy
LXRlc3QnXSwKKyAgICAnR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlJzogWydjb25maWd1cmUgYnVp
bGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nlc3NlcycsICdkZWxldGUgV2ViS2l0QnVpbGQgZGly
ZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWlsZCBmaWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUt
d2Via2l0JywgJ2pzY29yZS10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0
JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3Rz
JywgJ2Rhc2hib2FyZC10ZXN0cycsICdnZW5lcmF0ZS1qc2MtYnVuZGxlJywgJ0FQSSB0ZXN0cycs
ICd3ZWJkcml2ZXItdGVzdCddLAogICAgICdHVEsgTGludXggNjQtYml0IERlYnVnIChCdWlsZCkn
OiBbJ2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAna2lsbCBvbGQgcHJvY2Vzc2VzJywgJ2RlbGV0
ZSBXZWJLaXRCdWlsZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2po
YnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9h
ZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCiAgICAgJ0dUSyBMaW51eCA2NC1iaXQg
RGVidWcgKFRlc3RzKSc6IFsnY29uZmlndXJlIGJ1aWxkJywgJ3N2bicsICdraWxsIG9sZCBwcm9j
ZXNzZXMnLCAnZGVsZXRlIFdlYktpdEJ1aWxkIGRpcmVjdG9yeScsICdkZWxldGUgc3RhbGUgYnVp
bGQgZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3Qt
YnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICdsYXlvdXQtdGVzdCcsICd3ZWJraXRweS10
ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAnYXJjaGl2ZS10ZXN0
LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCcsICdBUEkgdGVzdHMnLCAn
d2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNlIChCdWlsZCkn
OiBbJ2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAna2lsbCBvbGQgcHJvY2Vzc2VzJywgJ2RlbGV0
ZSBXZWJLaXRCdWlsZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2po
YnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9h
ZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCisgICAgJ0dUSyBMaW51eCA2NC1iaXQg
UmVsZWFzZSAoQnVpbGQpJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHBy
b2Nlc3NlcycsICdkZWxldGUgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBi
dWlsZCBmaWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQt
cHJvZHVjdCcsICd1cGxvYWQnLCAnZ2VuZXJhdGUtanNjLWJ1bmRsZScsICd0cmFuc2Zlci10by1z
MycsICd0cmlnZ2VyJ10sCiAgICAgJ0dUSyBMaW51eCA2NC1iaXQgUmVsZWFzZSAoUGVyZiknOiBb
J2NvbmZpZ3VyZSBidWlsZCcsICdzdm4nLCAna2lsbCBvbGQgcHJvY2Vzc2VzJywgJ2RlbGV0ZSBX
ZWJLaXRCdWlsZCBkaXJlY3RvcnknLCAnZGVsZXRlIHN0YWxlIGJ1aWxkIGZpbGVzJywgJ2poYnVp
bGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAn
cGVyZi10ZXN0JywgJ2JlbmNobWFyay10ZXN0J10sCiAgICAgJ0dUSyBMaW51eCA2NC1iaXQgUmVs
ZWFzZSAoVGVzdHMpJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nl
c3NlcycsICdkZWxldGUgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWls
ZCBmaWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1i
dWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5LXRl
c3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVp
bHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRlc3Qt
cmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQSSB0ZXN0cycsICd3
ZWJkcml2ZXItdGVzdCddLAogICAgICdHVEsgTGludXggNjQtYml0IFJlbGVhc2UgV2F5bGFuZCAo
VGVzdHMpJzogWydjb25maWd1cmUgYnVpbGQnLCAnc3ZuJywgJ2tpbGwgb2xkIHByb2Nlc3Nlcycs
ICdkZWxldGUgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JywgJ2RlbGV0ZSBzdGFsZSBidWlsZCBmaWxl
cycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1w
cm9kdWN0JywgJ2pzY29yZS10ZXN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAn
d2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMt
Z2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRlc3QtcmVzdWx0
cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQSSB0ZXN0cycsICd3ZWJkcml2
ZXItdGVzdCddLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxl
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1qc2MtYnVuZGxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDE5NmY2
MWMzODIxNjdmMzM2ZTkyMmZmYTEyNWI1YjhhYmFhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWpzYy1idW5kbGUKQEAgLTAsMCArMSwyNDQgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMKKyMgICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyMgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorIyAgICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYmFzZTY0
CitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBoYXNobGliCitpbXBvcnQganNvbgoraW1wb3J0IG9w
dHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBv
cnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB6aXBmaWxlCisKK3RvcF9sZXZlbF9kaXJl
Y3RvcnkgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAnLi4nLCAnLi4nKSkKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4odG9w
X2xldmVsX2RpcmVjdG9yeSwgJ1Rvb2xzJywgJ2poYnVpbGQnKSkKK2ltcG9ydCBqaGJ1aWxkdXRp
bHMKKworCisjIElkZWFsbHkgd2Ugc2hvdWxkIHVzZSBzb21ldGhpbmcgbGlrZSBsZGR0cmVlIG9y
IGNyZWF0ZSBvdXIgb3duIHZlcnNpb24gb2YgdGhhdAorIyBCdXQgaW4gcHJhY3RpY2UgZm9yIGpz
YyBidW5kbGVzIHRoZXJlIGlzbid0IHJlY3Vyc2l2ZSBsaWJyYXJ5IGVudHJpZXMsIHNvIHdlCisj
IHVzZSBzdGFuZGFyZCBsZGQgaGVyZSBqdXN0IHRvIGF2b2lkIGhhdmluZyB0byByZXF1aXJlIGxk
ZHRyZWUuCitkZWYgbGRkX2dldF9saWJzX2FuZF9pbnRlcnByZXRlcihiaW5hcnkpOgorICAgIGxk
ZENvbW1hbmQgPSBbJ2xkZCcsIGJpbmFyeV0KKyAgICBsZGRQcm9jZXNzID0gc3VicHJvY2Vzcy5Q
b3BlbihsZGRDb21tYW5kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vz
cy5TVERPVVQpCisgICAgc3Rkb3V0LCBzdGRlcnIgPSBsZGRQcm9jZXNzLmNvbW11bmljYXRlKCkK
KyAgICBpZiBsZGRQcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCdUaGUgbGRkIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzJykKKyAgICBs
aWJzID0gW10KKyAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICBs
aW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmICc9PicgaW4gbGluZToKKyAgICAgICAgICAg
IGxpbmUgPSBsaW5lLnNwbGl0KCc9PicpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICdub3Qg
Zm91bmQnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdTb21l
IGRlcGVuZGVuY2llcyBjYW4gbm90IGJlIGZvdW5kIHdpdGggbGRkLicpCisgICAgICAgICAgICBs
aW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG9zLnBhdGgu
aXNmaWxlKGxpbmUpOgorICAgICAgICAgICAgICAgIGxpYnMuYXBwZW5kKGxpbmUpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnICcpWzBdLnN0cmlwKCkKKyAg
ICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGxpbmUpOgorICAgICAgICAgICAgICAgIGludGVy
cHJldGVyID0gbGluZQorICAgIHJldHVybiBsaWJzLCBpbnRlcnByZXRlcgorCisKK2RlZiBnZW5l
cmF0ZV9yZWFkbWUoYnVuZGxlVG1wRGlyLCBidWlsZGVyTmFtZSwgY29uZmlndXJhdGlvbiwgcGxh
dGZvcm0sIHJldmlzaW9uKToKKyAgICBwcmludCgnR2VuZXJhdGUgUkVBRE1FLnR4dCBmaWxlJykK
KyAgICByZWFkbWVGaWxlID0gb3MucGF0aC5qb2luKGJ1bmRsZVRtcERpciwgJ1JFQURNRS50eHQn
KQorICAgIHdpdGggb3BlbihyZWFkbWVGaWxlLCAndycpIGFzIHJlYWRtZUhhbmRsZToKKyAgICAg
ICAgcmVhZG1lSGFuZGxlLndyaXRlKCdKU0MgYnVuZGxlIGRldGFpbHNcbicpCisgICAgICAgIHJl
YWRtZUhhbmRsZS53cml0ZSgnIEJ1aWxkZXIgbmFtZTogJXNcbicgJSBidWlsZGVyTmFtZSkKKyAg
ICAgICAgcmVhZG1lSGFuZGxlLndyaXRlKCcgQnVpbGRlciBkYXRlOiAlc1xuJyAlIGRhdGV0aW1l
LmRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCgpKQorICAgICAgICByZWFkbWVIYW5kbGUud3JpdGUo
JyBDb25maWd1cmF0aW9uOiAlc1xuJyAlIGNvbmZpZ3VyYXRpb24pCisgICAgICAgIHJlYWRtZUhh
bmRsZS53cml0ZSgnIFdlYktpdCBQbGF0Zm9ybTogJXNcbicgJSBwbGF0Zm9ybSkKKyAgICAgICAg
cmVhZG1lSGFuZGxlLndyaXRlKCcgV2ViS2l0IFJldmlzaW9uOiAlc1xuJyAlIHJldmlzaW9uKQor
ICAgICAgICByZWFkbWVIYW5kbGUud3JpdGUoJ1xuSW5zdHJ1Y3Rpb25zOiBFeGVjdXRlIHRoZSBy
dW4tanNjIHdyYXBwZXIgc2NyaXB0LlxuJykKKyAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBnZW5l
cmF0ZV93cmFwcGVyX3NjcmlwdChidW5kbGVUbXBEaXIsIGludGVycHJldGVyKToKKyAgICBwcmlu
dCgnR2VuZXJhdGUgd3JhcHBlciBzY3JpcHQgcnVuLWpzYycpCisgICAgc2NyaXB0RmlsZSA9IG9z
LnBhdGguam9pbihidW5kbGVUbXBEaXIsICdydW4tanNjJykKKyAgICB3aXRoIG9wZW4oc2NyaXB0
RmlsZSwgJ3cnKSBhcyBzY3JpcHRIYW5kbGU6CisgICAgICAgIHNjcmlwdEhhbmRsZS53cml0ZSgn
IyEvYmluL3NoXG4nKQorICAgICAgICBzY3JpcHRIYW5kbGUud3JpdGUoJ01ZRElSPSIkKGRpcm5h
bWUgJChyZWFkbGluayAtZiAkMCkpIlxuJykKKyAgICAgICAgc2NyaXB0SGFuZGxlLndyaXRlKCdl
eHBvcnQgTERfTElCUkFSWV9QQVRIPSIke01ZRElSfS9saWIiXG4nKQorICAgICAgICBzY3JpcHRI
YW5kbGUud3JpdGUoJ2V4ZWMgIiR7TVlESVJ9L2xpYi8lcyIgIiR7TVlESVJ9L2Jpbi9qc2MiICRA
XG4nICUgb3MucGF0aC5iYXNlbmFtZShpbnRlcnByZXRlcikpCisgICAgb3MuY2htb2Qoc2NyaXB0
RmlsZSwgMDc1NSkKKworCitkZWYgY29weV9hbmRfcmVtb3ZlX3JwYXRoKG9yaWdGaWxlLCBkZXN0
aW5hdGlvbkRpciwgdHlwZT0nYmluJyk6CisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9yaWdG
aWxlKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2FuIG5vdCBmaW5kIGZpbGUgJXMnICUg
b3JpZ0ZpbGUpCisgICAgcHJpbnQoJ0NvcHkgdG8gYnVuZGxlIFslc106ICVzJyAlICh0eXBlLCBv
cmlnRmlsZSkpCisgICAgc2h1dGlsLmNvcHkob3JpZ0ZpbGUsIGRlc3RpbmF0aW9uRGlyKQorICAg
IHRyeToKKyAgICAgICAgcGF0Y2hFbGZDb21tYW5kID0gWydwYXRjaGVsZicsICctLXJlbW92ZS1y
cGF0aCcsIG9zLnBhdGguam9pbihkZXN0aW5hdGlvbkRpciwgb3MucGF0aC5iYXNlbmFtZShvcmln
RmlsZSkpXQorICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwocGF0Y2hFbGZDb21tYW5kKSAhPSAw
OgorICAgICAgICAgICAgcHJpbnQoJ1dBUk5JTkc6IFRoZSBwYXRjaGVsZiBjb21tYW5kIHJldHVy
bmVkIG5vbi16ZXJvIHN0YXR1cycpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAg
aWYgZS5lcnJubyA9PSBvcy5lcnJuby5FTk9FTlQ6CisgICAgICAgICAgICBwcmludCgnV0FSTklO
RzogcGF0Y2hlbGYgbm90IGZvdW5kLiBOb3QgbW9kaWZ5aW5nIHJwYXRoJykKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHJhaXNlCisKKworZGVmIGNyZWF0ZUpTQ0J1bmRsZShjb25maWd1cmF0
aW9uLCByZXZpc2lvbj1Ob25lLCBidWlsZGVyTmFtZT1Ob25lLCBwbGF0Zm9ybT1Ob25lKToKKyAg
ICBidWlsZERpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJywgJ1dlYktpdEJ1aWxkJykpCisgICAgYmluRGlyID0gb3Mu
cGF0aC5qb2luKGJ1aWxkRGlyLCBjb25maWd1cmF0aW9uLmNhcGl0YWxpemUoKSwgJ2JpbicpCisg
ICAgbGliRGlyID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyLCBjb25maWd1cmF0aW9uLmNhcGl0YWxp
emUoKSwgJ2xpYicpCisgICAganNjQmluYXJ5ID0gb3MucGF0aC5qb2luKGJpbkRpciwgJ2pzYycp
CisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGpzY0JpbmFyeSkgb3Igbm90IG9zLmFjY2Vzcyhq
c2NCaW5hcnksIG9zLlhfT0spOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmlu
ZCBqc2MgYXQgJXMnICUganNjQmluYXJ5KQorCisgICAgIyBEZWZpbmUgbmFtZXMgYW5kIHBhdGhz
IGZvciB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYnVuZGxlLgorICAgIGJ1bmRsZVRtcERpciA9IG9z
LnBhdGguam9pbihidWlsZERpciwgJ2pzY190bXAnKQorICAgIGJ1bmRsZVRtcExpYkRpciA9IG9z
LnBhdGguam9pbihidW5kbGVUbXBEaXIsICdsaWInKQorICAgIGJ1bmRsZVRtcEJpbkRpciA9IG9z
LnBhdGguam9pbihidW5kbGVUbXBEaXIsICdiaW4nKQorICAgIGJ1bmRsZUZpbGVOYW1lID0gJ2pz
Y18nICsgY29uZmlndXJhdGlvbgorICAgIGJ1bmRsZUZpbGVDb21wcmVzc2VkID0gb3MucGF0aC5q
b2luKGJ1aWxkRGlyLCBidW5kbGVGaWxlTmFtZSArICcuemlwJykKKworICAgICMgQ2xlYW4gZXZl
cnRoaW5nIGZyb20gcHJldmlvdXMgcnVucworICAgIGlmIG9zLnBhdGguaXNkaXIoYnVuZGxlVG1w
RGlyKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShidW5kbGVUbXBEaXIpCisgICAgaWYgb3MucGF0
aC5pc2ZpbGUoYnVuZGxlRmlsZUNvbXByZXNzZWQpOgorICAgICAgICBvcy5yZW1vdmUoYnVuZGxl
RmlsZUNvbXByZXNzZWQpCisKKyAgICAjIENyZWF0ZSBidW5kbGVUbXBEaXIgYW5kIHB1dCB0aGVy
ZSBldmVyeXRoaW5nIG5lZWRlZC4KKyAgICBvcy5tYWtlZGlycyhidW5kbGVUbXBEaXIpCisgICAg
b3MubWFrZWRpcnMoYnVuZGxlVG1wTGliRGlyKQorICAgIG9zLm1ha2VkaXJzKGJ1bmRsZVRtcEJp
bkRpcikKKyAgICBjb3B5X2FuZF9yZW1vdmVfcnBhdGgoanNjQmluYXJ5LCBidW5kbGVUbXBCaW5E
aXIsIHR5cGU9J2JpbicpCisgICAgbGlicmFyaWVzLCBpbnRlcnByZXRlciA9IGxkZF9nZXRfbGli
c19hbmRfaW50ZXJwcmV0ZXIoanNjQmluYXJ5KQorICAgIGNvcHlfYW5kX3JlbW92ZV9ycGF0aChp
bnRlcnByZXRlciwgYnVuZGxlVG1wTGliRGlyLCB0eXBlPSdpbnRlcnByZXRlcicpCisgICAgZm9y
IGxpYnJhcnkgaW4gbGlicmFyaWVzOgorICAgICAgICBjb3B5X2FuZF9yZW1vdmVfcnBhdGgobGli
cmFyeSwgYnVuZGxlVG1wTGliRGlyLCB0eXBlPSdsaWInKQorICAgIGdlbmVyYXRlX3JlYWRtZShi
dW5kbGVUbXBEaXIsIGJ1aWxkZXJOYW1lLCBjb25maWd1cmF0aW9uLCBwbGF0Zm9ybSwgcmV2aXNp
b24pCisgICAgZ2VuZXJhdGVfd3JhcHBlcl9zY3JpcHQoYnVuZGxlVG1wRGlyLCBpbnRlcnByZXRl
cikKKworICAgICMganN2dSBwcm9qZWN0IHByZWZmZXJzIC56aXAgcmF0aGVyIHRoYW4gLnRhci54
egorICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGJ1bmRsZUZpbGVDb21wcmVzc2VkLCAndycsIGNv
bXByZXNzaW9uPXppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBIYW5kbGU6CisgICAgICAgIGZv
ciBkaXJuYW1lLCBzdWJkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGJ1bmRsZVRtcERpcik6CisgICAg
ICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgc3lzdGVtRmls
ZVBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZmlsZW5hbWUpCisgICAgICAgICAgICAgICAg
emlwRmlsZVBhdGggPSBzeXN0ZW1GaWxlUGF0aC5yZXBsYWNlKGJ1bmRsZVRtcERpciwgJycsIDEp
LmxzdHJpcCgnLycpCisgICAgICAgICAgICAgICAgemlwSGFuZGxlLndyaXRlKHN5c3RlbUZpbGVQ
YXRoLCB6aXBGaWxlUGF0aCkKKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShidW5kbGVGaWxl
Q29tcHJlc3NlZCk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVW5hYmxlIHRvIGNyZWF0
ZSB0aGUgZmlsZSAlcycgJSBidW5kbGVGaWxlQ29tcHJlc3NlZCkKKyAgICByZXR1cm4gYnVuZGxl
RmlsZUNvbXByZXNzZWQKKworCitkZWYgc2hhMjU2c3VtKGJ1bmRsZUZpbGVQYXRoKToKKyAgICBo
YXNoID0gaGFzaGxpYi5zaGEyNTYoKQorICAgIHdpdGggb3BlbihidW5kbGVGaWxlUGF0aCwgJ3Ji
JykgYXMgZjoKKyAgICAgICAgZm9yIGNodW5rIGluIGl0ZXIobGFtYmRhOiBmLnJlYWQoNDA5Niks
IGInJyk6CisgICAgICAgICAgICBoYXNoLnVwZGF0ZShjaHVuaykKKyAgICByZXR1cm4gaGFzaC5o
ZXhkaWdlc3QoKQorCisKKyMgVGhlIGV4cGVjdGVkIGZvcm1hdCBmb3IgLS1yZW1vdGUtY29uZmln
LWZpbGUgaXMgc29tZXRoaW5nIGxpa2U6CisjIHsKKyMgInNlcnZlcm5hbWUiOiAid2Via2l0Z3Rr
Lm9yZyIsCisjICJzZXJ2ZXJhZGRyZXNzIjogIndlYmtpdGd0ay5pbnRyYW5ldC1hZGRyZXNzLmxv
Y2FsIiwKKyMgInNlcnZlcnBvcnQiOiAiMjMiLAorIyAidXNlcm5hbWUiOiAidXBsb2FkLWJvdC02
NCIsCisjICJiYXNldXJsIjogImh0dHBzOi8vd2Via2l0Z3RrLm9yZy9qc2MtYnVpbHQtcHJvZHVj
dHMveDg2XzY0IiwKKyMgInNzaGtleSI6ICJvdXRwdXQgb2YgdGhlIHByaXYga2V5IGluIGJhc2U2
NC4gRS5nLiBjYXQgfi8uc3NoL2lkX3JzYXxiYXNlNjQgLXcwIgorIyB9CitkZWYgdXBsb2FkSlND
QnVuZGxlKGJ1bmRsZUZpbGVQYXRoLCByZW1vdGVDb25maWdGaWxlLCBjb25maWd1cmF0aW9uLCBy
ZXZpc2lvbik6CisgICAgcmVtb3RlRGF0YSA9IGpzb24ubG9hZChvcGVuKHJlbW90ZUNvbmZpZ0Zp
bGUpKQorICAgIHJlbW90ZUZpbGVOYW1lID0gc3RyKHJldmlzaW9uKSArICcuemlwJworICAgIHJl
bW90ZUZpbGVCdW5kbGVQYXRoTmFtZSA9IG9zLnBhdGguam9pbihjb25maWd1cmF0aW9uLCByZW1v
dGVGaWxlTmFtZSkKKyAgICByZW1vdGVGaWxlSGFzaFBhdGhOYW1lID0gb3MucGF0aC5qb2luKGNv
bmZpZ3VyYXRpb24sIHN0cihyZXZpc2lvbikgKyAnLnNoYTI1NnN1bScpCisgICAgd2l0aCB0ZW1w
ZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKSBhcyBzc2hrZXlmaWxlOgorICAgICAgICAjIEluIHRo
ZW9yeSBOYW1lZFRlbXBvcmFyeUZpbGUoKSBpcyBhbHJlYWR5IGNyZWF0ZWQgMDYwMC4gQnV0IGl0
IGRvbid0IGh1cnRzIGVuc3VyaW5nIHRoaXMgYWdhaW4gaGVyZS4KKyAgICAgICAgb3MuY2htb2Qo
c3Noa2V5ZmlsZS5uYW1lLCAwNjAwKQorICAgICAgICBzc2hrZXlmaWxlLndyaXRlKGJhc2U2NC5i
NjRkZWNvZGUocmVtb3RlRGF0YVsnc3Noa2V5J10pKQorICAgICAgICBzc2hrZXlmaWxlLmZsdXNo
KCkKKyAgICAgICAgIyBHZW5lcmF0ZSBhbmQgdXBsb2FkIGFsc28gYSBzaGEyNTYgaGFzaAorICAg
ICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpIGFzIGhhc2hjaGVja2ZpbGU6
CisgICAgICAgICAgICBoYXNoZm9yYnVuZGxlID0gc2hhMjU2c3VtKGJ1bmRsZUZpbGVQYXRoKQor
ICAgICAgICAgICAgb3MuY2htb2QoaGFzaGNoZWNrZmlsZS5uYW1lLCAwNjQ0KQorICAgICAgICAg
ICAgaGFzaGNoZWNrZmlsZS53cml0ZSgnJXMgJXNcbicgJSAoaGFzaGZvcmJ1bmRsZSwgcmVtb3Rl
RmlsZU5hbWUpKQorICAgICAgICAgICAgaGFzaGNoZWNrZmlsZS5mbHVzaCgpCisgICAgICAgICAg
ICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpIGFzIHVwbG9hZGluc3RydWN0aW9u
c2ZpbGU6CisgICAgICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS53cml0ZSgncHJv
Z3Jlc3NcbicpCisgICAgICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS53cml0ZSgn
cHV0ICVzICVzXG4nICUgKGJ1bmRsZUZpbGVQYXRoLCByZW1vdGVGaWxlQnVuZGxlUGF0aE5hbWUp
KQorICAgICAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3B1dCAlcyAl
c1xuJyAlIChoYXNoY2hlY2tmaWxlLm5hbWUsIHJlbW90ZUZpbGVIYXNoUGF0aE5hbWUpKQorICAg
ICAgICAgICAgICAgIHVwbG9hZGluc3RydWN0aW9uc2ZpbGUud3JpdGUoJ3F1aXRcbicpCisgICAg
ICAgICAgICAgICAgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS5mbHVzaCgpCisgICAgICAgICAgICAg
ICAgIyBUaGUgaWRlYSBvZiB0aGlzIGlzIHRvIGVuc3VyZSBzY3AgZG9lc24ndCBhc2sgYW55IHF1
ZXN0aW9uIChub3QgZXZlbiBvbiB0aGUgZmlyc3QgcnVuKS4KKyAgICAgICAgICAgICAgICAjIFRo
aXMgc2hvdWxkIGJlIHNlY3VyZSBlbm91Z2ggYWNjb3JkaW5nIHRvIGh0dHBzOi8vd3d3LmdyZW13
ZWxsLmNvbS9zc2gtbWl0bS1wdWJsaWMta2V5LWF1dGhlbnRpY2F0aW9uCisgICAgICAgICAgICAg
ICAgc2Z0cENvbW1hbmQgPSBbJ3NmdHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctbycsICdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm8nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctbycsICdVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnLW8nLCAnTG9nTGV2ZWw9RVJST1InLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICctUCcsIHJlbW90ZURhdGFbJ3NlcnZlcnBvcnQnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWknLCBzc2hrZXlmaWxlLm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1iJywgdXBsb2FkaW5zdHJ1Y3Rpb25zZmlsZS5u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclc0AlcycgJSAocmVtb3RlRGF0
YVsndXNlcm5hbWUnXSwgcmVtb3RlRGF0YVsnc2VydmVyYWRkcmVzcyddKV0KKyAgICAgICAgICAg
ICAgICBwcmludCgnVXBsb2FkaW5nIGJ1bmRsZSB0byAlcyBhcyAlcyB3aXRoIHNoYTI1NiBoYXNo
ICVzJyAlIChyZW1vdGVEYXRhWydzZXJ2ZXJuYW1lJ10sIHJlbW90ZUZpbGVCdW5kbGVQYXRoTmFt
ZSwgaGFzaGZvcmJ1bmRsZSkpCisgICAgICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHNm
dHBDb21tYW5kKSAhPSAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Io
J1RoZSBzZnRwIGNvbW1hbmQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzJykKKworICAgIHByaW50
KCdEb25lOiBhcmNoaXZlIHN1Y2VzZnVsbHkgdXBsb2FkZWQgdG8gJXMvJXMnICUgKHJlbW90ZURh
dGFbJ2Jhc2V1cmwnXSwgcmVtb3RlRmlsZUJ1bmRsZVBhdGhOYW1lKSkKKyAgICByZXR1cm4gMAor
CisKK2RlZiBtYWluKCk6CisgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCd1c2Fn
ZTogJXByb2cgW29wdGlvbnNdJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1wbGF0Zm9ybScs
IGRlc3Q9J3BsYXRmb3JtJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWJ1ZycsIGFjdGlv
bj0nc3RvcmVfY29uc3QnLCBjb25zdD0nZGVidWcnLCBkZXN0PSdjb25maWd1cmF0aW9uJykKKyAg
ICBwYXJzZXIuYWRkX29wdGlvbignLS1yZWxlYXNlJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNv
bnN0PSdyZWxlYXNlJywgZGVzdD0nY29uZmlndXJhdGlvbicpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy0tcmV2aXNpb24nLCBhY3Rpb249J3N0b3JlJywgdHlwZT0nc3RyaW5nJywgZGVzdD0ncmV2
aXNpb24nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWJ1aWxkZXItbmFtZScsIGFjdGlvbj0n
c3RvcmUnLCB0eXBlPSdzdHJpbmcnLCBkZXN0PSdidWlsZGVybmFtZScpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tcmVtb3RlLWNvbmZpZy1maWxlJywgYWN0aW9uPSdzdG9yZScsICB0eXBlPSdz
dHJpbmcnLCBkZXN0PSdyZW1vdGVDb25maWdGaWxlJykKKyAgICBvcHRpb25zLCBhcmdzID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgbm90IG9wdGlvbnMucGxhdGZvcm06CisgICAgICAg
IHBhcnNlci5lcnJvcignUGxhdGZvcm0gaXMgcmVxdWlyZWQnKQorICAgICAgICByZXR1cm4gMQor
ICAgIGlmIG5vdCBvcHRpb25zLmNvbmZpZ3VyYXRpb246CisgICAgICAgIHBhcnNlci5lcnJvcign
Q29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCcpCisgICAgICAgIHJldHVybiAxCisKKyAgICBwbGF0
Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0ubG93ZXIoKQorICAgIGNvbmZpZ3VyYXRpb24gPSBvcHRp
b25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQorICAgIGlmIHBsYXRmb3JtID09ICdndGsnOgorICAg
ICAgICBqaGJ1aWxkdXRpbHMuZW50ZXJfamhidWlsZF9lbnZpcm9ubWVudF9pZl9hdmFpbGFibGUo
cGxhdGZvcm0pCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcign
VW5zdXBwb3J0ZWQgcGxhdGZvcm0nKQorCisgICAgYnVuZGxlRmlsZVBhdGggPSBjcmVhdGVKU0NC
dW5kbGUoY29uZmlndXJhdGlvbiwgb3B0aW9ucy5yZXZpc2lvbiwgb3B0aW9ucy5idWlsZGVybmFt
ZSwgcGxhdGZvcm0pCisgICAgcHJpbnQoJ0J1bmRsZSBmaWxlIGNyZWF0ZWQgYXQ6ICVzJyAlIGJ1
bmRsZUZpbGVQYXRoKQorICAgIGlmIG9wdGlvbnMucmVtb3RlQ29uZmlnRmlsZSBpcyBub3QgTm9u
ZSBhbmQgb3MucGF0aC5pc2ZpbGUob3B0aW9ucy5yZW1vdGVDb25maWdGaWxlKToKKyAgICAgICAg
cmV0dXJuIHVwbG9hZEpTQ0J1bmRsZShidW5kbGVGaWxlUGF0aCwgb3B0aW9ucy5yZW1vdGVDb25m
aWdGaWxlLCBvcHRpb25zLmNvbmZpZ3VyYXRpb24sIG9wdGlvbnMucmV2aXNpb24pCisgICAgcmV0
dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4o
KSkK
</data>
<flag name="review"
          id="356435"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>