<?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>204838</bug_id>
          
          <creation_ts>2019-12-03 21:58:18 -0800</creation_ts>
          <short_desc>Python 3: Add support in webkitpy.tool</short_desc>
          <delta_ts>2019-12-06 16:11:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=184986</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="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>aperez</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595377</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-03 21:58:18 -0800</bug_when>
    <thetext>This supports running webkit-patch with Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595378</commentid>
    <comment_count>1</comment_count>
      <attachid>384788</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-03 22:29:26 -0800</bug_when>
    <thetext>Created attachment 384788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595616</commentid>
    <comment_count>2</comment_count>
      <attachid>384788</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 16:10:49 -0800</bug_when>
    <thetext>Comment on attachment 384788
Patch

Clearing flags on attachment: 384788

Committed r253128: &lt;https://trac.webkit.org/changeset/253128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595617</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 16:10:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595618</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-04 16:11:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/57645975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595825</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-05 09:00:35 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595826</commentid>
    <comment_count>6</comment_count>
      <attachid>384910</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-05 09:00:36 -0800</bug_when>
    <thetext>Created attachment 384910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595827</commentid>
    <comment_count>7</comment_count>
      <attachid>384911</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-05 09:02:37 -0800</bug_when>
    <thetext>Created attachment 384911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595828</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-05 09:04:19 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #7)
&gt; Created attachment 384911 [details]
&gt; Patch

Tried uploading a patch with Python 3, hit a few bumps. This is what I needed for webkit-patch upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596049</commentid>
    <comment_count>9</comment_count>
      <attachid>384911</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-12-05 15:24:53 -0800</bug_when>
    <thetext>Comment on attachment 384911
Patch

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

&gt; Tools/Scripts/webkit-patch:45
&gt; +# If our str type isn&apos;t unicode, we need to standardize output format

why remove all the comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596057</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-05 15:36:54 -0800</bug_when>
    <thetext>(In reply to Stephanie Lewis from comment #9)
&gt; Comment on attachment 384911 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384911&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkit-patch:45
&gt; &gt; +# If our str type isn&apos;t unicode, we need to standardize output format
&gt; 
&gt; why remove all the comments?

I can put them back, but they weren&apos;t super helpful and not applicable to Python 3. We&apos;re likely going to be removing them once we are only Python 3 anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596342</commentid>
    <comment_count>11</comment_count>
      <attachid>384911</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-12-06 13:46:07 -0800</bug_when>
    <thetext>Comment on attachment 384911
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkit-patch:45
&gt;&gt;&gt; +# If our str type isn&apos;t unicode, we need to standardize output format
&gt;&gt; 
&gt;&gt; why remove all the comments?
&gt; 
&gt; I can put them back, but they weren&apos;t super helpful and not applicable to Python 3. We&apos;re likely going to be removing them once we are only Python 3 anyways.

I think Saying why 2.7 needs a forgiving utf8 writer is important to explain why this class exists. And the bug number this code is solving  is useful too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596351</commentid>
    <comment_count>12</comment_count>
      <attachid>385040</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-06 13:57:30 -0800</bug_when>
    <thetext>Created attachment 385040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596352</commentid>
    <comment_count>13</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-06 13:58:20 -0800</bug_when>
    <thetext>(In reply to Stephanie Lewis from comment #11)
&gt; Comment on attachment 384911 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384911&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/Scripts/webkit-patch:45
&gt; &gt;&gt;&gt; +# If our str type isn&apos;t unicode, we need to standardize output format
&gt; &gt;&gt; 
&gt; &gt;&gt; why remove all the comments?
&gt; &gt; 
&gt; &gt; I can put them back, but they weren&apos;t super helpful and not applicable to Python 3. We&apos;re likely going to be removing them once we are only Python 3 anyways.
&gt; 
&gt; I think Saying why 2.7 needs a forgiving utf8 writer is important to explain
&gt; why this class exists. And the bug number this code is solving  is useful too

Ok, added back in the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596382</commentid>
    <comment_count>14</comment_count>
      <attachid>385040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-06 15:00:28 -0800</bug_when>
    <thetext>Comment on attachment 385040
Patch

Clearing flags on attachment: 385040

Committed r253222: &lt;https://trac.webkit.org/changeset/253222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596383</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-06 15:00:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596420</commentid>
    <comment_count>16</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-06 16:11:49 -0800</bug_when>
    <thetext>Committed r253230: &lt;https://trac.webkit.org/changeset/253230&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384788</attachid>
            <date>2019-12-03 22:29:26 -0800</date>
            <delta_ts>2019-12-05 09:00:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204838-20191203222925.patch</filename>
            <type>text/plain</type>
            <size>57873</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzA5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwMCBAQAorMjAxOS0xMi0wMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgUHl0aG9uIDM6IEFkZCBzdXBwb3J0IGluIHdlYmtpdHB5LnRvb2wKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDgzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy90
ZXN0LXdlYmtpdHB5LXB5dGhvbjM6IEFkZCB3ZWJraXRweS50b29sLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0LXBhdGNoOiBSZW1vdmUgdmVyc2lvbiBjaGVjay4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5OgorICAgICAgICAoQnVnLnJldmll
d2VkX3BhdGNoZXMpOiBDb252ZXJ0IGZpbHRlciB0byBsaXN0LgorICAgICAgICAoQnVnLmNvbW1p
dF9xdWV1ZWRfcGF0Y2hlcyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV9tb2NrLnB5OgorICAgICAgICAoTW9ja0J1Z3ppbGxh
UXVlcmllcy5mZXRjaF9idWdfaWRzX2Zyb21fY29tbWl0X3F1ZXVlKTogQ29udmVydCBtYXAgdG8g
bGlzdC4KKyAgICAgICAgKE1vY2tCdWd6aWxsYVF1ZXJpZXMuZmV0Y2hfYXR0YWNobWVudF9pZHNf
ZnJvbV9yZXZpZXdfcXVldWUpOiBEaXR0by4KKyAgICAgICAgKE1vY2tCdWd6aWxsYVF1ZXJpZXMu
ZmV0Y2hfYnVnX2lkc19mcm9tX3BlbmRpbmdfY29tbWl0X2xpc3QpOiBEaXR0by4KKyAgICAgICAg
KE1vY2tCdWd6aWxsYS5wb3N0X2NvbW1lbnRfdG9fYnVnKTogU29ydCBjYyBsaXN0IGJlZm9yZSBw
cmludGluZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2Vy
dmVyLnB5OgorICAgICAgICAoU3RhdHVzU2VydmVyLnNldF9hcGlfa2V5KTogQ29udmVydCBmaWx0
ZXIgdG8gbGlzdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5
OgorICAgICAgICAoV2ViLmdldF9iaW5hcnkpOiBVc2UgUHl0aG9uIDIvMyBjb21wYXRpYmxlIHVy
bG9wZW4uCisgICAgICAgIChXZWIucmVxdWVzdCk6IFVzZSBQeXRob24gMi8zIGNvbXBhdGlibGUg
UmVxdWVzdC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRjaC5w
eToKKyAgICAgICAgKFByZXR0eVBhdGNoLnByZXR0eV9kaWZmX2ZpbGUpOiBFbmNvZGUgZGlmZiBi
ZWZvcmUgcHJpbnRpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2V4ZWN1dGl2ZV9tb2NrLnB5OgorICAgICAgICAoTW9ja0V4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93
X2lmX2ZhaWwpOiBTb3J0IGVudmlyb25tZW50IGJlZm9yZSBwcmludGluZy4KKyAgICAgICAgKE1v
Y2tFeGVjdXRpdmUucnVuX2NvbW1hbmQpOiBDb252ZXJ0IGlucHV0IHRvIHN0cmluZyBiZWZvcmUg
cHJpbnRpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1
ZXRhc2tfdW5pdHRlc3QucHk6CisgICAgICAgIChGYWlsaW5nVGVzdENvbW1pdFF1ZXVlLnRlc3Rf
cmVzdWx0cyk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgIChNb2NrU2ltcGxlVGVzdFBs
YW5Db21taXRRdWV1ZS50ZXN0X3Jlc3VsdHMpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2ZlZWRlcnMucHk6CisgICAgICAgIChDb21taXRRdWV1ZUZlZWRlci5m
ZWVkKTogVXNlIFB5dGhvbiAyLzMgY29tcGF0aWJsZSBzb3J0LgorICAgICAgICAoQ29tbWl0UXVl
dWVGZWVkZXIuX3BhdGNoX2NtcCk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9mbGFreXRlc3RyZXBvcnRlci5weToKKyAgICAgICAgKEZsYWt5VGVzdFJlcG9y
dGVyLl9sb29rdXBfYnVnX2Zvcl9mbGFreV90ZXN0KTogQ29udmVydCBmaWx0ZXIgdG8gbGlzdC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5OgorICAg
ICAgICAoV2hvaXMuZXhlY3V0ZSk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9yZXRyeWxvZ2ljX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
SlNDRWFybHlXYXJuaW5nU3lzdGVtVGVzdC5fY3JlYXRlX3Rhc2spOiBDb252ZXJ0IG1hcCB0byBs
aXN0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZi5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYXBwbHl3YXRjaGxpc3Rsb2Nh
bF91bml0dGVzdC5weTogVXNlIHNvcnRlZCBsaXN0cworICAgICAgICBJbnN0ZWFkIG9mIHNldHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5Ogor
ICAgICAgICAoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kLl9faW5pdF9fKTogVXNlIFB5
dGhvbiAyLzMgY29tcGF0aWJsZSBzb3J0LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weTogU29ydCBlbnZpcm9ubWVudC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5
OgorICAgICAgICAoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0ubG9hZF9ld3NfY2xhc3Nlcyk6
IHN0ci50cmFuc2xhdGUgZGlmZmVycyBiZXR3ZWVuIFB5dGhvbiAyCisgICAgICAgIGFuZCBQeXRo
b24gMy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvbmV3Y29tbWl0
Ym90LnB5OgorICAgICAgICAoTmV3Q29tbWl0Qm90Ll9zdW1tYXJpemVfY29tbWl0X2xvZyk6IENv
bnZlcnQgZmlsdGVyIHRvIGxpc3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgKEFic3RyYWN0UXVldWUuc2hvdWxkX2NvbnRpbnVl
X3dvcmtfcXVldWUpOiBIYW5kbGUgY2FzZSB3aGVyZSBpdGVyYXRpb25zIGlzIGEgTWFnaWNNb2Nr
LgorICAgICAgICAoQWJzdHJhY3RRdWV1ZS5fbG9nX2Zyb21fc2NyaXB0X2Vycm9yX2Zvcl91cGxv
YWQpOiBFeHBsaWNpdGx5IHVzZSBCeXRlc0lPCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weTogVXNlIGV4cGxpY2l0IGltcG9ydCBwYXRo
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91
bml0dGVzdC5weTogU29ydCBsaXN0cyBiZWZvcmUgY29tcGFyaW5nIHRoZW0uCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N0ZXBzZXF1ZW5jZS5weToKKyAgICAgICAg
KFN0ZXBTZXF1ZW5jZS5vcHRpb25zKTogVXNlIFB5dGhvbiAyLzMgY29tcGF0aWJsZSBzb3J0Lgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlv
bnMucHk6CisgICAgICAgIChBYnN0cmFjdENvbW1pdExvZ0NvbW1hbmQuX19pbml0X18pOiBVc2Ug
UHl0aG9uIDIvMyBjb21wYXRpYmxlIHNvcnQuCisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X3ByaW50X25vbWluYXRpb25zKTogRGl0dG8uCisgICAgICAgIChTdWdnZXN0Tm9taW5hdGlvbnMu
X3ByaW50X2NvdW50cyk6IERpdHRvLgorICAgICAgICAoU3VnZ2VzdE5vbWluYXRpb25zLl9wcmlu
dF9ub21pbmF0aW9ucy5ub21pbmF0aW9uX2NtcCk6IERlbGV0ZWQuCisgICAgICAgIChTdWdnZXN0
Tm9taW5hdGlvbnMuX3ByaW50X2NvdW50cy5jb3VudGVyX2NtcCk6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sX3VuaXR0ZXN0LnB5OiBVc2UgZXhwbGlj
aXQgaW1wb3J0IHBhdGhzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tdWx0aWNv
bW1hbmR0b29sLnB5OgorICAgICAgICAoSGVscENvbW1hbmQuX2hlbHBfZXBpbG9nKTogQ29udmVy
dCBmaWx0ZXIgdG8gbGlzdCwgdXNlIFB5dGhvbiAyLzMgY29tcGF0aWJsZSBzb3J0LgorICAgICAg
ICAoTXVsdGlDb21tYW5kVG9vbC5fZmluZF9hbGxfY29tbWFuZHMpOiBVc2UgUHl0aG9uIDIvMyBj
b21wYXRpYmxlIHNvcnQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMv
Z2FyZGVuaW5nc2VydmVyLnB5OgorICAgICAgICAoR2FyZGVuaW5nSFRUUFNlcnZlcik6IFVzZSBQ
eXRob24gMi8zIGNvbXBhdGlibGUgSFRUUFNlcnZlcnMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlci5weToKKyAgICAgICAgKGdldF90ZXN0
X2Jhc2VsaW5lcy5BbGxQbGF0Zm9ybXNQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKTogVXNlIGxp
c3QgaW5zdGVhZCBvZiB1dHRlcmFibGUga2V5cy4KKyAgICAgICAgKFJlYmFzZWxpbmVIVFRQU2Vy
dmVyKTogVXNlIFB5dGhvbiAyLzMgY29tcGF0aWJsZSBIVFRQU2VydmVycy4KKyAgICAgICAgKFJl
YmFzZWxpbmVIVFRQU2VydmVyLl9faW5pdF9fKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weToKKyAgICAg
ICAgKEdldEFjdHVhbFJlc3VsdEZpbGVzVGVzdC50ZXN0KTogVXNlIGFzc2VydEVxdWFsIGluc3Rl
YWQgb2YgYXNzZXJ0SXRlbXNFcXVhbC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c2VydmVycy9yZWZsZWN0aW9uaGFuZGxlci5weToKKyAgICAgICAgKFJlZmxlY3Rpb25IYW5kbGVy
KTogVXNlIFB5dGhvbiAyLzMgY29tcGF0aWJsZSBIVFRQU2VydmVycy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHl3YXRjaGxpc3QucHk6CisgICAgICAgIChBcHBs
eVdhdGNoTGlzdC5ydW4pOiBTb3J0IGNjX2VtYWlscyBiZWZvcmUgcHJpbnRpbmcuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5d2F0Y2hsaXN0X3VuaXR0ZXN0LnB5
OiBQcmludCBzb3J0ZWQgbGlzdCBpbnN0ZWFkCisgICAgICAgIG9mIHNldC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29uZmlybWRpZmYucHk6CisgICAgICAgIChDb25m
aXJtRGlmZi5fc2hvd19wcmV0dHlfZGlmZik6IFVzZSBQeXRob24gMi8zIGNvbXBhdGlibGUgcGF0
aG5hbWUydXJsLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5k
ZWQucHk6CisgICAgICAgIChIYXNMYW5kZWQuY29udmVydF90b19zdm4pOiBVc2UgUHl0aG9uIDIv
MyBjb21wYXRpYmxlIFN0cmluZ0lPLgorICAgICAgICAoSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9s
b2cpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFy
ZWNoYW5nZWxvZy5weToKKyAgICAgICAgKFByZXBhcmVDaGFuZ2VMb2cuX3Jlc29sdmVfZXhpc3Rp
bmdfZW50cnkpOiBDb252ZXJ0IHppcCBvYmplY3QgdG8gbGlzdC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJvbXB0Zm9yYnVnb3J0aXRsZS5weTogVXNlIFB5dGhvbiAy
LzMgY29tcGF0aWJsZSB1cmxwYXJzZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvc3RlcHNfdW5pdHRlc3QucHk6IFNvcnQgZW52aXJvbm1lbnQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weTogVXNlIFB5dGhvbiAyLzMgY29tcGF0
aWJsZSBIVFRQRXJyb3IuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1
Yi5weToKKyAgICAgICAgKFdQVEdpdEh1Yi5yZW1vdmVfbGFiZWwpOiBVc2UgUHl0aG9uIDIvMyBj
b21wYXRpYmxlIHVybGxpYi5xdW90ZS4KKyAgICAgICAgKFdQVEdpdEh1Yi5pc19wcl9tZXJnZWQp
OiBVc2UgUHl0aG9uIDIvMyBjb21wYXRpYmxlIEhUVFBFcnJvci4KKyAgICAgICAgKFdQVEdpdEh1
Yi5tZXJnZV9wcik6IERpdHRvLgorICAgICAgICAoSlNPTlJlc3BvbnNlLl9faW5pdF9fKToKKwog
MjAxOS0xMi0wMyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBkaXNhYmxlZCBoaWdobGlnaHQgQVBJIHNrZWxldG9uCkluZGV4OiBUb29scy9T
Y3JpcHRzL3Rlc3Qtd2Via2l0cHktcHl0aG9uMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3Rlc3Qtd2Via2l0cHktcHl0aG9uMwkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0
cy90ZXN0LXdlYmtpdHB5LXB5dGhvbjMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAg
UFlUSE9OM19DT01QQVRJQkxFX0RJUkVDVE9SSUVTID0gWwogICAnd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnNlcnZlcnMnLAogICAnd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzJywKICAgJ3dlYmtp
dHB5LnBvcnQnLAorICAnd2Via2l0cHkudG9vbCcsCiAgICd3ZWJraXRweS5yZXN1bHRzJywKICAg
J3dlYmtpdHB5LnN0eWxlJywKICAgJ3dlYmtpdHB5Lnhjb2RlJywKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0LXBhdGNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNo
CShyZXZpc2lvbiAyNTMwMjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdC1wYXRjaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsOCArMzgsNiBAQCBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBv
cnQgY29kZWNzCiAKLWltcG9ydCB3ZWJraXRweS5jb21tb24udmVyc2lvbl9jaGVjawotCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5n
CiBmcm9tIHdlYmtpdHB5LnRvb2wubWFpbiBpbXBvcnQgV2ViS2l0UGF0Y2gKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2gucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2gucHkJKHJldmlzaW9uIDI1
MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MK
IGltcG9ydCB0ZW1wZmlsZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKQEAgLTQ5LDggKzUwLDggQEAgY2xhc3MgUHJldHR5UGF0Y2gob2JqZWN0
KToKICAgICBkZWYgcHJldHR5X2RpZmZfZmlsZShzZWxmLCBkaWZmKToKICAgICAgICAgIyBEaWZm
cyBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXh0IGZpbGVzIG9mIGRpZmZlcmVudCBlbmNvZGluZ3MK
ICAgICAgICAgIyBzbyB3ZSBhbHdheXMgZGVhbCB3aXRoIHRoZW0gYXMgYnl0ZSBhcnJheXMsIG5v
dCB1bmljb2RlIHN0cmluZ3MuCi0gICAgICAgIGFzc2VydChpc2luc3RhbmNlKGRpZmYsIHN0cikp
Ci0gICAgICAgIHByZXR0eV9kaWZmID0gc2VsZi5wcmV0dHlfZGlmZihkaWZmKQorICAgICAgICBk
aWZmID0gZW5jb2RlX2lmX25lY2Vzc2FyeShkaWZmKQorICAgICAgICBwcmV0dHlfZGlmZiA9IGVu
Y29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5wcmV0dHlfZGlmZihkaWZmKSkKICAgICAgICAgZGlmZl9m
aWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD0iLmh0bWwiKQogICAgICAg
ICBkaWZmX2ZpbGUud3JpdGUocHJldHR5X2RpZmYpCiAgICAgICAgIGRpZmZfZmlsZS5mbHVzaCgp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNz
ZXJ2ZXIucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
Y2xhc3MgU3RhdHVzU2VydmVyOgogCiAgICAgZGVmIHNldF9hcGlfa2V5KHNlbGYsIGFwaV9rZXkp
OgogICAgICAgICBzZWxmLl9hcGlfa2V5ID0gc3RyKGFwaV9rZXkpCi0gICAgICAgIG5ld19oZWFk
ZXJzID0gZmlsdGVyKGxhbWJkYSBoZWFkZXI6IGhlYWRlclswXSAhPSBzZWxmLl9BVVRIT1JJWkFU
SU9OX0hFQURFUl9OQU1FLCBzZWxmLl9icm93c2VyLmFkZGhlYWRlcnMpCisgICAgICAgIG5ld19o
ZWFkZXJzID0gbGlzdChmaWx0ZXIobGFtYmRhIGhlYWRlcjogaGVhZGVyWzBdICE9IHNlbGYuX0FV
VEhPUklaQVRJT05fSEVBREVSX05BTUUsIHNlbGYuX2Jyb3dzZXIuYWRkaGVhZGVycykpCiAgICAg
ICAgIGlmIGFwaV9rZXk6CiAgICAgICAgICAgICBuZXdfaGVhZGVycy5hcHBlbmQoc2VsZi5fYXV0
aG9yaXphdGlvbl9oZWFkZXJfbmFtZV9hbmRfdmFsdWVfcGFpcigpKQogICAgICAgICBzZWxmLl9i
cm93c2VyLmFkZGhlYWRlcnMgPSBuZXdfaGVhZGVycwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L3dlYi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvd2ViLnB5CShyZXZpc2lvbiAyNTMwMjMpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOCArMjYs
MjMgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCB1cmxsaWIyCitp
bXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24g
aW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgogCitpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgorICAgIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IGJ1aWxkX29wZW5lciwgUmVxdWVzdCwg
dXJsb3BlbiwgSFRUUEhhbmRsZXIKK2Vsc2U6CisgICAgZnJvbSB1cmxsaWIyIGltcG9ydCB1cmxv
cGVuLCBidWlsZF9vcGVuZXIsIFJlcXVlc3QsIEhUVFBIYW5kbGVyCisKIAogY2xhc3MgV2ViKG9i
amVjdCk6CiAgICAgZGVmIGdldF9iaW5hcnkoc2VsZiwgdXJsLCBjb252ZXJ0XzQwNF90b19Ob25l
PUZhbHNlKToKLSAgICAgICAgcmV0dXJuIE5ldHdvcmtUcmFuc2FjdGlvbihjb252ZXJ0XzQwNF90
b19Ob25lPWNvbnZlcnRfNDA0X3RvX05vbmUpLnJ1bihsYW1iZGE6IHVybGxpYjIudXJsb3Blbih1
cmwpLnJlYWQoKSkKKyAgICAgICAgcmV0dXJuIE5ldHdvcmtUcmFuc2FjdGlvbihjb252ZXJ0XzQw
NF90b19Ob25lPWNvbnZlcnRfNDA0X3RvX05vbmUpLnJ1bihsYW1iZGE6IHVybG9wZW4odXJsKS5y
ZWFkKCkpCiAKICAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgZGF0YSwgaGVhZGVy
cz1Ob25lKToKLSAgICAgICAgb3BlbmVyID0gdXJsbGliMi5idWlsZF9vcGVuZXIodXJsbGliMi5I
VFRQSGFuZGxlcikKLSAgICAgICAgcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdCh1cmw9dXJsLCBk
YXRhPWRhdGEpCisgICAgICAgIG9wZW5lciA9IGJ1aWxkX29wZW5lcihIVFRQSGFuZGxlcikKKyAg
ICAgICAgcmVxdWVzdCA9IFJlcXVlc3QodXJsPXVybCwgZGF0YT1kYXRhKQogICAgICAgICByZXF1
ZXN0LmdldF9tZXRob2QgPSBsYW1iZGE6IG1ldGhvZAogCiAgICAgICAgIGlmIGhlYWRlcnM6Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9i
dWcucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHkJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBj
bGFzcyBCdWcob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBwYXRjaGVzCiAgICAgICAgICMg
Q2hlY2tpbmcgcmV2aWV3ZXIoKSBlbnN1cmVzIHRoYXQgaXQgd2FzIGJvdGggcmV2aWV3ZWQgYW5k
IGhhcyBhIHZhbGlkCiAgICAgICAgICMgcmV2aWV3ZXIuCi0gICAgICAgIHJldHVybiBmaWx0ZXIo
bGFtYmRhIHBhdGNoOiBwYXRjaC5yZXZpZXdlcigpLCBwYXRjaGVzKQorICAgICAgICByZXR1cm4g
bGlzdChmaWx0ZXIobGFtYmRhIHBhdGNoOiBwYXRjaC5yZXZpZXdlcigpLCBwYXRjaGVzKSkKIAog
ICAgIGRlZiBjb21taXRfcXVldWVkX3BhdGNoZXMoc2VsZiwgaW5jbHVkZV9pbnZhbGlkPUZhbHNl
KToKICAgICAgICAgcGF0Y2hlcyA9IFtwYXRjaCBmb3IgcGF0Y2ggaW4gc2VsZi5wYXRjaGVzKCkK
QEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBCdWcob2JqZWN0KToKICAgICAgICAgICAgIHJldHVy
biBwYXRjaGVzCiAgICAgICAgICMgQ2hlY2tpbmcgY29tbWl0dGVyKCkgZW5zdXJlcyB0aGF0IGl0
IHdhcyBib3RoIGNvbW1pdC1xdWV1ZSsnZCBhbmQgaGFzCiAgICAgICAgICMgYSB2YWxpZCBjb21t
aXR0ZXIuCi0gICAgICAgIHJldHVybiBmaWx0ZXIobGFtYmRhIHBhdGNoOiBwYXRjaC5jb21taXR0
ZXIoKSwgcGF0Y2hlcykKKyAgICAgICAgcmV0dXJuIGxpc3QoZmlsdGVyKGxhbWJkYSBwYXRjaDog
cGF0Y2guY29tbWl0dGVyKCksIHBhdGNoZXMpKQogCiAgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5idWdfZGljdGlvbmFyeVsiY29tbWVudHMiXQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX21vY2sucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Z3ppbGxhX21vY2sucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV9tb2NrLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMjMsNyArMzIzLDcgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhUXVlcmllcyhvYmplY3QpOgog
ICAgICAgICBidWdzX3dpdGhfY29tbWl0X3F1ZXVlZF9wYXRjaGVzID0gZmlsdGVyKAogICAgICAg
ICAgICAgICAgIGxhbWJkYSBidWc6IGJ1Zy5jb21taXRfcXVldWVkX3BhdGNoZXMoKSwKICAgICAg
ICAgICAgICAgICBzZWxmLl9hbGxfYnVncygpKQotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSBi
dWc6IGJ1Zy5pZCgpLCBidWdzX3dpdGhfY29tbWl0X3F1ZXVlZF9wYXRjaGVzKQorICAgICAgICBy
ZXR1cm4gbGlzdChtYXAobGFtYmRhIGJ1ZzogYnVnLmlkKCksIGJ1Z3Nfd2l0aF9jb21taXRfcXVl
dWVkX3BhdGNoZXMpKQogCiAgICAgZGVmIGZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3
X3F1ZXVlKHNlbGYsIHNpbmNlPU5vbmUsIG9ubHlfc2VjdXJpdHlfYnVncz1GYWxzZSk6CiAgICAg
ICAgIHVucmV2aWV3ZWRfcGF0Y2hlcyA9IHN1bShbYnVnLnVucmV2aWV3ZWRfcGF0Y2hlcygpCkBA
IC0zMzMsNyArMzMzLDcgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhUXVlcmllcyhvYmplY3QpOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGNoLmF0dGFjaF9kYXRl
KCkgPj0gc2luY2VdCiAgICAgICAgIGlmIG9ubHlfc2VjdXJpdHlfYnVnczoKICAgICAgICAgICAg
IHVucmV2aWV3ZWRfcGF0Y2hlcyA9IGZpbHRlcihsYW1iZGEgcGF0Y2g6IHBhdGNoLmJ1ZygpLmlz
X3NlY3VyaXR5X3NlbnNpdGl2ZSgpLCB1bnJldmlld2VkX3BhdGNoZXMpCi0gICAgICAgIHJldHVy
biBtYXAobGFtYmRhIHBhdGNoOiBwYXRjaC5pZCgpLCB1bnJldmlld2VkX3BhdGNoZXMpCisgICAg
ICAgIHJldHVybiBsaXN0KG1hcChsYW1iZGEgcGF0Y2g6IHBhdGNoLmlkKCksIHVucmV2aWV3ZWRf
cGF0Y2hlcykpCiAKICAgICBkZWYgZmV0Y2hfcGF0Y2hlc19mcm9tX2NvbW1pdF9xdWV1ZShzZWxm
KToKICAgICAgICAgcmV0dXJuIHN1bShbYnVnLmNvbW1pdF9xdWV1ZWRfcGF0Y2hlcygpCkBAIC0z
NDIsNyArMzQyLDcgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhUXVlcmllcyhvYmplY3QpOgogICAgIGRl
ZiBmZXRjaF9idWdfaWRzX2Zyb21fcGVuZGluZ19jb21taXRfbGlzdChzZWxmKToKICAgICAgICAg
YnVnc193aXRoX3Jldmlld2VkX3BhdGNoZXMgPSBmaWx0ZXIobGFtYmRhIGJ1ZzogYnVnLnJldmll
d2VkX3BhdGNoZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fYWxsX2J1Z3MoKSkKLSAgICAgICAgYnVnX2lkcyA9IG1hcChsYW1iZGEgYnVnOiBi
dWcuaWQoKSwgYnVnc193aXRoX3Jldmlld2VkX3BhdGNoZXMpCisgICAgICAgIGJ1Z19pZHMgPSBs
aXN0KG1hcChsYW1iZGEgYnVnOiBidWcuaWQoKSwgYnVnc193aXRoX3Jldmlld2VkX3BhdGNoZXMp
KQogICAgICAgICAjIE5PVEU6IFRoaXMgbWFudWFsIGhhY2sgaGVyZSBpcyB0byBhbGxvdyB0ZXN0
aW5nIGxvZ2dpbmcgaW4KICAgICAgICAgIyB0ZXN0X2Fzc2lnbl90b19jb21taXR0ZXIgdGhlIHJl
YWwgcGVuZGluZy1jb21taXQgcXVlcnkgb24gYnVnemlsbGEKICAgICAgICAgIyB3aWxsIHJldHVy
biBidWdzIHdpdGggcGF0Y2hlcyB3aGljaCBoYXZlIHIrLCBidXQgYXJlIGFsc28gb2Jzb2xldGUu
CkBAIC00NzAsNyArNDcwLDcgQEAgY2xhc3MgTW9ja0J1Z3ppbGxhKG9iamVjdCk6CiAKICAgICBk
ZWYgcG9zdF9jb21tZW50X3RvX2J1ZyhzZWxmLCBidWdfaWQsIGNvbW1lbnRfdGV4dCwgY2M9Tm9u
ZSwgc2VlX2Fsc289Tm9uZSk6CiAgICAgICAgIF9sb2cuaW5mbygiTU9DSyBidWcgY29tbWVudDog
YnVnX2lkPSVzLCBjYz0lcywgc2VlX2Fsc289JXNcbi0tLSBCZWdpbiBjb21tZW50IC0tLVxuJXNc
bi0tLSBFbmQgY29tbWVudCAtLS1cbiIgJSAoCi0gICAgICAgICAgICAgICAgICBidWdfaWQsIGNj
LCBzZWVfYWxzbywgY29tbWVudF90ZXh0KSkKKyAgICAgICAgICAgICAgICAgIGJ1Z19pZCwgc29y
dGVkKGNjIG9yIFtdKSBvciBOb25lLCBzZWVfYWxzbywgY29tbWVudF90ZXh0KSkKIAogICAgIGRl
ZiBhZGRfYXR0YWNobWVudF90b19idWcoc2VsZiwgYnVnX2lkLCBmaWxlX29yX3N0cmluZywgZGVz
Y3JpcHRpb24sIGZpbGVuYW1lPU5vbmUsIGNvbW1lbnRfdGV4dD1Ob25lLCBtaW1ldHlwZT1Ob25l
KToKICAgICAgICAgX2xvZy5pbmZvKCJNT0NLIGFkZF9hdHRhY2htZW50X3RvX2J1ZzogYnVnX2lk
PSVzLCBkZXNjcmlwdGlvbj0lcyBmaWxlbmFtZT0lcyBtaW1ldHlwZT0lcyIgJQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVf
bW9jay5weQkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgZW5jb2RlX2lmX25lY2Vzc2FyeSwg
dW5pY29kZQorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBCeXRlc0lPLCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiBf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC05OSw3ICs5OSwxMSBAQCBjbGFz
cyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9sb2c6CiAg
ICAgICAgICAgICBlbnZfc3RyaW5nID0gIiIKICAgICAgICAgICAgIGlmIGVudjoKLSAgICAgICAg
ICAgICAgICBlbnZfc3RyaW5nID0gIiwgZW52PSVzIiAlIGVudgorICAgICAgICAgICAgICAgIGZv
ciBrZXkgaW4gc29ydGVkKGVudi5rZXlzKCkpOgorICAgICAgICAgICAgICAgICAgICBpZiBsZW4o
ZW52X3N0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfc3RyaW5nICs9ICIsICIK
KyAgICAgICAgICAgICAgICAgICAgZW52X3N0cmluZyArPSAiJ3t9JzogJ3t9JyIuZm9ybWF0KGtl
eSwgZW52W2tleV0pCisgICAgICAgICAgICAgICAgZW52X3N0cmluZyA9ICIsIGVudj17IiArIGVu
dl9zdHJpbmcgKyAifSIKICAgICAgICAgICAgIF9sb2cuaW5mbygiTU9DSyBydW5fYW5kX3Rocm93
X2lmX2ZhaWw6ICVzLCBjd2Q9JXMlcyIgJSAoYXJncywgY3dkLCBlbnZfc3RyaW5nKSkKICAgICAg
ICAgaWYgc2VsZi5fc2hvdWxkX3Rocm93X3doZW5fcnVuLmludGVyc2VjdGlvbihhcmdzKToKICAg
ICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJFeGNlcHRpb24gZm9yICVzIiAlIGFyZ3MsIG91
dHB1dD0iTU9DSyBjb21tYW5kIG91dHB1dCIpCkBAIC0xMjYsMTAgKzEzMCwxNCBAQCBjbGFzcyBN
b2NrRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9sb2c6CiAgICAg
ICAgICAgICBlbnZfc3RyaW5nID0gIiIKICAgICAgICAgICAgIGlmIGVudjoKLSAgICAgICAgICAg
ICAgICBlbnZfc3RyaW5nID0gIiwgZW52PSVzIiAlIGVudgorICAgICAgICAgICAgICAgIGZvciBr
ZXkgaW4gc29ydGVkKGVudi5rZXlzKCkpOgorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oZW52
X3N0cmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfc3RyaW5nICs9ICIsICIKKyAg
ICAgICAgICAgICAgICAgICAgZW52X3N0cmluZyArPSAiJ3t9JzogJ3t9JyIuZm9ybWF0KGtleSwg
ZW52W2tleV0pCisgICAgICAgICAgICAgICAgZW52X3N0cmluZyA9ICIsIGVudj17IiArIGVudl9z
dHJpbmcgKyAifSIKICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIiCiAgICAgICAgICAgICBp
ZiBpbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1dF9zdHJpbmcgPSAiLCBpbnB1dD0lcyIgJSBp
bnB1dAorICAgICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIsIGlucHV0PSVzIiAlIGRlY29k
ZV9mb3IoaW5wdXQsIHN0cikKICAgICAgICAgICAgIF9sb2cuaW5mbygiTU9DSyBydW5fY29tbWFu
ZDogJXMsIGN3ZD0lcyVzJXMiICUgKGFyZ3MsIGN3ZCwgZW52X3N0cmluZywgaW5wdXRfc3RyaW5n
KSkKICAgICAgICAgb3V0cHV0ID0gIk1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MiCiAKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbF91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2xfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2Nr
dG9vbF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBpbXBv
cnQgdW5pdHRlc3QKIAotZnJvbSBtb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKK2Zyb20gd2Vi
a2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAogCiBjbGFzcyBNb2NrT3B0
aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL211bHRpY29tbWFuZHRvb2wucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL211bHRpY29tbWFuZHRvb2wucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tdWx0aWNvbW1hbmR0b29sLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNzksOSArMTc5LDkgQEAgY2xhc3MgSGVscENvbW1hbmQoQ29tbWFuZCk6CiAgICAg
ICAgICAgICByZWxldmFudF9jb21tYW5kcyA9IHNlbGYuX3Rvb2wuY29tbWFuZHNbOl0KICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIGVwaWxvZyA9ICJDb21tb24gJXByb2cgY29tbWFuZHM6XG4i
Ci0gICAgICAgICAgICByZWxldmFudF9jb21tYW5kcyA9IGZpbHRlcihzZWxmLl90b29sLnNob3Vs
ZF9zaG93X2luX21haW5faGVscCwgc2VsZi5fdG9vbC5jb21tYW5kcykKKyAgICAgICAgICAgIHJl
bGV2YW50X2NvbW1hbmRzID0gbGlzdChmaWx0ZXIoc2VsZi5fdG9vbC5zaG91bGRfc2hvd19pbl9t
YWluX2hlbHAsIHNlbGYuX3Rvb2wuY29tbWFuZHMpKQogICAgICAgICBsb25nZXN0X25hbWVfbGVu
Z3RoID0gbWF4KG1hcChsYW1iZGEgY29tbWFuZDogbGVuKGNvbW1hbmQubmFtZSksIHJlbGV2YW50
X2NvbW1hbmRzKSkKLSAgICAgICAgcmVsZXZhbnRfY29tbWFuZHMuc29ydChsYW1iZGEgYSwgYjog
Y21wKGEubmFtZSwgYi5uYW1lKSkKKyAgICAgICAgcmVsZXZhbnRfY29tbWFuZHMgPSBzb3J0ZWQo
cmVsZXZhbnRfY29tbWFuZHMsIGtleT1sYW1iZGEgY29tbWFuZDogY29tbWFuZC5uYW1lKQogICAg
ICAgICBjb21tYW5kX2hlbHBfdGV4dHMgPSBtYXAobGFtYmRhIGNvbW1hbmQ6ICIgICAlcyAgICVz
XG4iICUgKGNvbW1hbmQubmFtZS5sanVzdChsb25nZXN0X25hbWVfbGVuZ3RoKSwgY29tbWFuZC5o
ZWxwX3RleHQpLCByZWxldmFudF9jb21tYW5kcykKICAgICAgICAgZXBpbG9nICs9ICIlc1xuIiAl
ICIiLmpvaW4oY29tbWFuZF9oZWxwX3RleHRzKQogICAgICAgICBlcGlsb2cgKz0gIlNlZSAnJXBy
b2cgaGVscCAtLWFsbC1jb21tYW5kcycgdG8gbGlzdCBhbGwgY29tbWFuZHMuXG4iCkBAIC0yMzIs
NyArMjMyLDcgQEAgY2xhc3MgTXVsdGlDb21tYW5kVG9vbChvYmplY3QpOgogICAgIGRlZiBfZmlu
ZF9hbGxfY29tbWFuZHMoY2xzKToKICAgICAgICAgY29tbWFuZHMgPSBzZXQoKQogICAgICAgICBj
bHMuX2FkZF9hbGxfc3ViY2xhc3NlcyhDb21tYW5kLCBjb21tYW5kcykKLSAgICAgICAgcmV0dXJu
IHNvcnRlZChjb21tYW5kcykKKyAgICAgICAgcmV0dXJuIHNvcnRlZChjb21tYW5kcywga2V5PWxh
bWJkYSB0eXA6IHR5cC5fX25hbWVfXykKIAogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fbmFtZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9j
b21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1
MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNr
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgY2xhc3MgRmFp
bGluZ1Rlc3RDb21taXRRdWV1ZShNb2NrQ29tbWl0UQogICAgICAgICBhc3NlcnQoc2VsZi5fdGVz
dF9ydW5fY291bnRlciA+PSAwKQogICAgICAgICBmYWlsdXJlc19mb3JfcnVuID0gc2VsZi5fdGVz
dF9mYWlsdXJlX3BsYW5bc2VsZi5fdGVzdF9ydW5fY291bnRlcl0KICAgICAgICAgYXNzZXJ0KGlz
aW5zdGFuY2UoZmFpbHVyZXNfZm9yX3J1biwgbGlzdCkpCi0gICAgICAgIHJlc3VsdHMgPSBMYXlv
dXRUZXN0UmVzdWx0cyh0ZXN0X3Jlc3VsdHM9bWFwKHNlbGYuX21vY2tfdGVzdF9yZXN1bHQsIGZh
aWx1cmVzX2Zvcl9ydW4pLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD0obGVuKGZhaWx1
cmVzX2Zvcl9ydW4pID49IDEwKSkKKyAgICAgICAgcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRz
KHRlc3RfcmVzdWx0cz1saXN0KG1hcChzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0LCBmYWlsdXJlc19m
b3JfcnVuKSksIGRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0PShsZW4oZmFpbHVyZXNfZm9y
X3J1bikgPj0gMTApKQogICAgICAgICByZXR1cm4gcmVzdWx0cwogCiAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBjbGFzcyBNb2NrU2ltcGxlVGVzdFBsYW5Db21taXRRdWV1ZShNb2NrCiAKICAgICBkZWYg
dGVzdF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShzZWxmLl9jdXJy
ZW50X3Rlc3RfcmVzdWx0cywgbGlzdCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRUZXN0UmVzdWx0
cyh0ZXN0X3Jlc3VsdHM9bWFwKHNlbGYuX21vY2tfdGVzdF9yZXN1bHQsIHNlbGYuX2N1cnJlbnRf
dGVzdF9yZXN1bHRzKSwgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQ9KGxlbihzZWxmLl9j
dXJyZW50X3Rlc3RfcmVzdWx0cykgPj0gMTApKQorICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJl
c3VsdHModGVzdF9yZXN1bHRzPWxpc3QobWFwKHNlbGYuX21vY2tfdGVzdF9yZXN1bHQsIHNlbGYu
X2N1cnJlbnRfdGVzdF9yZXN1bHRzKSksIGRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0PShs
ZW4oc2VsZi5fY3VycmVudF90ZXN0X3Jlc3VsdHMpID49IDEwKSkKIAogICAgIGRlZiBkaWRfcnVu
X2NsZWFuX3Rlc3RzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGlkX3J1bl9jbGVhbl90
ZXN0cwpAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIEdvbGRlblNjcmlwdEVycm9yKFNjcmlwdEVy
cm9yKToKICAgICBwYXNzCiAKIAotX2xvdHNfb2ZfZmFpbGluZ190ZXN0cyA9IG1hcChsYW1iZGEg
bnVtOiAidGVzdC0lcy5odG1sIiAlIG51bSwgcmFuZ2UoMCwgMTAwKSkKK19sb3RzX29mX2ZhaWxp
bmdfdGVzdHMgPSBsaXN0KG1hcChsYW1iZGEgbnVtOiAidGVzdC0lcy5odG1sIiAlIG51bSwgcmFu
Z2UoMCwgMTAwKSkpCiAKIAogY2xhc3MgQ29tbWl0UXVldWVUYXNrVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZlZWRlcnMucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mZWVkZXJzLnB5
CShyZXZpc2lvbiAyNTMwMjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2Zl
ZWRlcnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ29tbWl0UXVl
dWVGZWVkZXIoQWJzdHJhY3RGZWVkZXIpOgogICAgIGRlZiBmZWVkKHNlbGYpOgogICAgICAgICBw
YXRjaGVzID0gc2VsZi5fdmFsaWRhdGVfcGF0Y2hlcygpCiAgICAgICAgIHBhdGNoZXMgPSBzZWxm
Ll9wYXRjaGVzX3dpdGhfYWNjZXB0YWJsZV9yZXZpZXdfZmxhZyhwYXRjaGVzKQotICAgICAgICBw
YXRjaGVzID0gc29ydGVkKHBhdGNoZXMsIHNlbGYuX3BhdGNoX2NtcCkKKyAgICAgICAgcGF0Y2hl
cyA9IHNvcnRlZChwYXRjaGVzLCBrZXk9bGFtYmRhIHBhdGNoOiBwYXRjaC5hdHRhY2hfZGF0ZSgp
IG9yIDApCiAKICAgICAgICAgaGlnaF9wcmlvcml0eV9pdGVtX2lkcyA9IFtwYXRjaC5pZCgpIGZv
ciBwYXRjaCBpbiBwYXRjaGVzIGlmIHBhdGNoLmlzX3JvbGxvdXQoKV0KICAgICAgICAgaXRlbV9p
ZHMgPSBbcGF0Y2guaWQoKSBmb3IgcGF0Y2ggaW4gcGF0Y2hlcyBpZiBub3QgcGF0Y2guaXNfcm9s
bG91dCgpXQpAQCAtNzUsOSArNzUsNiBAQCBjbGFzcyBDb21taXRRdWV1ZUZlZWRlcihBYnN0cmFj
dEZlZWRlcik6CiAgICAgICAgIGFsbF9wYXRjaGVzID0gc3VtKFtzZWxmLl9wYXRjaGVzX2Zvcl9i
dWcoYnVnX2lkKSBmb3IgYnVnX2lkIGluIGJ1Z19pZHNdLCBbXSkKICAgICAgICAgcmV0dXJuIHNl
bGYuY29tbWl0dGVyX3ZhbGlkYXRvci5wYXRjaGVzX2FmdGVyX3JlamVjdGluZ19pbnZhbGlkX2Nv
bW1pdGVyc19hbmRfcmV2aWV3ZXJzKGFsbF9wYXRjaGVzKQogCi0gICAgZGVmIF9wYXRjaF9jbXAo
c2VsZiwgYSwgYik6Ci0gICAgICAgIHJldHVybiBjbXAoYS5hdHRhY2hfZGF0ZSgpLCBiLmF0dGFj
aF9kYXRlKCkpCi0KIAogY2xhc3MgRVdTRmVlZGVyKEFic3RyYWN0RmVlZGVyKToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgdG9vbCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L2ZsYWt5dGVzdHJlcG9ydGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHkJKHJldmlzaW9uIDI1MzAyMykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgRmxha3lUZXN0UmVwb3J0ZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICMgTWF0Y2ggYW55IGJ1Z3Mg
d2hpY2ggYXJlIGZyb20ga25vd24gYm90cyBvciB0aGUgZW1haWwgdGhpcyBib3QgaXMgdXNpbmcu
CiAgICAgICAgIGFsbG93ZWRfZW1haWxzID0gc2VsZi5fYm90X2VtYWlscyB8IHNldChbc2VsZi5f
YnVnemlsbGFfZW1haWxdKQotICAgICAgICBidWdzID0gZmlsdGVyKGxhbWJkYSBidWc6IGJ1Zy5y
ZXBvcnRlcl9lbWFpbCgpIGluIGFsbG93ZWRfZW1haWxzLCBidWdzKQorICAgICAgICBidWdzID0g
bGlzdChmaWx0ZXIobGFtYmRhIGJ1ZzogYnVnLnJlcG9ydGVyX2VtYWlsKCkgaW4gYWxsb3dlZF9l
bWFpbHMsIGJ1Z3MpKQogICAgICAgICBpZiBub3QgYnVnczoKICAgICAgICAgICAgIHJldHVybiBO
b25lCiAgICAgICAgIGlmIGxlbihidWdzKSA+IDE6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCB1
cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0
dGVyTGlzdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LndlYiBpbXBvcnQgV2ViCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCB1bmljb2RlCiBmcm9t
IHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBUZXJtaW5hdGVRdWV1ZQogZnJv
bSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IGpvaW5fd2l0aF9zZXBhcmF0b3JzCiBmcm9t
IHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCkBAIC0yODIsNyArMjgzLDcg
QEAgY2xhc3MgV2hvaXMoSVJDQ29tbWFuZCk6CiAgICAgICAgICAgICBpZiBub3QgY29udHJpYnV0
b3IuaXJjX25pY2tuYW1lczoKICAgICAgICAgICAgICAgICByZXR1cm4gdW5pY29kZSgiJXM6ICVz
IGhhc24ndCB0b2xkIG1lIHRoZWlyIG5pY2suIEJvbyBob28gOi0oIikgJSAobmljaywgY29udHJp
YnV0b3IpCiAgICAgICAgICAgICByZXR1cm4gdW5pY29kZSgiJXM6ICVzIGlzICVzLiBXaHkgZG8g
eW91IGFzaz8iKSAlIChuaWNrLCBzZWFyY2hfc3RyaW5nLCBzZWxmLl9mdWxsX3JlY29yZF9hbmRf
bmljayhjb250cmlidXRvcikpCi0gICAgICAgIGNvbnRyaWJ1dG9yX25pY2tzID0gbWFwKHNlbGYu
X2Z1bGxfcmVjb3JkX2FuZF9uaWNrLCBjb250cmlidXRvcnMpCisgICAgICAgIGNvbnRyaWJ1dG9y
X25pY2tzID0gbGlzdChtYXAoc2VsZi5fZnVsbF9yZWNvcmRfYW5kX25pY2ssIGNvbnRyaWJ1dG9y
cykpCiAgICAgICAgIGNvbnRyaWJ1dG9yc19zdHJpbmcgPSBqb2luX3dpdGhfc2VwYXJhdG9ycyhj
b250cmlidXRvcl9uaWNrcywgb25seV90d29fc2VwYXJhdG9yPSIgb3IgIiwgbGFzdF9zZXBhcmF0
b3I9Jywgb3IgJykKICAgICAgICAgcmV0dXJuIHVuaWNvZGUoIiVzOiBJJ20gbm90IHN1cmUgd2hv
IHlvdSBtZWFuPyAgJXMgY291bGQgYmUgJyVzJy4iKSAlIChuaWNrLCBjb250cmlidXRvcnNfc3Ry
aW5nLCBzZWFyY2hfc3RyaW5nKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L3JldHJ5bG9naWNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9yZXRyeWxvZ2ljX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTMwMjMp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3JldHJ5bG9naWNfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgSlNDRWFybHlXYXJuaW5n
U3lzdGVtVGVzdCh1bml0dGVzdAogICAgICAgICBxdWV1ZSA9IE1vY2tKU0NFYXJseVdhcm5pbmdT
eXN0ZW0oZmlyc3RfdGVzdF9yZXN1bHRzLCBzZWNvbmRfdGVzdF9yZXN1bHRzLCBjbGVhbl90ZXN0
X3Jlc3VsdHMpCiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpCiAg
ICAgICAgIHBhdGNoID0gdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTAwMDApCi0gICAgICAg
IHBhdGNoZXNfcGFzc2VkX2FsbF90ZXN0cyA9IG1hcChzZWxmLl9yZXN1bHRzX2luZGljYXRlX2Fs
bF9wYXNzZWQsIFtzZWNvbmRfdGVzdF9yZXN1bHRzLCBmaXJzdF90ZXN0X3Jlc3VsdHNdKQorICAg
ICAgICBwYXRjaGVzX3Bhc3NlZF9hbGxfdGVzdHMgPSBsaXN0KG1hcChzZWxmLl9yZXN1bHRzX2lu
ZGljYXRlX2FsbF9wYXNzZWQsIFtzZWNvbmRfdGVzdF9yZXN1bHRzLCBmaXJzdF90ZXN0X3Jlc3Vs
dHNdKSkKICAgICAgICAgcmV0dXJuIE1vY2tQYXRjaEFuYWx5c2lzVGFzayhxdWV1ZSwgcGF0Y2gs
IHBhdGNoZXNfcGFzc2VkX2FsbF90ZXN0cykKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfY2FzZShz
ZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZi5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3NoZXJpZmYucHkJ
KHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hl
cmlmZi5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jb25maWcgaW1wb3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBv
cnQgam9pbl93aXRoX3NlcGFyYXRvcnMKIAorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQor
CiAKIGNsYXNzIFNoZXJpZmYob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwg
c2hlcmlmZmJvdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
YXBwbHl3YXRjaGxpc3Rsb2NhbF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYXBwbHl3YXRjaGxpc3Rsb2NhbF91bml0dGVzdC5w
eQkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2FwcGx5d2F0Y2hsaXN0bG9jYWxfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDEzICs0MywxMyBAQCBNZXNzYWdlMi4iCiAKICAgICBkZWYgdGVzdF9hcmdzX3BhcnNpbmdfd2l0
aF9idWcoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJNb2NrV2F0Y2hMaXN0OiBk
ZXRlcm1pbmVfY2NfYW5kX21lc3NhZ2VzCi1NT0NLIGJ1ZyBjb21tZW50OiBidWdfaWQ9NTAwMDIs
IGNjPXNldChbJ2VyaWNAd2Via2l0Lm9yZycsICdsZXZpbkBjaHJvbWl1bS5vcmcnLCAnYWJhcnRo
QHdlYmtpdC5vcmcnXSksIHNlZV9hbHNvPU5vbmUKK01PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19pZD01
MDAwMiwgY2M9WydhYmFydGhAd2Via2l0Lm9yZycsICdlcmljQHdlYmtpdC5vcmcnLCAnbGV2aW5A
Y2hyb21pdW0ub3JnJ10sIHNlZV9hbHNvPU5vbmUKIC0tLSBCZWdpbiBjb21tZW50IC0tLQogTWVz
c2FnZTEuCiAKIE1lc3NhZ2UyLgogLS0tIEVuZCBjb21tZW50IC0tLVxuCi1SZXN1bHQgb2Ygd2F0
Y2hsaXN0OiBjYyAiZXJpY0B3ZWJraXQub3JnLCBsZXZpbkBjaHJvbWl1bS5vcmcsIGFiYXJ0aEB3
ZWJraXQub3JnIiBtZXNzYWdlcyAiTWVzc2FnZTEuCitSZXN1bHQgb2Ygd2F0Y2hsaXN0OiBjYyAi
YWJhcnRoQHdlYmtpdC5vcmcsIGVyaWNAd2Via2l0Lm9yZywgbGV2aW5AY2hyb21pdW0ub3JnIiBt
ZXNzYWdlcyAiTWVzc2FnZTEuCiAKIE1lc3NhZ2UyLiIKICIiIgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQkocmV2aXNpb24gMjUz
MDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFNl
cXVlbmNpbmdDb21tYW5kKEFicwogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAgc2VsZi5f
cHJlcGFyZV9zZXF1ZW5jZSA9IFN0ZXBTZXF1ZW5jZShzZWxmLnByZXBhcmVfc3RlcHMpCiAgICAg
ICAgIHNlbGYuX21haW5fc2VxdWVuY2UgPSBTdGVwU2VxdWVuY2Uoc2VsZi5tYWluX3N0ZXBzKQot
ICAgICAgICBvcHRpb25zID0gc29ydGVkKHNldChzZWxmLl9wcmVwYXJlX3NlcXVlbmNlLm9wdGlv
bnMoKSArIHNlbGYuX21haW5fc2VxdWVuY2Uub3B0aW9ucygpKSkKKyAgICAgICAgb3B0aW9ucyA9
IHNvcnRlZChzZXQoc2VsZi5fcHJlcGFyZV9zZXF1ZW5jZS5vcHRpb25zKCkgKyBzZWxmLl9tYWlu
X3NlcXVlbmNlLm9wdGlvbnMoKSksIGtleT1sYW1iZGEgb3B0aW9uOiBvcHRpb24uZGVzdCkKICAg
ICAgICAgQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kLl9faW5pdF9fKHNlbGYsIG9wdGlv
bnMpCiAKICAgICBkZWYgX3ByZXBhcmVfdG9fcHJvY2VzcyhzZWxmLCBvcHRpb25zLCBhcmdzLCB0
b29sKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9h
ZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZF91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIE1PQ0sgcnVuX2NvbW1hbmQ6IFsncnVieScs
ICctSScsICcvbW9jay0KIE1PQ0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi4KIFdhcyB0aGF0
IGRpZmYgY29ycmVjdD8KIEJ1aWxkaW5nIFdlYktpdAotTU9DSyBydW5fYW5kX3Rocm93X2lmX2Zh
aWw6IFsnbW9jay1idWlsZC13ZWJraXQnLCAnQVJDSFM9TU9DSyBBUkNIJ10sIGN3ZD0vbW9jay1j
aGVja291dCwgZW52PXsnVEVSTSc6ICdkdW1iJywgJ01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfQor
TU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay1idWlsZC13ZWJraXQnLCAnQVJDSFM9
TU9DSyBBUkNIJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsnTU9DS19FTlZJUk9OX0NPUFkn
OiAnMScsICdURVJNJzogJ2R1bWInfQogUnVubmluZyBQeXRob24gdW5pdCB0ZXN0cwogTU9DSyBy
dW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay10ZXN0LXdlYmtpdHB5J10sIGN3ZD0vbW9jay1j
aGVja291dAogUnVubmluZyBQZXJsIHVuaXQgdGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5w
eQkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEz
IEBAIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBmcm9tIG9wdHBhcnNl
IGltcG9ydCBtYWtlX29wdGlvbgoraW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
b25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAogZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnLnBvcnRzIGltcG9ydCBEZXByZWNhdGVkUG9ydAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9mb3IKIGZyb20gd2Via2l0
cHkudG9vbC5ib3QuZWFybHl3YXJuaW5nc3lzdGVtdGFzayBpbXBvcnQgRWFybHlXYXJuaW5nU3lz
dGVtVGFzaywgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGVnYXRlCiBmcm9tIHdlYmtpdHB5LnRv
b2wuYm90LmJpbmRpbmdzdGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IEJpbmRpbmdzVGVzdFJlc3Vs
dHNSZWFkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIg
aW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCkBAIC0xNzQsOCArMTc2LDEzIEBAIGNsYXNz
IEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWMKICAgICAgICAgICAgIHJldHVybiBO
b25lCiAKICAgICAgICAgY2xhc3NlcyA9IFtdCi0gICAgICAgIGZvciBuYW1lLCBjb25maWcgaW4g
ZXdzZXMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlKG5hbWUu
ZW5jb2RlKCd1dGYtOCcpLnRyYW5zbGF0ZShOb25lLCAnIC0nKSwgKGNscywpLCB7CisgICAgICAg
IGZvciBuYW1lLCBjb25maWcgaW4gZXdzZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHN5cy52
ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IGVuY29k
ZV9mb3IobmFtZSwgc3RyKS50cmFuc2xhdGUoJyAtJykKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgdHJhbnNsYXRlZCA9IGVuY29kZV9mb3IobmFtZSwgc3RyKS50cmFuc2xhdGUo
Tm9uZSwgJyAtJykKKworICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQodHlwZSh0cmFuc2xhdGVk
LCAoY2xzLCksIHsKICAgICAgICAgICAgICAgICAnbmFtZSc6IGNvbmZpZy5nZXQoJ25hbWUnLCBj
b25maWdbJ3BvcnQnXSArICctZXdzJyksCiAgICAgICAgICAgICAgICAgJ3BvcnRfbmFtZSc6IGNv
bmZpZ1sncG9ydCddLAogICAgICAgICAgICAgICAgICdhcmNoaXRlY3R1cmUnOiBjb25maWcuZ2V0
KCdhcmNoaXRlY3R1cmUnLCBOb25lKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9uZXdjb21taXRib3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL25ld2NvbW1pdGJvdC5weQkocmV2aXNpb24gMjUzMDIzKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL25ld2NvbW1pdGJvdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIGNsYXNzIE5ld0NvbW1pdEJvdChBYnN0
cmFjdFF1ZXVlLCBTdGVwU2UKICAgICAgICAgICAgICAgICAgICAgbGlua2lmaWVkX3JldmlzaW9u
LCByZXF1ZXN0ZWRfYnkuZ3JvdXAoJ3JlYXNvbicpKQogICAgICAgICAgICAgbGluZXNbMF0gPSAn
JXMgcm9sbGVkIG91dCAlcyBpbiAlcycgJSAoYXV0aG9yLCByb2xsb3V0Lmdyb3VwKCdyZXZpc2lv
bnMnKSwgbGlua2lmaWVkX3JldmlzaW9uKQogCi0gICAgICAgIHJldHVybiAnICcuam9pbihmaWx0
ZXIobGFtYmRhIGxpbmU6IGxlbihsaW5lKSwgbGluZXMpWzA6NF0pCisgICAgICAgIHJldHVybiAn
ICcuam9pbihsaXN0KGZpbHRlcihsYW1iZGEgbGluZTogbGVuKGxpbmUpLCBsaW5lcykpWzA6NF0p
CiAKICAgICBkZWYgaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3Ioc2VsZiwgZmFpbHVyZV9tYXAsIG1l
c3NhZ2UpOgogICAgICAgICBfbG9nLmVycm9yKG1lc3NhZ2UpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHJldmlzaW9uIDI1MzAyMykK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awogCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgotZnJvbSBTdHJpbmdJTyBpbXBv
cnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnZhbGlk
YXRvciBpbXBvcnQgQ29tbWl0dGVyVmFsaWRhdG9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQb3J0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQu
YnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhLCBBdHRhY2htZW50CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRlc0lPCiBmcm9tIHdlYmtpdHB5LnRv
b2wuYm90LmJvdGluZm8gaW1wb3J0IEJvdEluZm8KIGZyb20gd2Via2l0cHkudG9vbC5ib3QuY29t
bWl0cXVldWV0YXNrIGltcG9ydCBDb21taXRRdWV1ZVRhc2ssIENvbW1pdFF1ZXVlVGFza0RlbGVn
YXRlCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmZlZWRlcnMgaW1wb3J0IENvbW1pdFF1ZXVlRmVl
ZGVyLCBFV1NGZWVkZXIKQEAgLTEzNSw2ICsxMzUsOCBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENv
bW1hbmQsIFF1ZXVlRW5naW5lCiAKICAgICBkZWYgc2hvdWxkX2NvbnRpbnVlX3dvcmtfcXVldWUo
c2VsZik6CiAgICAgICAgIHNlbGYuX2l0ZXJhdGlvbl9jb3VudCArPSAxCisgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgaW50KToKKyAgICAgICAgICAg
IHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fb3B0aW9ucy5pdGVyYXRpb25z
IG9yIHNlbGYuX2l0ZXJhdGlvbl9jb3VudCA8PSBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMKIAog
ICAgIGRlZiBuZXh0X3dvcmtfaXRlbShzZWxmKToKQEAgLTE2Myw3ICsxNjUsNyBAQCBjbGFzcyBB
YnN0cmFjdFF1ZXVlKENvbW1hbmQsIFF1ZXVlRW5naW5lCiAgICAgICAgICMgV2UgcHJlLWVuY29k
ZSB0aGUgc3RyaW5nIHRvIGEgYnl0ZSBhcnJheSBiZWZvcmUgcGFzc2luZyBpdAogICAgICAgICAj
IHRvIHN0YXR1c19zZXJ2ZXIsIGJlY2F1c2UgQ2xpZW50Rm9ybSAocGFydCBvZiBtZWNoYW5pemUp
CiAgICAgICAgICMgd2FudHMgYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggcHJlLWVuY29kZWQgZGF0
YS4KLSAgICAgICAgcmV0dXJuIFN0cmluZ0lPKG91dHB1dC5lbmNvZGUoInV0Zi04IikpCisgICAg
ICAgIHJldHVybiBCeXRlc0lPKG91dHB1dC5lbmNvZGUoInV0Zi04IikpCiAKICAgICBAY2xhc3Nt
ZXRob2QKICAgICBkZWYgX3VwZGF0ZV9zdGF0dXNfZm9yX3NjcmlwdF9lcnJvcihjbHMsIHRvb2ws
IHN0YXRlLCBzY3JpcHRfZXJyb3IsIGlzX2Vycm9yPUZhbHNlKToKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5w
eQkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3F1ZXVlc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcwotaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ2hlY2tvdXROZWVkc1VwZGF0ZQogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NNCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRl
c3RSZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFj
aG1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsMTAgKzEwOCwxMiBAQCBCdWcoQSkgWyBEZWJ1ZyBdIDogZmFzdC9j
c3MvbGFyZ2UtbGlzdC1vCiAgICAgICAgIHNlbGYub3B0aW9ucy5zdWZmaXhlcyA9ICJwbmcsd2F2
LHR4dCIKICAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lX3Rlc3RfYW5kX3VwZGF0ZV9l
eHBlY3RhdGlvbnMoc2VsZi5vcHRpb25zKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVh
bChzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCwKLSAgICAgICAgICAgIFtzZWxmLldFQl9QUkVG
SVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5nJywKLSAgICAgICAgICAg
ICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2
JywKLSAgICAgICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC1hY3R1YWwudHh0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAg
ICAgc29ydGVkKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkKSwgWworICAgICAgICAgICAgICAg
IHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC5wbmcn
LAorICAgICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0LWFjdHVhbC50eHQnLAorICAgICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcv
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAorICAgICAgICAgICAgXSkKICAg
ICAgICAgbmV3X2V4cGVjdGF0aW9ucyA9IHNlbGYuX3JlYWQoc2VsZi5saW9uX2V4cGVjdGF0aW9u
c19wYXRoKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKG5ld19leHBlY3RhdGlv
bnMsICIiIkJ1ZyhCKSBbIE1hYyBMaW51eCBYUCBEZWJ1ZyBdIGZhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtY2xvbmUtcmVhbGx5LWRlZXAtYXJyYXkuaHRtbCBbIFBhc3MgXQogQnVn
KEEpIFsgRGVidWcgXSA6IGZhc3QvY3NzL2xhcmdlLWxpc3Qtb2YtcnVsZXMtY3Jhc2guaHRtbCBb
IEZhaWx1cmUgXQpAQCAtMTI0LDEwICsxMjYsMTIgQEAgQnVnKEEpIFsgRGVidWcgXSA6IGZhc3Qv
Y3NzL2xhcmdlLWxpc3QtbwogICAgICAgICBzZWxmLm9wdGlvbnMuc3VmZml4ZXMgPSAncG5nLHdh
dix0eHQnCiAgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZV90ZXN0X2FuZF91cGRhdGVf
ZXhwZWN0YXRpb25zKHNlbGYub3B0aW9ucykKIAotICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1
YWwoc2VsZi50b29sLndlYi51cmxzX2ZldGNoZWQsCi0gICAgICAgICAgICBbc2VsZi5XRUJfUFJF
RklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnBuZycsCi0gICAgICAgICAg
ICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndh
dicsCi0gICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVy
LXRlc3QtYWN0dWFsLnR4dCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAg
ICAgIHNvcnRlZChzZWxmLnRvb2wud2ViLnVybHNfZmV0Y2hlZCksIFsKKyAgICAgICAgICAgICAg
ICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwucG5n
JywKKyAgICAgICAgICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1hY3R1YWwudHh0JywKKyAgICAgICAgICAgICAgICBzZWxmLldFQl9QUkVGSVggKyAn
L3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwud2F2JywKKyAgICAgICAgICAgIF0pCiAg
ICAgICAgIG5ld19leHBlY3RhdGlvbnMgPSBzZWxmLl9yZWFkKHNlbGYubGlvbl9leHBlY3RhdGlv
bnNfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChuZXdfZXhwZWN0YXRp
b25zLCAiQnVnKHgpIFsgTWFjIF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF1cbmJ1Zyh6KSBbIExpbnV4IF0gdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbiIpCiAKQEAgLTEzOCwyMyArMTQyLDI1IEBAIEJ1
ZyhBKSBbIERlYnVnIF0gOiBmYXN0L2Nzcy9sYXJnZS1saXN0LW8KICAgICAgICAgc2VsZi5vcHRp
b25zLnN1ZmZpeGVzID0gJ3BuZyx3YXYsdHh0JwogICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFz
ZWxpbmVfdGVzdF9hbmRfdXBkYXRlX2V4cGVjdGF0aW9ucyhzZWxmLm9wdGlvbnMpCiAKLSAgICAg
ICAgc2VsZi5hc3NlcnRJdGVtc0VxdWFsKHNlbGYudG9vbC53ZWIudXJsc19mZXRjaGVkLAotICAg
ICAgICAgICAgW3NlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFj
dHVhbC5wbmcnLAotICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0LWFjdHVhbC53YXYnLAotICAgICAgICAgICAgIHNlbGYuV0VCX1BSRUZJWCAr
ICcvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoCisgICAgICAgICAgICBzb3J0ZWQoc2VsZi50b29sLndlYi51cmxzX2ZldGNo
ZWQpLCBbCisgICAgICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9h
bm90aGVyLXRlc3QtYWN0dWFsLnBuZycsCisgICAgICAgICAgICAgICAgc2VsZi5XRUJfUFJFRklY
ICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLnR4dCcsCisgICAgICAgICAgICAg
ICAgc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFsLndh
dicsCisgICAgICAgICAgICBdKQogCiAgICAgICAgIG5ld19leHBlY3RhdGlvbnMgPSBzZWxmLl9y
ZWFkKHNlbGYubGlvbl9leHBlY3RhdGlvbnNfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0
aUxpbmVFcXVhbChuZXdfZXhwZWN0YXRpb25zLCAiQnVnKHgpIFsgTWFjIF0gdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbkJ1Zyh6KSBbIExpbnV4IF0g
dXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbiIpCiAK
ICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3Rlc3Qoc2VsZik6CiAgICAgICAgIHNlbGYuY29tbWFu
ZC5fcmViYXNlbGluZV90ZXN0KCJBcHBsZSBMaW9uIFJlbGVhc2UgV0sxIChUZXN0cykiLCAidXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBOb25lLCAidHh0Iiwgc2VsZi5XRUJfUFJFRklY
KQotICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoc2VsZi50b29sLndlYi51cmxzX2ZldGNo
ZWQsIFtzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC1hY3R1YWwu
dHh0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYudG9vbC53ZWIudXJsc19mZXRj
aGVkLCBbc2VsZi5XRUJfUFJFRklYICsgJy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtYWN0dWFs
LnR4dCddKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV90ZXN0X3dpdGhfcmVzdWx0c19kaXJl
Y3Rvcnkoc2VsZik6CiAgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYubGlvbl9leHBlY3RhdGlvbnNf
cGF0aCwgIkJ1Zyh4KSBbIE1hYyBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdXG5idWcoeikgWyBMaW51eCBdIHVzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdXG4iKQogICAgICAgICBzZWxmLm9wdGlvbnMucmVz
dWx0c19kaXJlY3RvcnkgPSAnL3RtcCcKICAgICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5l
X3Rlc3RfYW5kX3VwZGF0ZV9leHBlY3RhdGlvbnMoc2VsZi5vcHRpb25zKQotICAgICAgICBzZWxm
LmFzc2VydEl0ZW1zRXF1YWwoc2VsZi50b29sLndlYi51cmxzX2ZldGNoZWQsIFsnZmlsZTovLy90
bXAvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoc2VsZi50b29sLndlYi51cmxzX2ZldGNoZWQsIFsnZmlsZTovLy90bXAvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWFjdHVhbC50eHQnXSkKIAogICAgIGRlZiB0ZXN0X3JlYmFz
ZWxpbmVfdGVzdF9hbmRfcHJpbnRfc2NtX2NoYW5nZXMoc2VsZik6CiAgICAgICAgIHNlbGYuY29t
bWFuZC5fcHJpbnRfc2NtX2NoYW5nZXMgPSBUcnVlCkBAIC0xODQsNyArMTkwLDcgQEAgQnVnKEEp
IFsgRGVidWcgXSA6IGZhc3QvY3NzL2xhcmdlLWxpc3QtbwogCiAgICAgICAgIHNlbGYuY29tbWFu
ZC5fcmViYXNlbGluZV90ZXN0KCJBcHBsZSBMaW9uIFJlbGVhc2UgV0sxIChUZXN0cykiLCAidXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBbIm1hYy1saW9uLXdrMiJdLCAidHh0Iiwgc2Vs
Zi5XRUJfUFJFRklYKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChzZWxmLnRvb2wu
d2ViLnVybHNfZmV0Y2hlZCwgW3NlbGYuV0VCX1BSRUZJWCArICcvdXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0LWFjdHVhbC50eHQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29s
LndlYi51cmxzX2ZldGNoZWQsIFtzZWxmLldFQl9QUkVGSVggKyAnL3VzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1hY3R1YWwudHh0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwo
c2VsZi5fcmVhZCgicGxhdGZvcm0vbWFjLWxpb24td2syL3VzZXJzY3JpcHRzL2Fub3RoZXItdGVz
dC1leHBlY3RlZC50eHQiKSwgIm9yaWdpbmFsIGxpb24gcmVzdWx0IikKICAgICAgICAgc2VsZi5h
c3NlcnRNdWx0aUxpbmVFcXVhbChzZWxmLl9yZWFkKCJwbGF0Zm9ybS9tYWMtbGlvbi13azEvdXNl
cnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnR4dCIpLCBzZWxmLk1PQ0tfV0VCX1JFU1VM
VCkKIApAQCAtMjk1LDcgKzMwMSw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lKF9CYXNlVGVzdENh
c2UpOgogICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogICAgICAgICAgICAgYnVpbGRl
cnMuX2V4YWN0X21hdGNoZXMgPSBvbGRfZXhhY3RfbWF0Y2hlcwogCi0gICAgICAgIGNhbGxzID0g
ZmlsdGVyKGxhbWJkYSB4OiB4WzBdIG5vdCBpbiBbJ3BlcmwnLCAnL3Vzci9iaW4veGNydW4nLCAn
L3Vzci9iaW4vdWxpbWl0J10sIHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMpCisgICAgICAgIGNh
bGxzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6IHhbMF0gbm90IGluIFsncGVybCcsICcvdXNyL2Jp
bi94Y3J1bicsICcvdXNyL2Jpbi91bGltaXQnXSwgc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscykp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbHMsCiAgICAgICAgICAgICBbW1snZWNobycs
ICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJy0t
YnVpbGRlcicsICdNT0NLIGJ1aWxkZXInLCAnLS10ZXN0JywgJ21vY2svcGF0aC90by90ZXN0Lmh0
bWwnLCAnLS12ZXJib3NlJ11dXSkKIApAQCAtMzE3LDcgKzMyMyw3IEBAIGNsYXNzIFRlc3RSZWJh
c2VsaW5lRXhwZWN0YXRpb25zKF9CYXNlVGUKICAgICAgICAgc2VsZi5jb21tYW5kLmV4ZWN1dGUo
c2VsZi5vcHRpb25zLCBbXSwgc2VsZi50b29sKQogCiAgICAgICAgICMgRklYTUU6IGNoYW5nZSB0
aGlzIHRvIHVzZSB0aGUgdGVzdC0gcG9ydHMuCi0gICAgICAgIGNhbGxzID0gZmlsdGVyKGxhbWJk
YSB4OiB4WzBdIG5vdCBpbiBbJ3BlcmwnLCAnL3Vzci9iaW4veGNydW4nLCAnL3Vzci9iaW4vdWxp
bWl0J10sIHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMpCisgICAgICAgIGNhbGxzID0gbGlzdChm
aWx0ZXIobGFtYmRhIHg6IHhbMF0gbm90IGluIFsncGVybCcsICcvdXNyL2Jpbi94Y3J1bicsICcv
dXNyL2Jpbi91bGltaXQnXSwgc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscykpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oY2FsbHNbMF0pLCAyMikKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3N0ZXBzZXF1ZW5jZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvc3RlcHNlcXVlbmNlLnB5CShyZXZpc2lvbiAyNTMwMjMpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3RlcHNlcXVlbmNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFN0ZXBTZXF1ZW5jZShvYmplY3QpOgog
ICAgICAgICBmb3Igc3RlcCBpbiBzZWxmLl9zdGVwczoKICAgICAgICAgICAgIGNvbGxlY3RlZF9v
cHRpb25zID0gY29sbGVjdGVkX29wdGlvbnMgKyBzdGVwLm9wdGlvbnMoKQogICAgICAgICAjIFJl
bW92ZSBkdXBsaWNhdGVzLgotICAgICAgICBjb2xsZWN0ZWRfb3B0aW9ucyA9IHNvcnRlZChzZXQo
Y29sbGVjdGVkX29wdGlvbnMpKQorICAgICAgICBjb2xsZWN0ZWRfb3B0aW9ucyA9IHNvcnRlZChz
ZXQoY29sbGVjdGVkX29wdGlvbnMpLCBrZXk9bGFtYmRhIG9wdGlvbjogb3B0aW9uLmRlc3QpCiAg
ICAgICAgIHJldHVybiBjb2xsZWN0ZWRfb3B0aW9ucwogCiAgICAgZGVmIF9ydW4oc2VsZiwgdG9v
bCwgb3B0aW9ucywgc3RhdGUpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5CShyZXZpc2lvbiAy
NTMwMjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5v
bWluYXRpb25zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIEFic3Ry
YWN0Q29tbWl0TG9nQ29tbWFuZChDb21tYW5kKToKICAgICAgICAgb3B0aW9ucyArPSBbCiAgICAg
ICAgICAgICBtYWtlX29wdGlvbigiLS1tYXgtY29tbWl0LWFnZSIsIGFjdGlvbj0ic3RvcmUiLCBk
ZXN0PSJtYXhfY29tbWl0X2FnZSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9OSwgaGVscD0iU3BlY2lm
eSBtYXhpbXVtIGNvbW1pdCBhZ2UgdG8gY29uc2lkZXIgKGluIG1vbnRocykuIiksCiAgICAgICAg
IF0KLSAgICAgICAgb3B0aW9ucyA9IHNvcnRlZChvcHRpb25zLCBjbXA9bGFtYmRhIGEsIGI6IGNt
cChhLl9sb25nX29wdHMsIGIuX2xvbmdfb3B0cykpCisgICAgICAgIG9wdGlvbnMgPSBzb3J0ZWQo
b3B0aW9ucywga2V5PWxhbWJkYSBvcHRpb246IG9wdGlvbi5kZXN0KQogICAgICAgICBzdXBlcihB
YnN0cmFjdENvbW1pdExvZ0NvbW1hbmQsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9b3B0aW9ucykK
ICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgb24gdGhlIHRvb2wgc29t
ZXdoZXJlLgogICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQpA
QCAtMjQzLDE2ICsyNDMsMTEgQEAgY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKEFic3RyYWN0Q29t
bWl0TAogICAgICAgICByZXR1cm4gbm9taW5hdGlvbnMKIAogICAgIGRlZiBfcHJpbnRfbm9taW5h
dGlvbnMoc2VsZiwgbm9taW5hdGlvbnMsIGNvdW50ZXJzX2J5X2VtYWlsKToKLSAgICAgICAgZGVm
IG5vbWluYXRpb25fY21wKGFfbm9taW5hdGlvbiwgYl9ub21pbmF0aW9uKToKLSAgICAgICAgICAg
IHJvbGVzX3Jlc3VsdCA9IGNtcChhX25vbWluYXRpb25bJ3JvbGVzJ10sIGJfbm9taW5hdGlvblsn
cm9sZXMnXSkKLSAgICAgICAgICAgIGlmIHJvbGVzX3Jlc3VsdDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gLXJvbGVzX3Jlc3VsdAotICAgICAgICAgICAgY291bnRfcmVzdWx0ID0gY21wKGFfbm9t
aW5hdGlvblsncGF0Y2hfY291bnQnXSwgYl9ub21pbmF0aW9uWydwYXRjaF9jb3VudCddKQotICAg
ICAgICAgICAgaWYgY291bnRfcmVzdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiAtY291bnRf
cmVzdWx0Ci0gICAgICAgICAgICByZXR1cm4gY21wKGFfbm9taW5hdGlvblsnYXV0aG9yX25hbWUn
XSwgYl9ub21pbmF0aW9uWydhdXRob3JfbmFtZSddKQorICAgICAgICBub21pbmF0aW9ucyA9IHNv
cnRlZChub21pbmF0aW9ucywga2V5PWxhbWJkYSBhOiBhWydyb2xlcyddKQorICAgICAgICBub21p
bmF0aW9ucyA9IHNvcnRlZChub21pbmF0aW9ucywga2V5PWxhbWJkYSBhOiBhWydwYXRjaF9jb3Vu
dCddKQorICAgICAgICBub21pbmF0aW9ucyA9IHNvcnRlZChub21pbmF0aW9ucywga2V5PWxhbWJk
YSBhOiBhWydhdXRob3JfbmFtZSddKQogCi0gICAgICAgIGZvciBub21pbmF0aW9uIGluIHNvcnRl
ZChub21pbmF0aW9ucywgbm9taW5hdGlvbl9jbXApOgorICAgICAgICBmb3Igbm9taW5hdGlvbiBp
biBub21pbmF0aW9uczoKICAgICAgICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQgb2YgYSBo
YWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBub21pbmF0aW9uIGRpY3Rp
b25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVyYXRvci4KICAgICAgICAgICAgIG5vbWluYXRpb25b
J3JvbGVzX3N0cmluZyddID0gZ3JhbW1hci5qb2luX3dpdGhfc2VwYXJhdG9ycyhub21pbmF0aW9u
Wydyb2xlcyddKS51cHBlcigpCiAgICAgICAgICAgICBwcmludCgiJShyb2xlc19zdHJpbmcpczog
JShhdXRob3JfbmFtZSlzICglKGF1dGhvcl9lbWFpbClzKSBoYXMgJShwYXRjaF9jb3VudClzIHJl
dmlld2VkIHBhdGNoZXMiICUgbm9taW5hdGlvbikKQEAgLTI2MiwxOCArMjU3LDEwIEBAIGNsYXNz
IFN1Z2dlc3ROb21pbmF0aW9ucyhBYnN0cmFjdENvbW1pdEwKICAgICAgICAgICAgICAgICBwcmlu
dChjb3VudGVyWydjb21taXRzJ10pCiAKICAgICBkZWYgX3ByaW50X2NvdW50cyhzZWxmLCBjb3Vu
dGVyc19ieV9lbWFpbCk6Ci0gICAgICAgIGRlZiBjb3VudGVyX2NtcChhX3R1cGxlLCBiX3R1cGxl
KToKLSAgICAgICAgICAgICMgc3BsaXQgdGhlIHR1cGxlcwotICAgICAgICAgICAgIyB0aGUgc2Vj
b25kIGVsZW1lbnQgaXMgdGhlICJjb3VudGVyIiBzdHJ1Y3R1cmUKLSAgICAgICAgICAgIF8sIGFf
Y291bnRlciA9IGFfdHVwbGUKLSAgICAgICAgICAgIF8sIGJfY291bnRlciA9IGJfdHVwbGUKLQot
ICAgICAgICAgICAgY291bnRfcmVzdWx0ID0gY21wKGFfY291bnRlclsnY291bnQnXSwgYl9jb3Vu
dGVyWydjb3VudCddKQotICAgICAgICAgICAgaWYgY291bnRfcmVzdWx0OgotICAgICAgICAgICAg
ICAgIHJldHVybiAtY291bnRfcmVzdWx0Ci0gICAgICAgICAgICByZXR1cm4gY21wKGFfY291bnRl
clsnbGF0ZXN0X25hbWUnXS5sb3dlcigpLCBiX2NvdW50ZXJbJ2xhdGVzdF9uYW1lJ10ubG93ZXIo
KSkKKyAgICAgICAgY291bnRlcnMgPSBzb3J0ZWQoY291bnRlcnNfYnlfZW1haWwuaXRlbXMoKSwg
a2V5PWxhbWJkYSBjb3VudGVyOiBjb3VudGVyWzFdWydjb3VudCddKQorICAgICAgICBjb3VudGVy
cyA9IHNvcnRlZChjb3VudGVycywga2V5PWxhbWJkYSBjb3VudGVyOiBjb3VudGVyWzFdWydsYXRl
c3RfbmFtZSddKQogCi0gICAgICAgIGZvciBhdXRob3JfZW1haWwsIGNvdW50ZXIgaW4gc29ydGVk
KGNvdW50ZXJzX2J5X2VtYWlsLml0ZW1zKCksIGNvdW50ZXJfY21wKToKKyAgICAgICAgZm9yIGF1
dGhvcl9lbWFpbCwgY291bnRlciBpbiBjb3VudGVyczoKICAgICAgICAgICAgIGlmIGF1dGhvcl9l
bWFpbCAhPSBjb3VudGVyWydsYXRlc3RfZW1haWwnXToKICAgICAgICAgICAgICAgICBjb250aW51
ZQogICAgICAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmli
dXRvcl9ieV9lbWFpbChhdXRob3JfZW1haWwpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5CShyZXZpc2lvbiAy
NTMwMjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdz
ZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsyMywyMCBAQAogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgQmFzZUhU
VFBTZXJ2ZXIKLWltcG9ydCBTb2NrZXRTZXJ2ZXIKKwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBq
c29uCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIKIAoraWYgc3lzLnZlcnNp
b25faW5mbyA+ICgzLCAwKToKKyAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBIVFRQU2VydmVy
CisgICAgZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ01peEluCitlbHNlOgorICAg
IGZyb20gQmFzZUhUVFBTZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2ZXIKKyAgICBmcm9tIFNvY2tldFNl
cnZlciBpbXBvcnQgVGhyZWFkaW5nTWl4SW4KKwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LnRvb2wuc2VydmVycy5yZWZsZWN0aW9u
aGFuZGxlciBpbXBvcnQgUmVmbGVjdGlvbkhhbmRsZXIKIGZyb20gd2Via2l0cHkucG9ydCBpbXBv
cnQgYnVpbGRlcnMKQEAgLTM5LDcgKzQ1LDcgQEAgZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBi
dWlsZGVycwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKLWNsYXNzIEdh
cmRlbmluZ0hUVFBTZXJ2ZXIoU29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNl
cnZlci5IVFRQU2VydmVyKToKK2NsYXNzIEdhcmRlbmluZ0hUVFBTZXJ2ZXIoVGhyZWFkaW5nTWl4
SW4sIEhUVFBTZXJ2ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBodHRwZF9wb3J0LCBjb25m
aWcpOgogICAgICAgICBzZXJ2ZXJfbmFtZSA9ICcnCiAgICAgICAgIHNlbGYudG9vbCA9IGNvbmZp
Z1sndG9vbCddCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJh
c2VsaW5lc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXIucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDEyICsyOSwxNyBAQAogaW1wb3J0IGZubWF0Y2gKIGltcG9ydCBvcwog
aW1wb3J0IG9zLnBhdGgKLWltcG9ydCBCYXNlSFRUUFNlcnZlcgoraW1wb3J0IHN5cwogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJv
bSB3ZWJraXRweS5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2
ZXJzLnJlZmxlY3Rpb25oYW5kbGVyIGltcG9ydCBSZWZsZWN0aW9uSGFuZGxlcgogCitpZiBzeXMu
dmVyc2lvbl9pbmZvID4gKDMsIDApOgorICAgIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEhUVFBT
ZXJ2ZXIKK2Vsc2U6CisgICAgZnJvbSBCYXNlSFRUUFNlcnZlciBpbXBvcnQgSFRUUFNlcnZlcgor
CiAKIFNUQVRFX05FRURTX1JFQkFTRUxJTkUgPSAnbmVlZHNfcmViYXNlbGluZScKIFNUQVRFX1JF
QkFTRUxJTkVfRkFJTEVEID0gJ3JlYmFzZWxpbmVfZmFpbGVkJwpAQCAtMTY5LDcgKzE3NCw3IEBA
IGRlZiBnZXRfdGVzdF9iYXNlbGluZXModGVzdF9maWxlLCB0ZXN0X2MKICAgICAgICAgICAgIHNl
bGYuX3BsYXRmb3Jtc19ieV9kaXJlY3RvcnkgPSBkaWN0KFsoc2VsZi5fd2Via2l0X2Jhc2VsaW5l
X3BhdGgocCksIHApIGZvciBwIGluIHRlc3RfY29uZmlnLnBsYXRmb3Jtc10pCiAKICAgICAgICAg
ZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wbGF0Zm9ybXNfYnlfZGlyZWN0b3J5LmtleXMoKQorICAgICAgICAgICAgcmV0
dXJuIGxpc3Qoc2VsZi5fcGxhdGZvcm1zX2J5X2RpcmVjdG9yeS5rZXlzKCkpCiAKICAgICAgICAg
ZGVmIHBsYXRmb3JtX2Zyb21fZGlyZWN0b3J5KHNlbGYsIGRpcmVjdG9yeSk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcGxhdGZvcm1zX2J5X2RpcmVjdG9yeVtkaXJlY3RvcnldCkBAIC0xOTgs
MTAgKzIwMywxMCBAQCBkZWYgZ2V0X3Rlc3RfYmFzZWxpbmVzKHRlc3RfZmlsZSwgdGVzdF9jCiAg
ICAgcmV0dXJuIGFsbF90ZXN0X2Jhc2VsaW5lcwogCiAKLWNsYXNzIFJlYmFzZWxpbmVIVFRQU2Vy
dmVyKEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgorY2xhc3MgUmViYXNlbGluZUhUVFBTZXJ2
ZXIoSFRUUFNlcnZlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGh0dHBkX3BvcnQsIGNvbmZp
Zyk6CiAgICAgICAgIHNlcnZlcl9uYW1lID0gIiIKLSAgICAgICAgQmFzZUhUVFBTZXJ2ZXIuSFRU
UFNlcnZlci5fX2luaXRfXyhzZWxmLCAoc2VydmVyX25hbWUsIGh0dHBkX3BvcnQpLCBSZWJhc2Vs
aW5lSFRUUFJlcXVlc3RIYW5kbGVyKQorICAgICAgICBIVFRQU2VydmVyLl9faW5pdF9fKHNlbGYs
IChzZXJ2ZXJfbmFtZSwgaHR0cGRfcG9ydCksIFJlYmFzZWxpbmVIVFRQUmVxdWVzdEhhbmRsZXIp
CiAgICAgICAgIHNlbGYudGVzdF9jb25maWcgPSBjb25maWdbJ3Rlc3RfY29uZmlnJ10KICAgICAg
ICAgc2VsZi5yZXN1bHRzX2pzb24gPSBjb25maWdbJ3Jlc3VsdHNfanNvbiddCiAgICAgICAgIHNl
bGYucGxhdGZvcm1zX2pzb24gPSBjb25maWdbJ3BsYXRmb3Jtc19qc29uJ10KSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmVi
YXNlbGluZXNlcnZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEdldEFjdHVhbFJlc3VsdEZp
bGVzVGVzdCh1bml0dGVzdC4KICAgICAgICAgICAgICdmYXN0L3RleHQyLWFjdHVhbC50eHQnLAog
ICAgICAgICAgICAgJ2Zhc3QvdGV4dC1ub3RhY3R1YWwudHh0JywKICAgICAgICAgKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRJdGVtc0VxdWFsKAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAg
ICAgICAgICAgKCd0ZXh0LWFjdHVhbC50eHQnLCksCiAgICAgICAgICAgICByZWJhc2VsaW5lc2Vy
dmVyLl9nZXRfYWN0dWFsX3Jlc3VsdF9maWxlcygKICAgICAgICAgICAgICAgICAnZmFzdC90ZXh0
Lmh0bWwnLCB0ZXN0X2NvbmZpZykpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c2VydmVycy9yZWZsZWN0aW9uaGFuZGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWZsZWN0aW9uaGFuZGxlci5weQkocmV2aXNpb24gMjUz
MDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmVmbGVjdGlvbmhh
bmRsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBCYXNlSFRUUFNlcnZlcgotCiBpbXBvcnQgY2dpCiBp
bXBvcnQgY29kZWNzCiBpbXBvcnQgZGF0ZXRpbWUKQEAgLTM2LDE0ICszNCwxOSBAQCBpbXBvcnQg
anNvbgogaW1wb3J0IG1pbWV0eXBlcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKK2lt
cG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCi1pbXBvcnQgdXJscGFyc2UK
IGltcG9ydCB3c2dpcmVmLmhhbmRsZXJzCi1pbXBvcnQgQmFzZUhUVFBTZXJ2ZXIKKworaWYgc3lz
LnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNl
SFRUUFJlcXVlc3RIYW5kbGVyCisKK2Vsc2U6CisgICAgZnJvbSBCYXNlSFRUUFNlcnZlciBpbXBv
cnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcgogCiAKLWNsYXNzIFJlZmxlY3Rpb25IYW5kbGVyKEJh
c2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorY2xhc3MgUmVmbGVjdGlvbkhh
bmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgU1RBVElDX0ZJTEVfRVhURU5TSU9O
UyA9IFsnLmpzJywgJy5jc3MnLCAnLmh0bWwnXQogICAgICMgU3ViY2xhc3NlcyBzaG91bGQgb3Zl
cnJpZGUuCiAgICAgU1RBVElDX0ZJTEVfRElSRUNUT1JZID0gTm9uZQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5d2F0Y2hsaXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXdhdGNobGlzdC5weQkocmV2
aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5
d2F0Y2hsaXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NSw0ICs2NSw0IEBAIGNsYXNzIEFwcGx5
V2F0Y2hMaXN0KEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5idWdz
LnBvc3RfY29tbWVudF90b19idWcoYnVnX2lkLCBjb21tZW50X3RleHQsIGNjX2VtYWlscykKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gYnVnIHdhcyB1cGRhdGVkIGJl
Y2F1c2Ugbm8gaWQgd2FzIGdpdmVuLicpCi0gICAgICAgIF9sb2cuaW5mbygnUmVzdWx0IG9mIHdh
dGNobGlzdDogY2MgInt9IiBtZXNzYWdlcyAie30iJy5mb3JtYXQoJywgJy5qb2luKGNjX2VtYWls
cyksIGNvbW1lbnRfdGV4dCkpCisgICAgICAgIF9sb2cuaW5mbygnUmVzdWx0IG9mIHdhdGNobGlz
dDogY2MgInt9IiBtZXNzYWdlcyAie30iJy5mb3JtYXQoJywgJy5qb2luKHNvcnRlZChjY19lbWFp
bHMpKSwgY29tbWVudF90ZXh0KSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hcHBseXdhdGNobGlzdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHl3YXRjaGxpc3RfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI1MzAyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXdh
dGNobGlzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFz
cyBBcHBseVdhdGNoTGlzdFRlc3QodW5pdHRlc3QuVGVzdENhCiAgICAgICAgICAgICAnZGlmZic6
ICdUaGUgZGlmZicsCiAgICAgICAgIH0KICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIk1vY2tX
YXRjaExpc3Q6IGRldGVybWluZV9jY19hbmRfbWVzc2FnZXMKLU1PQ0sgYnVnIGNvbW1lbnQ6IGJ1
Z19pZD01MDAwMSwgY2M9c2V0KFsnbGV2aW5AY2hyb21pdW0ub3JnJ10pLCBzZWVfYWxzbz1Ob25l
CitNT0NLIGJ1ZyBjb21tZW50OiBidWdfaWQ9NTAwMDEsIGNjPVsnbGV2aW5AY2hyb21pdW0ub3Jn
J10sIHNlZV9hbHNvPU5vbmUKIC0tLSBCZWdpbiBjb21tZW50IC0tLQogTWVzc2FnZTIuCiAtLS0g
RW5kIGNvbW1lbnQgLS0tCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
Y29uZmlybWRpZmYucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NvbmZpcm1kaWZmLnB5CShyZXZpc2lvbiAyNTMwMjMpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29uZmlybWRpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCB1cmxs
aWIKK2ltcG9ydCBzeXMKIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBp
bXBvcnQgQWJzdHJhY3RTdGVwCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBv
cnQgT3B0aW9ucwpAQCAtMzQsNiArMzQsMTAgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ucHJldHR5
cGF0Y2ggaW1wb3J0IAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1dGls
cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKIAoraWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBmcm9tIHVybGxpYi5yZXF1
ZXN0IGltcG9ydCBwYXRobmFtZTJ1cmwKK2Vsc2U6CisgICAgZnJvbSB1cmxsaWIgaW1wb3J0IHBh
dGhuYW1lMnVybAogCiBfbG9nID0gbG9ndXRpbHMuZ2V0X2xvZ2dlcihfX2ZpbGVfXykKIApAQCAt
NTMsNyArNTcsNyBAQCBjbGFzcyBDb25maXJtRGlmZihBYnN0cmFjdFN0ZXApOgogICAgICAgICAg
ICAgcHJldHR5X3BhdGNoID0gUHJldHR5UGF0Y2goc2VsZi5fdG9vbC5leGVjdXRpdmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmNoZWNr
b3V0X3Jvb3QpCiAgICAgICAgICAgICBwcmV0dHlfZGlmZl9maWxlID0gcHJldHR5X3BhdGNoLnBy
ZXR0eV9kaWZmX2ZpbGUoZGlmZikKLSAgICAgICAgICAgIHVybCA9ICJmaWxlOi8vJXMiICUgdXJs
bGliLnBhdGhuYW1lMnVybChwcmV0dHlfZGlmZl9maWxlLm5hbWUpCisgICAgICAgICAgICB1cmwg
PSAiZmlsZTovLyVzIiAlIHBhdGhuYW1lMnVybChwcmV0dHlfZGlmZl9maWxlLm5hbWUpCiAgICAg
ICAgICAgICBzZWxmLl90b29sLnVzZXIub3Blbl91cmwodXJsKQogICAgICAgICAgICAgIyBXZSBy
ZXR1cm4gdGhlIHByZXR0eV9kaWZmX2ZpbGUgaGVyZSBiZWNhdXNlIHdlIG5lZWQgdG8ga2VlcCB0
aGUKICAgICAgICAgICAgICMgZmlsZSBhbGl2ZSB1bnRpbCB0aGUgdXNlciBoYXMgaGFkIGEgY2hh
bmNlIHRvIGNvbmZpcm0gdGhlIGRpZmYuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvaGFzbGFuZGVkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBj
U3RyaW5nSU8gYXMgU3RyaW5nSU8KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQg
cmUKQEAgLTM1LDYgKzM0LDcgQEAgaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGltcG9ydCBkaWZmX3BhcnNlcgorZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMgaW1wb3J0IGNvbmZpcm1kaWZmCiAKQEAgLTQ1LDcgKzQ1LDcgQEAg
Y2xhc3MgSGFzTGFuZGVkKGNvbmZpcm1kaWZmLkNvbmZpcm1EaWZmKQogCiAgICAgQGNsYXNzbWV0
aG9kCiAgICAgZGVmIGNvbnZlcnRfdG9fc3ZuKGNscywgZGlmZik6Ci0gICAgICAgIGxpbmVzID0g
U3RyaW5nSU8uU3RyaW5nSU8oZGlmZikucmVhZGxpbmVzKCkKKyAgICAgICAgbGluZXMgPSBTdHJp
bmdJTyhkaWZmKS5yZWFkbGluZXMoKQogICAgICAgICBjb252ZXJ0ID0gZGlmZl9wYXJzZXIuZ2V0
X2RpZmZfY29udmVydGVyKGxpbmVzKQogICAgICAgICByZXR1cm4gIiIuam9pbihjb252ZXJ0KHgp
IGZvciB4IGluIGxpbmVzKQogCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIEhhc0xhbmRlZChjb25m
aXJtZGlmZi5Db25maXJtRGlmZikKICAgICBkZWYgc3RyaXBfY2hhbmdlX2xvZyhjbHMsIGRpZmYp
OgogICAgICAgICBvdXRwdXQgPSBbXQogICAgICAgICBza2lwcGluZyA9IEZhbHNlCi0gICAgICAg
IGZvciBsaW5lIGluIFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpLnJlYWRsaW5lcygpOgorICAgICAg
ICBmb3IgbGluZSBpbiBTdHJpbmdJTyhkaWZmKS5yZWFkbGluZXMoKToKICAgICAgICAgICAgIGlu
ZGV4bGluZSA9IHJlLm1hdGNoKCJeSW5kZXg6IChbXlxcbl0qLyk/KFteL1xcbl0qKSQiLCBsaW5l
KQogICAgICAgICAgICAgaWYgc2tpcHBpbmcgYW5kIGluZGV4bGluZToKICAgICAgICAgICAgICAg
ICBza2lwcGluZyA9IEZhbHNlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvcHJlcGFyZWNoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQkocmV2aXNpb24gMjUzMDIzKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0
cmFjdFN0ZXApOgogICAgICAgICAjIGJ5IHByZXBhcmUtQ2hhbmdlTG9nLCBhcyBhbiBjbGVhbiB1
cGRhdGVkIHZlcnNpb24gb2YgdGhlIG9uZSBiZWxvdyBpdC4KICAgICAgICAgd2l0aCBzZWxmLl90
b29sLmZpbGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcoY2hhbmdlbG9nX3BhdGgp
IGFzIGNoYW5nZWxvZ19maWxlOgogICAgICAgICAgICAgZW50cmllc19nZW4gPSBDaGFuZ2VMb2cu
cGFyc2VfZW50cmllc19mcm9tX2ZpbGUoY2hhbmdlbG9nX2ZpbGUpCi0gICAgICAgICAgICBlbnRy
aWVzID0gemlwKGVudHJpZXNfZ2VuLCByYW5nZSgyKSkKKyAgICAgICAgICAgIGVudHJpZXMgPSBs
aXN0KHppcChlbnRyaWVzX2dlbiwgcmFuZ2UoMikpKQogCiAgICAgICAgIGlmIG5vdCBsZW4oZW50
cmllcyk6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIHRvIGZpbmQgYXQg
bGVhc3QgdHdvIENoYW5nZUxvZyBlbnRyaWVzIGluICVzIGJ1dCBmb3VuZCBub25lLiIgJSBjaGFu
Z2Vsb2dfcGF0aCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcm9t
cHRmb3JidWdvcnRpdGxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9wcm9tcHRmb3JidWdvcnRpdGxlLnB5CShyZXZpc2lvbiAyNTMwMjMpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJvbXB0Zm9yYnVnb3J0aXRsZS5weQko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDE3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwotZnJvbSB1cmxwYXJzZSBpbXBvcnQgdXJscGFy
c2UKLWltcG9ydCByZQorCitpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgorICAgIGZyb20g
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorZWxzZToKKyAgICBmcm9tIHVybHBhcnNlIGlt
cG9ydCB1cmxwYXJzZQorCiAKIGNsYXNzIFByb21wdEZvckJ1Z09yVGl0bGUoQWJzdHJhY3RTdGVw
KToKICAgICBAY2xhc3NtZXRob2QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9zdGVwc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MzAyMykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBAIE1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBb
J1Rvb2xzL1NjcmkKICAgICAgICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0gRGVwcmVjYXRlZFBv
cnQoKQogICAgICAgICBzdGVwID0gc3RlcHMuQnVpbGQodG9vbCwgbW9ja19vcHRpb25zKQogICAg
ICAgICBleHBlY3RlZF9sb2dzID0gIiIiQnVpbGRpbmcgV2ViS2l0Ci1NT0NLIHJ1bl9hbmRfdGhy
b3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL2J1aWxkLWpzYycsICctLWRlYnVnJywgJ0FSQ0hT
PVRydWUnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydURVJNJzogJ2R1bWInLCAnTU9DS19F
TlZJUk9OX0NPUFknOiAnMSd9CitNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9T
Y3JpcHRzL2J1aWxkLWpzYycsICctLWRlYnVnJywgJ0FSQ0hTPVRydWUnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0LCBlbnY9eydNT0NLX0VOVklST05fQ09QWSc6ICcxJywgJ1RFUk0nOiAnZHVtYid9CiAi
IiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVu
LCBbe31dLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCiAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpCiAgICAgICAgIHRvb2wu
X2RlcHJlY2F0ZWRfcG9ydCA9IERlcHJlY2F0ZWRQb3J0KCkKICAgICAgICAgc3RlcCA9IHN0ZXBz
LkJ1aWxkKHRvb2wsIG1vY2tfb3B0aW9ucykKICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkJ1
aWxkaW5nIFdlYktpdAotTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0
cy9idWlsZC1qc2MnLCAnLS1yZWxlYXNlJywgJ0FSQ0hTPVRydWUnXSwgY3dkPS9tb2NrLWNoZWNr
b3V0LCBlbnY9eydURVJNJzogJ2R1bWInLCAnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9CitNT0NL
IHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL2J1aWxkLWpzYycsICctLXJl
bGVhc2UnLCAnQVJDSFM9VHJ1ZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J01PQ0tfRU5W
SVJPTl9DT1BZJzogJzEnLCAnVEVSTSc6ICdkdW1iJ30KICIiIgogICAgICAgICBPdXRwdXRDYXB0
dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFt7fV0sIGV4cGVjdGVkX2xvZ3M9
ZXhwZWN0ZWRfbG9ncykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2V4cG9ydGVyLnB5CShyZXZpc2lvbiAyNTMwMjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2V4cG9ydGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCB0aW1lCiBpbXBvcnQganNvbgotZnJvbSB1
cmxsaWIyIGltcG9ydCBIVFRQRXJyb3IKK2ltcG9ydCBzeXMKIAogZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuc2NtLmdpdCBpbXBvcnQgR2l0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
IGltcG9ydCBIb3N0CkBAIC00MCw2ICs0MCwxMSBAQCBmcm9tIHdlYmtpdHB5LnczYy53cHRfbGlu
dGVyIGltcG9ydCBXUFRMCiBmcm9tIHdlYmtpdHB5LnczYy5jb21tb24gaW1wb3J0IFdQVF9HSF9P
UkcsIFdQVF9HSF9SRVBPX05BTUUsIFdQVF9HSF9VUkwsIFdQVFBhdGhzCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIAoraWYgc3lzLnZlcnNpb25faW5mbyA+
ICgzLCAwKToKKyAgICBmcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgSFRUUEVycm9yCitlbHNlOgor
ICAgIGZyb20gdXJsbGliMiBpbXBvcnQgSFRUUEVycm9yCisKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogV0VCS0lUX1dQVF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cycKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3dwdF9naXRodWIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
d3B0X2dpdGh1Yi5weQkocmV2aXNpb24gMjUzMDIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2Mvd3B0X2dpdGh1Yi5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDE4IEBAIGlt
cG9ydCBiYXNlNjQKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCi1pbXBv
cnQgdXJsbGliMgoraW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBs
ZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20g
d2Via2l0cHkudzNjLmNvbW1vbiBpbXBvcnQgV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSwg
RVhQT1JUX1BSX0xBQkVMCiAKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgZnJv
bSB1cmxsaWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgorICAgIGZyb20gdXJsbGliLnBhcnNlIGlt
cG9ydCBxdW90ZQorZWxzZToKKyAgICBmcm9tIHVybGxpYjIgaW1wb3J0IEhUVFBFcnJvciwgcXVv
dGUKKwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogQVBJX0JBU0UgPSAnaHR0
cHM6Ly9hcGkuZ2l0aHViLmNvbScKIE1BWF9QRVJfUEFHRSA9IDEwMApAQCAtMTkyLDcgKzE5OCw3
IEBAIGNsYXNzIFdQVEdpdEh1YihvYmplY3QpOgogICAgICAgICAgICAgV1BUX0dIX09SRywKICAg
ICAgICAgICAgIFdQVF9HSF9SRVBPX05BTUUsCiAgICAgICAgICAgICBudW1iZXIsCi0gICAgICAg
ICAgICB1cmxsaWIyLnF1b3RlKGxhYmVsKSwKKyAgICAgICAgICAgIHF1b3RlKGxhYmVsKSwKICAg
ICAgICAgKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChwYXRoLCBtZXRob2Q9J0RF
TEVURScpCiAKQEAgLTI4NSw3ICsyOTEsNyBAQCBjbGFzcyBXUFRHaXRIdWIob2JqZWN0KToKICAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg
ICAgICByYWlzZSBHaXRIdWJFcnJvcigyMDQsIHJlc3BvbnNlLnN0YXR1c19jb2RlLCAnY2hlY2sg
aWYgUFIgJWQgaXMgbWVyZ2VkJyAlIHByX251bWJlcikKLSAgICAgICAgZXhjZXB0IHVybGxpYjIu
SFRUUEVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3IgYXMgZToKICAgICAgICAg
ICAgIGlmIGUuY29kZSA9PSA0MDQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAg
ICAgICAgICBlbHNlOgpAQCAtMzEwLDcgKzMxNiw3IEBAIGNsYXNzIFdQVEdpdEh1YihvYmplY3Qp
OgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHBh
dGgsIG1ldGhvZD0nUFVUJywgYm9keT1ib2R5KQotICAgICAgICBleGNlcHQgdXJsbGliMi5IVFRQ
RXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IEhUVFBFcnJvciBhcyBlOgogICAgICAgICAgICAg
aWYgZS5jb2RlID09IDQwNToKICAgICAgICAgICAgICAgICByYWlzZSBNZXJnZUVycm9yKHByX251
bWJlcikKICAgICAgICAgICAgIGVsc2U6CkBAIC0zODUsNyArMzkxLDcgQEAgY2xhc3MgSlNPTlJl
c3BvbnNlKG9iamVjdCk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgSlNPTlJlc3BvbnNlIGlu
c3RhbmNlLgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByYXdfcmVzcG9uc2U6IGEgcmVz
cG9uc2Ugb2JqZWN0IHJldHVybmVkIGJ5IG9wZW4gbWV0aG9kcyBpbiB1cmxsaWIyLgorICAgICAg
ICAgICAgcmF3X3Jlc3BvbnNlOiBhIHJlc3BvbnNlIG9iamVjdCByZXR1cm5lZCBieSBvcGVuIG1l
dGhvZHMgaW4gdXJsbGliMi91cmxsaWIuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9yYXdf
cmVzcG9uc2UgPSByYXdfcmVzcG9uc2UKICAgICAgICAgc2VsZi5zdGF0dXNfY29kZSA9IHJhd19y
ZXNwb25zZS5nZXRjb2RlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384910</attachid>
            <date>2019-12-05 09:00:36 -0800</date>
            <delta_ts>2019-12-05 09:02:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204838-20191205090035.patch</filename>
            <type>text/plain</type>
            <size>4924</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzE1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE5LTEyLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkudG9vbCAoRm9s
bG93LXVwLCBwYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQ4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBcyBJJ3ZlIGJlZW4gdXNpbmcgd2Via2l0LXBhdGNoIHdpdGggUHl0aG9uIDMsIEkn
dmUgZW5jb3VudGVyZWQgYSBoYW5kZnVsIG9mIG90aGVyCisgICAgICAgIGNvbXBhdGliaWxpdHkg
YnVncy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0LXBhdGNoOgorICAgICAgICAoRm9yZ2l2
aW5nVVRGOFdyaXRlcik6IE9ubHkgYXBwbGUgdGhlIEZvcmdpdmluZ1VURjhXcml0ZXIgd2hlbiBv
dXIgc3RyaW5nIHR5cGUgaXNuJ3QgdW5pY29kZS4KKyAgICAgICAgKEZvcmdpdmluZ1VURjhXcml0
ZXIud3JpdGUpOiBVc2Ugc3RhbmRhcmRpemVkIGRlY29kaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAg
ICAgIChCdWd6aWxsYS5hdXRoZW50aWNhdGUpOiBVc2UgYnl0ZSByZWdleC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZWRpdGNoYW5nZWxvZy5weToKKyAgICAgICAgKEVk
aXRDaGFuZ2VMb2cucnVuKTogQ29udmVydCBtYXAgdG8gbGlzdC4KKwogMjAxOS0xMi0wNSAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgaW5zcGVjdG9yL3BhZ2Uv
b3ZlcnJpZGVTZXR0aW5nLU1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQuaHRtbCBpcyBmYWlsaW5n
IGFmdGVyIHJlbW92YWwgb2YgaW50ZXJuYWxzLnNldE1vY2tNZWRpYUNhcHR1cmVEZXZpY2VzRW5h
YmxlZCBBUEkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoCShyZXZpc2lvbiAyNTMxNTApCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdC1wYXRjaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjkgKzM5LDE2IEBAIGlt
cG9ydCBzeXMKIGltcG9ydCBjb2RlY3MKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxv
Z3V0aWxzIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZworZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCiBm
cm9tIHdlYmtpdHB5LnRvb2wubWFpbiBpbXBvcnQgV2ViS2l0UGF0Y2gKIAotIyBBIFN0cmVhbVdy
aXRlciB3aWxsIGJ5IGRlZmF1bHQgdHJ5IHRvIGVuY29kZSBhbGwgb2JqZWN0cyBwYXNzZWQKLSMg
dG8gd3JpdGUoKSwgc28gd2hlbiBwYXNzZWQgYSByYXcgc3RyaW5nIGFscmVhZHkgZW5jb2RlZCBh
cyB1dGY4LAotIyBpdCB3aWxsIGJsb3cgdXAgd2l0aCBhbiBVbmljb2RlRGVjb2RlRXJyb3IuIFRo
aXMgZG9lcyBub3QgbWF0Y2gKLSMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHdyaXRpbmcgdG8g
c3lzLnN0ZG91dCwgc28gd2UgaW50ZXJjZXB0Ci0jIHRoZSBjYXNlIG9mIHdyaXRpbmcgcmF3IHN0
cmluZ3MgYW5kIG1ha2Ugc3VyZSBTdHJlYW1Xcml0ZXIgZ2V0cwotIyBpbnB1dCB0aGF0IGl0IGNh
biBoYW5kbGUuCi1jbGFzcyBGb3JnaXZpbmdVVEY4V3JpdGVyKGNvZGVjcy5sb29rdXAoJ3V0Zi04
JylbLTFdKToKLSAgICBkZWYgd3JpdGUoc2VsZiwgb2JqZWN0KToKLSAgICAgICAgaWYgaXNpbnN0
YW5jZShvYmplY3QsIHN0cik6Ci0gICAgICAgICAgICAjIEFzc3VtZSByYXcgc3RyaW5ncyBhcmUg
dXRmLTggZW5jb2RlZC4gSWYgdGhpcyBsaW5lCi0gICAgICAgICAgICAjIGZhaWxzIHdpdGggYW4g
VW5pY29kZURlY29kZUVycm9yLCBvdXIgYXNzdW1wdGlvbiB3YXMKLSAgICAgICAgICAgICMgd3Jv
bmcsIGFuZCB0aGUgc3RhY2t0cmFjZSBzaG91bGQgc2hvdyB5b3Ugd2hlcmUgd2UKLSAgICAgICAg
ICAgICMgd3JpdGUgbm9uLVVuaWNvZGUvVVRGLTggZGF0YSAod2hpY2ggd2Ugc2hvdWxkbid0KS4K
LSAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgcmV0
dXJuIGNvZGVjcy5TdHJlYW1Xcml0ZXIud3JpdGUoc2VsZiwgb2JqZWN0KQotCi0jIEJ5IGRlZmF1
bHQsIHN5cy5zdGRvdXQgYXNzdW1lcyBhc2NpaSBlbmNvZGluZy4gIFNpbmNlIG91ciBtZXNzYWdl
cyBjYW4KLSMgY29udGFpbiB1bmljb2RlIHN0cmluZ3MgKGFzIHdpdGggc29tZSBwZW9wbGVzJyBu
YW1lcykgd2UgbmVlZCB0byBhcHBseQotIyB0aGUgdXRmLTggY29kZWMgdG8gcHJldmVudCB0aHJv
d2luZyBhbmQgZXhjZXB0aW9uLgotIyBOb3QgaGF2aW5nIHRoaXMgd2FzIHRoZSBjYXVzZSBvZiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NTIuCi1zeXMuc3Rkb3V0
ID0gRm9yZ2l2aW5nVVRGOFdyaXRlcihzeXMuc3Rkb3V0KQorIyBJZiBvdXIgc3RyIHR5cGUgaXNu
J3QgdW5pY29kZSwgd2UgbmVlZCB0byBzdGFuZGFyZGl6ZSBvdXRwdXQgZm9ybWF0CitpZiBzdHIg
IT0gdW5pY29kZToKKyAgICBjbGFzcyBGb3JnaXZpbmdVVEY4V3JpdGVyKGNvZGVjcy5sb29rdXAo
J3V0Zi04JylbLTFdKToKKyAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHZhbHVlKToKKyAgICAgICAg
ICAgIHJldHVybiBjb2RlY3MuU3RyZWFtV3JpdGVyLndyaXRlKHNlbGYsIGRlY29kZV9pZl9uZWNl
c3NhcnkodmFsdWUpKQorCisgICAgc3lzLnN0ZG91dCA9IEZvcmdpdmluZ1VURjhXcml0ZXIoc3lz
LnN0ZG91dCkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXQtcGF0Y2giKQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Z3ppbGxhLnB5CShyZXZpc2lvbiAyNTMxNTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkJKHdvcmtpbmcgY29weSkKQEAgLTU4
NSwxMCArNTg1LDEwIEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxm
LmJyb3dzZXIuZmluZF9jb250cm9sKCJCdWd6aWxsYV9yZXN0cmljdGxvZ2luIikuaXRlbXNbMF0u
c2VsZWN0ZWQgPSBGYWxzZQogICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmJyb3dzZXIuc3Vi
bWl0KCkKIAotICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIjx0aXRsZT4oLis/KTwvdGl0
bGU+IiwgcmVzcG9uc2UucmVhZCgpKQorICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYic8
dGl0bGU+KC4rPyk8L3RpdGxlPicsIHJlc3BvbnNlLnJlYWQoKSkKICAgICAgICAgICAgICMgSWYg
dGhlIHJlc3VsdGluZyBwYWdlIGhhcyBhIHRpdGxlLCBhbmQgaXQgY29udGFpbnMgdGhlIHdvcmQK
ICAgICAgICAgICAgICMgImludmFsaWQiIGFzc3VtZSBpdCdzIHRoZSBsb2dpbiBmYWlsdXJlIHBh
Z2UuCi0gICAgICAgICAgICBpZiBtYXRjaCBhbmQgcmUuc2VhcmNoKCJJbnZhbGlkIiwgbWF0Y2gu
Z3JvdXAoMSksIHJlLklHTk9SRUNBU0UpOgorICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIHJlLnNl
YXJjaChiJ0ludmFsaWQnLCBtYXRjaC5ncm91cCgxKSwgcmUuSUdOT1JFQ0FTRSk6CiAgICAgICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkJ1Z3ppbGxhIGxvZ2luIGZhaWxlZDogJXMiICUgbWF0
Y2guZ3JvdXAoMSkKICAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbmx5IGlm
IHRoaXMgd2FzIHRoZSBsYXN0IGF0dGVtcHQKICAgICAgICAgICAgICAgICBpZiBhdHRlbXB0cyA8
IDU6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZWRpdGNoYW5nZWxv
Zy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZWRp
dGNoYW5nZWxvZy5weQkocmV2aXNpb24gMjUzMTUwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2VkaXRjaGFuZ2Vsb2cucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDYgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbQogCiBjbGFzcyBF
ZGl0Q2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6Ci0g
ICAgICAgIGFic29sdXRlX3BhdGhzID0gbWFwKHNlbGYuX3Rvb2wuc2NtKCkuYWJzb2x1dGVfcGF0
aCwgc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiY2hhbmdlbG9ncyIpKQorICAgICAgICBhYnNv
bHV0ZV9wYXRocyA9IGxpc3QobWFwKHNlbGYuX3Rvb2wuc2NtKCkuYWJzb2x1dGVfcGF0aCwgc2Vs
Zi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiY2hhbmdlbG9ncyIpKSkKICAgICAgICAgc2VsZi5fdG9v
bC51c2VyLmVkaXRfY2hhbmdlbG9nKGFic29sdXRlX3BhdGhzKQogICAgICAgICBzZWxmLmRpZF9t
b2RpZnlfY2hlY2tvdXQoc3RhdGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384911</attachid>
            <date>2019-12-05 09:02:37 -0800</date>
            <delta_ts>2019-12-06 13:57:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204838-20191205090237.patch</filename>
            <type>text/plain</type>
            <size>5412</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzE1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE5LTEyLTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkudG9vbCAoRm9s
bG93LXVwLCBwYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQ4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBcyBJJ3ZlIGJlZW4gdXNpbmcgd2Via2l0LXBhdGNoIHdpdGggUHl0aG9uIDMsIEkn
dmUgZW5jb3VudGVyZWQgYSBoYW5kZnVsIG9mIG90aGVyCisgICAgICAgIGNvbXBhdGliaWxpdHkg
YnVncy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0LXBhdGNoOgorICAgICAgICAoRm9yZ2l2
aW5nVVRGOFdyaXRlcik6IE9ubHkgYXBwbGUgdGhlIEZvcmdpdmluZ1VURjhXcml0ZXIgd2hlbiBv
dXIgc3RyaW5nIHR5cGUgaXNuJ3QgdW5pY29kZS4KKyAgICAgICAgKEZvcmdpdmluZ1VURjhXcml0
ZXIud3JpdGUpOiBVc2Ugc3RhbmRhcmRpemVkIGRlY29kaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAg
ICAgIChCdWd6aWxsYS5hdXRoZW50aWNhdGUpOiBVc2UgYnl0ZSByZWdleC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZWRpdGNoYW5nZWxvZy5weToKKyAgICAgICAgKEVk
aXRDaGFuZ2VMb2cucnVuKTogQ29udmVydCBtYXAgdG8gbGlzdC4KKwogMjAxOS0xMi0wNSAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgaW5zcGVjdG9yL3BhZ2Uv
b3ZlcnJpZGVTZXR0aW5nLU1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQuaHRtbCBpcyBmYWlsaW5n
IGFmdGVyIHJlbW92YWwgb2YgaW50ZXJuYWxzLnNldE1vY2tNZWRpYUNhcHR1cmVEZXZpY2VzRW5h
YmxlZCBBUEkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoCShyZXZpc2lvbiAyNTMxNTApCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdC1wYXRjaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjkgKzM5LDE2IEBAIGlt
cG9ydCBzeXMKIGltcG9ydCBjb2RlY3MKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxv
Z3V0aWxzIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZworZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCiBm
cm9tIHdlYmtpdHB5LnRvb2wubWFpbiBpbXBvcnQgV2ViS2l0UGF0Y2gKIAotIyBBIFN0cmVhbVdy
aXRlciB3aWxsIGJ5IGRlZmF1bHQgdHJ5IHRvIGVuY29kZSBhbGwgb2JqZWN0cyBwYXNzZWQKLSMg
dG8gd3JpdGUoKSwgc28gd2hlbiBwYXNzZWQgYSByYXcgc3RyaW5nIGFscmVhZHkgZW5jb2RlZCBh
cyB1dGY4LAotIyBpdCB3aWxsIGJsb3cgdXAgd2l0aCBhbiBVbmljb2RlRGVjb2RlRXJyb3IuIFRo
aXMgZG9lcyBub3QgbWF0Y2gKLSMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHdyaXRpbmcgdG8g
c3lzLnN0ZG91dCwgc28gd2UgaW50ZXJjZXB0Ci0jIHRoZSBjYXNlIG9mIHdyaXRpbmcgcmF3IHN0
cmluZ3MgYW5kIG1ha2Ugc3VyZSBTdHJlYW1Xcml0ZXIgZ2V0cwotIyBpbnB1dCB0aGF0IGl0IGNh
biBoYW5kbGUuCi1jbGFzcyBGb3JnaXZpbmdVVEY4V3JpdGVyKGNvZGVjcy5sb29rdXAoJ3V0Zi04
JylbLTFdKToKLSAgICBkZWYgd3JpdGUoc2VsZiwgb2JqZWN0KToKLSAgICAgICAgaWYgaXNpbnN0
YW5jZShvYmplY3QsIHN0cik6Ci0gICAgICAgICAgICAjIEFzc3VtZSByYXcgc3RyaW5ncyBhcmUg
dXRmLTggZW5jb2RlZC4gSWYgdGhpcyBsaW5lCi0gICAgICAgICAgICAjIGZhaWxzIHdpdGggYW4g
VW5pY29kZURlY29kZUVycm9yLCBvdXIgYXNzdW1wdGlvbiB3YXMKLSAgICAgICAgICAgICMgd3Jv
bmcsIGFuZCB0aGUgc3RhY2t0cmFjZSBzaG91bGQgc2hvdyB5b3Ugd2hlcmUgd2UKLSAgICAgICAg
ICAgICMgd3JpdGUgbm9uLVVuaWNvZGUvVVRGLTggZGF0YSAod2hpY2ggd2Ugc2hvdWxkbid0KS4K
LSAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgcmV0
dXJuIGNvZGVjcy5TdHJlYW1Xcml0ZXIud3JpdGUoc2VsZiwgb2JqZWN0KQotCi0jIEJ5IGRlZmF1
bHQsIHN5cy5zdGRvdXQgYXNzdW1lcyBhc2NpaSBlbmNvZGluZy4gIFNpbmNlIG91ciBtZXNzYWdl
cyBjYW4KLSMgY29udGFpbiB1bmljb2RlIHN0cmluZ3MgKGFzIHdpdGggc29tZSBwZW9wbGVzJyBu
YW1lcykgd2UgbmVlZCB0byBhcHBseQotIyB0aGUgdXRmLTggY29kZWMgdG8gcHJldmVudCB0aHJv
d2luZyBhbmQgZXhjZXB0aW9uLgotIyBOb3QgaGF2aW5nIHRoaXMgd2FzIHRoZSBjYXVzZSBvZiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NTIuCi1zeXMuc3Rkb3V0
ID0gRm9yZ2l2aW5nVVRGOFdyaXRlcihzeXMuc3Rkb3V0KQorIyBJZiBvdXIgc3RyIHR5cGUgaXNu
J3QgdW5pY29kZSwgd2UgbmVlZCB0byBzdGFuZGFyZGl6ZSBvdXRwdXQgZm9ybWF0CitpZiBzdHIg
IT0gdW5pY29kZToKKyAgICBjbGFzcyBGb3JnaXZpbmdVVEY4V3JpdGVyKGNvZGVjcy5sb29rdXAo
J3V0Zi04JylbLTFdKToKKyAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHZhbHVlKToKKyAgICAgICAg
ICAgIHJldHVybiBjb2RlY3MuU3RyZWFtV3JpdGVyLndyaXRlKHNlbGYsIGRlY29kZV9pZl9uZWNl
c3NhcnkodmFsdWUpKQorCisgICAgc3lzLnN0ZG91dCA9IEZvcmdpdmluZ1VURjhXcml0ZXIoc3lz
LnN0ZG91dCkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXQtcGF0Y2giKQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Z3ppbGxhLnB5CShyZXZpc2lvbiAyNTMxNTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkJKHdvcmtpbmcgY29weSkKQEAgLTU4
NSwxMCArNTg1LDEwIEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxm
LmJyb3dzZXIuZmluZF9jb250cm9sKCJCdWd6aWxsYV9yZXN0cmljdGxvZ2luIikuaXRlbXNbMF0u
c2VsZWN0ZWQgPSBGYWxzZQogICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmJyb3dzZXIuc3Vi
bWl0KCkKIAotICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIjx0aXRsZT4oLis/KTwvdGl0
bGU+IiwgcmVzcG9uc2UucmVhZCgpKQorICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYic8
dGl0bGU+KC4rPyk8L3RpdGxlPicsIHJlc3BvbnNlLnJlYWQoKSkKICAgICAgICAgICAgICMgSWYg
dGhlIHJlc3VsdGluZyBwYWdlIGhhcyBhIHRpdGxlLCBhbmQgaXQgY29udGFpbnMgdGhlIHdvcmQK
ICAgICAgICAgICAgICMgImludmFsaWQiIGFzc3VtZSBpdCdzIHRoZSBsb2dpbiBmYWlsdXJlIHBh
Z2UuCi0gICAgICAgICAgICBpZiBtYXRjaCBhbmQgcmUuc2VhcmNoKCJJbnZhbGlkIiwgbWF0Y2gu
Z3JvdXAoMSksIHJlLklHTk9SRUNBU0UpOgorICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIHJlLnNl
YXJjaChiJ0ludmFsaWQnLCBtYXRjaC5ncm91cCgxKSwgcmUuSUdOT1JFQ0FTRSk6CiAgICAgICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkJ1Z3ppbGxhIGxvZ2luIGZhaWxlZDogJXMiICUgbWF0
Y2guZ3JvdXAoMSkKICAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbmx5IGlm
IHRoaXMgd2FzIHRoZSBsYXN0IGF0dGVtcHQKICAgICAgICAgICAgICAgICBpZiBhdHRlbXB0cyA8
IDU6CkBAIC02NjUsNyArNjY1LDcgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAogICAgIEBz
dGF0aWNtZXRob2QKICAgICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfaWRfZnJvbV9hZGRfcGF0Y2hf
dG9fYnVnX3Jlc3BvbnNlKHJlc3BvbnNlX2h0bWwpOgotICAgICAgICBtYXRjaCA9IHJlLnNlYXJj
aCgnPHRpdGxlPkF0dGFjaG1lbnQgKD9QPGF0dGFjaG1lbnRfaWQ+XGQrKSBhZGRlZCB0byBCdWcg
XGQrPC90aXRsZT4nLCByZXNwb25zZV9odG1sKQorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChi
Jzx0aXRsZT5BdHRhY2htZW50ICg/UDxhdHRhY2htZW50X2lkPlxkKykgYWRkZWQgdG8gQnVnIFxk
KzwvdGl0bGU+JywgcmVzcG9uc2VfaHRtbCkKICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAg
ICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2F0dGFjaG1lbnRfaWQnKQogICAgICAgICBfbG9nLndhcm5p
bmcoJ1VuYWJsZSB0byBwYXJzZSBhdHRhY2htZW50IGlkJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9lZGl0Y2hhbmdlbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9lZGl0Y2hhbmdlbG9nLnB5CShyZXZpc2lvbiAy
NTMxNTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZWRpdGNoYW5nZWxv
Zy5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNiBAQCBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMuYWJzdHJhY3RzdGVwIGltCiAKIGNsYXNzIEVkaXRDaGFuZ2VMb2coQWJzdHJhY3RTdGVw
KToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKLSAgICAgICAgYWJzb2x1dGVfcGF0aHMgPSBt
YXAoc2VsZi5fdG9vbC5zY20oKS5hYnNvbHV0ZV9wYXRoLCBzZWxmLmNhY2hlZF9sb29rdXAoc3Rh
dGUsICJjaGFuZ2Vsb2dzIikpCisgICAgICAgIGFic29sdXRlX3BhdGhzID0gbGlzdChtYXAoc2Vs
Zi5fdG9vbC5zY20oKS5hYnNvbHV0ZV9wYXRoLCBzZWxmLmNhY2hlZF9sb29rdXAoc3RhdGUsICJj
aGFuZ2Vsb2dzIikpKQogICAgICAgICBzZWxmLl90b29sLnVzZXIuZWRpdF9jaGFuZ2Vsb2coYWJz
b2x1dGVfcGF0aHMpCiAgICAgICAgIHNlbGYuZGlkX21vZGlmeV9jaGVja291dChzdGF0ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385040</attachid>
            <date>2019-12-06 13:57:30 -0800</date>
            <delta_ts>2019-12-06 15:00:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204838-20191206135729.patch</filename>
            <type>text/plain</type>
            <size>6019</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzIxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE5LTEyLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkudG9vbCAoRm9s
bG93LXVwLCBwYXJ0IDEpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQ4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBcyBJJ3ZlIGJlZW4gdXNpbmcgd2Via2l0LXBhdGNoIHdpdGggUHl0aG9uIDMsIEkn
dmUgZW5jb3VudGVyZWQgYSBoYW5kZnVsIG9mIG90aGVyCisgICAgICAgIGNvbXBhdGliaWxpdHkg
YnVncy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0LXBhdGNoOgorICAgICAgICAoRm9yZ2l2
aW5nVVRGOFdyaXRlcik6IE9ubHkgYXBwbGUgdGhlIEZvcmdpdmluZ1VURjhXcml0ZXIgd2hlbiBv
dXIgc3RyaW5nIHR5cGUgaXNuJ3QgdW5pY29kZS4KKyAgICAgICAgKEZvcmdpdmluZ1VURjhXcml0
ZXIud3JpdGUpOiBVc2Ugc3RhbmRhcmRpemVkIGRlY29kaW5nIGZ1bmN0aW9ucy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAg
ICAgIChCdWd6aWxsYS5hdXRoZW50aWNhdGUpOiBVc2UgYnl0ZSByZWdleC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZWRpdGNoYW5nZWxvZy5weToKKyAgICAgICAgKEVk
aXRDaGFuZ2VMb2cucnVuKTogQ29udmVydCBtYXAgdG8gbGlzdC4KKwogMjAxOS0xMi0wNSAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgUHl0aG9uIDM6IEFk
ZCBzdXBwb3J0IHRvIHdlYmtpdHB5LmJyb3dzZXJwZXJmZGFzaApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXQtcGF0Y2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXQtcGF0Y2gJ
KHJldmlzaW9uIDI1MzIxNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwyOSArMzksMjcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IGNvZGVjcwogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dn
aW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRl
Y29kZV9pZl9uZWNlc3NhcnksIHVuaWNvZGUKIGZyb20gd2Via2l0cHkudG9vbC5tYWluIGltcG9y
dCBXZWJLaXRQYXRjaAogCi0jIEEgU3RyZWFtV3JpdGVyIHdpbGwgYnkgZGVmYXVsdCB0cnkgdG8g
ZW5jb2RlIGFsbCBvYmplY3RzIHBhc3NlZAotIyB0byB3cml0ZSgpLCBzbyB3aGVuIHBhc3NlZCBh
IHJhdyBzdHJpbmcgYWxyZWFkeSBlbmNvZGVkIGFzIHV0ZjgsCi0jIGl0IHdpbGwgYmxvdyB1cCB3
aXRoIGFuIFVuaWNvZGVEZWNvZGVFcnJvci4gVGhpcyBkb2VzIG5vdCBtYXRjaAotIyB0aGUgZGVm
YXVsdCBiZWhhdmlvdXIgb2Ygd3JpdGluZyB0byBzeXMuc3Rkb3V0LCBzbyB3ZSBpbnRlcmNlcHQK
LSMgdGhlIGNhc2Ugb2Ygd3JpdGluZyByYXcgc3RyaW5ncyBhbmQgbWFrZSBzdXJlIFN0cmVhbVdy
aXRlciBnZXRzCi0jIGlucHV0IHRoYXQgaXQgY2FuIGhhbmRsZS4KLWNsYXNzIEZvcmdpdmluZ1VU
RjhXcml0ZXIoY29kZWNzLmxvb2t1cCgndXRmLTgnKVstMV0pOgotICAgIGRlZiB3cml0ZShzZWxm
LCBvYmplY3QpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG9iamVjdCwgc3RyKToKLSAgICAgICAg
ICAgICMgQXNzdW1lIHJhdyBzdHJpbmdzIGFyZSB1dGYtOCBlbmNvZGVkLiBJZiB0aGlzIGxpbmUK
LSAgICAgICAgICAgICMgZmFpbHMgd2l0aCBhbiBVbmljb2RlRGVjb2RlRXJyb3IsIG91ciBhc3N1
bXB0aW9uIHdhcwotICAgICAgICAgICAgIyB3cm9uZywgYW5kIHRoZSBzdGFja3RyYWNlIHNob3Vs
ZCBzaG93IHlvdSB3aGVyZSB3ZQotICAgICAgICAgICAgIyB3cml0ZSBub24tVW5pY29kZS9VVEYt
OCBkYXRhICh3aGljaCB3ZSBzaG91bGRuJ3QpLgotICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0
LmRlY29kZSgndXRmLTgnKQotICAgICAgICByZXR1cm4gY29kZWNzLlN0cmVhbVdyaXRlci53cml0
ZShzZWxmLCBvYmplY3QpCi0KLSMgQnkgZGVmYXVsdCwgc3lzLnN0ZG91dCBhc3N1bWVzIGFzY2lp
IGVuY29kaW5nLiAgU2luY2Ugb3VyIG1lc3NhZ2VzIGNhbgotIyBjb250YWluIHVuaWNvZGUgc3Ry
aW5ncyAoYXMgd2l0aCBzb21lIHBlb3BsZXMnIG5hbWVzKSB3ZSBuZWVkIHRvIGFwcGx5Ci0jIHRo
ZSB1dGYtOCBjb2RlYyB0byBwcmV2ZW50IHRocm93aW5nIGFuZCBleGNlcHRpb24uCi0jIE5vdCBo
YXZpbmcgdGhpcyB3YXMgdGhlIGNhdXNlIG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MzQ1Mi4KLXN5cy5zdGRvdXQgPSBGb3JnaXZpbmdVVEY4V3JpdGVyKHN5cy5z
dGRvdXQpCisjIElmIG91ciBzdHIgdHlwZSBpc24ndCB1bmljb2RlLCB3ZSBuZWVkIHRvIHN0YW5k
YXJkaXplIG91dHB1dCBmb3JtYXQKK2lmIHN0ciAhPSB1bmljb2RlOgorCisgICAgIyBBIFN0cmVh
bVdyaXRlciB3aWxsIGJ5IGRlZmF1bHQgdHJ5IHRvIGVuY29kZSBhbGwgb2JqZWN0cyBwYXNzZWQK
KyAgICAjIHRvIHdyaXRlKCksIHNvIHdoZW4gcGFzc2VkIGEgcmF3IHN0cmluZyBhbHJlYWR5IGVu
Y29kZWQgYXMgdXRmOCwKKyAgICAjIGl0IHdpbGwgYmxvdyB1cCB3aXRoIGFuIFVuaWNvZGVEZWNv
ZGVFcnJvci4gVGhpcyBkb2VzIG5vdCBtYXRjaAorICAgICMgdGhlIGRlZmF1bHQgYmVoYXZpb3Vy
IG9mIHdyaXRpbmcgdG8gc3lzLnN0ZG91dCwgc28gd2UgaW50ZXJjZXB0CisgICAgIyB0aGUgY2Fz
ZSBvZiB3cml0aW5nIHJhdyBzdHJpbmdzIGFuZCBtYWtlIHN1cmUgU3RyZWFtV3JpdGVyIGdldHMK
KyAgICAjIGlucHV0IHRoYXQgaXQgY2FuIGhhbmRsZS4KKyAgICBjbGFzcyBGb3JnaXZpbmdVVEY4
V3JpdGVyKGNvZGVjcy5sb29rdXAoJ3V0Zi04JylbLTFdKToKKyAgICAgICAgZGVmIHdyaXRlKHNl
bGYsIHZhbHVlKToKKyAgICAgICAgICAgIHJldHVybiBjb2RlY3MuU3RyZWFtV3JpdGVyLndyaXRl
KHNlbGYsIGRlY29kZV9pZl9uZWNlc3NhcnkodmFsdWUpKQorCisgICAgIyBCeSBkZWZhdWx0LCBz
eXMuc3Rkb3V0IGFzc3VtZXMgYXNjaWkgZW5jb2RpbmcuICBTaW5jZSBvdXIgbWVzc2FnZXMgY2Fu
CisgICAgIyBjb250YWluIHVuaWNvZGUgc3RyaW5ncyAoYXMgd2l0aCBzb21lIHBlb3BsZXMnIG5h
bWVzKSB3ZSBuZWVkIHRvIGFwcGx5CisgICAgIyB0aGUgdXRmLTggY29kZWMgdG8gcHJldmVudCB0
aHJvd2luZyBhbmQgZXhjZXB0aW9uLgorICAgICMgTm90IGhhdmluZyB0aGlzIHdhcyB0aGUgY2F1
c2Ugb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDUyLgorICAg
IHN5cy5zdGRvdXQgPSBGb3JnaXZpbmdVVEY4V3JpdGVyKHN5cy5zdGRvdXQpCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcigid2Via2l0LXBhdGNoIikKIApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQkocmV2
aXNpb24gMjUzMjE1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Z3ppbGxhLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01ODUsMTAgKzU4NSwxMCBAQCBjbGFz
cyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5icm93c2VyLmZpbmRfY29udHJv
bCgiQnVnemlsbGFfcmVzdHJpY3Rsb2dpbiIpLml0ZW1zWzBdLnNlbGVjdGVkID0gRmFsc2UKICAg
ICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5icm93c2VyLnN1Ym1pdCgpCiAKLSAgICAgICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKCI8dGl0bGU+KC4rPyk8L3RpdGxlPiIsIHJlc3BvbnNlLnJlYWQo
KSkKKyAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGInPHRpdGxlPiguKz8pPC90aXRsZT4n
LCByZXNwb25zZS5yZWFkKCkpCiAgICAgICAgICAgICAjIElmIHRoZSByZXN1bHRpbmcgcGFnZSBo
YXMgYSB0aXRsZSwgYW5kIGl0IGNvbnRhaW5zIHRoZSB3b3JkCiAgICAgICAgICAgICAjICJpbnZh
bGlkIiBhc3N1bWUgaXQncyB0aGUgbG9naW4gZmFpbHVyZSBwYWdlLgotICAgICAgICAgICAgaWYg
bWF0Y2ggYW5kIHJlLnNlYXJjaCgiSW52YWxpZCIsIG1hdGNoLmdyb3VwKDEpLCByZS5JR05PUkVD
QVNFKToKKyAgICAgICAgICAgIGlmIG1hdGNoIGFuZCByZS5zZWFyY2goYidJbnZhbGlkJywgbWF0
Y2guZ3JvdXAoMSksIHJlLklHTk9SRUNBU0UpOgogICAgICAgICAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9ICJCdWd6aWxsYSBsb2dpbiBmYWlsZWQ6ICVzIiAlIG1hdGNoLmdyb3VwKDEpCiAgICAgICAg
ICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24gb25seSBpZiB0aGlzIHdhcyB0aGUgbGFzdCBh
dHRlbXB0CiAgICAgICAgICAgICAgICAgaWYgYXR0ZW1wdHMgPCA1OgpAQCAtNjY1LDcgKzY2NSw3
IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVm
IF9wYXJzZV9hdHRhY2htZW50X2lkX2Zyb21fYWRkX3BhdGNoX3RvX2J1Z19yZXNwb25zZShyZXNw
b25zZV9odG1sKToKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJzx0aXRsZT5BdHRhY2htZW50
ICg/UDxhdHRhY2htZW50X2lkPlxkKykgYWRkZWQgdG8gQnVnIFxkKzwvdGl0bGU+JywgcmVzcG9u
c2VfaHRtbCkKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYic8dGl0bGU+QXR0YWNobWVudCAo
P1A8YXR0YWNobWVudF9pZD5cZCspIGFkZGVkIHRvIEJ1ZyBcZCs8L3RpdGxlPicsIHJlc3BvbnNl
X2h0bWwpCiAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3Vw
KCdhdHRhY2htZW50X2lkJykKICAgICAgICAgX2xvZy53YXJuaW5nKCdVbmFibGUgdG8gcGFyc2Ug
YXR0YWNobWVudCBpZCcpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
ZWRpdGNoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvZWRpdGNoYW5nZWxvZy5weQkocmV2aXNpb24gMjUzMjE1KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2VkaXRjaGFuZ2Vsb2cucHkJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDYgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBp
bQogCiBjbGFzcyBFZGl0Q2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6Ci0gICAgICAgIGFic29sdXRlX3BhdGhzID0gbWFwKHNlbGYuX3Rvb2wuc2NtKCku
YWJzb2x1dGVfcGF0aCwgc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiY2hhbmdlbG9ncyIpKQor
ICAgICAgICBhYnNvbHV0ZV9wYXRocyA9IGxpc3QobWFwKHNlbGYuX3Rvb2wuc2NtKCkuYWJzb2x1
dGVfcGF0aCwgc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiY2hhbmdlbG9ncyIpKSkKICAgICAg
ICAgc2VsZi5fdG9vbC51c2VyLmVkaXRfY2hhbmdlbG9nKGFic29sdXRlX3BhdGhzKQogICAgICAg
ICBzZWxmLmRpZF9tb2RpZnlfY2hlY2tvdXQoc3RhdGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>