<?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>214405</bug_id>
          
          <creation_ts>2020-07-16 07:46:00 -0700</creation_ts>
          <short_desc>[webkitcorepy] Add string_utils</short_desc>
          <delta_ts>2020-07-28 07:00:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Safari 13</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=214378</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>cdumez</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hysu</cc>
    
    <cc>jlewis3</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672109</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-16 07:46:00 -0700</bug_when>
    <thetext>Centralize handling of unicode encoding/decoding along with various tools for printing strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672110</commentid>
    <comment_count>1</comment_count>
      <attachid>404440</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-16 07:51:12 -0700</bug_when>
    <thetext>Created attachment 404440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672480</commentid>
    <comment_count>2</comment_count>
      <attachid>404561</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-17 07:52:04 -0700</bug_when>
    <thetext>Created attachment 404561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672496</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 08:52:43 -0700</bug_when>
    <thetext>Sorry for coming to this late, but what is the purpose/goal of webkitcorepy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672501</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-17 09:07:17 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Sorry for coming to this late, but what is the purpose/goal of webkitcorepy?

Let us use our Python tooling in services and share tooling (at the moment, git tooling is of the most interest) with more projects. And to de-duplicate many Internal Python tools that have no reason to be Internal (https://bugs.webkit.org/show_bug.cgi?id=214475 is an example of this)

We could do this with webkitpy, but webkitpy uses many bad Python 2 idioms and has a lot of unnecessary coupling. webkitcorepy (and any other libraries we may write) would be generic tooling that happens to be used by WebKit instead of tooling specifically built around the eccentricities of WebKit development.

There are a few more ideas of how we want to use such a library (auto-installer, shared logging idioms, modern multi-processes harness), but I&apos;m trying to keep those discussions with the code that actually implements those bits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672507</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 09:33:28 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #4)
&gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; Sorry for coming to this late, but what is the purpose/goal of webkitcorepy?
&gt; 
&gt; Let us use our Python tooling in services and share tooling (at the moment,
&gt; git tooling is of the most interest) with more projects. And to de-duplicate
&gt; many Internal Python tools that have no reason to be Internal
&gt; (https://bugs.webkit.org/show_bug.cgi?id=214475 is an example of this)

Internal here meaning internally at Apple?

&gt; 
&gt; We could do this with webkitpy, but webkitpy uses many bad Python 2 idioms
&gt; and has a lot of unnecessary coupling. webkitcorepy (and any other libraries
&gt; we may write) would be generic tooling that happens to be used by WebKit
&gt; instead of tooling specifically built around the eccentricities of WebKit
&gt; development.
&gt; 
&gt; There are a few more ideas of how we want to use such a library
&gt; (auto-installer, shared logging idioms, modern multi-processes harness), but
&gt; I&apos;m trying to keep those discussions with the code that actually implements
&gt; those bits

This implies that the WebKit tools will now have use outside of the WebKit tree (or perhaps that is already true). While we have a clear understanding that breaking API and ABI of our WebKit c/c++/objective-c needs to be considered carefully, I am not sure if we have historically had the same level of care for scripts. 

Regardless of whether this dependency is new or not, it might be a good idea to document in some form what level of care people need to take when changing scripts in WebKit so others can be aware that their changes might have effects outside of the tree.

Thanks for the explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672515</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-17 09:45:18 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; (In reply to Jonathan Bedard from comment #4)
&gt; &gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; &gt; Sorry for coming to this late, but what is the purpose/goal of webkitcorepy?
&gt; &gt; 
&gt; &gt; Let us use our Python tooling in services and share tooling (at the moment,
&gt; &gt; git tooling is of the most interest) with more projects. And to de-duplicate
&gt; &gt; many Internal Python tools that have no reason to be Internal
&gt; &gt; (https://bugs.webkit.org/show_bug.cgi?id=214475 is an example of this)
&gt; 
&gt; Internal here meaning internally at Apple?

Yes, sorry for not being specific. Apple has Internal tooling that leverages webkitpy, mostly used by Safari at the moment, but there has been intention to more widely use some of Safari&apos;s tools.

&gt; 
&gt; &gt; 
&gt; &gt; We could do this with webkitpy, but webkitpy uses many bad Python 2 idioms
&gt; &gt; and has a lot of unnecessary coupling. webkitcorepy (and any other libraries
&gt; &gt; we may write) would be generic tooling that happens to be used by WebKit
&gt; &gt; instead of tooling specifically built around the eccentricities of WebKit
&gt; &gt; development.
&gt; &gt; 
&gt; &gt; There are a few more ideas of how we want to use such a library
&gt; &gt; (auto-installer, shared logging idioms, modern multi-processes harness), but
&gt; &gt; I&apos;m trying to keep those discussions with the code that actually implements
&gt; &gt; those bits
&gt; 
&gt; This implies that the WebKit tools will now have use outside of the WebKit
&gt; tree (or perhaps that is already true). While we have a clear understanding
&gt; that breaking API and ABI of our WebKit c/c++/objective-c needs to be
&gt; considered carefully, I am not sure if we have historically had the same
&gt; level of care for scripts. 
&gt; 
&gt; Regardless of whether this dependency is new or not, it might be a good idea
&gt; to document in some form what level of care people need to take when
&gt; changing scripts in WebKit so others can be aware that their changes might
&gt; have effects outside of the tree.
&gt; 
&gt; Thanks for the explanation.

WebKit tools already has use outside of WebKit&apos;s tree. And it&apos;s true that we haven&apos;t historically had the same level of care for scripts, which has been a source of pain, particularly for OpenSource contributors, when they start modifying tooling code that ends up breaking something they had no way of knowing about.

I think a document is a great idea, and I can put one together in another patch. One of the goals of breaking off parts of webkitpy into libraries is that we can may the guarantee that webkitpy will not be used outside of the WebKit tree, only the libraries will. I think that will make hacking easier, since it will be clear when you are working in an area that may have clients you aren&apos;t aware of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673434</commentid>
    <comment_count>7</comment_count>
      <attachid>404818</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-21 06:50:39 -0700</bug_when>
    <thetext>Created attachment 404818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673859</commentid>
    <comment_count>8</comment_count>
      <attachid>404931</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 09:45:37 -0700</bug_when>
    <thetext>Created attachment 404931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673863</commentid>
    <comment_count>9</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 09:48:18 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #8)
&gt; Created attachment 404931 [details]
&gt; Patch

Aakash asked me to split up the patch. The first part of the patch is the actual code change, the second part will consist of the refactor to adopt the webkitcorepy version of unicode tooling instead of the webkitpy version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673900</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-22 11:35:47 -0700</bug_when>
    <thetext>Committed r264715: &lt;https://trac.webkit.org/changeset/264715&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404931.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673905</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-22 11:38:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/65946874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673912</commentid>
    <comment_count>12</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 11:53:47 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673913</commentid>
    <comment_count>13</comment_count>
      <attachid>404943</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 11:53:48 -0700</bug_when>
    <thetext>Created attachment 404943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673915</commentid>
    <comment_count>14</comment_count>
      <attachid>404944</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 11:58:49 -0700</bug_when>
    <thetext>Created attachment 404944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673919</commentid>
    <comment_count>15</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 12:00:53 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #14)
&gt; Created attachment 404944 [details]
&gt; Patch

This change simply adopt webkitcorepy.string_utils, and should not change the function on any scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675277</commentid>
    <comment_count>16</comment_count>
      <attachid>404944</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-07-27 09:47:18 -0700</bug_when>
    <thetext>Comment on attachment 404944
Patch

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

rs=me

&gt; Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py:-33
&gt; -from webkitpy.common.unicode_compatibility import StringIO

Is this removal (without new addition) intentional?

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:-32
&gt; -import tempfile

I would have preferred removal of all these stray imports in separate patch (since there are many). But here is fine as well for now.

&gt; Tools/Scripts/webkitpy/common/system/executive.py:39
&gt; +from webkitcorepy import StringIO, string_utils, unicode

Doesn&apos;t the unicode in webkitcorepy hides the built-in unicode()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675282</commentid>
    <comment_count>17</comment_count>
      <attachid>404944</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-27 10:01:16 -0700</bug_when>
    <thetext>Comment on attachment 404944
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py:-33
&gt;&gt; -from webkitpy.common.unicode_compatibility import StringIO
&gt; 
&gt; Is this removal (without new addition) intentional?

Yes, I mention it in the changelog for the file, StringIO was not used in this file, so I just removed it.

I&apos;ve configured PyCharm for this project, so it&apos;s warning me when an import is unused, whenever I come across one, I just delete it.

&gt;&gt; Tools/Scripts/webkitpy/common/system/executive.py:39
&gt;&gt; +from webkitcorepy import StringIO, string_utils, unicode
&gt; 
&gt; Doesn&apos;t the unicode in webkitcorepy hides the built-in unicode()?

It does, but Python 3 doesn&apos;t actually have a built-in unicode. That&apos;s one of the features of string_utils. When a program in Python 3 says &quot;unicode&quot;, what they really want is &quot;str&quot;. So string_utils sets unicode to unicode for Python 2, but unicode to str for Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675396</commentid>
    <comment_count>18</comment_count>
      <attachid>405312</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-27 14:25:25 -0700</bug_when>
    <thetext>Created attachment 405312
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675405</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-27 15:11:32 -0700</bug_when>
    <thetext>Committed r264949: &lt;https://trac.webkit.org/changeset/264949&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405312.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675417</commentid>
    <comment_count>20</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-27 15:35:32 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675418</commentid>
    <comment_count>21</comment_count>
      <attachid>405318</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-27 15:35:34 -0700</bug_when>
    <thetext>Created attachment 405318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675422</commentid>
    <comment_count>22</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-27 15:49:57 -0700</bug_when>
    <thetext>Sitting on this until tomorrow morning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675590</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-28 07:00:54 -0700</bug_when>
    <thetext>Committed r264981: &lt;https://trac.webkit.org/changeset/264981&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405318.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404440</attachid>
            <date>2020-07-16 07:51:12 -0700</date>
            <delta_ts>2020-07-17 07:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200716075111.patch</filename>
            <type>text/plain</type>
            <size>115810</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyMSBAQAorMjAyMC0wNy0xNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2VudHJhbGl6ZSBoYW5kbGlu
ZyBvZiB1bmljb2RlIGVuY29kaW5nL2RlY29kaW5nIGFsb25nIHdpdGggdmFyaW91cyB0b29scwor
ICAgICAgICBmb3IgcHJpbnRpbmcgc3RyaW5ncy4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6CisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9zdHJpbmdfdXRpbHMucHk6
IEFkZGVkLgorICAgICAgICAoZW5jb2RlKTogRW5jb2RlIGEgc3RyaW5nIGFzIGJ5dGVzLgorICAg
ICAgICAoZGVjb2RlKTogRGVjb2RlIGEgYnl0ZXMgYXMgYSBzdHJpbmcuCisgICAgICAgIChvcmRp
bmFsKTogQ29udmVydCBhIG51bWJlciB0byAxc3QsIDJuZCwgM3JkLCA0dGgsIGVjdC4KKyAgICAg
ICAgKHBsdXJhbGl6ZSk6IENvbnZlcnQgYSBzdHJpbmcgdG8gaXQncyBwbHVybGFyaXplZCB2ZXJz
aW9uLCBpZiBwcm92aWRlZCBudW1iZXIgaW5kaWNhdGVzCisgICAgICAgIGl0IHNob3VsZCBiZS4K
KyAgICAgICAgKGpvaW4pOiBKb2luIGEgbGlzdCBvZiBlbGVtZW50cyBpbiBhIGh1bWFuLXJlYWRh
YmxlIGZvcm0uCisgICAgICAgIChvdXRfb2YpOiBDcmVhdGUgYSBmcmFjdGlvbiB3aGljaCB0YWtl
cyB1cCBhIGNvbnN0YW50IGFtb3VudCBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAoZWxhcHNlZCk6
IERlc2NyaWJlIHRoZSBhbW91bnQgb2YgdGltZSBlbGFwc2VkIGFzIGEgaHVtYW4tcmVhZGFibGUg
c3RyaW5nLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvdGVzdHMvc3RyaW5nX3V0aWxzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFN0
cmluZ1V0aWxzKTogVGVzdCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9hcGlfdGVzdHMvcnVubmVyLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRo
IHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4u
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAg
ICAgICByZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0
eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6IFJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weTogUmVw
bGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHk6IFJl
cGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCBy
ZW1vdmUgdW51c2VkIGltcG9ydHMKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL2dpdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAgICAgICAgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zdm4ucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0
aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJz
LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAg
ICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29t
cGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBv
cnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWls
ZGJvdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3
c3NlcnZlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRjaC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9t
X3BuZ191bml0dGVzdC5weTogRGl0dG8KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHk6IERpdHRv
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmVfbW9jay5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weTogUmVwbGFj
ZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
b3V0cHV0Y2FwdHVyZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJp
bmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1
dHRlZV91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdW5pY29kZV9jb21wYXRpYmlsaXR5LnB5OiBSZXBsYWNlZCB3aXRoIHdlYmtpdGNvcmVweS5z
dHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1v
dmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xp
bnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWls
ZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3Vu
aXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0
cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9wcmludGluZ191bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5
OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAg
ICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZl
ci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmlu
ZC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZQorICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weTogRGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5w
eTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNl
ZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191
dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6IFJlcGxh
Y2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2Vk
IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3Qu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9wcmludGVyLnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3Qvc2tpcF91bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQorICAgICAgICB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQor
ICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMsIHJlbW92ZSB1bnVzZWQKKyAgICAgICAgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3czYy93cHRfZ2l0aHViLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0
aHViX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisKIDIwMjAtMDctMTYgIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3Jl
cHldIENvcnJlY3QgdXJsIGluIHNldHVwLnB5CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18u
cHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDQgKzIx
LDYgQEAKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIGZyb20gd2Via2l0Y29yZXB5LnZlcnNpb24gaW1wb3J0IFZlcnNpb24K
LXZlcnNpb24gPSBWZXJzaW9uKDAsIDAsIDEpCitmcm9tIHdlYmtpdGNvcmVweS5zdHJpbmdfdXRp
bHMgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBVbmljb2RlSU8sIHVuaWNvZGUKKwordmVyc2lv
biA9IFZlcnNpb24oMCwgMCwgMikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvc3RyaW5nX3V0aWxzLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvc3RyaW5nX3V0aWxz
LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvc3RyaW5nX3V0aWxzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBp
bworaW1wb3J0IHN5cworCitCeXRlc0lPID0gaW8uQnl0ZXNJTworaWYgc3lzLnZlcnNpb25faW5m
byA+ICgzLCAwKToKKyAgICBTdHJpbmdJTyA9IGlvLlN0cmluZ0lPCitlbHNlOgorICAgIGZyb20g
U3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitVbmljb2RlSU8gPSBpby5TdHJpbmdJTworCit1bmlj
b2RlID0gc3RyIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSB1bmljb2RlCisKKwor
ZGVmIGVuY29kZShzdHJpbmcsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JywgdGFy
Z2V0X3R5cGU9Ynl0ZXMpOgorICAgIGlmIHR5cGUoc3RyaW5nKSA9PSB1bmljb2RlIGFuZCB0YXJn
ZXRfdHlwZSA9PSBieXRlczoKKyAgICAgICAgcmV0dXJuIHN0cmluZy5lbmNvZGUoZW5jb2Rpbmcs
IGVycm9ycz1lcnJvcnMpCisgICAgcmV0dXJuIHN0cmluZworCisKK2RlZiBkZWNvZGUoZGF0YSwg
ZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnLCB0YXJnZXRfdHlwZT11bmljb2RlKToK
KyAgICBpZiB0eXBlKGRhdGEpID09IGJ5dGVzIGFuZCB0YXJnZXRfdHlwZSA9PSB1bmljb2RlOgor
ICAgICAgICByZXR1cm4gZGF0YS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAg
cmV0dXJuIGRhdGEKKworCitkZWYgb3JkaW5hbChudW1iZXIpOgorICAgIG51bWJlciA9IGludChu
dW1iZXIpCisgICAgaWYgMTAgPCBudW1iZXIgJSAxMDAgPCAyMDoKKyAgICAgICAgcmV0dXJuICd7
fXRoJy5mb3JtYXQobnVtYmVyKQorICAgIHJldHVybiAne317fScuZm9ybWF0KAorICAgICAgICBu
dW1iZXIsIHsKKyAgICAgICAgICAgIDE6ICdzdCcsCisgICAgICAgICAgICAyOiAnbmQnLAorICAg
ICAgICAgICAgMzogJ3JkJywKKyAgICAgICAgfS5nZXQobnVtYmVyICUgMTAsICd0aCcpCisgICAg
KQorCisKK2RlZiBwbHVyYWxpemUobnVtYmVyLCBzdHJpbmcsIHBsdXJhbD1Ob25lKToKKyAgICBp
ZiBudW1iZXIgPT0gMToKKyAgICAgICAgcmV0dXJuICcxIHt9Jy5mb3JtYXQoc3RyaW5nKQorICAg
IGlmIHBsdXJhbDoKKyAgICAgICAgcmV0dXJuICd7fSB7fScuZm9ybWF0KG51bWJlciwgcGx1cmFs
KQorICAgIHJldHVybiAne30ge31zJy5mb3JtYXQobnVtYmVyLCBzdHJpbmcpCisKKworZGVmIGpv
aW4obGlzdCwgY29uanVuY3Rpb249J2FuZCcpOgorICAgIGlmIG5vdCBsaXN0OgorICAgICAgICBy
ZXR1cm4gJ05vdGhpbmcnCisgICAgaWYgbGVuKGxpc3QpID09IDE6CisgICAgICAgIHJldHVybiBs
aXN0WzBdCisgICAgcmV0dXJuICd7fSB7fSB7fScuZm9ybWF0KCcsICcuam9pbihsaXN0WzotMV0p
LCBjb25qdW5jdGlvbiwgbGlzdFstMV0pCisKKworZGVmIG91dF9vZihudW1iZXIsIGJhc2UpOgor
ICAgIG51bWJlciA9IHN0cihudW1iZXIpCisgICAgYmFzZSA9IHN0cihiYXNlKQorICAgIHJldHVy
biAnW3t9e30ve31dJy5mb3JtYXQoJyAnICogKGxlbihiYXNlKSAtIGxlbihudW1iZXIpKSwgbnVt
YmVyLCBiYXNlKQorCisKK2RlZiBlbGFwc2VkKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPD0g
MDoKKyAgICAgICAgcmV0dXJuICdubyB0aW1lJworICAgIGVsaWYgc2Vjb25kcyA8IDE6CisgICAg
ICAgIHJldHVybiAnbGVzcyB0aGFuIGEgc2Vjb25kJworCisgICAgc2Vjb25kcyA9IGludChyb3Vu
ZChzZWNvbmRzKSkKKyAgICBtaW51dGVzID0gc2Vjb25kcyAvLyA2MAorICAgIGhvdXJzID0gbWlu
dXRlcyAvLyA2MAorICAgIGRheXMgPSBob3VycyAvLyAyNAorCisgICAgZm9yY2UgPSBGYWxzZQor
ICAgIHJlc3VsdCA9ICcnCisgICAgZm9yIHZhbHVlLCBkZXNjcmlwdGlvbiBpbiBbKGRheXMsICdk
YXknKSwgKGhvdXJzICUgMjQsICdob3VyJyksIChtaW51dGVzICUgNjAsICdtaW51dGUnKV06Cisg
ICAgICAgIGlmIGZvcmNlIG9yIHZhbHVlOgorICAgICAgICAgICAgZm9yY2UgPSBUcnVlCisgICAg
ICAgICAgICByZXN1bHQgKz0gJyAnICsgcGx1cmFsaXplKHZhbHVlLCBkZXNjcmlwdGlvbikKKyAg
ICBpZiBmb3JjZToKKyAgICAgICAgcmV0dXJuIHJlc3VsdFsxOl0gKyAnIGFuZCAnICsgcGx1cmFs
aXplKHNlY29uZHMgJSA2MCwgJ3NlY29uZCcpCisgICAgcmV0dXJuIHBsdXJhbGl6ZShzZWNvbmRz
ICUgNjAsICdzZWNvbmQnKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9zdHJpbmdfdXRpbHNfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90
ZXN0cy9zdHJpbmdfdXRpbHNfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9zdHJpbmdfdXRp
bHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgoraW1wb3J0IHVuaXR0
ZXN0CisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTywgVW5pY29k
ZUlPLCB1bmljb2RlLCBzdHJpbmdfdXRpbHMKKworCitjbGFzcyBTdHJpbmdVdGlscyh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYnl0ZXNpbyhzZWxmKToKKyAgICAgICAgc3RyZWFt
ID0gQnl0ZXNJTygpCisgICAgICAgIHN0cmVhbS53cml0ZShiJ2J5dGVzIGRhdGEnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLCBiJ2J5dGVzIGRhdGEnKQorCisg
ICAgZGVmIHRlc3Rfc3RyaW5naW8oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFN0cmluZ0lPKCkK
KyAgICAgICAgc3RyZWFtLndyaXRlKCdzdHJpbmcgZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLmdldHZhbHVlKCksICdzdHJpbmcgZGF0YScpCisKKyAgICBkZWYgdGVzdF91
bmljb2RlaW8oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFVuaWNvZGVJTygpCisgICAgICAgIHN0
cmVhbS53cml0ZSh1J3VuaWNvZFx1MDBFOSBkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0uZ2V0dmFsdWUoKSwgdSd1bmljb2RcdTAwRTkgZGF0YScpCisKKyAgICBkZWYgdGVz
dF91bmljb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGUodSd1bmlj
b2RlOiBcdTAwRTknKSwgdSd1bmljb2RlOiBcdTAwRTknKQorCisgICAgZGVmIHRlc3RfZW5jb2Rl
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5lbmNvZGUodSd1
bmljb2RlOiBcdTAwRTknKSwgYid1bmljb2RlOiBceGMzXHhhOScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVuY29kZShiJ2J5dGVzIGRhdGEnKSwgYidieXRlcyBkYXRh
JykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJpbmdfdXRpbHMuZGVjb2RlKHUndW5pY29kZTogXHUwMEU5JyksIHUndW5pY29kZTogXHUw
MEU5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuZGVjb2RlKGIndW5p
Y29kZTogXHhjM1x4YTknKSwgdSd1bmljb2RlOiBcdTAwRTknKQorCisgICAgZGVmIHRlc3Rfb3Jk
aW5hbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5h
bCgwKSwgJzB0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGlu
YWwoMSksICcxc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRp
bmFsKDIpLCAnMm5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3Jk
aW5hbCgzKSwgJzNyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9y
ZGluYWwoNCksICc0dGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5v
cmRpbmFsKDUpLCAnNXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMu
b3JkaW5hbCg2KSwgJzZ0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxz
Lm9yZGluYWwoNyksICc3dGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGls
cy5vcmRpbmFsKDgpLCAnOHRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRp
bHMub3JkaW5hbCg5KSwgJzl0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0
aWxzLm9yZGluYWwoMTApLCAnMTB0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5n
X3V0aWxzLm9yZGluYWwoMTEpLCAnMTF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
aW5nX3V0aWxzLm9yZGluYWwoMTIpLCAnMTJ0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyaW5nX3V0aWxzLm9yZGluYWwoMTMpLCAnMTN0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMjEpLCAnMjFzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMjIpLCAnMjJuZCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMjMpLCAnMjNyZCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMTAxKSwgJzEwMXN0JykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgxMTEpLCAnMTExdGgnKQorCisg
ICAgZGVmIHRlc3RfcGx1cmFsaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmluZ191dGlscy5wbHVyYWxpemUoMCwgJ3NlY29uZCcpLCAnMCBzZWNvbmRzJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1cmFsaXplKDEsICdzZWNvbmQnKSwgJzEg
c2Vjb25kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1cmFsaXpl
KDIsICdzZWNvbmQnKSwgJzIgc2Vjb25kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
aW5nX3V0aWxzLnBsdXJhbGl6ZSgwLCAnbW91c2UnLCAnbWljZScpLCAnMCBtaWNlJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1cmFsaXplKDEsICdtb3VzZScsICdt
aWNlJyksICcxIG1vdXNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMu
cGx1cmFsaXplKDIsICdtb3VzZScsICdtaWNlJyksICcyIG1pY2UnKQorCisgICAgZGVmIHRlc3Rf
bGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuam9pbihb
J2ludGVnZXInLCAnc3RyaW5nJywgJ2Zsb2F0J10pLCAnaW50ZWdlciwgc3RyaW5nIGFuZCBmbG9h
dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4oWydpbnRlZ2Vy
JywgJ3N0cmluZyddKSwgJ2ludGVnZXIgYW5kIHN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4oWydpbnRlZ2VyJ10pLCAnaW50ZWdlcicpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4oW10pLCAnTm90aGluZycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4oWydpbnRlZ2VyJywgJ3N0cmlu
ZyddLCBjb25qdW5jdGlvbj0nb3InKSwgJ2ludGVnZXIgb3Igc3RyaW5nJykKKworICAgIGRlZiB0
ZXN0X291dG9mKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5v
dXRfb2YoMSwgMyksICdbMS8zXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0
aWxzLm91dF9vZigxLCAxMCksICdbIDEvMTBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJpbmdfdXRpbHMub3V0X29mKDEwLCAxMCksICdbMTAvMTBdJykKKworICAgIGRlZiB0ZXN0X2Vs
YXBzZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBz
ZWQoMCksICdubyB0aW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMu
ZWxhcHNlZCguNSksICdsZXNzIHRoYW4gYSBzZWNvbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmluZ191dGlscy5lbGFwc2VkKDEpLCAnMSBzZWNvbmQnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmluZ191dGlscy5lbGFwc2VkKDQpLCAnNCBzZWNvbmRzJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuZWxhcHNlZCg3NCksICcxIG1pbnV0ZSBhbmQg
MTQgc2Vjb25kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBz
ZWQoMyAqIDYwICogNjApLCAnMyBob3VycyAwIG1pbnV0ZXMgYW5kIDAgc2Vjb25kcycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoMjQgKiA2MCAqIDYwICsg
NjAgKiA2MCArIDQgKiA2MCArIDUpLCAnMSBkYXkgMSBob3VyIDQgbWludXRlcyBhbmQgNSBzZWNv
bmRzJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bm5lci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9ydW5uZXIucHkJ
KHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1
bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsMTEgKzI0LDEyIEBAIGltcG9ydCBvcwogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJp
bmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG1lc3NhZ2VfcG9vbAogZnJv
bSB3ZWJraXRweS5jb21tb24uaXRlcmF0aW9uX2NvbXBhdGliaWxpdHkgaW1wb3J0IGl0ZXJpdGVt
cwogZnJvbSB3ZWJraXRweS5wb3J0LnNlcnZlcl9wcm9jZXNzIGltcG9ydCBTZXJ2ZXJQcm9jZXNz
LCBfbG9nIGFzIHNlcnZlcl9wcm9jZXNzX2xvZ2dlcgogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11
bGF0ZWRfZGV2aWNlIGltcG9ydCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKIAogCiBjbGFz
cyBSdW5uZXIob2JqZWN0KToKQEAgLTE3OSwxMSArMTgwLDExIEBAIGNsYXNzIF9Xb3JrZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgICAgIGlmIHN0
ZGVycl9saW5lOgotICAgICAgICAgICAgICAgICAgICBzdGRlcnJfbGluZSA9IGRlY29kZV9mb3Io
c3RkZXJyX2xpbmUsIHN0cikKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyX2xpbmUgPSBzdHJp
bmdfdXRpbHMuZGVjb2RlKHN0ZGVycl9saW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAg
ICAgICAgICAgIHN0ZGVycl9idWZmZXIgKz0gc3RkZXJyX2xpbmUKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5wb3N0KCdsb2cnLCBvdXRwdXQ9c3RkZXJyX2xpbmVbOi0xXSkKICAgICAgICAgICAg
ICAgICBpZiBzdGRvdXRfbGluZToKLSAgICAgICAgICAgICAgICAgICAgc3Rkb3V0X2xpbmUgPSBk
ZWNvZGVfZm9yKHN0ZG91dF9saW5lLCBzdHIpCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dF9s
aW5lID0gc3RyaW5nX3V0aWxzLmRlY29kZShzdGRvdXRfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKQog
ICAgICAgICAgICAgICAgICAgICBpZiAnKipQQVNTKionIGluIHN0ZG91dF9saW5lOgogICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzID0gUnVubmVyLlNUQVRVU19QQVNTRUQKICAgICAgICAg
ICAgICAgICAgICAgZWxpZiAnKipGQUlMKionIGluIHN0ZG91dF9saW5lOgpAQCAtMjAyLDggKzIw
Myw4IEBAIGNsYXNzIF9Xb3JrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBS
dW5uZXIuU1RBVFVTX0ZBSUxFRAogCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByZW1h
aW5pbmdfc3RkZXJyID0gZGVjb2RlX2ZvcihzZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVk
X3N0ZGVycigpLCBzdHIpCi0gICAgICAgICAgICByZW1haW5pbmdfc3Rkb3V0ID0gZGVjb2RlX2Zv
cihzZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZG91dCgpLCBzdHIpCisgICAgICAg
ICAgICByZW1haW5pbmdfc3RkZXJyID0gc3RyaW5nX3V0aWxzLmRlY29kZShzZXJ2ZXJfcHJvY2Vz
cy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpLCB0YXJnZXRfdHlwZT1zdHIpCisgICAgICAgICAg
ICByZW1haW5pbmdfc3Rkb3V0ID0gc3RyaW5nX3V0aWxzLmRlY29kZShzZXJ2ZXJfcHJvY2Vzcy5w
b3BfYWxsX2J1ZmZlcmVkX3N0ZG91dCgpLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBz
ZWxmLnBvc3QoJ2xvZycsIG91dHB1dD1yZW1haW5pbmdfc3RkZXJyICsgcmVtYWluaW5nX3N0ZG91
dCkKICAgICAgICAgICAgIG91dHB1dF9idWZmZXIgPSBzdGRlcnJfYnVmZmVyICsgc3Rkb3V0X2J1
ZmZlciArIHJlbWFpbmluZ19zdGRlcnIgKyByZW1haW5pbmdfc3Rkb3V0CiAgICAgICAgICAgICBz
ZXJ2ZXJfcHJvY2Vzcy5zdG9wKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGlu
Z3MvbWFpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdz
L21haW4ucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmlu
ZGluZ3MvbWFpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEzIEBAIGltcG9ydCBq
c29uCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3Vi
cHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2Nt
LmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIAogCiBj
bGFzcyBCaW5kaW5nc1Rlc3RzOgpAQCAtNzcsNyArNzgsNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3Rz
OgogICAgICAgICAgICAgKG5hbWUsIGV4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0
X2ZpbGUpCiAgICAgICAgICAgICBpZiBleHRlbnNpb24gIT0gJy5pZGwnOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBvcy53cml0ZShpZGxfZmlsZXNfbGlzdFswXSwgZW5j
b2RlX2lmX25lY2Vzc2FyeShvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9maWxl
KSArICJcbiIpKQorICAgICAgICAgICAgb3Mud3JpdGUoaWRsX2ZpbGVzX2xpc3RbMF0sIHN0cmlu
Z191dGlscy5lbmNvZGUob3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmlsZSkg
KyAiXG4iKSkKICAgICAgICAgb3MuY2xvc2UoaWRsX2ZpbGVzX2xpc3RbMF0pCiAKICAgICAgICAg
Y21kID0gWydwZXJsJywgJy13JywKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3ByZXR0eXBhdGNoLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3ByZXR0eXBhdGNoLnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRjaC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAs
MTAgQEAgaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdGVt
cGZpbGUKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVj
ZXNzYXJ5CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtNTAsOCAr
NTIsOCBAQCBjbGFzcyBQcmV0dHlQYXRjaChvYmplY3QpOgogICAgIGRlZiBwcmV0dHlfZGlmZl9m
aWxlKHNlbGYsIGRpZmYpOgogICAgICAgICAjIERpZmZzIGNhbiBjb250YWluIG11bHRpcGxlIHRl
eHQgZmlsZXMgb2YgZGlmZmVyZW50IGVuY29kaW5ncwogICAgICAgICAjIHNvIHdlIGFsd2F5cyBk
ZWFsIHdpdGggdGhlbSBhcyBieXRlIGFycmF5cywgbm90IHVuaWNvZGUgc3RyaW5ncy4KLSAgICAg
ICAgZGlmZiA9IGVuY29kZV9pZl9uZWNlc3NhcnkoZGlmZikKLSAgICAgICAgcHJldHR5X2RpZmYg
PSBlbmNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYucHJldHR5X2RpZmYoZGlmZikpCisgICAgICAgIGRp
ZmYgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGRpZmYpCisgICAgICAgIHByZXR0eV9kaWZmID0gc3Ry
aW5nX3V0aWxzLmVuY29kZShzZWxmLnByZXR0eV9kaWZmKGRpZmYpKQogICAgICAgICBkaWZmX2Zp
bGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PSIuaHRtbCIpCiAgICAgICAg
IGRpZmZfZmlsZS53cml0ZShwcmV0dHlfZGlmZikKICAgICAgICAgZGlmZl9maWxlLmZsdXNoKCkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9w
bmcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9j
aGVja3N1bV9mcm9tX3BuZy5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weQkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTUgKzI3LDE1IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIAotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNv
ZGVfZm9yCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIGRlZiByZWFk
X2NoZWNrc3VtKGZpbGVoYW5kbGUpOgogICAgICMgV2UgZXhwZWN0IHRoZSBjb21tZW50IHRvIGJl
IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuCi0gICAgZGF0YSA9IGVuY29kZV9pZl9uZWNl
c3NhcnkoZmlsZWhhbmRsZS5yZWFkKDIwNDgpKQorICAgIGRhdGEgPSBzdHJpbmdfdXRpbHMuZW5j
b2RlKGZpbGVoYW5kbGUucmVhZCgyMDQ4KSkKICAgICBjb21tZW50X2tleSA9IGIndEVYdGNoZWNr
c3VtXHgwMCcKICAgICBjb21tZW50X3BvcyA9IGRhdGEuZmluZChjb21tZW50X2tleSkKICAgICBp
ZiBjb21tZW50X3BvcyA9PSAtMToKICAgICAgICAgcmV0dXJuCiAKICAgICBjaGVja3N1bV9wb3Mg
PSBjb21tZW50X3BvcyArIGxlbihjb21tZW50X2tleSkKLSAgICByZXR1cm4gZGVjb2RlX2Zvcihk
YXRhW2NoZWNrc3VtX3BvczpjaGVja3N1bV9wb3MgKyAzMl0sIHN0cikKKyAgICByZXR1cm4gc3Ry
aW5nX3V0aWxzLmRlY29kZShkYXRhW2NoZWNrc3VtX3BvczpjaGVja3N1bV9wb3MgKyAzMl0sIHRh
cmdldF90eXBlPXN0cikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRf
Y2hlY2tzdW1fZnJvbV9wbmdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5weQkocmV2
aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVj
a3N1bV9mcm9tX3BuZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTAg
QEAKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgcmVhZF9jaGVja3N1
bV9mcm9tX3BuZwotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBTdHJpbmdJTwogCiAKIGNsYXNzIFJlYWRDaGVja3N1bUZyb21QbmdUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3VuaWNvZGVf
Y29tcGF0aWJpbGl0eS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi91bmljb2RlX2NvbXBhdGliaWxpdHkucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3VuaWNvZGVfY29tcGF0aWJpbGl0eS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MCw0OCArMjAsMTkgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
aW1wb3J0IGlvCi1pbXBvcnQgc3lzCi0KLQotQnl0ZXNJTyA9IGlvLkJ5dGVzSU8KLWlmIHN5cy52
ZXJzaW9uX2luZm8gPiAoMywgMCk6Ci0gICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwotZWxzZToK
LSAgICBmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwotVW5pY29kZUlPID0gaW8uU3RyaW5n
SU8KLQotdW5pY29kZSA9IHN0ciBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2UgdW5p
Y29kZQotCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVW5pY29kZUlPLCBTdHJpbmdJTywgQnl0
ZXNJTywgdW5pY29kZSwgc3RyaW5nX3V0aWxzCiAKIGRlZiBlbmNvZGVfaWZfbmVjZXNzYXJ5KHZh
bHVlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgotICAgICMgSW4gUHl0aG9u
IDMsIHN0cmluZyB0eXBlcyBtdXN0IGJlIGVuY29kZWQKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSB1
bmljb2RlOgotICAgICAgICByZXR1cm4gdmFsdWUuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnM9ZXJy
b3JzKQotICAgIHJldHVybiB2YWx1ZQorICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHZh
bHVlLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKIAogCiBkZWYgZW5jb2RlX2Zv
cih2YWx1ZSwgdGFyZ2V0X3R5cGUsICoqa3dhcmdzKToKLSAgICBpZiB0YXJnZXRfdHlwZSA9PSBi
eXRlczoKLSAgICAgICAgcmV0dXJuIGVuY29kZV9pZl9uZWNlc3NhcnkodmFsdWUsICoqa3dhcmdz
KQotCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKSBhbmQgdGFyZ2V0X3R5cGUgPT0g
c3RyOgotICAgICAgICByZXR1cm4gZW5jb2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSwgKiprd2FyZ3Mp
Ci0gICAgcmV0dXJuIHZhbHVlCisgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUodmFsdWUs
IHRhcmdldF90eXBlPXRhcmdldF90eXBlLCAqKmt3YXJncykKIAogCiBkZWYgZGVjb2RlX2lmX25l
Y2Vzc2FyeSh2YWx1ZSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKToKLSAgICAj
IEluIFB5dGhvbiAyLCBzdHJpbmcgdHlwZXMgbWlnaHQgbmVlZCB0byBiZSBkZWNvZGVkCi0gICAg
aWYgdHlwZSh2YWx1ZSkgPT0gYnl0ZXM6Ci0gICAgICAgIHJldHVybiB2YWx1ZS5kZWNvZGUoZW5j
b2RpbmcsIGVycm9ycz1lcnJvcnMpCi0gICAgcmV0dXJuIHZhbHVlCisgICAgcmV0dXJuIHN0cmlu
Z191dGlscy5kZWNvZGUodmFsdWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQog
CiAKIGRlZiBkZWNvZGVfZm9yKHZhbHVlLCB0YXJnZXRfdHlwZSk6Ci0gICAgaWYgdmFsdWUgaXMg
Tm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSB0YXJnZXRf
dHlwZToKLSAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgaWYgdGFyZ2V0X3R5cGUgPT0gdW5pY29k
ZToKLSAgICAgICAgcmV0dXJuIGRlY29kZV9pZl9uZWNlc3NhcnkoYnl0ZXModmFsdWUpKQotICAg
IHJldHVybiB2YWx1ZQorICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKHZhbHVlLCB0YXJn
ZXRfdHlwZT10YXJnZXRfdHlwZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3dhdmVkaWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3dhdmVkaWZmLnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi93YXZlZGlmZi5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTEgKzIxLDkgQEAKICMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0
IHdhdmUKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBCeXRlc0lPLCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIFN0
cmluZ0lPCiAKIAogY2xhc3MgV2F2ZURpZmYob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHJldmlzaW9u
IDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5n
ZWxvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTAgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCByZQogaW1wb3J0IHRleHR3cmFwCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBT
dHJpbmdJTywgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVy
cyBpbXBvcnQgQ29tbWl0dGVyTGlzdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8sIHVuaWNvZGUKIGltcG9ydCB3ZWJraXRweS5jb21t
b24uY29uZmlnLnVybHMgYXMgY29uZmlnX3VybHMKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
Y2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NDUz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiBpbXBvcnQgdW5pdHRl
c3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQg
TW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5nZWxv
ZyBpbXBvcnQgKgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoZWNrb3V0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsNyBAQAogCiBpbXBvcnQgc3lzCiAKLWlmIHN5cy52ZXJzaW9uX2luZm8gPiAo
MywgMCk6Ci0gICAgZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQg
dXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFu
Z2VMb2csIHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZwpAQCAtMzcsNyArMzYsOSBAQCBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jb21taXRpbmZvCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0cHkuY29tbW9u
Lm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KKworaWYgc3lzLnZlcnNpb25faW5mbyA+ICgz
LCAwKToKKyAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCiAKIAogIyBUaGlzIGNsYXNz
IHJlcHJlc2VudHMgdGhlIFdlYktpdC1zcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY2hlY2tvdXQgKGxp
a2UgQ2hhbmdlTG9ncykuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9jaGVja291dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0
NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMSBAQAogIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGNvZGVjcwogaW1wb3J0IG9zCi1pbXBvcnQg
c2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQu
Y2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dFbnRyeQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuc2NtIGltcG9ydCBDb21taXRNZXNzYWdlLCBTQ01EZXRlY3RvcgpAQCAtNDIsNyArNDEs
NiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5
IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9j
ayBpbXBvcnQgTW9jawogCiAKQEAgLTM0NCw3ICszNDIsNyBAQCBjbGFzcyBDaGVja291dFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgIyBzbyB3ZSBlbmNvZGUgb3VyIHVuaWNv
ZGUgQ2hhbmdlTG9nIGRvd24gdG8gYSB1dGYtOCBzdHJlYW0uCiAgICAgICAgICAgICAjIFRoZSBD
aGFuZ2VMb2cgdXRmLTggZGVjb2Rpbmcgc2hvdWxkIGlnbm9yZSBpbnZhbGlkIGNvZGVwb2ludHMu
CiAgICAgICAgICAgICBpbnZhbGlkX3V0ZjggPSBiJ1wyNTUnCi0gICAgICAgICAgICByZXR1cm4g
ZW5jb2RlX2lmX25lY2Vzc2FyeShfY2hhbmdlbG9nMSkgKyBpbnZhbGlkX3V0ZjgKKyAgICAgICAg
ICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKF9jaGFuZ2Vsb2cxKSArIGludmFsaWRfdXRm
OAogICAgICAgICBjaGVja291dCA9IHNlbGYuX21ha2VfY2hlY2tvdXQoKQogICAgICAgICBjaGVj
a291dC5fc2NtLmNvbnRlbnRzX2F0X3JldmlzaW9uID0gbW9ja19jb250ZW50c19hdF9yZXZpc2lv
bgogICAgICAgICBlbnRyeSA9IGNoZWNrb3V0Ll9sYXRlc3RfZW50cnlfZm9yX2NoYW5nZWxvZ19h
dF9yZXZpc2lvbigiZm9vIiwgImJhciIpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5w
eQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDkgQEAKIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgYXMgZGlmZl9wYXJzZXIKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBTdHJpbmdJTwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGli
aWxpdHkgaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRp
ZmZfcGFyc2VyIGFzIGRpZmZfcGFyc2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5k
aWZmX3Rlc3RfZGF0YSBpbXBvcnQgRElGRl9URVNUX0RBVEEKIAogCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkJKHJldmlzaW9u
IDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9n
aXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE2ICsyOSwxNiBAQAogCiBpbXBvcnQgZGF0ZXRp
bWUKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKIGltcG9ydCByZQogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVk
IGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5zY20uY29tbWl0bWVzc2FnZSBpbXBvcnQgQ29tbWl0TWVzc2FnZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgU0NN
LCBjb21taXRfZXJyb3JfaGFuZGxlcgogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2Nt
LnN2biBpbXBvcnQgU1ZOUmVwb3NpdG9yeQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIGNs
YXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgICAgICBpZiBub3QgcmV2aXNpb246CiAg
ICAgICAgICAgICByZXR1cm4gZGlmZgogCi0gICAgICAgIHJldHVybiBlbmNvZGVfaWZfbmVjZXNz
YXJ5KCJTdWJ2ZXJzaW9uIFJldmlzaW9uOiAiKSArIGVuY29kZV9pZl9uZWNlc3NhcnkocmV2aXNp
b24pICsgZW5jb2RlX2lmX25lY2Vzc2FyeSgnXG4nKSArIGVuY29kZV9pZl9uZWNlc3NhcnkoZGlm
ZikKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoIlN1YnZlcnNpb24gUmV2aXNp
b246ICIpICsgc3RyaW5nX3V0aWxzLmVuY29kZShyZXZpc2lvbikgKyBzdHJpbmdfdXRpbHMuZW5j
b2RlKCdcbicpICsgc3RyaW5nX3V0aWxzLmVuY29kZShkaWZmKQogCiAgICAgZGVmIGNyZWF0ZV9w
YXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUsIGNoYW5nZWRfZmlsZXM9Tm9uZSwgZ2l0X2luZGV4
PUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJucyBhIGJ5dGUgYXJyYXkgKHN0cigpKSByZXByZXNl
bnRpbmcgdGhlIHBhdGNoIGZpbGUuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc2NtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDkgKzMzLDEwIEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBz
eXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0
dGVzdC5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTYsOSAr
NTYsOCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUK
IGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdCwgQW1iaWd1
b3VzQ29tbWl0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rp
b24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtIGltcG9ydCBTQ00sIENoZWNrb3V0TmVlZHNVcGRhdGUsIGNvbW1pdF9lcnJvcl9o
YW5kbGVyLCBBdXRoZW50aWNhdGlvbkVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtIGltcG9ydCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxl
ciwgQXV0aGVudGljYXRpb25FcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2Nt
LnN2biBpbXBvcnQgU1ZOCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3NhcnkKIAogCiAjIFdlIGNhY2hlIHRoZSBtb2NrIFNW
TiByZXBvIHNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGl0IGFnYWluIGZvciBlYWNoIGNhbGwgdG8g
YW4gU1ZOVGVzdCBvciBHaXRUZXN0IHRlc3RfIG1ldGhvZC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQkocmV2aXNpb24gMjY0
NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDEzIEBAIGltcG9ydCBzdHJpbmcKIGltcG9y
dCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lv
bgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24sIHN0cmluZ191dGlscwogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtIGltcG9ydCBBdXRoZW50aWNhdGlvbkVy
cm9yLCBTQ00sIGNvbW1pdF9lcnJvcl9oYW5kbGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcudXJscyBpbXBvcnQgc3ZuX3NlcnZlcl9ob3N0LCBzdm5fc2VydmVyX3JlYWxtCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVj
ZXNzYXJ5CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNDE2LDQg
KzQxNSw0IEBAIGNsYXNzIFNWTihTQ00sIFNWTlJlcG9zaXRvcnkpOgogCiAgICAgZGVmIHByb3Bn
ZXQoc2VsZiwgcG5hbWUsIHBhdGgpOgogICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0
KHBhdGgpCi0gICAgICAgIHJldHVybiBlbmNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYuX3J1bl9zdm4o
WydwZ2V0JywgcG5hbWUsIGJhc2VdLCBjd2Q9ZGlyKS5yc3RyaXAoIlxuIikpCisgICAgICAgIHJl
dHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHNlbGYuX3J1bl9zdm4oWydwZ2V0JywgcG5hbWUsIGJh
c2VdLCBjd2Q9ZGlyKS5yc3RyaXAoIlxuIikpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvY29tbWl0dGVycy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVycy5weQkocmV2aXNpb24gMjY0NDUzKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQCBpbXBvcnQgZm5tYXRjaAogaW1wb3J0IGpz
b24KIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywg
dW5pY29kZQorCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5lZGl0ZGlzdGFuY2UgaW1wb3J0IGVkaXRfZGlzdGFuY2UKLWZyb20gd2Via2l0cHkuY29t
bW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvciwgdW5pY29kZQogCiAKIGNsYXNzIENv
bnRyaWJ1dG9yKG9iamVjdCk6CkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9i
amVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmVtYWlsc1swXQogCiAgICAgZGVmIF9fc3RyX18o
c2VsZik6Ci0gICAgICAgIHJldHVybiBlbmNvZGVfZm9yKHUnInt9IiA8e30+Jy5mb3JtYXQodW5p
Y29kZShzZWxmLmZ1bGxfbmFtZSksIHVuaWNvZGUoc2VsZi5lbWFpbHNbMF0pKSwgc3RyKQorICAg
ICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29kZSh1JyJ7fSIgPHt9PicuZm9ybWF0KHVuaWNv
ZGUoc2VsZi5mdWxsX25hbWUpLCB1bmljb2RlKHNlbGYuZW1haWxzWzBdKSksIHRhcmdldF90eXBl
PXN0cikKIAogICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHUnInt9
IiA8e30+Jy5mb3JtYXQodW5pY29kZShzZWxmLmZ1bGxfbmFtZSksIHVuaWNvZGUoc2VsZi5lbWFp
bHNbMF0pKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3c3NlcnZl
ci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZXdz
c2VydmVyLnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvZXdzc2VydmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCwxMCBAQAog
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBv
cnQgZXdzc2VydmVyX2RlZmF1bHRfaG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lm5ldHdv
cmt0cmFuc2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNvZGUKIAogaW1wb3J0IGxvZ2dp
bmcKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9j
ay5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L3dlYl9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3Ry
aW5nSU8KIAogaW1wb3J0IHN5cwogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEv
YnVnemlsbGEucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQkod29ya2luZyBjb3B5KQpAQCAtMzksOSAr
MzksOCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdXJsbGliCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0
IGRhdGV0aW1lICAjIHVzZWQgaW4gdGltZXN0YW1wKCkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBCeXRlc0lPLCBTdHJpbmdJTywgc3RyaW5nX3V0aWxzLCB1bmljb2RlCiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8s
IHVuaWNvZGUsIGRlY29kZV9mb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5h
dHRhY2htZW50IGltcG9ydCBBdHRhY2htZW50CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVn
emlsbGEuYnVnIGltcG9ydCBCdWcKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9y
dCBjb21taXR0ZXJzCkBAIC0yOTUsNyArMjk0LDcgQEAgY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9i
amVjdCk6CiAgICAgZGVmIGlzX2ludmFsaWRfYnVnemlsbGFfZW1haWwoc2VsZiwgc2VhcmNoX3N0
cmluZyk6CiAgICAgICAgIHJldmlld19xdWV1ZV91cmwgPSAicmVxdWVzdC5jZ2k/YWN0aW9uPXF1
ZXVlJnJlcXVlc3Rlcj0lcyZwcm9kdWN0PSZ0eXBlPXJldmlldyZyZXF1ZXN0ZWU9JmNvbXBvbmVu
dD0mZ3JvdXA9cmVxdWVzdGVlIiAlIHVybGxpYi5xdW90ZShzZWFyY2hfc3RyaW5nKQogICAgICAg
ICByZXN1bHRzX3BhZ2UgPSBzZWxmLl9sb2FkX3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCi0gICAg
ICAgIHJldHVybiBib29sKHJlLnNlYXJjaCgnZGlkIG5vdCBtYXRjaCBhbnl0aGluZycsIGRlY29k
ZV9mb3IocmVzdWx0c19wYWdlLnJlYWQoKSwgc3RyKSkpCisgICAgICAgIHJldHVybiBib29sKHJl
LnNlYXJjaCgnZGlkIG5vdCBtYXRjaCBhbnl0aGluZycsIHN0cmluZ191dGlscy5kZWNvZGUocmVz
dWx0c19wYWdlLnJlYWQoKSwgdGFyZ2V0X3R5cGU9c3RyKSkpCiAKIAogY2xhc3MgQ29tbWl0UXVl
dWVGbGFnKG9iamVjdCk6CkBAIC01NjUsNyArNTY0LDcgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0
KToKICAgICAgICAgICAgICMgSWYgdGhlIHJlc3VsdGluZyBwYWdlIGhhcyBhIHRpdGxlLCBhbmQg
aXQgY29udGFpbnMgdGhlIHdvcmQKICAgICAgICAgICAgICMgImludmFsaWQiIGFzc3VtZSBpdCdz
IHRoZSBsb2dpbiBmYWlsdXJlIHBhZ2UuCiAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgcmUuc2Vh
cmNoKGInSW52YWxpZCcsIG1hdGNoLmdyb3VwKDEpLCByZS5JR05PUkVDQVNFKToKLSAgICAgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UgPSAiQnVnemlsbGEgbG9naW4gZmFpbGVkOiB7fSIuZm9ybWF0
KGRlY29kZV9mb3IobWF0Y2guZ3JvdXAoMSksIHN0cikpCisgICAgICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlID0gIkJ1Z3ppbGxhIGxvZ2luIGZhaWxlZDoge30iLmZvcm1hdChzdHJpbmdfdXRpbHMu
ZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1zdHIpKQogICAgICAgICAgICAgICAg
ICMgcmFpc2UgYW4gZXhjZXB0aW9uIG9ubHkgaWYgdGhpcyB3YXMgdGhlIGxhc3QgYXR0ZW1wdAog
ICAgICAgICAgICAgICAgIGlmIGF0dGVtcHRzIDwgNToKICAgICAgICAgICAgICAgICAgICAgX2xv
Zy5lcnJvcihlcnJvck1lc3NhZ2UpCkBAIC02NDAsNyArNjM5LDcgQEAgY2xhc3MgQnVnemlsbGEo
b2JqZWN0KToKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRf
aWRfZnJvbV9hZGRfcGF0Y2hfdG9fYnVnX3Jlc3BvbnNlKHJlc3BvbnNlX2h0bWwpOgotICAgICAg
ICByZXNwb25zZV9odG1sID0gZGVjb2RlX2ZvcihyZXNwb25zZV9odG1sLCBzdHIpCisgICAgICAg
IHJlc3BvbnNlX2h0bWwgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHJlc3BvbnNlX2h0bWwsIHRhcmdl
dF90eXBlPXN0cikKICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJzx0aXRsZT5BdHRhY2htZW50
ICg/UDxhdHRhY2htZW50X2lkPlxkKykgYWRkZWQgdG8gQnVnIFxkKzwvdGl0bGU+JywgcmVzcG9u
c2VfaHRtbCkKICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2guZ3Jv
dXAoJ2F0dGFjaG1lbnRfaWQnKQpAQCAtNjg0LDcgKzY4Myw3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9i
amVjdCk6CiAKICAgICAjIEZJWE1FOiBUaGVyZSBoYXMgdG8gYmUgYSBtb3JlIGNvbmNpc2Ugd2F5
IHRvIHdyaXRlIHRoaXMgbWV0aG9kLgogICAgIGRlZiBfY2hlY2tfY3JlYXRlX2J1Z19yZXNwb25z
ZShzZWxmLCByZXNwb25zZV9odG1sKToKLSAgICAgICAgcmVzcG9uc2VfaHRtbCA9IGRlY29kZV9m
b3IocmVzcG9uc2VfaHRtbCwgc3RyKQorICAgICAgICByZXNwb25zZV9odG1sID0gc3RyaW5nX3V0
aWxzLmRlY29kZShyZXNwb25zZV9odG1sLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIG1hdGNo
ID0gcmUuc2VhcmNoKCc8dGl0bGU+QnVnICg/UDxidWdfaWQ+XGQrKSBTdWJtaXR0ZWRbXjxdKjwv
dGl0bGU+JywgcmVzcG9uc2VfaHRtbCkKICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2guZ3JvdXAoJ2J1Z19pZCcpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDE1ICsyNywxNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBz
eXMKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8K
KwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCB1cmxzCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgUmV2aWV3ZXIsIENvbW1pdHRlciwgQ29u
dHJpYnV0b3IsIENvbW1pdHRlckxpc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC53ZWJfbW9j
ayBpbXBvcnQgTW9ja0Jyb3dzZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5i
dWd6aWxsYSBpbXBvcnQgQnVnemlsbGEsIEJ1Z3ppbGxhUXVlcmllcywgQ29tbWl0UXVldWVGbGFn
LCBFZGl0VXNlcnNQYXJzZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0
dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVh
dXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
Lm1vY2sgaW1wb3J0IE1vY2sKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2J1aWxkYm90L2J1aWxkYm90LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQkocmV2aXNpb24gMjY0NDUzKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1w
b3J0IGpzb24KLWltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQg
dXJsbGliCisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUK
IAogaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBhcyBjb25maWdfdXJscwogZnJv
bSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCkBAIC00MCw3ICs0MCw2
IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5sYXlvdXR0ZXN0cmVzdWwKIGZyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlv
bgogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnJlZ3Jlc3Npb253aW5kb3cgaW1wb3J0IFJlZ3Jl
c3Npb25XaW5kb3cKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQg
Z2V0X2xvZ2dlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBkZWNvZGVfZm9yLCB1bmljb2RlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2lu
c3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0
eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiAKQEAgLTUyLDcgKzUxLDYgQEAg
ZWxzZToKICAgICBmcm9tIHVybGxpYjIgaW1wb3J0IEhUVFBFcnJvciwgcXVvdGUsIFVSTEVycm9y
LCB1cmxvcGVuCiAKIAotCiBfbG9nID0gZ2V0X2xvZ2dlcihfX2ZpbGVfXykKIAogCkBAIC0zMTks
OCArMzE3LDggQEAgY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToKICAgICAgICAgICAgICMgRklYTUU6
IFdlIHRyZWF0IHNsYXZlIGxvc3QgYXMgZ3JlZW4gZXZlbiB0aG91Z2ggaXQgaXMgbm90IHRvCiAg
ICAgICAgICAgICAjIHdvcmsgYXJvdW5kIHRoZSBRdHMgYm90IGJlaW5nIG9uIGEgYnJva2VuIGlu
dGVybmV0IGNvbm5lY3Rpb24uCiAgICAgICAgICAgICAjIFRoZSByZWFsIGZpeCBpcyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwOTkKLSAgICAgICAgICAgIGJ1aWxk
ZXJbJ2lzX2dyZWVuJ10gPSBub3QgcmUuc2VhcmNoKCdmYWlsJywgZGVjb2RlX2ZvcihjZWxsLnJl
bmRlckNvbnRlbnRzKCksIHN0cikpIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wocmUuc2VhcmNoKCdsb3N0JywgZGVjb2RlX2ZvcihjZWxsLnJlbmRlckNvbnRlbnRz
KCksIHN0cikpKQorICAgICAgICAgICAgYnVpbGRlclsnaXNfZ3JlZW4nXSA9IG5vdCByZS5zZWFy
Y2goJ2ZhaWwnLCBzdHJpbmdfdXRpbHMuZGVjb2RlKGNlbGwucmVuZGVyQ29udGVudHMoKSwgdGFy
Z2V0X3R5cGU9c3RyKSkgb3IgXAorICAgICAgICAgICAgICAgIGJvb2wocmUuc2VhcmNoKCdsb3N0
Jywgc3RyaW5nX3V0aWxzLmRlY29kZShjZWxsLnJlbmRlckNvbnRlbnRzKCksIHRhcmdldF90eXBl
PXN0cikpKQogCiAgICAgICAgICAgICBzdGF0dXNfbGlua19yZWdleHAgPSByImJ1aWxkZXJzLyg/
UDxidWlsZGVyX25hbWU+LiopL2J1aWxkcy8oP1A8YnVpbGRfbnVtYmVyPlxkKykiCiAgICAgICAg
ICAgICBsaW5rX21hdGNoID0gcmUubWF0Y2goc3RhdHVzX2xpbmtfcmVnZXhwLCBzdGF0dXNfbGlu
a1snaHJlZiddKQpAQCAtMzM2LDcgKzMzNCw3IEBAIGNsYXNzIEJ1aWxkQm90KG9iamVjdCk6CiAK
ICAgICBkZWYgX3BhcnNlX2N1cnJlbnRfYnVpbGRfY2VsbChzZWxmLCBidWlsZGVyLCBjZWxsKToK
ICAgICAgICAgIyBDb252ZXJ0IHJlbmRlcmVkIGNvbnRlbnRzIHRvIG5hdGl2ZSBzdHJpbmcKLSAg
ICAgICAgcmVuZGVyZWQgPSBkZWNvZGVfZm9yKGNlbGwucmVuZGVyQ29udGVudHMoKSwgc3RyKQor
ICAgICAgICByZW5kZXJlZCA9IHN0cmluZ191dGlscy5kZWNvZGUoY2VsbC5yZW5kZXJDb250ZW50
cygpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICAgICAgIyBCZWF1dGlmdWxTb3VwIGFuZCBiczQg
cmVuZGVyIGRpZmZlcmVudGx5CiAgICAgICAgIGlmICc8YnIvPicgaW4gcmVuZGVyZWQ6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Fi
c3RyYWN0ZXhlY3V0aXZlLnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDggKzIzLDkgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29t
bW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKIAogY2xhc3MgQWJzdHJhY3RFeGVjdXRp
dmUob2JqZWN0KToKIApAQCAtMTAxLDEzICsxMDIsMTMgQEAgY2xhc3MgQWJzdHJhY3RFeGVjdXRp
dmUob2JqZWN0KToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIF9zdHJpbmdpZnlfYXJncyhzZWxm
LCBhcmdzKToKLSAgICAgICAgcmV0dXJuIG1hcCh1bmljb2RlX2NvbXBhdGliaWxpdHkudW5pY29k
ZSwgYXJncykKKyAgICAgICAgcmV0dXJuIG1hcCh1bmljb2RlLCBhcmdzKQogCiAgICAgZGVmIGNv
bW1hbmRfZm9yX3ByaW50aW5nKHNlbGYsIGFyZ3MpOgogICAgICAgICAiIiJSZXR1cm5zIGEgcHJp
bnQtcmVhZHkgc3RyaW5nIHJlcHJlc2VudGluZyBjb21tYW5kIGFyZ3MuCiAgICAgICAgIFRoZSBz
dHJpbmcgc2hvdWxkIGJlIGNvcHkvcGFzdGUgcmVhZHkgZm9yIGV4ZWN1dGlvbiBpbiBhIHNoZWxs
LiIiIgogICAgICAgICBhcmdzID0gc2VsZi5fc3RyaW5naWZ5X2FyZ3MoYXJncykKLSAgICAgICAg
cmV0dXJuIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KHVuaWNvZGVf
Y29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KCcgJy5qb2luKGFyZ3MpLCAndW5pY29k
ZV9lc2NhcGUnKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5kZWNvZGUoc3RyaW5nX3V0
aWxzLmVuY29kZSgnICcuam9pbihhcmdzKSwgZW5jb2Rpbmc9J3VuaWNvZGVfZXNjYXBlJykpCiAK
ICAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgY3dkPU5vbmUsIGVudj1Ob25lLCBpbnB1
dD1Ob25lLCBzdGRvdXQ9Tm9uZSwgZXJyb3JfaGFuZGxlcj1Ob25lLCBpZ25vcmVfZXJyb3JzPUZh
bHNlLAogICAgICAgICByZXR1cm5fZXhpdF9jb2RlPUZhbHNlLCByZXR1cm5fc3RkZXJyPVRydWUs
IGRlY29kZV9vdXRwdXQ9VHJ1ZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vY3Jhc2hsb2dzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAgaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHJlCiAKLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxp
dHkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgQ3Jhc2hM
b2dzKG9iamVjdCk6CiAgICAgICAgIGZvciBwYXRoIGluIHJldmVyc2VkKHNvcnRlZChsb2dzKSk6
CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgbm90IG5ld2VyX3RoYW4gb3Ig
c2VsZi5faG9zdC5maWxlc3lzdGVtLm10aW1lKHBhdGgpID4gbmV3ZXJfdGhhbjoKLSAgICAgICAg
ICAgICAgICAgICAgbG9nX2ZpbGUgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lmX25l
Y2Vzc2FyeShzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKSwgJ2Fz
Y2lpJywgJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgICAgIGxvZ19maWxlID0gc3RyaW5nX3V0
aWxzLmRlY29kZShzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKSwg
ZW5jb2Rpbmc9J2FzY2lpJywgZXJyb3JzPSdpZ25vcmUnKQogICAgICAgICAgICAgICAgICAgICBt
YXRjaCA9IHNlbGYuR0xPQkFMX1BJRF9SRUdFWC5zZWFyY2gobG9nX2ZpbGUpCiAgICAgICAgICAg
ICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW50KG1hdGNo
Lmdyb3VwKCdwaWQnKSkgPT0gcGlkOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hs
b2dzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTIgQEAKIAogaW1w
b3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5
c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1w
b3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9j
b21wYXRpYmlsaXR5CiAKICMgTmVlZGVkIHRvIHN1cHBvcnQgV2luZG93cyBwb3J0IHRlc3RzCiBm
cm9tIHdlYmtpdHB5LnBvcnQud2luIGltcG9ydCBXaW5Qb3J0CkBAIC0yOTksNyArMzAwLDcgQEAg
Y2xhc3MgQ3Jhc2hMb2dzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZmls
ZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVy
VHJlZV8yMDExLTA2LTEzLTE1MDcyMl9xdWFkemVuLmNyYXNoJ10gPSBzZWxmLm90aGVyX3Byb2Nl
c3NfbW9ja19jcmFzaF9yZXBvcnQKICAgICAgICAgc2VsZi5maWxlc1snL1VzZXJzL21vY2svTGli
cmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUw
NzIzX3F1YWR6ZW4uY3Jhc2gnXSA9IHNlbGYubWlzZm9ybWF0dGVkX21vY2tfY3Jhc2hfcmVwb3J0
CiAKLSAgICAgICAgc2VsZi5maWxlcyA9IHtrZXk6IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNv
ZGVfaWZfbmVjZXNzYXJ5KHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmZpbGVzLml0ZW1z
KCl9CisgICAgICAgIHNlbGYuZmlsZXMgPSB7a2V5OiBzdHJpbmdfdXRpbHMuZW5jb2RlKHZhbHVl
KSBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmZpbGVzLml0ZW1zKCl9CiAKICAgICAgICAgc2VsZi5m
aWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oc2VsZi5maWxlcykKICAgICAgICAgY3Jhc2hfbG9n
cyA9IENyYXNoTG9ncyhNb2NrU3lzdGVtSG9zdChmaWxlc3lzdGVtPXNlbGYuZmlsZXN5c3RlbSks
IENyYXNoTG9nc1Rlc3QuREFSV0lOX01PQ0tfQ1JBU0hfRElSRUNUT1JZKQpAQCAtMzE3LDcgKzMx
OCw3IEBAIGNsYXNzIENyYXNoTG9nc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihhbGxfbG9ncyksIDgpCiAKICAgICAgICAgZm9yIHRlc3QsIGNy
YXNoX2xvZyBpbiBhbGxfbG9ncy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNyYXNoX2xvZyBpbiBbdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3Nhcnko
dmFsdWUpIGZvciB2YWx1ZSBpbiBzZWxmLmZpbGVzLnZhbHVlcygpXSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShjcmFzaF9sb2cgaW4gW3N0cmluZ191dGlscy5kZWNvZGUodmFsdWUpIGZv
ciB2YWx1ZSBpbiBzZWxmLmZpbGVzLnZhbHVlcygpXSkKICAgICAgICAgICAgIGlmIHRlc3Quc3Bs
aXQoJy0nKVswXSAhPSAnU2FuZGJveCc6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHRlc3QgPT0gIlVua25vd24iIG9yIGludCh0ZXN0LnNwbGl0KCItIilbMV0pIGluIHJhbmdlKDI4
NTI3LCAyODUzMSkpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9leGVjdXRpdmUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2V4ZWN1dGl2ZS5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAt
MzYsOSArMzYsMTAgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1l
CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTywgc3RyaW5nX3V0aWxzLCB1bmlj
b2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5hYnN0cmFjdGV4ZWN1dGl2ZSBpbXBv
cnQgQWJzdHJhY3RFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXR0
ZWUgaW1wb3J0IFRlZQotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0
aWJpbGl0eQogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTcxLDcg
KzcyLDcgQEAgY2xhc3MgU2NyaXB0RXJyb3IoRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdSIlc1xuXG5MYXN0ICVzIGNoYXJhY3RlcnMgb2Ygb3V0cHV0OlxuJXMiICUgXAogICAg
ICAgICAgICAgICAgICAgICAoc2VsZiwgb3V0cHV0X2xpbWl0LCBzZWxmLm91dHB1dFstb3V0cHV0
X2xpbWl0Ol0pCiAgICAgICAgICAgICByZXR1cm4gdSIlc1xuXG4lcyIgJSAoc2VsZiwgc2VsZi5v
dXRwdXQpCi0gICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhdGliaWxpdHkudW5pY29kZShzZWxm
KQorICAgICAgICByZXR1cm4gdW5pY29kZShzZWxmKQogCiAgICAgZGVmIGNvbW1hbmRfbmFtZShz
ZWxmKToKICAgICAgICAgY29tbWFuZF9wYXRoID0gc2VsZi5zY3JpcHRfYXJncwpAQCAtMTI3LDcg
KzEyOCw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgICAg
ICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGltcHJvdmVkIG5vdCB0byBmbGF0dGVuIG91dHB1dCB0
byBzdGRvdXQuCiAgICAgICAgICAgICB3aGlsZSBjaGlsZF9wcm9jZXNzLnBvbGwoKSBpcyBOb25l
OgogICAgICAgICAgICAgICAgIG91dHB1dF9saW5lID0gY2hpbGRfcHJvY2Vzcy5zdGRvdXQucmVh
ZGxpbmUoKQotICAgICAgICAgICAgICAgIHRlZWRfb3V0cHV0LndyaXRlKHVuaWNvZGVfY29tcGF0
aWJpbGl0eS5kZWNvZGVfZm9yKG91dHB1dF9saW5lLCBzdHIpKQorICAgICAgICAgICAgICAgIHRl
ZWRfb3V0cHV0LndyaXRlKHN0cmluZ191dGlscy5kZWNvZGUob3V0cHV0X2xpbmUsIHRhcmdldF90
eXBlPXN0cikpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGRfcHJvY2Vzcy5wb2xsKCkKIAogICAg
ICMgRklYTUU6IFJlbW92ZSB0aGlzIGRlcHJlY2F0ZWQgbWV0aG9kIGFuZCBtb3ZlIGNhbGxlcnMg
dG8gcnVuX2NvbW1hbmQuCkBAIC0xMzcsNyArMTM4LDcgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3Ry
YWN0RXhlY3V0aXZlKToKICAgICAjIGJ1dCBzdGlsbCBoYXZlIHRoZSBvdXRwdXQgdG8gc3R1ZmYg
aW50byBhIGxvZyBmaWxlLgogICAgIGRlZiBydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZiwgYXJn
cywgcXVpZXQ9RmFsc2UsIGRlY29kZV9vdXRwdXQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAj
IENhY2hlIHRoZSBjaGlsZCdzIG91dHB1dCBsb2NhbGx5IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBl
cnJvciByZXBvcnRzLgotICAgICAgICBjaGlsZF9vdXRfZmlsZSA9IHVuaWNvZGVfY29tcGF0aWJp
bGl0eS5TdHJpbmdJTygpCisgICAgICAgIGNoaWxkX291dF9maWxlID0gU3RyaW5nSU8oKQogICAg
ICAgICB0ZWVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBp
ZiBxdWlldDoKQEAgLTE1Myw5ICsxNTQsOSBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVj
dXRpdmUpOgogICAgICAgICBjaGlsZF9vdXRfZmlsZS5jbG9zZSgpCiAKICAgICAgICAgaWYgZGVj
b2RlX291dHB1dDoKLSAgICAgICAgICAgIGNoaWxkX291dHB1dCA9IHVuaWNvZGVfY29tcGF0aWJp
bGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KGNoaWxkX291dHB1dCwgc2VsZi5fY2hpbGRfcHJvY2Vz
c19lbmNvZGluZygpKQorICAgICAgICAgICAgY2hpbGRfb3V0cHV0ID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShjaGlsZF9vdXRwdXQsIGVuY29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2Rpbmco
KSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNoaWxkX291dHB1dCA9IHVuaWNvZGVfY29t
cGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KGNoaWxkX291dHB1dCwgc2VsZi5fY2hpbGRf
cHJvY2Vzc19lbmNvZGluZygpKQorICAgICAgICAgICAgY2hpbGRfb3V0cHV0ID0gc3RyaW5nX3V0
aWxzLmVuY29kZShjaGlsZF9vdXRwdXQsIGVuY29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5j
b2RpbmcoKSkKIAogICAgICAgICBpZiBleGl0X2NvZGU6CiAgICAgICAgICAgICByYWlzZSBTY3Jp
cHRFcnJvcihzY3JpcHRfYXJncz1hcmdzLApAQCAtMzA2LDcgKzMwNyw3IEBAIGNsYXNzIEV4ZWN1
dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIHNv
bWUgY2FzZXMgdGhlIGxpbmUgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUKICAgICAgICAgICAgICAg
ICAgICAgICAgICMgbGVhZGluZyB3aGl0ZS1zcGFjZXMsIHNvIHN0cmlwIGl0IGJlZm9yZSBzcGxp
dC4KICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgcHJvY2Vzc19uYW1lID0gbGluZS5zdHJp
cCgpLnNwbGl0KGInICcsIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzX25h
bWVfZmlsdGVyKHVuaWNvZGVfY29tcGF0aWJpbGl0eS5kZWNvZGVfZm9yKHByb2Nlc3NfbmFtZSwg
c3RyKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzX25hbWVfZmlsdGVyKHN0
cmluZ191dGlscy5kZWNvZGUocHJvY2Vzc19uYW1lLCB0YXJnZXRfdHlwZT1zdHIpKToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nX3BpZHMuYXBwZW5kKGludChwaWQpKQogICAg
ICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzcwpAQCAtMzc0LDcgKzM3NSw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFj
dEV4ZWN1dGl2ZSk6CiAgICAgICAgICMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzUyOAogICAgICAgICAjIGZvciBhbiBleGFtcGxlIG9mIGEgcmVncmVzaW9u
IGNhdXNlZCBieSBwYXNzaW5nIGEgdW5pY29kZSBzdHJpbmcgZGlyZWN0bHkuCiAgICAgICAgICMg
RklYTUU6IFdlIG1heSBuZWVkIHRvIGVuY29kZSBkaWZmZXJlbnRseSBvbiBkaWZmZXJlbnQgcGxh
dGZvcm1zLgotICAgICAgICBpbnB1dCA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZf
bmVjZXNzYXJ5KGlucHV0LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAg
IGlucHV0ID0gc3RyaW5nX3V0aWxzLmVuY29kZShpbnB1dCwgZW5jb2Rpbmc9c2VsZi5fY2hpbGRf
cHJvY2Vzc19lbmNvZGluZygpKQogICAgICAgICByZXR1cm4gKHNlbGYuUElQRSwgaW5wdXQpCiAK
ICAgICAjIEZJWE1FOiBydW5fYW5kX3Rocm93X2lmX2ZhaWwgc2hvdWxkIGJlIG1lcmdlZCBpbnRv
IHRoaXMgbWV0aG9kLgpAQCAtNDA3LDExICs0MDgsMTEgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3Ry
YWN0RXhlY3V0aXZlKToKICAgICAgICAgICAgIGlmIG5vdCBzdHJpbmdfdG9fY29tbXVuaWNhdGU6
CiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCiAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNh
dGUodW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nhcnkoc3RyaW5nX3RvX2Nv
bW11bmljYXRlLCAndXRmLTgnKSlbMF0KKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNz
LmNvbW11bmljYXRlKHN0cmluZ191dGlscy5lbmNvZGUoc3RyaW5nX3RvX2NvbW11bmljYXRlLCBl
bmNvZGluZz0ndXRmLTgnKSlbMF0KIAogICAgICAgICAgICAgIyBydW5fY29tbWFuZCBhdXRvbWF0
aWNhbGx5IGRlY29kZXMgdG8gdW5pY29kZSgpIGFuZCBjb252ZXJ0cyBDUkxGIHRvIExGIHVubGVz
cyBleHBsaWNpdGx5IHRvbGQgbm90IHRvLgogICAgICAgICAgICAgaWYgZGVjb2RlX291dHB1dDoK
LSAgICAgICAgICAgICAgICBvdXRwdXQgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lm
X25lY2Vzc2FyeShvdXRwdXQsIHNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkucmVwbGFj
ZSgnXHJcbicsICdcbicpCisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShvdXRwdXQsIGVuY29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkucmVw
bGFjZSgnXHJcbicsICdcbicpCiAKICAgICAgICAgICAgICMgd2FpdCgpIGlzIG5vdCB0aHJlYWRz
YWZlIGFuZCBjYW4gdGhyb3cgT1NFcnJvciBkdWUgdG86CiAgICAgICAgICAgICAjIGh0dHA6Ly9i
dWdzLnB5dGhvbi5vcmcvaXNzdWUxNzMxNzE3CkBAIC00NjQsMTEgKzQ2NSwxMSBAQCBjbGFzcyBF
eGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgIGRlZiBfZW5jb2RlX2FyZ3VtZW50X2lm
X25lZWRlZChzZWxmLCBhcmd1bWVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfZW5j
b2RlX2NoaWxkX3Byb2Nlc3NfYXJndW1lbnRzKCk6CiAgICAgICAgICAgICByZXR1cm4gYXJndW1l
bnQKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNz
YXJ5KGFyZ3VtZW50LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgIHJl
dHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKGFyZ3VtZW50LCBlbmNvZGluZz1zZWxmLl9jaGlsZF9w
cm9jZXNzX2VuY29kaW5nKCkpCiAKICAgICBkZWYgX3N0cmluZ2lmeV9hcmdzKHNlbGYsIGFyZ3Mp
OgogICAgICAgICAjIFBvcGVuIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFyZ3MgYXJlIG5v
bi1zdHJpbmdzIChsaWtlIGludCgpKQotICAgICAgICBzdHJpbmdfYXJncyA9IG1hcCh1bmljb2Rl
X2NvbXBhdGliaWxpdHkudW5pY29kZSwgYXJncykKKyAgICAgICAgc3RyaW5nX2FyZ3MgPSBtYXAo
dW5pY29kZSwgYXJncykKICAgICAgICAgIyBUaGUgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZiBQ
b3BlbiBjYW5ub3QgaGFuZGxlIHVuaWNvZGUgc3RyaW5ncy4gOigKICAgICAgICAgcmV0dXJuIG1h
cChzZWxmLl9lbmNvZGVfYXJndW1lbnRfaWZfbmVlZGVkLCBzdHJpbmdfYXJncykKIApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmVfbW9jay5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw4IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiAKLWZyb20gd2Via2l0cHkuY29tbW9u
LnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgZGVjb2RlX2ZvciwgZW5jb2Rl
X2lmX25lY2Vzc2FyeSwgdW5pY29kZQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8s
IHN0cmluZ191dGlscywgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCkBAIC0zOCw4ICszOSw4IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIGNsYXNzIE1vY2tQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0
ZG91dD0nTU9DSyBTVERPVVRcbicsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYucGlkID0gNDIK
LSAgICAgICAgc2VsZi5zdGRvdXQgPSBCeXRlc0lPKGVuY29kZV9pZl9uZWNlc3Nhcnkoc3Rkb3V0
KSkKLSAgICAgICAgc2VsZi5zdGRlcnIgPSBCeXRlc0lPKGVuY29kZV9pZl9uZWNlc3Nhcnkoc3Rk
ZXJyKSkKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBCeXRlc0lPKHN0cmluZ191dGlscy5lbmNvZGUo
c3Rkb3V0KSkKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBCeXRlc0lPKHN0cmluZ191dGlscy5lbmNv
ZGUoc3RkZXJyKSkKICAgICAgICAgc2VsZi5zdGRpbiA9IEJ5dGVzSU8oKQogICAgICAgICBzZWxm
LnJldHVybmNvZGUgPSAwCiAgICAgICAgIHNlbGYuX2lzX3J1bm5pbmcgPSBGYWxzZQpAQCAtMTM4
LDcgKzEzOSw3IEBAIGNsYXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBlbnZfc3RyaW5nID0gIiwgZW52PXsiICsgZW52X3N0cmluZyArICJ9IgogICAgICAgICAgICAg
aW5wdXRfc3RyaW5nID0gIiIKICAgICAgICAgICAgIGlmIGlucHV0OgotICAgICAgICAgICAgICAg
IGlucHV0X3N0cmluZyA9ICIsIGlucHV0PSVzIiAlIGRlY29kZV9mb3IoaW5wdXQsIHN0cikKKyAg
ICAgICAgICAgICAgICBpbnB1dF9zdHJpbmcgPSAiLCBpbnB1dD0lcyIgJSBzdHJpbmdfdXRpbHMu
ZGVjb2RlKGlucHV0LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBfbG9nLmluZm8oIk1P
Q0sgcnVuX2NvbW1hbmQ6ICVzLCBjd2Q9JXMlcyVzIiAlIChhcmdzLCBjd2QsIGVudl9zdHJpbmcs
IGlucHV0X3N0cmluZykpCiAgICAgICAgIG91dHB1dCA9ICJNT0NLIG91dHB1dCBvZiBjaGlsZCBw
cm9jZXNzIgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDQ1MykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1w
b3J0IG9zCi1pbXBvcnQgZXJybm8KIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBp
bXBvcnQgc3lzCkBAIC00Niw3ICs0NSw4IEBAIGlmIHRoaXJkX3BhcnR5X3B5IG5vdCBpbiBzeXMu
cGF0aDoKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhl
Y3V0aXZlLCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9y
dCB1bmljb2RlX2NvbXBhdGliaWxpdHkKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscwogCiAKIGNsYXNzIFNjcmlwdEVycm9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBA
IC0xMzksMTEgKzEzOSwxMSBAQCBjbGFzcyBFeGVjdXRpdmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgIGVuY29kaW5nID0gJ21iY3MnCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBlbmNvZGluZyA9ICd1dGYtOCcKLSAgICAgICAgZW5jb2RlZF90b3IgPSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeSh1bmljb2RlX3Rvcl9pbnB1dCwgZW5jb2Rp
bmcpCisgICAgICAgIGVuY29kZWRfdG9yID0gc3RyaW5nX3V0aWxzLmVuY29kZSh1bmljb2RlX3Rv
cl9pbnB1dCwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgICAgICMgT24gV2luZG93cywgd2UgZXhw
ZWN0IHRoZSB1bmljb2RlLT5tYmNzLT51bmljb2RlIHJvdW5kdHJpcCB0byBiZQogICAgICAgICAj
IGxvc3N5LiBPbiBvdGhlciBwbGF0Zm9ybXMsIHdlIGV4cGVjdCBhIGxvc3NsZXNzIHJvdW5kdHJp
cC4KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAg
ICAgdW5pY29kZV90b3Jfb3V0cHV0ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9u
ZWNlc3NhcnkoZW5jb2RlZF90b3IsIGVuY29kaW5nKQorICAgICAgICAgICAgdW5pY29kZV90b3Jf
b3V0cHV0ID0gc3RyaW5nX3V0aWxzLmRlY29kZShlbmNvZGVkX3RvciwgZW5jb2Rpbmc9ZW5jb2Rp
bmcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSB1bmlj
b2RlX3Rvcl9pbnB1dAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGlt
ZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRl
Y29kZV9pZl9uZWNlc3NhcnksIGVuY29kZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBz
dHJpbmdfdXRpbHMKIAogCiBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CkBAIC0yMjcsNyArMjI3
LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAgZGVmIHdyaXRlX2JpbmFyeV9m
aWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3Yicp
IGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGVuY29kZV9mb3IoY29udGVudHMsIGJ5dGVzKSkK
KyAgICAgICAgICAgIGYud3JpdGUoc3RyaW5nX3V0aWxzLmVuY29kZShjb250ZW50cywgdGFyZ2V0
X3R5cGU9Ynl0ZXMpKQogCiAgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNlbGYs
IHBhdGgsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgICMgTm90ZTogVGhlcmUgYXBwZWFycyB0
byBiZSBhbiBpc3N1ZSB3aXRoIHRoZSByZXR1cm5lZCBmaWxlIG9iamVjdHMKQEAgLTI1Nyw3ICsy
NTcsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAKICAgICAgICAgVGhlIGZpbGUgaXMg
d3JpdHRlbiBlbmNvZGVkIGFzIFVURi04IHdpdGggbm8gQk9NLiIiIgogICAgICAgICB3aXRoIGNv
ZGVjcy5vcGVuKHBhdGgsICd3JywgJ3V0Zi04JywgZXJyb3JzPWVycm9ycykgYXMgZjoKLSAgICAg
ICAgICAgIGYud3JpdGUoZGVjb2RlX2lmX25lY2Vzc2FyeShjb250ZW50cywgZXJyb3JzPWVycm9y
cykpCisgICAgICAgICAgICBmLndyaXRlKHN0cmluZ191dGlscy5kZWNvZGUoY29udGVudHMsIGVy
cm9ycz1lcnJvcnMpKQogCiAgICAgZGVmIHNoYTEoc2VsZiwgcGF0aCk6CiAgICAgICAgIGNvbnRl
bnRzID0gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkJKHJl
dmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCw4IEBAIGltcG9y
dCBlcnJubwogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3lz
CiAKLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IFVuaWNvZGVJTywgc3RyaW5nX3V0aWxzCiAKIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgc2VwID0gJy8nCkBAIC00OCw3ICs0Niw3IEBAIGNsYXNzIE1vY2tGaWxlU3lz
dGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgdmFsdWUgb2YgTm9uZSBpcyB1c2VkIHRvIGlu
ZGljYXRlIHRoYXQgdGhlIGZpbGUgc2hvdWxkCiAgICAgICAgICAgICAgICAgbm90IGV4aXN0Lgog
ICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5maWxlcyA9IHtuYW1lOiB1bmljb2RlX2NvbXBhdGli
aWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShjb250ZW50cykgZm9yIG5hbWUsIGNvbnRlbnRzIGlu
IChmaWxlcyBvciB7fSkuaXRlbXMoKX0KKyAgICAgICAgc2VsZi5maWxlcyA9IHtuYW1lOiBzdHJp
bmdfdXRpbHMuZW5jb2RlKGNvbnRlbnRzKSBmb3IgbmFtZSwgY29udGVudHMgaW4gKGZpbGVzIG9y
IHt9KS5pdGVtcygpfQogICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXMgPSB7fQogICAgICAgICBz
ZWxmLmxhc3RfdG1wZGlyID0gTm9uZQogICAgICAgICBzZWxmLmN1cnJlbnRfdG1wbm8gPSAwCkBA
IC0zMjksOCArMzI3LDggQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYg
d3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICAjIEZJWE1F
OiBzaG91bGQgdGhpcyBhc3NlcnQgaWYgZGlybmFtZShwYXRoKSBkb2Vzbid0IGV4aXN0PwogICAg
ICAgICBzZWxmLm1heWJlX21ha2VfZGlyZWN0b3J5KHNlbGYuZGlybmFtZShwYXRoKSkKLSAgICAg
ICAgc2VsZi5maWxlc1twYXRoXSA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfZm9yKGNv
bnRlbnRzLCBieXRlcykKLSAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVzW3BhdGhdID0gdW5pY29k
ZV9jb21wYXRpYmlsaXR5LmVuY29kZV9mb3IoY29udGVudHMsIGJ5dGVzKQorICAgICAgICBzZWxm
LmZpbGVzW3BhdGhdID0gc3RyaW5nX3V0aWxzLmVuY29kZShjb250ZW50cykKKyAgICAgICAgc2Vs
Zi53cml0dGVuX2ZpbGVzW3BhdGhdID0gc3RyaW5nX3V0aWxzLmVuY29kZShjb250ZW50cykKIAog
ICAgIGRlZiBvcGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoLCBlcnJvcnM9J3N0
cmljdCcpOgogICAgICAgICBpZiBzZWxmLmZpbGVzLmdldChwYXRoKSBpcyBOb25lOgpAQCAtMzQ0
LDcgKzM0Miw3IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHJldHVy
biBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkuZGVjb2RlKCd1dGYtOCcsIGVycm9ycz1lcnJv
cnMpCiAKICAgICBkZWYgd3JpdGVfdGV4dF9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzLCBlcnJv
cnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRo
LCB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShjb250ZW50cywgJ3V0
Zi04JywgZXJyb3JzPWVycm9ycykpCisgICAgICAgIHJldHVybiBzZWxmLndyaXRlX2JpbmFyeV9m
aWxlKHBhdGgsIHN0cmluZ191dGlscy5lbmNvZGUoY29udGVudHMsIGVuY29kaW5nPSd1dGYtOCcs
IGVycm9ycz1lcnJvcnMpKQogCiAgICAgZGVmIHNoYTEoc2VsZiwgcGF0aCk6CiAgICAgICAgIGNv
bnRlbnRzID0gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpCkBAIC00NTMsMTMgKzQ1MSwxMyBA
QCBjbGFzcyBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qob2JqZWN0KToKICAgICAgICAgc2VsZi5j
bG9zZWQgPSBUcnVlCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgc3RyaW5nKToKLSAgICAgICAgc2Vs
Zi5mcy5maWxlc1tzZWxmLnBhdGhdICs9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZf
bmVjZXNzYXJ5KHN0cmluZywgJ3V0Zi04JykKKyAgICAgICAgc2VsZi5mcy5maWxlc1tzZWxmLnBh
dGhdICs9IHN0cmluZ191dGlscy5lbmNvZGUoc3RyaW5nLCBlbmNvZGluZz0ndXRmLTgnKQogICAg
ICAgICBzZWxmLmZzLndyaXR0ZW5fZmlsZXNbc2VsZi5wYXRoXSA9IHNlbGYuZnMuZmlsZXNbc2Vs
Zi5wYXRoXQogCiAKIGNsYXNzIFdyaXRhYmxlVGV4dEZpbGVPYmplY3QoV3JpdGFibGVCaW5hcnlG
aWxlT2JqZWN0KToKICAgICBkZWYgd3JpdGUoc2VsZiwgc3RyKToKLSAgICAgICAgV3JpdGFibGVC
aW5hcnlGaWxlT2JqZWN0LndyaXRlKHNlbGYsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVf
aWZfbmVjZXNzYXJ5KHN0ciwgJ3V0Zi04JykpCisgICAgICAgIFdyaXRhYmxlQmluYXJ5RmlsZU9i
amVjdC53cml0ZShzZWxmLCBzdHJpbmdfdXRpbHMuZW5jb2RlKHN0ciwgZW5jb2Rpbmc9J3V0Zi04
JykpCiAKIAogY2xhc3MgUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CkBAIC00OTIs
NyArNDkwLDcgQEAgY2xhc3MgUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CiAKIGNs
YXNzIFJlYWRhYmxlVGV4dEZpbGVPYmplY3QoUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KToKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgsIGRhdGEpOgotICAgICAgICBzdXBlcihSZWFk
YWJsZVRleHRGaWxlT2JqZWN0LCBzZWxmKS5fX2luaXRfXyhmcywgcGF0aCwgdW5pY29kZV9jb21w
YXRpYmlsaXR5LlVuaWNvZGVJTyh1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2ZvcihkYXRh
LCB1bmljb2RlX2NvbXBhdGliaWxpdHkudW5pY29kZSkpKQorICAgICAgICBzdXBlcihSZWFkYWJs
ZVRleHRGaWxlT2JqZWN0LCBzZWxmKS5fX2luaXRfXyhmcywgcGF0aCwgVW5pY29kZUlPKHN0cmlu
Z191dGlscy5kZWNvZGUoZGF0YSkpKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBz
ZWxmLmRhdGEuY2xvc2UoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL291dHB1dGNhcHR1cmUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiBp
bXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmls
aXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAK
IAogY2xhc3MgT3V0cHV0Q2FwdHVyZShvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL291dHB1dHRlZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0dGVlX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vb3V0cHV0dGVlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw5IEBA
CiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
dGVlIGltcG9ydCBUZWUsIE91dHB1dFRlZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXR0ZWUgaW1wb3J0IFRl
ZQogCiAKIGNsYXNzIFNpbXBsZVRlZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ0NTMp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw5IEBACiBpbXBv
cnQgb3B0cGFyc2UKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
U3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJp
bmdJTwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IGxpbnRfdGVzdF9leHBlY3Rh
dGlvbnMKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVz
dC5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDE0ICszMiwxMyBAQCBpbXBvcnQganNvbgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0
ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
U3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUsIHBhdGgKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3NfdW5pdHRlc3QgaW1wb3J0IG1ha2VfbW9ja19jcmFz
aF9yZXBvcnRfZGFyd2luCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBp
bXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwotCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IElOVEVSUlVQ
VEVEX0VYSVRfU1RBVFVTCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHRlc3QKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0
X3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkJKHJldmlzaW9uIDI2NDQ1MykK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Npbmds
ZV90ZXN0X3J1bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOCBAQAogCiBpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IHJlCi1pbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRy
b2xsZXJzIGltcG9ydCB0ZXN0X3Jlc3VsdF93cml0ZXIKIGZyb20gd2Via2l0cHkucG9ydC5kcml2
ZXIgaW1wb3J0IERyaXZlcklucHV0LCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKQEAgLTIxNSw3ICsyMTQsNyBA
QCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGVsaWYgZHJpdmVyX291
dHB1dC5lcnJvcjoKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIg
bGluZXM6IiAlIChzZWxmLl93b3JrZXJfbmFtZSwgdGVzdG5hbWUpKQogICAgICAgICBmb3IgbGlu
ZSBpbiBkcml2ZXJfb3V0cHV0LmVycm9yLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIF9sb2cu
ZGVidWcoIiAge30iLmZvcm1hdChkZWNvZGVfZm9yKGxpbmUsIHN0cikpKQorICAgICAgICAgICAg
X2xvZy5kZWJ1ZygiICB7fSIuZm9ybWF0KHN0cmluZ191dGlscy5kZWNvZGUobGluZSwgdGFyZ2V0
X3R5cGU9c3RyKSkpCiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgZGVmIF9jb21wYXJl
X291dHB1dChzZWxmLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LCBkcml2ZXJfb3V0cHV0KToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jl
c3VsdHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0c191bml0dGVzdC5weQkocmV2aXNpb24g
MjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVp
bGRib3RfcmVzdWx0c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEw
IEBACiAKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5n
SU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJv
bSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwog
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwotCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0cwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHNf
dW5pdHRlc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBidWlsZGJv
dF9yZXN1bHRzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQko
cmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDggQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnZpZXdzLm1ldGVyZWRfc3RyZWFtIGltcG9ydCBNZXRlcmVkU3RyZWFtCiAKIApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTEgQEAKIAogaW1wb3J0IG9wdHBhcnNlCiBpbXBv
cnQgc3lzCi1pbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBT
dHJpbmdJTwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5n
SU8KLWZyb20gd2Via2l0cHkgaW1wb3J0IHBvcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmNvbnRyb2xsZXJzIGltcG9ydCBtYW5hZ2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21v
Y2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1w
b3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMg
aW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9yZXN1bHRzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMv
cGVyZnRlc3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxMSBAQAog
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGpzb24KLWltcG9ydCBtYXRo
CiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9y
dCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERy
aXZlck91dHB1dAotZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3REcml2ZXIKIGZy
b20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAogZnJvbSB3ZWJraXRweS5wZXJm
b3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3QKIGZyb20gd2Via2l0cHkucGVy
Zm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0TWV0cmljCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRl
Z3JhdGlvbnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lv
biAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDYgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9j
ayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0
dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGlt
cG9ydCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9y
dAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRl
c3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDEz
IEBACiAiIiJVbml0IHRlc3RzIGZvciBydW5fcGVyZl90ZXN0cy4iIiIKIAogaW1wb3J0IGpzb24K
LWltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBT
dHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0
Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0Ci1mcm9t
IHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBERUZBVUxUX1RFU1Rf
UlVOTkVSX0NPVU5UCiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0c3J1
bm5lciBpbXBvcnQgUGVyZlRlc3RzUnVubmVyCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGltcG9ydCBzeXMK
IAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gZnVuY3Rvb2xzIGlt
cG9ydCBwYXJ0aWFsCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwpAQCAtNTIsNyArNTMsNiBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52
ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQVUJMSUNfVEFCTEUsIElOVEVSTkFMX1RBQkxFLCBWZXJz
aW9uTmFtZU1hcAogZnJvbSB3ZWJraXRweS5jb21tb24ud2F2ZWRpZmYgaW1wb3J0IFdhdmVEaWZm
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2Rl
X2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRp
b24KIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgY29uZmlnIGFzIHBvcnRfY29uZmlnCiBmcm9t
IHdlYmtpdHB5LnBvcnQgaW1wb3J0IGRyaXZlcgpAQCAtMzI2LDggKzMyNiw4IEBAIGNsYXNzIFBv
cnQob2JqZWN0KToKICAgICBkZWYgZGlmZl90ZXh0KHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVh
bF90ZXh0LCBleHBlY3RlZF9maWxlbmFtZSwgYWN0dWFsX2ZpbGVuYW1lKToKICAgICAgICAgIiIi
UmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBkaWZmIG9mIHRoZSB0d28gdGV4dCBzdHJp
bmdzCiAgICAgICAgIGluICd1bmlmaWVkIGRpZmYnIGZvcm1hdC4iIiIKLSAgICAgICAgZXhwZWN0
ZWRfZmlsZW5hbWUgPSBkZWNvZGVfZm9yKGVuY29kZV9pZl9uZWNlc3NhcnkoZXhwZWN0ZWRfZmls
ZW5hbWUpLCBzdHIpCi0gICAgICAgIGFjdHVhbF9maWxlbmFtZSA9IGRlY29kZV9mb3IoZW5jb2Rl
X2lmX25lY2Vzc2FyeShhY3R1YWxfZmlsZW5hbWUpLCBzdHIpCisgICAgICAgIGV4cGVjdGVkX2Zp
bGVuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShzdHJpbmdfdXRpbHMuZW5jb2RlKGV4cGVjdGVk
X2ZpbGVuYW1lKSwgdGFyZ2V0X3R5cGU9c3RyKQorICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBz
dHJpbmdfdXRpbHMuZGVjb2RlKHN0cmluZ191dGlscy5lbmNvZGUoYWN0dWFsX2ZpbGVuYW1lKSwg
dGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZXhw
ZWN0ZWRfdGV4dC5zcGxpdGxpbmVzKFRydWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0dWFsX3RleHQuc3BsaXRsaW5lcyhUcnVlKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lLApAQCAtNDg4LDcgKzQ4OCw3IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIGJhc2VsaW5lX3BhdGggPSBzZWxmLmV4
cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSwgJy53ZWJhcmNoaXZlJywgZGV2aWNlX3R5cGU9ZGV2
aWNlX3R5cGUpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoYmFz
ZWxpbmVfcGF0aCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgdGV4dCA9
IGRlY29kZV9mb3Ioc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGJhc2VsaW5lX3Bh
dGgpLCBzdHIpCisgICAgICAgIHRleHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShiYXNlbGluZV9wYXRoKSwgdGFyZ2V0X3R5cGU9c3RyKQog
ICAgICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKCJcclxuIiwgIlxuIikKIAogICAgIGRlZiBfZ2V0
X3JlZnRlc3RfbGlzdChzZWxmLCB0ZXN0X25hbWUpOgpAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAgcnVuX3Njcmlw
dF9jb21tYW5kLmV4dGVuZChhcmdzKQogICAgICAgICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUu
cnVuX2NvbW1hbmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpLCBk
ZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVudj1lbnYpCi0gICAgICAgIF9sb2cuZGVidWco
J091dHB1dCBvZiAlczpcbiVzJyAlIChydW5fc2NyaXB0X2NvbW1hbmQsIGVuY29kZV9mb3Iob3V0
cHV0LCBzdHIpIGlmIGRlY29kZV9vdXRwdXQgZWxzZSBvdXRwdXQpKQorICAgICAgICBfbG9nLmRl
YnVnKCdPdXRwdXQgb2YgJXM6XG4lcycgJSAocnVuX3NjcmlwdF9jb21tYW5kLCBzdHJpbmdfdXRp
bHMuZW5jb2RlKG91dHB1dCwgdGFyZ2V0X3R5cGU9c3RyKSBpZiBkZWNvZGVfb3V0cHV0IGVsc2Ug
b3V0cHV0KSkKICAgICAgICAgcmV0dXJuIG91dHB1dAogCiAgICAgZGVmIF9idWlsZF9kcml2ZXIo
c2VsZik6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9u
IDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQCBpbXBvcnQgc2hsZXgKIGltcG9ydCBzeXMKIGlt
cG9ydCB0aW1lCiBpbXBvcnQgb3MKKwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRp
Y3QKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAotZnJvbSBvcy5wYXRo
IGltcG9ydCBub3JtcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRo
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucHJvZmlsZXIgaW1wb3J0IFByb2ZpbGVyRmFj
dG9yeQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBl
bmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQpAQCAtODcsMTEgKzg3LDExIEBAIGNsYXNzIERyaXZlck91dHB1dChvYmpl
Y3QpOgogICAgICAgICAgICAgdGVzdF90aW1lPTAsIG1lYXN1cmVtZW50cz1Ob25lLCB0aW1lb3V0
PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/JywKICAgICAgICAgICAg
IGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNoX2xvZz1Ob25lLCBwaWQ9Tm9uZSk6CiAgICAgICAgICMg
RklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkg
ZG8uCi0gICAgICAgIHNlbGYudGV4dCA9IGRlY29kZV9mb3IodGV4dCwgc3RyKSBpZiB0ZXh0IGVs
c2UgTm9uZQorICAgICAgICBzZWxmLnRleHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHRleHQsIHRh
cmdldF90eXBlPXN0cikgaWYgdGV4dCBlbHNlIE5vbmUKICAgICAgICAgc2VsZi5pbWFnZSA9IGlt
YWdlICAjIE1heSBiZSBlbXB0eS1zdHJpbmcgaWYgdGhlIHRlc3QgY3Jhc2hlcy4KICAgICAgICAg
c2VsZi5pbWFnZV9oYXNoID0gaW1hZ2VfaGFzaAogICAgICAgICBzZWxmLmltYWdlX2RpZmYgPSBO
b25lICAjIGltYWdlX2RpZmYgZ2V0cyBmaWxsZWQgaW4gYWZ0ZXIgY29uc3RydWN0aW9uLgotICAg
ICAgICBzZWxmLmF1ZGlvID0gZW5jb2RlX2lmX25lY2Vzc2FyeShhdWRpbykgaWYgYXVkaW8gZWxz
ZSBOb25lICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRlbnQuCisgICAgICAgIHNlbGYu
YXVkaW8gPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMg
QmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRlcGVuZGVudC4KICAgICAgICAgc2VsZi5jcmFzaCA9IGNy
YXNoCiAgICAgICAgIHNlbGYuY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBjcmFzaGVkX3Byb2Nlc3Nf
bmFtZQogICAgICAgICBzZWxmLmNyYXNoZWRfcGlkID0gY3Jhc2hlZF9waWQKQEAgLTIxNSw3ICsy
MTUsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nl
c3Mud3JpdGUoY29tbWFuZCkKICAgICAgICAgdGV4dCwgYXVkaW8gPSBzZWxmLl9yZWFkX2ZpcnN0
X2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSAgIyBGaXJzdCBibG9jayBp
cyBlaXRoZXIgdGV4dCBvciBhdWRpbwogICAgICAgICBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gg
PSBzZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQu
dGVzdF9uYW1lKSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0YS4K
LSAgICAgICAgdGV4dCA9IGRlY29kZV9mb3IodGV4dCwgc3RyKQorICAgICAgICB0ZXh0ID0gc3Ry
aW5nX3V0aWxzLmRlY29kZSh0ZXh0LCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICAgICAgY3Jhc2hl
ZCA9IHNlbGYuaGFzX2NyYXNoZWQoKQogICAgICAgICB0aW1lZF9vdXQgPSBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy50aW1lZF9vdXQKQEAgLTIyOSw5ICsyMjksOSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0
KToKICAgICAgICAgICAgICMgSW4gdGhlIHRpbWVvdXQgY2FzZSwgd2Uga2lsbCB0aGUgaHVuZyBw
cm9jZXNzIGFzIHdlbGwuCiAgICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnN0b3Aoc2VsZi5fcG9ydC5kcml2ZXJfc3RvcF90aW1lb3V0KCkgaWYgc3RvcF93aGVuX2Rv
bmUgZWxzZSAwLjApCiAgICAgICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAgICAgICAgdGV4dCAr
PSBkZWNvZGVfZm9yKG91dCwgc3RyKQorICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyaW5nX3V0
aWxzLmRlY29kZShvdXQsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAgIGlmIGVycjoKLSAg
ICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBkZWNvZGVfZm9yKGVyciwgc3Ry
KQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IHN0cmluZ191dGlscy5k
ZWNvZGUoZXJyLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJv
Y2VzcyA9IE5vbmUKIAogICAgICAgICBjcmFzaF9sb2cgPSBOb25lCkBAIC0yODQsOCArMjg0LDgg
QEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxp
dGxpbmVzKCk6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goYideKFteOl0rKTogKFswLTldKykk
JywgbGluZSkKICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc19uYW1l
ID0gZGVjb2RlX2ZvcihtLmdyb3VwKDEpLCBzdHIpCi0gICAgICAgICAgICAgICAgcHJvY2Vzc19p
ZCA9IGRlY29kZV9mb3IobS5ncm91cCgyKSwgc3RyKQorICAgICAgICAgICAgICAgIHByb2Nlc3Nf
bmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUobS5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKQor
ICAgICAgICAgICAgICAgIHByb2Nlc3NfaWQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG0uZ3JvdXAo
MiksIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzZXNbcHJv
Y2Vzc19uYW1lXS5hcHBlbmQocHJvY2Vzc19pZCkKIAogICAgICAgICByZXR1cm4gY2hpbGRfcHJv
Y2Vzc2VzCkBAIC01NDksNyArNTQ5LDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgZGVm
IF9jaGVja19mb3JfZHJpdmVyX3RpbWVvdXQoc2VsZiwgb3V0X2xpbmUpOgogICAgICAgICBpZiBv
dXRfbGluZS5zdGFydHN3aXRoKGIiI1BJRCBVTlJFU1BPTlNJVkUgLSAiKToKICAgICAgICAgICAg
IG1hdGNoID0gcmUubWF0Y2goYicjUElEIFVOUkVTUE9OU0lWRSAtIChcUyspJywgb3V0X2xpbmUp
Ci0gICAgICAgICAgICBjaGlsZF9wcm9jZXNzX25hbWUgPSBkZWNvZGVfZm9yKG1hdGNoLmdyb3Vw
KDEpLCBzdHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBjaGlsZF9w
cm9jZXNzX25hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRf
dHlwZT1zdHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCiAgICAgICAgICAgICBtYXRjaCA9
IHJlLnNlYXJjaChiJ3BpZCAoXGQrKScsIG91dF9saW5lKQogICAgICAgICAgICAgY2hpbGRfcHJv
Y2Vzc19waWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAg
ICAgICAgZXJyX2xpbmUgPSAnV2FpdCBvbiBub3RpZnlEb25lIHRpbWVkIG91dCwgcHJvY2VzcyAn
ICsgY2hpbGRfcHJvY2Vzc19uYW1lICsgJyBwaWQgPSAnICsgc3RyKGNoaWxkX3Byb2Nlc3NfcGlk
KQpAQCAtNTcyLDIxICs1NzIsMjEgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aChiIiNDUkFT
SEVEIC0gIik6CiAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI0NSQVNIRUQgLSAoXFMr
KScsIGVycm9yX2xpbmUpCi0gICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9
IGRlY29kZV9mb3IobWF0Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2Vz
cycKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxz
LmRlY29kZShtYXRjaC5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSBpZiBtYXRjaCBlbHNlICdX
ZWJQcm9jZXNzJwogICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBl
cnJvcl9saW5lKQogICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBpbnQobWF0Y2guZ3Jv
dXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgY3Jh
c2gsIHBpZCA9ICVzJyAlIChzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSwgc3RyKHNlbGYuX2Ny
YXNoZWRfcGlkKSkpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIGVycm9y
X2xpbmUuc3RhcnRzd2l0aChiIiNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtICIpOgogICAgICAgICAg
ICAgbWF0Y2ggPSByZS5tYXRjaChiJyNQUk9DRVNTIFVOUkVTUE9OU0lWRSAtIChcUyspJywgZXJy
b3JfbGluZSkKLSAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobWF0
Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKKyAgICAgICAgICAg
IGNoaWxkX3Byb2Nlc3NfbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUobWF0Y2guZ3JvdXAoMSks
IHRhcmdldF90eXBlPXN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKICAgICAgICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgZXJyb3JfbGluZSkKICAgICAgICAgICAg
IGNoaWxkX3Byb2Nlc3NfcGlkID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNlIE5v
bmUKICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIGlzIHVucmVzcG9uc2l2ZSwgcGlkID0gJXMn
ICUgKGNoaWxkX3Byb2Nlc3NfbmFtZSwgc3RyKGNoaWxkX3Byb2Nlc3NfcGlkKSkpCiAgICAgICAg
ICAgICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2hpbGRf
cHJvY2Vzc19waWQ6CiAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2Vzcyhj
aGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlkLCBzZWxmLl90YXJnZXRfaG9zdCkK
LSAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGRlY29kZV9mb3IoZXJyb3JfbGlu
ZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gc3RyaW5nX3V0aWxz
LmRlY29kZShlcnJvcl9saW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy53cml0ZSgnI1NBTVBMRSBGSU5JU0hFRFxuJywgVHJ1ZSkgICMgTXVzdCBi
ZSBhYmxlIHRvIGlnbm9yZSBhIGJyb2tlbiBwaXBlIGhlcmUsIHRhcmdldCBwcm9jZXNzIG1heSBh
bHJlYWR5IGJlIGNsb3NlZC4KICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVy
biBzZWxmLmhhc19jcmFzaGVkKCkKQEAgLTY0MCw3ICs2NDAsNyBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKIAogICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90
ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAgICAgaWYgbGluZS5z
dGFydHN3aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlz
IE5vbmU6Ci0gICAgICAgICAgICB2YWx1ZSA9IGRlY29kZV9mb3IobGluZS5zcGxpdCgpWzFdLCBz
dHIpCisgICAgICAgICAgICB2YWx1ZSA9IHN0cmluZ191dGlscy5kZWNvZGUobGluZS5zcGxpdCgp
WzFdLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBpZiBoZWFkZXJfZmlsdGVyOgogICAg
ICAgICAgICAgICAgIHZhbHVlID0gaGVhZGVyX2ZpbHRlcih2YWx1ZSkKICAgICAgICAgICAgIHNl
dGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyLCB2YWx1ZSkKQEAgLTY2MSw3ICs2NjEsNyBAQCBjbGFz
cyBEcml2ZXIob2JqZWN0KToKIAogICAgICAgICAjIE5vdGUsIHdlJ3JlIG5vdCByZWFkaW5nIEV4
cGVjdGVkSGFzaDogaGVyZSwgYnV0IHdlIGNvdWxkLgogICAgICAgICAjIElmIHRoZSBsaW5lIHdh
c24ndCBhIGhlYWRlciwgd2UganVzdCBhcHBlbmQgaXQgdG8gdGhlIGNvbnRlbnQuCi0gICAgICAg
IGJsb2NrLmNvbnRlbnQgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGJsb2NrLmNvbnRlbnQpICsgbGlu
ZQorICAgICAgICBibG9jay5jb250ZW50ID0gc3RyaW5nX3V0aWxzLmVuY29kZShibG9jay5jb250
ZW50KSArIGxpbmUKIAogICAgIGRlZiBfc3RyaXBfZW9mKHNlbGYsIGxpbmUpOgogICAgICAgICBp
ZiBsaW5lIGFuZCBsaW5lLmVuZHN3aXRoKGIiI0VPRlxuIik6CkBAIC03MDYsNyArNzA2LDcgQEAg
Y2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogVW5saWtlIEhU
VFAsIERSVCBkdW1wcyB0aGUgY29udGVudCByaWdodCBhZnRlciBwcmludGluZyBhIENvbnRlbnQt
TGVuZ3RoIGhlYWRlci4KICAgICAgICAgICAgICAgICAjIERvbid0IHdhaXQgdW50aWwgd2UncmUg
ZG9uZSB3aXRoIGhlYWRlcnMsIGp1c3QgcmVhZCB0aGUgYmluYXJ5IGJsb2IgcmlnaHQgbm93Lgog
ICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoX2JlZm9yZV9oZWFkZXJfY2hlY2sgIT0g
YmxvY2suX2NvbnRlbnRfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50
ID0gZW5jb2RlX2lmX25lY2Vzc2FyeShzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChk
ZWFkbGluZSwgYmxvY2suX2NvbnRlbnRfbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgYmxv
Y2suY29udGVudCA9IHN0cmluZ191dGlscy5lbmNvZGUoc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVh
ZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50X2xlbmd0aCkpCiAKICAgICAgICAgICAg
IGlmIGVycl9saW5lOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NoZWNrX2Zvcl9kcml2ZXJf
Y3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyhlcnJfbGluZSk6CkBAIC03MjQsOSArNzI0LDkgQEAg
Y2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMg
Y2FuIGxpa2VseSBiZSByZW1vdmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzE4NzAxNDQ3PiBpcyBm
aXhlZC4KICAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmUgKz0gMTAgKiA2MCAqIDEwMDAKICAg
ICAgICAgICAgICAgICBpZiBhc2FuX3Zpb2xhdGlvbl9kZXRlY3RlZDoKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJpdmVyICs9IGRlY29kZV9mb3IoZXJyX2xp
bmUsIHN0cikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJp
dmVyICs9IHN0cmluZ191dGlscy5kZWNvZGUoZXJyX2xpbmUsIHRhcmdldF90eXBlPXN0cikKICAg
ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21f
dGVzdCArPSBkZWNvZGVfZm9yKGVycl9saW5lLCBzdHIpCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuZXJyb3JfZnJvbV90ZXN0ICs9IHN0cmluZ191dGlscy5kZWNvZGUoZXJyX2xpbmUsIHRhcmdl
dF90eXBlPXN0cikKIAogICAgICAgICBpZiBhc2FuX3Zpb2xhdGlvbl9kZXRlY3RlZCBhbmQgbm90
IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lOgogICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9w
cm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wcm9jZXNzX25hbWUoKQpAQCAtNzU5
LDcgKzc1OSw3IEBAIGNsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgogICAgICAgICAgICAgc2Vs
Zi5kZWNvZGVkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKHNlbGYuY29udGVudCkKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmRlY29kZWRf
Y29udGVudCA9IGRlY29kZV9mb3Ioc2VsZi5jb250ZW50LCBzdHIpCisgICAgICAgICAgICAgICAg
c2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuY29udGVudCwg
dGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoK
ICAgICAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IE5vbmUKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHkJKHJldmlzaW9uIDI2NDQ1MykK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw4ICszNCw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCB0
aW1lCiAKLWZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgZGVjb2Rl
X2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVz
SU8sIHN0cmluZ191dGlscwogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
QEAgLTU5LDkgKzU4LDkgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBzZWxmLl9zdGFydCh0b2xlcmFuY2UpCiAgICAgICAgICAgICAjIE5vdGUgdGhhdCBhbHRo
b3VnaCB3ZSBhcmUgaGFuZGVkICdvbGQnLCAnbmV3JywgSW1hZ2VEaWZmIHdhbnRzICduZXcnLCAn
b2xkJy4KICAgICAgICAgICAgIGJ1ZmZlciA9IEJ5dGVzSU8oKQotICAgICAgICAgICAgYnVmZmVy
LndyaXRlKGVuY29kZV9pZl9uZWNlc3NhcnkoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQo
bGVuKGFjdHVhbF9jb250ZW50cykpKSkKKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZShzdHJpbmdf
dXRpbHMuZW5jb2RlKCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihhY3R1YWxfY29u
dGVudHMpKSkpCiAgICAgICAgICAgICBidWZmZXIud3JpdGUoYWN0dWFsX2NvbnRlbnRzKQotICAg
ICAgICAgICAgYnVmZmVyLndyaXRlKGVuY29kZV9pZl9uZWNlc3NhcnkoJ0NvbnRlbnQtTGVuZ3Ro
OiB7fVxuJy5mb3JtYXQobGVuKGV4cGVjdGVkX2NvbnRlbnRzKSkpKQorICAgICAgICAgICAgYnVm
ZmVyLndyaXRlKHN0cmluZ191dGlscy5lbmNvZGUoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3Jt
YXQobGVuKGV4cGVjdGVkX2NvbnRlbnRzKSkpKQogICAgICAgICAgICAgYnVmZmVyLndyaXRlKGV4
cGVjdGVkX2NvbnRlbnRzKQogICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShidWZmZXIu
Z2V0dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkKCkKQEAgLTkyLDEyICs5
MSwxMiBAQCBjbGFzcyBJbWFnZURpZmZlcihvYmplY3QpOgogCiAgICAgICAgICAgICBpZiBvdXRw
dXQuc3RhcnRzd2l0aChiJ0NvbnRlbnQtTGVuZ3RoJyk6CiAgICAgICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKGInQ29udGVudC1MZW5ndGg6IChcZCspJywgb3V0cHV0KQotICAgICAgICAgICAgICAg
IGNvbnRlbnRfbGVuZ3RoID0gaW50KGRlY29kZV9mb3IobS5ncm91cCgxKSwgc3RyKSkKKyAgICAg
ICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChzdHJpbmdfdXRpbHMuZGVjb2RlKG0uZ3Jv
dXAoMSksIHRhcmdldF90eXBlPXN0cikpCiAgICAgICAgICAgICAgICAgb3V0cHV0X2ltYWdlID0g
c2VsZi5fcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgY29udGVudF9sZW5ndGgpCiAgICAg
ICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKGRlYWRs
aW5lKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgc3RkZXJyID0gZGVjb2RlX2Zv
cihzZWxmLl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCksIHN0cikKKyAgICAgICAg
c3RkZXJyID0gc3RyaW5nX3V0aWxzLmRlY29kZShzZWxmLl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVy
ZWRfc3RkZXJyKCksIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgZXJyX3N0ciA9ICcnCiAgICAg
ICAgIGlmIHN0ZGVycjoKICAgICAgICAgICAgIGVycl9zdHIgKz0gIkltYWdlRGlmZiBwcm9kdWNl
ZCBzdGRlcnIgb3V0cHV0OlxuIiArIHN0ZGVycgpAQCAtMTExLDcgKzExMCw3IEBAIGNsYXNzIElt
YWdlRGlmZmVyKG9iamVjdCk6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goYidkaWZmOiAoLisp
JSAocGFzc2VkfGZhaWxlZCknLCBvdXRwdXQpCiAgICAgICAgICAgICBpZiBtLmdyb3VwKDIpID09
IGIncGFzc2VkJzoKICAgICAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCi0gICAg
ICAgICAgICBkaWZmX3BlcmNlbnQgPSBmbG9hdChkZWNvZGVfZm9yKG0uZ3JvdXAoMSksIHN0cikp
CisgICAgICAgICAgICBkaWZmX3BlcmNlbnQgPSBmbG9hdChzdHJpbmdfdXRpbHMuZGVjb2RlKG0u
Z3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikpCiAKICAgICAgICAgcmV0dXJuIChvdXRwdXRfaW1h
Z2UsIGRpZmZfcGVyY2VudCwgZXJyX3N0ciBvciBOb25lKQogCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDggKzMwLDkgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtNzksNyArODAsNyBAQCBjbGFzcyBMZWFr
RGV0ZWN0b3Iob2JqZWN0KToKICAgICBkZWYgX3BhcnNlX2xlYWtzX291dHB1dChzZWxmLCBsZWFr
c19vdXRwdXQpOgogICAgICAgICBpZiBub3QgbGVha3Nfb3V0cHV0OgogICAgICAgICAgICAgcmV0
dXJuIDAsIDAsIDAKLSAgICAgICAgbGVha3Nfb3V0cHV0ID0gZW5jb2RlX2lmX25lY2Vzc2FyeShs
ZWFrc19vdXRwdXQpCisgICAgICAgIGxlYWtzX291dHB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUo
bGVha3Nfb3V0cHV0KQogICAgICAgICBfLCBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2goYidQcm9j
ZXNzICg/UDxwaWQ+XFxkKyk6ICg/UDxjb3VudD5cXGQrKSBsZWFrcz8gZm9yICg/UDxieXRlcz5c
XGQrKSB0b3RhbCcsIGxlYWtzX291dHB1dCkuZ3JvdXBzKCkKICAgICAgICAgZXhjbHVkZWRfbWF0
Y2ggPSByZS5zZWFyY2goYicoP1A8ZXhjbHVkZWQ+XFxkKykgbGVha3M/IGV4Y2x1ZGVkJywgbGVh
a3Nfb3V0cHV0KQogICAgICAgICBleGNsdWRlZCA9IGV4Y2x1ZGVkX21hdGNoLmdyb3VwKCdleGNs
dWRlZCcpIGlmIGV4Y2x1ZGVkX21hdGNoIGVsc2UgMApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5CShyZXZpc2lvbiAy
NjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdy
aW5kLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTAgQEAgZnJvbSBjb2xsZWN0aW9u
cyBpbXBvcnQgZGVmYXVsdGRpY3QKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IHBh
cnNlU3RyaW5nCiBmcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9ydCBFeHBhdEVycm9yCiAKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lm
X25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTE5OCw3ICsx
OTcsNyBAQCBjbGFzcyBWYWxncmluZEVycm9yOgogICAgICAgICAjIFRoaXMgaXMgYSBkZXZpY2Ut
aW5kZXBlbmRlbnQgaGFzaCBpZGVudGlmeWluZyB0aGUgc3VwcHJlc3Npb24uCiAgICAgICAgICMg
QnkgcHJpbnRpbmcgb3V0IHRoaXMgaGFzaCB3ZSBjYW4gZmluZCBkdXBsaWNhdGUgcmVwb3J0cyBi
ZXR3ZWVuIHRlc3RzIGFuZAogICAgICAgICAjIGRpZmZlcmVudCBzaGFyZHMgcnVubmluZyBvbiBt
dWx0aXBsZSBidWlsZGJvdHMKLSAgICAgICAgcmV0dXJuIGludChoYXNobGliLm1kNShlbmNvZGVf
aWZfbmVjZXNzYXJ5KHNlbGYudW5pcXVlX3N0cmluZygpKSkuaGV4ZGlnZXN0KClbOjE2XSwgMTYp
CisgICAgICAgIHJldHVybiBpbnQoaGFzaGxpYi5tZDUoc3RyaW5nX3V0aWxzLmVuY29kZShzZWxm
LnVuaXF1ZV9zdHJpbmcoKSkpLmhleGRpZ2VzdCgpWzoxNl0sIDE2KQogCiAgICAgZGVmIF9faGFz
aF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaGFzaChzZWxmLnVuaXF1ZV9zdHJpbmcoKSkKQEAg
LTIyNCw3ICsyMjMsNyBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgogICAg
ICAgICAgICAgcGFyc2VkX3N0cmluZyA9IHBhcnNlU3RyaW5nKGxlYWtzX291dHB1dCkKICAgICAg
ICAgZXhjZXB0IEV4cGF0RXJyb3IgYXMgZToKICAgICAgICAgICAgIHBhcnNlX2ZhaWxlZCA9IFRy
dWUKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoImNvdWxkIG5vdCBwYXJzZSAlczogJXMiICUgKGRl
Y29kZV9mb3IobGVha3Nfb3V0cHV0LCBzdHIpLCBlKSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3Io
ImNvdWxkIG5vdCBwYXJzZSAlczogJXMiICUgKHN0cmluZ191dGlscy5kZWNvZGUobGVha3Nfb3V0
cHV0LCB0YXJnZXRfdHlwZT1zdHIpLCBlKSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAg
IGN1cl9yZXBvcnRfZXJyb3JzID0gc2V0KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5w
eQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIz
LDEzIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgbG9nZ2luZwog
aW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMK
KwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2Nr
RXhlY3V0aXZlMgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBp
bXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRj
YXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKIGZyb20gd2Via2l0cHkucG9ydC5sZWFr
ZGV0ZWN0b3JfdmFsZ3JpbmQgaW1wb3J0IExlYWtEZXRlY3RvclZhbGdyaW5kCiAKIApAQCAtODA4
LDcgKzgwOCw3IEBAIFN1cHByZXNzaW9ucyB1c2VkOgogCiBkZWYgbW9ja19ydW5fY3BwZmlsdF9j
b21tYW5kKGFyZ3MpOgogICAgIGlmIGFyZ3NbMF0gPT0gJ2MrK2ZpbHQnOgotICAgICAgICByZXR1
cm4gdmFsZ3JpbmRfb3V0cHV0X2NwcGZpbHRfbWFwW2RlY29kZV9mb3IoYXJnc1syXSwgc3RyKV0K
KyAgICAgICAgcmV0dXJuIHZhbGdyaW5kX291dHB1dF9jcHBmaWx0X21hcFtzdHJpbmdfdXRpbHMu
ZGVjb2RlKGFyZ3NbMl0sIHRhcmdldF90eXBlPXN0cildCiAgICAgcmV0dXJuICIiCiAKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9s
b2cucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9s
aW51eF9nZXRfY3Jhc2hfbG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsMTUgQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBkYXRldGltZQogaW1wb3J0
IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
dGVtcGZpbGUKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdf
dXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2Ny
aXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBv
cnQgZGVjb2RlX2lmX25lY2Vzc2FyeQogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRl
ciBpbXBvcnQgV2ViS2l0RmluZGVyCiAKIApAQCAtMTE0LDcgKzExMyw3IEBAIGNsYXNzIEdEQkNy
YXNoTG9nR2VuZXJhdG9yKG9iamVjdCk6CiAKICAgICAgICAgcHJvYyA9IHNlbGYuX2V4ZWN1dGl2
ZS5wb3BlbihjbWQsIHN0ZGluPU5vbmUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1z
dWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIGNyYXNoX2xvZywgc3RkZXJyID0gcHJvYy5jb21tdW5p
Y2F0ZSgpCi0gICAgICAgIGVycm9ycyA9IGRlY29kZV9pZl9uZWNlc3Nhcnkoc3RyKHN0ZGVyciBv
ciAnPGVtcHR5PicpLCBlcnJvcnM9J2lnbm9yZScpLnNwbGl0bGluZXMoKQorICAgICAgICBlcnJv
cnMgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3Jz
PSdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKICAgICAgICAgcmV0dXJuIGNyYXNoX2xvZywgZXJyb3Jz
CiAKICAgICBkZWYgZ2VuZXJhdGVfY3Jhc2hfbG9nKHNlbGYsIHN0ZG91dCwgc3RkZXJyKToKQEAg
LTE0OSw3ICsxNDgsNyBAQCBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgogICAg
ICAgICBlbGlmIGNvcmVkdW1wY3RsOgogICAgICAgICAgICAgY3Jhc2hfbG9nLCBlcnJvcnMgPSBz
ZWxmLl9nZXRfdHJhY2VfZnJvbV9zeXN0ZW1kKGNvcmVkdW1wY3RsLCBwaWRfcmVwcmVzZW50YXRp
b24pCiAKLSAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgZGVjb2RlX2lmX25lY2Vzc2Fy
eShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5lcygp
CisgICAgICAgIHN0ZGVycl9saW5lcyA9IGVycm9ycyArIHN0cmluZ191dGlscy5kZWNvZGUoc3Ry
KHN0ZGVyciBvciAnPGVtcHR5PicpLCBlcnJvcnM9J2lnbm9yZScpLnNwbGl0bGluZXMoKQogICAg
ICAgICBlcnJvcnNfc3RyID0gJ1xuJy5qb2luKCgnU1RERVJSOiAnICsgc3RkZXJyX2xpbmUpIGZv
ciBzdGRlcnJfbGluZSBpbiBzdGRlcnJfbGluZXMpCiAgICAgICAgIGNwcGZpbHRfcHJvYyA9IHNl
bGYuX2V4ZWN1dGl2ZS5wb3BlbigKICAgICAgICAgICAgIFsnYysrZmlsdCddLCBzdGRpbj1zdWJw
cm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJ
UEUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnQucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5CShyZXZpc2lv
biAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnQucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxMiBAQCBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguZGlyCiBpZiBzY3JpcHRfZGlyIG5vdCBpbiBzeXMucGF0aDoKICAgICBzeXMu
cGF0aC5hcHBlbmQoc2NyaXB0X2RpcikKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5wb3J0LmRyaXZl
ciBpbXBvcnQgRHJpdmVySW5wdXQsIERyaXZlck91dHB1dCwgRHJpdmVyUHJveHkKIGZyb20gd2Vi
a2l0cHkucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogCkBAIC0yMzEsNyArMjMyLDcgQEAgY2xhc3MgTW9ja0RSVChvYmplY3QpOgogICAgICAg
ICAgICAgaWYgb3V0cHV0LmltYWdlX2hhc2ggIT0gdGVzdF9pbnB1dC5pbWFnZV9oYXNoOgogICAg
ICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1UeXBlOiBpbWFnZS9wbmdc
bicpCiAgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LUxlbmd0aDog
JXNcbicgJSBsZW4ob3V0cHV0LmltYWdlKSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQu
d3JpdGUoZGVjb2RlX2ZvcihvdXRwdXQuaW1hZ2UsIHN0cikpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3Rkb3V0LndyaXRlKHN0cmluZ191dGlscy5kZWNvZGUob3V0cHV0LmltYWdlLCB0YXJnZXRf
dHlwZT1zdHIpKQogICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJyNFT0ZcbicpCiAgICAgICAg
IHNlbGYuX3N0ZG91dC5mbHVzaCgpCiAgICAgICAgIHNlbGYuX3N0ZGVyci53cml0ZSgnI0VPRlxu
JykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBA
CiAKICIiIlVuaXQgdGVzdHMgZm9yIE1vY2tEUlQuIiIiCiAKLWltcG9ydCBzeXMKIGltcG9ydCB1
bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5n
SU8KIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgbW9ja19kcnQKIGZyb20gd2Via2l0cHkucG9y
dCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCB0ZXN0Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CShy
ZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3By
b2Nlc3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDcgQEAgaW1wb3J0IHNpZ25hbAog
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHN0cmluZ191dGlscwogCiAjIE5vdGUgdGhhdCBhbHRob3VnaCB3aW4zMiBweXRo
b24gZG9lcyBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mCiAjIHRoZSB3aW4zMiBzZWxlY3Qg
QVBJLCBpdCBvbmx5IHdvcmtzIG9uIHNvY2tldHMsIGFuZCBub3Qgb24gdGhlIG5hbWVkIHBpcGVz
CkBAIC0xODUsNyArMTg0LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAg
ICBpZiBub3Qgc2VsZi5fcHJvYzoKICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi53cml0ZShlbmNvZGVfaWZfbmVjZXNz
YXJ5KGJ5dGVzKSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4ud3JpdGUoc3RyaW5nX3V0
aWxzLmVuY29kZShieXRlcykpCiAgICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLmZsdXNoKCkK
ICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBWYWx1ZUVycm9yKSBhcyBlOgogICAgICAgICAgICAg
c2VsZi5zdG9wKDAuMCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJf
cHJvY2Vzc19tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTMgKzI2LDEzIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9u
ZWNlc3NhcnkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCiBjbGFz
cyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
X29iaj1Ob25lLCBuYW1lPU5vbmUsIGNtZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xp
bmVzPUZhbHNlLCBsaW5lcz1Ob25lLCBjcmFzaGVkPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lLCBj
cmFzaF9tZXNzYWdlPU5vbmUpOgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCi0gICAg
ICAgIHNlbGYubGluZXMgPSBbZW5jb2RlX2lmX25lY2Vzc2FyeShsaW5lKSBmb3IgbGluZSBpbiAo
bGluZXMgb3IgW10pXQorICAgICAgICBzZWxmLmxpbmVzID0gW3N0cmluZ191dGlscy5lbmNvZGUo
bGluZSkgZm9yIGxpbmUgaW4gKGxpbmVzIG9yIFtdKV0KICAgICAgICAgc2VsZi5jcmFzaGVkID0g
Y3Jhc2hlZAogICAgICAgICBzZWxmLndyaXRlcyA9IFtdCiAgICAgICAgIHNlbGYuY21kID0gY21k
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkocmV2aXNpb24gMjY0NDUzKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDExICsyOCwxMiBAQAogCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVy
LCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2Nv
bmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9u
LnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFBVQkxJQ19UQUJMRSwgVmVyc2lvbk5hbWVNYXAKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2Zv
ciwgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9u
cyBmb3IgYSB0ZXN0LiBFYWNoIGluZGl2aWR1YWwgZXhwZWN0YXRpb24KQEAgLTQ0Miw4ICs0NDMs
OCBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICAgICAgcmV0dXJuICdSZWxlYXNlJwogCiAg
ICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50
cywgdG9sZXJhbmNlPU5vbmUpOgotICAgICAgICBleHBlY3RlZF9jb250ZW50cyA9IGVuY29kZV9p
Zl9uZWNlc3NhcnkoZXhwZWN0ZWRfY29udGVudHMpCi0gICAgICAgIGFjdHVhbF9jb250ZW50cyA9
IGVuY29kZV9pZl9uZWNlc3NhcnkoYWN0dWFsX2NvbnRlbnRzKQorICAgICAgICBleHBlY3RlZF9j
b250ZW50cyA9IHN0cmluZ191dGlscy5lbmNvZGUoZXhwZWN0ZWRfY29udGVudHMpCisgICAgICAg
IGFjdHVhbF9jb250ZW50cyA9IHN0cmluZ191dGlscy5lbmNvZGUoYWN0dWFsX2NvbnRlbnRzKQog
ICAgICAgICBkaWZmZWQgPSBhY3R1YWxfY29udGVudHMgIT0gZXhwZWN0ZWRfY29udGVudHMKICAg
ICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBhbmQgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgog
ICAgICAgICAgICAgcmV0dXJuIChOb25lLCAwLCBOb25lKQpAQCAtNDUzLDggKzQ1NCw4IEBAIGNs
YXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAgICAgICAgYXNzZXJ0IHRvbGVyYW5jZSA9PSAwCiAg
ICAgICAgIGlmIGRpZmZlZDoKICAgICAgICAgICAgIHJldHVybiAoIjwge31cbi0tLVxuPiB7fVxu
Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZGVjb2RlX2ZvcihleHBlY3RlZF9jb250ZW50cywg
c3RyKSwKLSAgICAgICAgICAgICAgICBkZWNvZGVfZm9yKGFjdHVhbF9jb250ZW50cywgc3RyKSwK
KyAgICAgICAgICAgICAgICBzdHJpbmdfdXRpbHMuZGVjb2RlKGV4cGVjdGVkX2NvbnRlbnRzLCB0
YXJnZXRfdHlwZT1zdHIpLAorICAgICAgICAgICAgICAgIHN0cmluZ191dGlscy5kZWNvZGUoYWN0
dWFsX2NvbnRlbnRzLCB0YXJnZXRfdHlwZT1zdHIpLAogICAgICAgICAgICAgKSwgMSwgTm9uZSkK
ICAgICAgICAgcmV0dXJuIChOb25lLCAwLCBOb25lKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Jlc3VsdHMvdXBsb2FkX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDQ1
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEwIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1l
CiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8KKwog
ZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5
LnRoaXJkcGFydHkgaW1wb3J0IG1vY2sKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTwogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgogICAgIGJhc2VzdHJpbmcgPSBzdHIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvcGF0Y2hyZWFkZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9wYXRjaHJlYWRlci5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMx
LDEyIEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9w
YXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKIAogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCkBAIC01Niw3ICs1Nyw3IEBAIGNsYXNzIFBhdGNoUmVhZGVyKG9i
amVjdCk6CiAgICAgZGVmIGNoZWNrKHNlbGYsIHBhdGNoX3N0cmluZywgZnM9Tm9uZSk6CiAgICAg
ICAgICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBwYXRjaC4iIiIKICAgICAgICAgZnMgPSBm
cyBvciBGaWxlU3lzdGVtKCkKLSAgICAgICAgcGF0Y2hfc3RyaW5nID0gZGVjb2RlX2ZvcihwYXRj
aF9zdHJpbmcsIHN0cikKKyAgICAgICAgcGF0Y2hfc3RyaW5nID0gc3RyaW5nX3V0aWxzLmRlY29k
ZShwYXRjaF9zdHJpbmcsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgcGF0Y2hfZmlsZXMgPSBE
aWZmUGFyc2VyKHBhdGNoX3N0cmluZy5zcGxpdGxpbmVzKCkpLmZpbGVzCiAKICAgICAgICAgIyBJ
ZiB0aGUgdXNlciB1c2VzIGdpdCwgY2hlY2tpbmcgc3VidmVyc2lvbiBjb25maWcgZmlsZSBvbmx5
IG9uY2UgaXMgZW5vdWdoLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jcHAucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jcHAucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTIg
QEAgaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHJlCiBpbXBvcnQgc3RyaW5nCi1p
bXBvcnQgc3lzCiBpbXBvcnQgdW5pY29kZWRhdGEKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IG1h
dGNoLCBzZWFyY2gsIHN1Yiwgc3VibgogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1w
b3J0IG1lbW9pemVkCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IHVuaWNvZGUKIAogIyBUaGUga2V5IHRvIHVzZSB0byBwcm92aWRlIGEgY2xhc3MgdG8g
ZmFrZSBsb2FkaW5nIGEgaGVhZGVyIGZpbGUuCiBJTkNMVURFX0lPX0lOSkVDVElPTl9LRVkgPSAn
aW5jbHVkZV9oZWFkZXJfaW8nCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NDUzKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDkgQEAgaW1wb3J0IG9zLnBhdGgKIGltcG9ydCByYW5k
b20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3NhcnkKKworZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNr
ZXJzIGltcG9ydCBjcHAgYXMgY3BwX3N0eWxlCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJz
LmNwcCBpbXBvcnQgQ3BwQ2hlY2tlcgogZnJvbSB3ZWJraXRweS5zdHlsZS5maWx0ZXIgaW1wb3J0
IEZpbHRlckNvbmZpZ3VyYXRpb24KQEAgLTI0NjUsNyArMjQ2Nyw3IEBAIGNsYXNzIENwcFN0eWxl
VGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgZGVmIGRvX3Rlc3Qoc2VsZiwgcmF3X2J5
dGVzLCBoYXNfaW52YWxpZF91dGY4KToKICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0VHJ1ZSkKICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19m
aWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVjb2RlX2lmX25lY2Vzc2FyeShyYXdfYnl0ZXMsIGVuY29kaW5nPSd1dGY4JywgZXJy
b3JzPSdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmluZ191dGlscy5kZWNvZGUocmF3X2J5dGVzLCBlbmNvZGluZz0ndXRmOCcsIGVy
cm9ycz0ncmVwbGFjZScpLnNwbGl0KCdcbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFwcGVh
cnMgb25seSBvbmNlLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CShyZXZpc2lv
biAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhv
bi5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQg
c3lzCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmVTY29w
ZQogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVy
CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgcGVwOApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDI2NDQ1MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNywx
NiArMzcsMTYgQEAgaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS50
ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBv
cnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0
X3Rlc3RfbmFtZQogZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiBm
cm9tIHdlYmtpdHB5LnJlc3VsdHMub3B0aW9ucyBpbXBvcnQgdXBsb2FkX29wdGlvbnMKIAorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dl
cihfX25hbWVfXykKIAogX2hvc3QgPSBIb3N0KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsOCBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0
CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3Ry
aW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50ZXIucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50ZXIucHkJKHJldmlzaW9uIDI2NDQ1MykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9wcmludGVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw5ICsyMywxMCBAQAogCiBpbXBvcnQgbG9nZ2luZwogCitmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRw
dXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQg
U3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9z
dHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGlt
cG9ydCBwbHVyYWxpemUKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5l
cl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qv
cnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw4IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1w
b3J0IFByaW50ZXIKIGZyb20gd2Via2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lcgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3NraXBfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3NraXBfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9za2lwX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBACiBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBm
cm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBvcnQgc2tpcF9pZgogCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQkocmV2aXNpb24gMjY0
NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBAIGltcG9ydCBpdGVydG9vbHMKIGltcG9y
dCByYW5kb20KIGltcG9ydCByZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQor
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IGlyYyBhcyBjb25maWdfaXJjCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQud2ViIGltcG9ydCBXZWIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNvZGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVl
dWVlbmdpbmUgaW1wb3J0IFRlcm1pbmF0ZVF1ZXVlCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1h
ciBpbXBvcnQgam9pbl93aXRoX3NlcGFyYXRvcnMKIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFy
IGltcG9ydCBwbHVyYWxpemUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkocmV2aXNpb24gMjY0
NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fybmlu
Z3N5c3RlbS5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMjAgKzI5LDE3IEBACiAKIGltcG9ydCBq
c29uCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtl
X29wdGlvbgogaW1wb3J0IHN5cwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0
dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAotZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBv
cnRzIGltcG9ydCBEZXByZWNhdGVkUG9ydAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQg
RmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
U2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgZW5jb2RlX2ZvcgogZnJvbSB3ZWJraXRweS50b29sLmJvdC5lYXJseXdhcm5pbmdzeXN0
ZW10YXNrIGltcG9ydCBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrLCBFYXJseVdhcm5pbmdTeXN0ZW1U
YXNrRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFk
ZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90
LmpzY3Rlc3RyZXN1bHRzcmVhZGVyIGltcG9ydCBKU0NUZXN0UmVzdWx0c1JlYWRlcgogZnJvbSB3
ZWJraXRweS50b29sLmJvdC5wYXRjaGFuYWx5c2lzdGFzayBpbXBvcnQgVW5hYmxlVG9BcHBseVBh
dGNoLCBQYXRjaElzTm90VmFsaWQsIFBhdGNoSXNOb3RBcHBsaWNhYmxlCi1mcm9tIHdlYmtpdHB5
LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBRdWV1ZUVuZ2luZQogZnJvbSB3ZWJraXRweS50
b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgQWJzdHJhY3RSZXZpZXdRdWV1ZQogCiBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC0xNTYsOSArMTUzLDkgQEAgY2xhc3MgQWJz
dHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJhYwogICAgICAgICBjbGFzc2VzID0gW10KICAg
ICAgICAgZm9yIG5hbWUsIGNvbmZpZyBpbiBld3Nlcy5pdGVtcygpOgogICAgICAgICAgICAgaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0g
ZW5jb2RlX2ZvcihuYW1lLCBzdHIpLnRyYW5zbGF0ZSgnIC0nKQorICAgICAgICAgICAgICAgIHRy
YW5zbGF0ZWQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKG5hbWUsIHRhcmdldF90eXBlPXN0cikudHJh
bnNsYXRlKCcgLScpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyYW5zbGF0
ZWQgPSBlbmNvZGVfZm9yKG5hbWUsIHN0cikudHJhbnNsYXRlKE5vbmUsICcgLScpCisgICAgICAg
ICAgICAgICAgdHJhbnNsYXRlZCA9IHN0cmluZ191dGlscy5lbmNvZGUobmFtZSwgdGFyZ2V0X3R5
cGU9c3RyKS50cmFuc2xhdGUoTm9uZSwgJyAtJykKIAogICAgICAgICAgICAgY2xhc3Nlcy5hcHBl
bmQodHlwZSh0cmFuc2xhdGVkLCAoY2xzLCksIHsKICAgICAgICAgICAgICAgICAnbmFtZSc6IGNv
bmZpZy5nZXQoJ25hbWUnLCBjb25maWdbJ3BvcnQnXSArICctZXdzJyksCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHJldmlzaW9uIDI2
NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNywxOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBmcm9t
IG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQb3J0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQu
YnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8KIGZyb20gd2Via2l0cHkudG9vbC5ib3QuYm90
aW5mbyBpbXBvcnQgQm90SW5mbwotZnJvbSB3ZWJraXRweS50b29sLmJvdC5mbGFreXRlc3RyZXBv
cnRlciBpbXBvcnQgRmxha3lUZXN0UmVwb3J0ZXIKLWZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5
b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCi1mcm9t
IHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoYW5hbHlzaXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5
UGF0Y2gsIFBhdGNoSXNOb3RWYWxpZAogZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2lu
ZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5naW5lRGVsZWdhdGUKIGZyb20gd2Via2l0cHku
dG9vbC5jb21tYW5kcy5zdGVwc2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxl
cgotZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQsIFRy
eUFnYWluCitmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFu
ZAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVz
dC5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3LDEx
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgb3MKLQotZnJvbSB3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDaGVja291dE5lZWRzVXBkYXRlCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00K
LWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0
VGVzdFJlc3VsdHMKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0
YWNobWVudAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0
IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgU3RyaW5nSU8KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBv
cnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2Nr
CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRz
VGVzdAogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgKgotZnJvbSB3
ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlc3Rlc3QgaW1wb3J0IFF1ZXVlc1Rlc3QKLWZyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVwc2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZQot
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVG9vbCwgTW9ja09wdGlvbnMK
K2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKIAogCiBjbGFzcyBU
ZXN0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQkocmV2aXNpb24gMjY0NDUzKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTQgKzI3LDEzIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQogCi1mcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMuYWJzdHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dCBpbXBvcnQgZGlmZl9wYXJzZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBz
IGltcG9ydCBjb25maXJtZGlmZgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NDUzKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMSBAQCBpbXBvcnQgb3MKIGltcG9ydCByZQog
aW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZy
b20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQogZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gd2Vi
a2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBfVzNDVGVzdENvbnZlcnRlcgogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkJKHJldmlzaW9u
IDI2NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxMSBAQAogaW1wb3J0IGFyZ3BhcnNlCiBpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogaW1wb3J0IGpzb24KIGltcG9ydCBz
eXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0IGltcG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBp
bXBvcnQgQnVnemlsbGEKQEAgLTM5LDcgKzQwLDYgQEAgZnJvbSB3ZWJraXRweS53M2Mud3B0X2dp
dGh1YiBpbXBvcnQgV1BURwogZnJvbSB3ZWJraXRweS53M2Mud3B0X2xpbnRlciBpbXBvcnQgV1BU
TGludGVyCiBmcm9tIHdlYmtpdHB5LnczYy5jb21tb24gaW1wb3J0IFdQVF9HSF9PUkcsIFdQVF9H
SF9SRVBPX05BTUUsIFdQVF9HSF9VUkwsIFdQVFBhdGhzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5t
ZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiBpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBI
VFRQRXJyb3IKQEAgLTE2MCw3ICsxNjAsNyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRl
cihvYmplY3QpOgogICAgICAgICByZXR1cm4gbGluZS5zcGxpdChiJyAnKVstMV0KIAogICAgIGRl
ZiBfaXNfaWdub3JlZF9maWxlKHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgZmlsZW5hbWUgPSBk
ZWNvZGVfZm9yKGZpbGVuYW1lLCBzdHIpCisgICAgICAgIGZpbGVuYW1lID0gc3RyaW5nX3V0aWxz
LmRlY29kZShmaWxlbmFtZSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICBmb3Igc3VmZml4IGlu
IEVYQ0xVREVEX0ZJTEVfU1VGRklYRVM6CiAgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0
aChzdWZmaXgpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0xODUsMTAgKzE4NSwx
MCBAQCBjbGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICBfLCBw
YXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0X2V4
cG9ydF9wYXRjaCcpCiAgICAgICAgIHBhdGNoX2RhdGEgPSBzZWxmLl93cHRfcGF0Y2gKICAgICAg
ICAgaWYgYidkaWZmJyBub3QgaW4gcGF0Y2hfZGF0YToKLSAgICAgICAgICAgIF9sb2cuaW5mbygn
Tm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0Y2ggZGF0YSBpczogInt9IicuZm9ybWF0KGRlY29k
ZV9mb3IocGF0Y2hfZGF0YSwgc3RyKSkpCisgICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5n
ZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEgaXM6ICJ7fSInLmZvcm1hdChzdHJpbmdfdXRpbHMu
ZGVjb2RlKHBhdGNoX2RhdGEsIHRhcmdldF90eXBlPXN0cikpKQogICAgICAgICAgICAgcmV0dXJu
IGInJwogICAgICAgICAjIEZJWE1FOiBXZSBjYW4gcHJvYmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0
aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRvIHRoYXQgcmVwbGFjZW1lbnQuCi0gICAgICAgIHBh
dGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2UoZW5jb2RlX2lmX25lY2Vzc2FyeShXRUJLSVRf
V1BUX0RJUikgKyBiJy8nLCBiJycpCisgICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJl
cGxhY2Uoc3RyaW5nX3V0aWxzLmVuY29kZShXRUJLSVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCiAK
ICAgICAgICAgIyBGSVhNRTogU3VwcG9ydCBzdHJpcHBpbmcgb2YgPCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgLS0+IGNvbW1lbnRzLgogICAgICAgICBzZWxmLmhhc193ZWJraXRfdGVzdF9ydW5uZXJf
c3BlY2lmaWNfY2hhbmdlcyA9IGInd2Via2l0LXRlc3QtcnVubmVyJyBpbiBwYXRjaF9kYXRhCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dwdF9naXRodWIucHkJKHJldmlzaW9uIDI2
NDQ1MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dwdF9naXRodWIucHkJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDExICszMSwxMiBAQCBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCByZQogaW1wb3J0IHN5cworCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1
cGxlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0
cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS53M2MuY29t
bW9uIGltcG9ydCBXUFRfR0hfT1JHLCBXUFRfR0hfUkVQT19OQU1FLCBFWFBPUlRfUFJfTEFCRUwK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2Rl
X2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgogICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJyb3IKQEAgLTY4LDcgKzY5LDcg
QEAgY2xhc3MgV1BUR2l0SHViKG9iamVjdCk6CiAKICAgICBkZWYgYXV0aF90b2tlbihzZWxmKToK
ICAgICAgICAgYXNzZXJ0IHNlbGYuaGFzX2NyZWRlbnRpYWxzKCkKLSAgICAgICAgcmV0dXJuIGRl
Y29kZV9mb3IoYmFzZTY0LmI2NGVuY29kZShlbmNvZGVfaWZfbmVjZXNzYXJ5KCd7fTp7fScuZm9y
bWF0KHNlbGYudXNlciwgc2VsZi50b2tlbikpKSwgc3RyKQorICAgICAgICByZXR1cm4gc3RyaW5n
X3V0aWxzLmRlY29kZShiYXNlNjQuYjY0ZW5jb2RlKHN0cmluZ191dGlscy5lbmNvZGUoJ3t9Ont9
Jy5mb3JtYXQoc2VsZi51c2VyLCBzZWxmLnRva2VuKSkpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAg
ICBkZWYgcmVxdWVzdChzZWxmLCBwYXRoLCBtZXRob2QsIGJvZHk9Tm9uZSk6CiAgICAgICAgICIi
IlNlbmRzIGEgcmVxdWVzdCB0byBHaXRIdWIgQVBJIGFuZCBkZXNlcmlhbGl6ZXMgdGhlIHJlc3Bv
bnNlLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1Yl91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHVi
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwx
MCBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5
IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCi1mcm9tIHdlYmtpdHB5Lncz
Yy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRIdWIsIE1lcmdlRXJyb3IKK2Zyb20gd2Via2l0cHku
dzNjLndwdF9naXRodWIgaW1wb3J0IFdQVEdpdEh1YgogCiAKIGNsYXNzIFdQVEdpdEh1YlRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDYsNCArNDcsNCBAQCBjbGFzcyBXUFRHaXRIdWJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9hdXRoX3Rva2VuKHNlbGYpOgogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2VsZi53cHRfZ2l0aHViLmF1dGhf
dG9rZW4oKSwKLSAgICAgICAgICAgIGRlY29kZV9mb3IoYmFzZTY0LmVuY29kZXN0cmluZyhlbmNv
ZGVfaWZfbmVjZXNzYXJ5KCdydXRhYmFnYTpkZWNhZmJhZCcpKSwgc3RyKS5zdHJpcCgpKQorICAg
ICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29kZShiYXNlNjQuZW5jb2Rlc3RyaW5nKHN0cmluZ191
dGlscy5lbmNvZGUoJ3J1dGFiYWdhOmRlY2FmYmFkJykpLCB0YXJnZXRfdHlwZT1zdHIpLnN0cmlw
KCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2Vf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9z
aW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ0NTMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxMiArMjMsMTEgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBz
dHJpbmdfdXRpbHMsIFZlcnNpb24KIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9u
ZWNlc3NhcnkKIGZyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmljZVR5
cGUKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2RldmljZSBpbXBvcnQgRGV2aWNlUmVx
dWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlciwgU2ltdWxhdGVkRGV2aWNlCiAKQEAgLTY1MSw3
ICs2NTAsNyBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2VUZXN0KHVuaXR0ZXN0LlRlc3RDCiAgICAg
ICAgICMgYXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSAuanNvbiBvdXRwdXQuCiAgICAgICAgIGRldmlj
ZV9wbGlzdCA9IGRldmljZS5maWxlc3lzdGVtLmV4cGFuZHVzZXIoZGV2aWNlLmZpbGVzeXN0ZW0u
am9pbihTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLnNpbXVsYXRvcl9kZXZpY2VfcGF0aCwgZGV2aWNl
LnVkaWQsICdkZXZpY2UucGxpc3QnKSkKICAgICAgICAgaW5kZXhfcG9zaXRpb24gPSBkZXZpY2Uu
ZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxpc3RdLmluZGV4KGInPC9pbnRlZ2VyPicpIC0gMQot
ICAgICAgICBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxpc3RdID0gZGV2aWNlLmZp
bGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XVs6aW5kZXhfcG9zaXRpb25dICsgZW5jb2RlX2lm
X25lY2Vzc2FyeShzdHIoc3RhdGUpKSArIGRldmljZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9w
bGlzdF1baW5kZXhfcG9zaXRpb24gKyAxOl0KKyAgICAgICAgZGV2aWNlLmZpbGVzeXN0ZW0uZmls
ZXNbZGV2aWNlX3BsaXN0XSA9IGRldmljZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1b
OmluZGV4X3Bvc2l0aW9uXSArIHN0cmluZ191dGlscy5lbmNvZGUoc3RyKHN0YXRlKSkgKyBkZXZp
Y2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxpc3RdW2luZGV4X3Bvc2l0aW9uICsgMTpdCiAK
ICAgICBkZWYgdGVzdF9zd2FwcGluZ19kZXZpY2VzKHNlbGYpOgogICAgICAgICBTaW11bGF0ZWRE
ZXZpY2VUZXN0LnJlc2V0X3NpbXVsYXRlZF9kZXZpY2VfbWFuYWdlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404561</attachid>
            <date>2020-07-17 07:52:04 -0700</date>
            <delta_ts>2020-07-21 06:50:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200717075203.patch</filename>
            <type>text/plain</type>
            <size>116470</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyMSBAQAorMjAyMC0wNy0xNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2VudHJhbGl6ZSBoYW5kbGlu
ZyBvZiB1bmljb2RlIGVuY29kaW5nL2RlY29kaW5nIGFsb25nIHdpdGggdmFyaW91cyB0b29scwor
ICAgICAgICBmb3IgcHJpbnRpbmcgc3RyaW5ncy4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6CisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9zdHJpbmdfdXRpbHMucHk6
IEFkZGVkLgorICAgICAgICAoZW5jb2RlKTogRW5jb2RlIGEgc3RyaW5nIGFzIGJ5dGVzLgorICAg
ICAgICAoZGVjb2RlKTogRGVjb2RlIGEgYnl0ZXMgYXMgYSBzdHJpbmcuCisgICAgICAgIChvcmRp
bmFsKTogQ29udmVydCBhIG51bWJlciB0byAxc3QsIDJuZCwgM3JkLCA0dGgsIGVjdC4KKyAgICAg
ICAgKHBsdXJhbGl6ZSk6IENvbnZlcnQgYSBzdHJpbmcgdG8gaXQncyBwbHVybGFyaXplZCB2ZXJz
aW9uLCBpZiBwcm92aWRlZCBudW1iZXIgaW5kaWNhdGVzCisgICAgICAgIGl0IHNob3VsZCBiZS4K
KyAgICAgICAgKGpvaW4pOiBKb2luIGEgbGlzdCBvZiBlbGVtZW50cyBpbiBhIGh1bWFuLXJlYWRh
YmxlIGZvcm0uCisgICAgICAgIChvdXRfb2YpOiBDcmVhdGUgYSBmcmFjdGlvbiB3aGljaCB0YWtl
cyB1cCBhIGNvbnN0YW50IGFtb3VudCBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAoZWxhcHNlZCk6
IERlc2NyaWJlIHRoZSBhbW91bnQgb2YgdGltZSBlbGFwc2VkIGFzIGEgaHVtYW4tcmVhZGFibGUg
c3RyaW5nLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvdGVzdHMvc3RyaW5nX3V0aWxzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFN0
cmluZ1V0aWxzKTogVGVzdCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9hcGlfdGVzdHMvcnVubmVyLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRo
IHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4u
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAg
ICAgICByZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0
eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6IFJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weTogUmVw
bGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHk6IFJl
cGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCBy
ZW1vdmUgdW51c2VkIGltcG9ydHMKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL2dpdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAgICAgICAgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zdm4ucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0
aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJz
LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAg
ICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29t
cGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBv
cnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWls
ZGJvdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3
c3NlcnZlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRjaC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9t
X3BuZ191bml0dGVzdC5weTogRGl0dG8KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHk6IERpdHRv
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmVfbW9jay5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weTogUmVwbGFj
ZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
b3V0cHV0Y2FwdHVyZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJp
bmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1
dHRlZV91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdW5pY29kZV9jb21wYXRpYmlsaXR5LnB5OiBSZXBsYWNlZCB3aXRoIHdlYmtpdGNvcmVweS5z
dHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1v
dmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xp
bnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWls
ZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3Vu
aXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0
cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9wcmludGluZ191bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5
OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAg
ICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZl
ci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmlu
ZC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZQorICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weTogRGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5w
eTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNl
ZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191
dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6IFJlcGxh
Y2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2Vk
IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3Qu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9wcmludGVyLnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3Qvc2tpcF91bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQorICAgICAgICB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQor
ICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMsIHJlbW92ZSB1bnVzZWQKKyAgICAgICAgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3czYy93cHRfZ2l0aHViLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0
aHViX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisKIDIwMjAtMDctMTYgIFhh
YmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgY3JlYXRlQm94UHRyIGludG8gYWRvcHRCb3hQdHIKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5tZAkocmV2aXNpb24gMjY0NTA4KQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5tZAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAsMyArMTAsMTYgQEAgVmVyc2lvbiByZXByZXNlbnRhdGlvbgogZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KIHZlcnNpb24gPSBWZXJzaW9uKDEsIDIsIDMpCiBg
YGAKKworVW5pY29kZSBzdHJlYW0gbWFuYWdlbWVudCBhY3Jvc3MgUHl0aG9uIDIgYW5kIDMKK2Bg
YAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBVbmljb2RlSU8s
IHVuaWNvZGUKK2BgYAorCitFbmNvZGluZyBhbmQgZGVjb2RpbmcgYnl0ZSBzdHJpbmdzIGFuZCB1
bmljb2RlIHN0cmluZ3MKK2BgYAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGls
cworCitzdHJpbmdfdXRpbHMuZW5jb2RlKC4uLikKK3N0cmluZ191dGlscy5kZWNvZGUoLi4uKQor
YGBgCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2NDUwOCkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0
X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDQgKzIxLDYgQEAKICMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gd2Vi
a2l0Y29yZXB5LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KLXZlcnNpb24gPSBWZXJzaW9uKDAsIDAs
IDEpCitmcm9tIHdlYmtpdGNvcmVweS5zdHJpbmdfdXRpbHMgaW1wb3J0IEJ5dGVzSU8sIFN0cmlu
Z0lPLCBVbmljb2RlSU8sIHVuaWNvZGUKKwordmVyc2lvbiA9IFZlcnNpb24oMCwgMCwgMikKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvc3Ry
aW5nX3V0aWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvc3RyaW5nX3V0aWxzLnB5CShub25leGlzdGVudCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvc3RyaW5nX3V0
aWxzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAyIEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBpbworaW1wb3J0IHN5cworCitCeXRlc0lP
ID0gaW8uQnl0ZXNJTworaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBTdHJpbmdJ
TyA9IGlvLlN0cmluZ0lPCitlbHNlOgorICAgIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lP
CitVbmljb2RlSU8gPSBpby5TdHJpbmdJTworCit1bmljb2RlID0gc3RyIGlmIHN5cy52ZXJzaW9u
X2luZm8gPiAoMywgMCkgZWxzZSB1bmljb2RlCisKKworZGVmIGVuY29kZShzdHJpbmcsIGVuY29k
aW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JywgdGFyZ2V0X3R5cGU9Ynl0ZXMpOgorICAgIGlm
IHR5cGUoc3RyaW5nKSA9PSB1bmljb2RlIGFuZCB0YXJnZXRfdHlwZSA9PSBieXRlczoKKyAgICAg
ICAgcmV0dXJuIHN0cmluZy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgcmV0
dXJuIHN0cmluZworCisKK2RlZiBkZWNvZGUoZGF0YSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3Jz
PSdzdHJpY3QnLCB0YXJnZXRfdHlwZT11bmljb2RlKToKKyAgICBpZiB0eXBlKGRhdGEpID09IGJ5
dGVzIGFuZCB0YXJnZXRfdHlwZSA9PSB1bmljb2RlOgorICAgICAgICByZXR1cm4gZGF0YS5kZWNv
ZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgcmV0dXJuIGRhdGEKKworCitkZWYgb3Jk
aW5hbChudW1iZXIpOgorICAgIG51bWJlciA9IGludChudW1iZXIpCisgICAgaWYgMTAgPCBudW1i
ZXIgJSAxMDAgPCAyMDoKKyAgICAgICAgcmV0dXJuICd7fXRoJy5mb3JtYXQobnVtYmVyKQorICAg
IHJldHVybiAne317fScuZm9ybWF0KAorICAgICAgICBudW1iZXIsIHsKKyAgICAgICAgICAgIDE6
ICdzdCcsCisgICAgICAgICAgICAyOiAnbmQnLAorICAgICAgICAgICAgMzogJ3JkJywKKyAgICAg
ICAgfS5nZXQobnVtYmVyICUgMTAsICd0aCcpCisgICAgKQorCisKK2RlZiBwbHVyYWxpemUobnVt
YmVyLCBzdHJpbmcsIHBsdXJhbD1Ob25lKToKKyAgICBpZiBudW1iZXIgPT0gMToKKyAgICAgICAg
cmV0dXJuICcxIHt9Jy5mb3JtYXQoc3RyaW5nKQorICAgIGlmIHBsdXJhbDoKKyAgICAgICAgcmV0
dXJuICd7fSB7fScuZm9ybWF0KG51bWJlciwgcGx1cmFsKQorICAgIHJldHVybiAne30ge31zJy5m
b3JtYXQobnVtYmVyLCBzdHJpbmcpCisKKworZGVmIGpvaW4obGlzdCwgY29uanVuY3Rpb249J2Fu
ZCcpOgorICAgIGlmIG5vdCBsaXN0OgorICAgICAgICByZXR1cm4gJ05vdGhpbmcnCisgICAgaWYg
bGVuKGxpc3QpID09IDE6CisgICAgICAgIHJldHVybiBsaXN0WzBdCisgICAgcmV0dXJuICd7fSB7
fSB7fScuZm9ybWF0KCcsICcuam9pbihsaXN0WzotMV0pLCBjb25qdW5jdGlvbiwgbGlzdFstMV0p
CisKKworZGVmIG91dF9vZihudW1iZXIsIGJhc2UpOgorICAgIG51bWJlciA9IHN0cihudW1iZXIp
CisgICAgYmFzZSA9IHN0cihiYXNlKQorICAgIHJldHVybiAnW3t9e30ve31dJy5mb3JtYXQoJyAn
ICogKGxlbihiYXNlKSAtIGxlbihudW1iZXIpKSwgbnVtYmVyLCBiYXNlKQorCisKK2RlZiBlbGFw
c2VkKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPD0gMDoKKyAgICAgICAgcmV0dXJuICdubyB0
aW1lJworICAgIGVsaWYgc2Vjb25kcyA8IDE6CisgICAgICAgIHJldHVybiAnbGVzcyB0aGFuIGEg
c2Vjb25kJworCisgICAgc2Vjb25kcyA9IGludChyb3VuZChzZWNvbmRzKSkKKyAgICBtaW51dGVz
ID0gc2Vjb25kcyAvLyA2MAorICAgIGhvdXJzID0gbWludXRlcyAvLyA2MAorICAgIGRheXMgPSBo
b3VycyAvLyAyNAorCisgICAgZm9yY2UgPSBGYWxzZQorICAgIHJlc3VsdCA9ICcnCisgICAgZm9y
IHZhbHVlLCBkZXNjcmlwdGlvbiBpbiBbKGRheXMsICdkYXknKSwgKGhvdXJzICUgMjQsICdob3Vy
JyksIChtaW51dGVzICUgNjAsICdtaW51dGUnKV06CisgICAgICAgIGlmIGZvcmNlIG9yIHZhbHVl
OgorICAgICAgICAgICAgZm9yY2UgPSBUcnVlCisgICAgICAgICAgICByZXN1bHQgKz0gJyAnICsg
cGx1cmFsaXplKHZhbHVlLCBkZXNjcmlwdGlvbikKKyAgICBpZiBmb3JjZToKKyAgICAgICAgcmV0
dXJuIHJlc3VsdFsxOl0gKyAnIGFuZCAnICsgcGx1cmFsaXplKHNlY29uZHMgJSA2MCwgJ3NlY29u
ZCcpCisgICAgcmV0dXJuIHBsdXJhbGl6ZShzZWNvbmRzICUgNjAsICdzZWNvbmQnKQpJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9z
dHJpbmdfdXRpbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9zdHJpbmdfdXRpbHNfdW5pdHRl
c3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9zdHJpbmdfdXRpbHNfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTywgVW5pY29kZUlPLCB1bmljb2RlLCBzdHJpbmdfdXRp
bHMKKworCitjbGFzcyBTdHJpbmdVdGlscyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRl
c3RfYnl0ZXNpbyhzZWxmKToKKyAgICAgICAgc3RyZWFtID0gQnl0ZXNJTygpCisgICAgICAgIHN0
cmVhbS53cml0ZShiJ2J5dGVzIGRhdGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5nZXR2YWx1ZSgpLCBiJ2J5dGVzIGRhdGEnKQorCisgICAgZGVmIHRlc3Rfc3RyaW5naW8oc2Vs
Zik6CisgICAgICAgIHN0cmVhbSA9IFN0cmluZ0lPKCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCdz
dHJpbmcgZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVlKCks
ICdzdHJpbmcgZGF0YScpCisKKyAgICBkZWYgdGVzdF91bmljb2RlaW8oc2VsZik6CisgICAgICAg
IHN0cmVhbSA9IFVuaWNvZGVJTygpCisgICAgICAgIHN0cmVhbS53cml0ZSh1J3VuaWNvZFx1MDBF
OSBkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwgdSd1
bmljb2RcdTAwRTkgZGF0YScpCisKKyAgICBkZWYgdGVzdF91bmljb2RlKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGUodSd1bmljb2RlOiBcdTAwRTknKSwgdSd1bmljb2Rl
OiBcdTAwRTknKQorCisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmluZ191dGlscy5lbmNvZGUodSd1bmljb2RlOiBcdTAwRTknKSwgYid1bmlj
b2RlOiBceGMzXHhhOScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVu
Y29kZShiJ2J5dGVzIGRhdGEnKSwgYidieXRlcyBkYXRhJykKKworICAgIGRlZiB0ZXN0X2RlY29k
ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuZGVjb2RlKHUn
dW5pY29kZTogXHUwMEU5JyksIHUndW5pY29kZTogXHUwMEU5JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJpbmdfdXRpbHMuZGVjb2RlKGIndW5pY29kZTogXHhjM1x4YTknKSwgdSd1bmlj
b2RlOiBcdTAwRTknKQorCisgICAgZGVmIHRlc3Rfb3JkaW5hbChzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgwKSwgJzB0aCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMSksICcxc3QnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDIpLCAnMm5kJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgzKSwgJzNyZCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoNCksICc0dGgnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDUpLCAnNXRoJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCg2KSwgJzZ0aCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoNyksICc3dGgnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDgpLCAnOHRoJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCg5KSwgJzl0aCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMTApLCAnMTB0aCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMTEpLCAnMTF0
aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMTIpLCAn
MTJ0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMTMp
LCAnMTN0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwo
MjEpLCAnMjFzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGlu
YWwoMjIpLCAnMjJuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9y
ZGluYWwoMjMpLCAnMjNyZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxz
Lm9yZGluYWwoMTAxKSwgJzEwMXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdf
dXRpbHMub3JkaW5hbCgxMTEpLCAnMTExdGgnKQorCisgICAgZGVmIHRlc3RfcGx1cmFsaXplKHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5wbHVyYWxpemUoMCwg
J3NlY29uZCcpLCAnMCBzZWNvbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdf
dXRpbHMucGx1cmFsaXplKDEsICdzZWNvbmQnKSwgJzEgc2Vjb25kJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1cmFsaXplKDIsICdzZWNvbmQnKSwgJzIgc2Vjb25k
cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLnBsdXJhbGl6ZSgwLCAn
bW91c2UnLCAnbWljZScpLCAnMCBtaWNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJp
bmdfdXRpbHMucGx1cmFsaXplKDEsICdtb3VzZScsICdtaWNlJyksICcxIG1vdXNlJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1cmFsaXplKDIsICdtb3VzZScsICdt
aWNlJyksICcyIG1pY2UnKQorCisgICAgZGVmIHRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuam9pbihbJ2ludGVnZXInLCAnc3RyaW5nJywgJ2Zs
b2F0J10pLCAnaW50ZWdlciwgc3RyaW5nIGFuZCBmbG9hdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4oWydpbnRlZ2VyJywgJ3N0cmluZyddKSwgJ2ludGVnZXIg
YW5kIHN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4o
WydpbnRlZ2VyJ10pLCAnaW50ZWdlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5n
X3V0aWxzLmpvaW4oW10pLCAnTm90aGluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
aW5nX3V0aWxzLmpvaW4oWydpbnRlZ2VyJywgJ3N0cmluZyddLCBjb25qdW5jdGlvbj0nb3InKSwg
J2ludGVnZXIgb3Igc3RyaW5nJykKKworICAgIGRlZiB0ZXN0X291dG9mKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vdXRfb2YoMSwgMyksICdbMS8zXScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm91dF9vZigxLCAxMCksICdbIDEv
MTBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3V0X29mKDEwLCAx
MCksICdbMTAvMTBdJykKKworICAgIGRlZiB0ZXN0X2VsYXBzZWQoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoMCksICdubyB0aW1lJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuZWxhcHNlZCguNSksICdsZXNzIHRoYW4g
YSBzZWNvbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5lbGFwc2Vk
KDEpLCAnMSBzZWNvbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5l
bGFwc2VkKDQpLCAnNCBzZWNvbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdf
dXRpbHMuZWxhcHNlZCg3NCksICcxIG1pbnV0ZSBhbmQgMTQgc2Vjb25kcycpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoMyAqIDYwICogNjApLCAnMyBob3Vy
cyAwIG1pbnV0ZXMgYW5kIDAgc2Vjb25kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
aW5nX3V0aWxzLmVsYXBzZWQoMjQgKiA2MCAqIDYwICsgNjAgKiA2MCArIDQgKiA2MCArIDUpLCAn
MSBkYXkgMSBob3VyIDQgbWludXRlcyBhbmQgNSBzZWNvbmRzJykKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9ydW5uZXIucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bm5lci5weQkod29ya2luZyBjb3B5KQpA
QCAtMjQsMTEgKzI0LDEyIEBAIGltcG9ydCBvcwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB0aW1l
CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRw
eS5jb21tb24gaW1wb3J0IG1lc3NhZ2VfcG9vbAogZnJvbSB3ZWJraXRweS5jb21tb24uaXRlcmF0
aW9uX2NvbXBhdGliaWxpdHkgaW1wb3J0IGl0ZXJpdGVtcwogZnJvbSB3ZWJraXRweS5wb3J0LnNl
cnZlcl9wcm9jZXNzIGltcG9ydCBTZXJ2ZXJQcm9jZXNzLCBfbG9nIGFzIHNlcnZlcl9wcm9jZXNz
X2xvZ2dlcgogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11bGF0ZWRfZGV2aWNlIGltcG9ydCBTaW11
bGF0ZWREZXZpY2VNYW5hZ2VyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGli
aWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKIAogCiBjbGFzcyBSdW5uZXIob2JqZWN0KToKQEAgLTE3
OSwxMSArMTgwLDExIEBAIGNsYXNzIF9Xb3JrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKIAogICAgICAgICAgICAgICAgIGlmIHN0ZGVycl9saW5lOgotICAgICAgICAgICAg
ICAgICAgICBzdGRlcnJfbGluZSA9IGRlY29kZV9mb3Ioc3RkZXJyX2xpbmUsIHN0cikKKyAgICAg
ICAgICAgICAgICAgICAgc3RkZXJyX2xpbmUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0ZGVycl9s
aW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICAgICAgICAgIHN0ZGVycl9idWZmZXIg
Kz0gc3RkZXJyX2xpbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0KCdsb2cnLCBvdXRw
dXQ9c3RkZXJyX2xpbmVbOi0xXSkKICAgICAgICAgICAgICAgICBpZiBzdGRvdXRfbGluZToKLSAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0X2xpbmUgPSBkZWNvZGVfZm9yKHN0ZG91dF9saW5lLCBz
dHIpCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dF9saW5lID0gc3RyaW5nX3V0aWxzLmRlY29k
ZShzdGRvdXRfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgICAgICAgICBpZiAn
KipQQVNTKionIGluIHN0ZG91dF9saW5lOgogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0gUnVubmVyLlNUQVRVU19QQVNTRUQKICAgICAgICAgICAgICAgICAgICAgZWxpZiAnKipGQUlM
KionIGluIHN0ZG91dF9saW5lOgpAQCAtMjAyLDggKzIwMyw4IEBAIGNsYXNzIF9Xb3JrZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBSdW5uZXIuU1RBVFVTX0ZBSUxFRAogCiAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByZW1haW5pbmdfc3RkZXJyID0gZGVjb2RlX2Zv
cihzZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpLCBzdHIpCi0gICAgICAg
ICAgICByZW1haW5pbmdfc3Rkb3V0ID0gZGVjb2RlX2ZvcihzZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxs
X2J1ZmZlcmVkX3N0ZG91dCgpLCBzdHIpCisgICAgICAgICAgICByZW1haW5pbmdfc3RkZXJyID0g
c3RyaW5nX3V0aWxzLmRlY29kZShzZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVy
cigpLCB0YXJnZXRfdHlwZT1zdHIpCisgICAgICAgICAgICByZW1haW5pbmdfc3Rkb3V0ID0gc3Ry
aW5nX3V0aWxzLmRlY29kZShzZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZG91dCgp
LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBzZWxmLnBvc3QoJ2xvZycsIG91dHB1dD1y
ZW1haW5pbmdfc3RkZXJyICsgcmVtYWluaW5nX3N0ZG91dCkKICAgICAgICAgICAgIG91dHB1dF9i
dWZmZXIgPSBzdGRlcnJfYnVmZmVyICsgc3Rkb3V0X2J1ZmZlciArIHJlbWFpbmluZ19zdGRlcnIg
KyByZW1haW5pbmdfc3Rkb3V0CiAgICAgICAgICAgICBzZXJ2ZXJfcHJvY2Vzcy5zdG9wKCkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkJKHJldmlzaW9uIDI2NDUw
OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTIgKzI3LDEzIEBAIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBv
cy5wYXRoCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1w
b3J0IHRlbXBmaWxlCisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwog
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0
X3NjbV9zeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIAogCiBjbGFzcyBCaW5kaW5nc1Rlc3RzOgpAQCAt
NzcsNyArNzgsNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICAgICAgKG5hbWUsIGV4
dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCiAgICAgICAgICAgICBpZiBl
eHRlbnNpb24gIT0gJy5pZGwnOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAg
ICBvcy53cml0ZShpZGxfZmlsZXNfbGlzdFswXSwgZW5jb2RlX2lmX25lY2Vzc2FyeShvcy5wYXRo
LmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9maWxlKSArICJcbiIpKQorICAgICAgICAgICAg
b3Mud3JpdGUoaWRsX2ZpbGVzX2xpc3RbMF0sIHN0cmluZ191dGlscy5lbmNvZGUob3MucGF0aC5q
b2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmlsZSkgKyAiXG4iKSkKICAgICAgICAgb3MuY2xv
c2UoaWRsX2ZpbGVzX2xpc3RbMF0pCiAKICAgICAgICAgY21kID0gWydwZXJsJywgJy13JywKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5CShyZXZp
c2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRj
aC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTAgQEAgaW1wb3J0IGVycm5vCiBpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdGVtcGZpbGUKKworZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIF9sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtNTAsOCArNTIsOCBAQCBjbGFzcyBQcmV0dHlQYXRj
aChvYmplY3QpOgogICAgIGRlZiBwcmV0dHlfZGlmZl9maWxlKHNlbGYsIGRpZmYpOgogICAgICAg
ICAjIERpZmZzIGNhbiBjb250YWluIG11bHRpcGxlIHRleHQgZmlsZXMgb2YgZGlmZmVyZW50IGVu
Y29kaW5ncwogICAgICAgICAjIHNvIHdlIGFsd2F5cyBkZWFsIHdpdGggdGhlbSBhcyBieXRlIGFy
cmF5cywgbm90IHVuaWNvZGUgc3RyaW5ncy4KLSAgICAgICAgZGlmZiA9IGVuY29kZV9pZl9uZWNl
c3NhcnkoZGlmZikKLSAgICAgICAgcHJldHR5X2RpZmYgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KHNl
bGYucHJldHR5X2RpZmYoZGlmZikpCisgICAgICAgIGRpZmYgPSBzdHJpbmdfdXRpbHMuZW5jb2Rl
KGRpZmYpCisgICAgICAgIHByZXR0eV9kaWZmID0gc3RyaW5nX3V0aWxzLmVuY29kZShzZWxmLnBy
ZXR0eV9kaWZmKGRpZmYpKQogICAgICAgICBkaWZmX2ZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBv
cmFyeUZpbGUoc3VmZml4PSIuaHRtbCIpCiAgICAgICAgIGRpZmZfZmlsZS53cml0ZShwcmV0dHlf
ZGlmZikKICAgICAgICAgZGlmZl9maWxlLmZsdXNoKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmcucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weQkocmV2
aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVj
a3N1bV9mcm9tX3BuZy5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDE1IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5
IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIGRlZiByZWFkX2NoZWNrc3VtKGZpbGVoYW5kbGUpOgog
ICAgICMgV2UgZXhwZWN0IHRoZSBjb21tZW50IHRvIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGZpbGUuCi0gICAgZGF0YSA9IGVuY29kZV9pZl9uZWNlc3NhcnkoZmlsZWhhbmRsZS5yZWFkKDIw
NDgpKQorICAgIGRhdGEgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGZpbGVoYW5kbGUucmVhZCgyMDQ4
KSkKICAgICBjb21tZW50X2tleSA9IGIndEVYdGNoZWNrc3VtXHgwMCcKICAgICBjb21tZW50X3Bv
cyA9IGRhdGEuZmluZChjb21tZW50X2tleSkKICAgICBpZiBjb21tZW50X3BvcyA9PSAtMToKICAg
ICAgICAgcmV0dXJuCiAKICAgICBjaGVja3N1bV9wb3MgPSBjb21tZW50X3BvcyArIGxlbihjb21t
ZW50X2tleSkKLSAgICByZXR1cm4gZGVjb2RlX2ZvcihkYXRhW2NoZWNrc3VtX3BvczpjaGVja3N1
bV9wb3MgKyAzMl0sIHN0cikKKyAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmRlY29kZShkYXRhW2No
ZWNrc3VtX3BvczpjaGVja3N1bV9wb3MgKyAzMl0sIHRhcmdldF90eXBlPXN0cikKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmdfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9j
aGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTAgQEAKICMgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0
IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbiBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogCiAKIGNsYXNz
IFJlYWRDaGVja3N1bUZyb21QbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3VuaWNvZGVfY29tcGF0aWJpbGl0eS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi91bmljb2RlX2NvbXBhdGliaWxp
dHkucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3VuaWNvZGVfY29tcGF0aWJpbGl0eS5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMCw0OCArMjAsMTkgQEAKICMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGlvCi1pbXBvcnQgc3lzCi0K
LQotQnl0ZXNJTyA9IGlvLkJ5dGVzSU8KLWlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6Ci0g
ICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwotZWxzZToKLSAgICBmcm9tIFN0cmluZ0lPIGltcG9y
dCBTdHJpbmdJTwotVW5pY29kZUlPID0gaW8uU3RyaW5nSU8KLQotdW5pY29kZSA9IHN0ciBpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2UgdW5pY29kZQotCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgVW5pY29kZUlPLCBTdHJpbmdJTywgQnl0ZXNJTywgdW5pY29kZSwgc3RyaW5nX3V0
aWxzCiAKIGRlZiBlbmNvZGVfaWZfbmVjZXNzYXJ5KHZhbHVlLCBlbmNvZGluZz0ndXRmLTgnLCBl
cnJvcnM9J3N0cmljdCcpOgotICAgICMgSW4gUHl0aG9uIDMsIHN0cmluZyB0eXBlcyBtdXN0IGJl
IGVuY29kZWQKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSB1bmljb2RlOgotICAgICAgICByZXR1cm4g
dmFsdWUuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQotICAgIHJldHVybiB2YWx1ZQor
ICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHZhbHVlLCBlbmNvZGluZz1lbmNvZGluZywg
ZXJyb3JzPWVycm9ycykKIAogCiBkZWYgZW5jb2RlX2Zvcih2YWx1ZSwgdGFyZ2V0X3R5cGUsICoq
a3dhcmdzKToKLSAgICBpZiB0YXJnZXRfdHlwZSA9PSBieXRlczoKLSAgICAgICAgcmV0dXJuIGVu
Y29kZV9pZl9uZWNlc3NhcnkodmFsdWUsICoqa3dhcmdzKQotCi0gICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA8ICgzLCAwKSBhbmQgdGFyZ2V0X3R5cGUgPT0gc3RyOgotICAgICAgICByZXR1cm4gZW5j
b2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSwgKiprd2FyZ3MpCi0gICAgcmV0dXJuIHZhbHVlCisgICAg
cmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUodmFsdWUsIHRhcmdldF90eXBlPXRhcmdldF90eXBl
LCAqKmt3YXJncykKIAogCiBkZWYgZGVjb2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSwgZW5jb2Rpbmc9
J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKToKLSAgICAjIEluIFB5dGhvbiAyLCBzdHJpbmcgdHlw
ZXMgbWlnaHQgbmVlZCB0byBiZSBkZWNvZGVkCi0gICAgaWYgdHlwZSh2YWx1ZSkgPT0gYnl0ZXM6
Ci0gICAgICAgIHJldHVybiB2YWx1ZS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCi0g
ICAgcmV0dXJuIHZhbHVlCisgICAgcmV0dXJuIHN0cmluZ191dGlscy5kZWNvZGUodmFsdWUsIGVu
Y29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogCiAKIGRlZiBkZWNvZGVfZm9yKHZhbHVl
LCB0YXJnZXRfdHlwZSk6Ci0gICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIE5v
bmUKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSB0YXJnZXRfdHlwZToKLSAgICAgICAgcmV0dXJuIHZh
bHVlCi0gICAgaWYgdGFyZ2V0X3R5cGUgPT0gdW5pY29kZToKLSAgICAgICAgcmV0dXJuIGRlY29k
ZV9pZl9uZWNlc3NhcnkoYnl0ZXModmFsdWUpKQotICAgIHJldHVybiB2YWx1ZQorICAgIHJldHVy
biBzdHJpbmdfdXRpbHMuZGVjb2RlKHZhbHVlLCB0YXJnZXRfdHlwZT10YXJnZXRfdHlwZSkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5CShyZXZpc2lvbiAy
NjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXZlZGlmZi5weQkod29y
a2luZyBjb3B5KQpAQCAtMjEsMTEgKzIxLDkgQEAKICMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBzdHJ1Y3QKLWlt
cG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHdhdmUKIAotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTworZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKIAogY2xhc3MgV2F2ZURp
ZmYob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2NoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5KQpA
QCAtMzIsOSArMzIsMTAgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHRleHR3
cmFwCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTywgdW5pY29kZQorCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0K
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5n
SU8sIHVuaWNvZGUKIGltcG9ydCB3ZWJraXRweS5jb21tb24uY29uZmlnLnVybHMgYXMgY29uZmln
X3VybHMKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5n
ZWxvZ191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgKgogCiAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5
CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9jaGVja291dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQAogCiBpbXBv
cnQgc3lzCiAKLWlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6Ci0gICAgZnJvbSBmdW5jdG9v
bHMgaW1wb3J0IHJlZHVjZQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2csIHBhcnNlX2J1Z19pZF9mcm9t
X2NoYW5nZWxvZwpAQCAtMzcsNyArMzYsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5jb21taXRpbmZvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IENv
bW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXpl
ZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3Ry
aW5nSU8KKworaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBmcm9tIGZ1bmN0b29s
cyBpbXBvcnQgcmVkdWNlCiAKIAogIyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIFdlYktpdC1z
cGVjaWZpYyBwYXJ0cyBvZiB0aGUgY2hlY2tvdXQgKGxpa2UgQ2hhbmdlTG9ncykuCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGVja291dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDEyICsyNiwxMSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
aW1wb3J0IGNvZGVjcwogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUK
IGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxz
CisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoZWNrb3V0IGltcG9ydCBDaGVja291
dAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VM
b2dFbnRyeQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDb21taXRN
ZXNzYWdlLCBTQ01EZXRlY3RvcgpAQCAtNDIsNyArNDEsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZmlsZXN5c3RlbSBpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNz
YXJ5CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCiAKQEAgLTM0
NCw3ICszNDIsNyBAQCBjbGFzcyBDaGVja291dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAgICAgIyBzbyB3ZSBlbmNvZGUgb3VyIHVuaWNvZGUgQ2hhbmdlTG9nIGRvd24gdG8gYSB1
dGYtOCBzdHJlYW0uCiAgICAgICAgICAgICAjIFRoZSBDaGFuZ2VMb2cgdXRmLTggZGVjb2Rpbmcg
c2hvdWxkIGlnbm9yZSBpbnZhbGlkIGNvZGVwb2ludHMuCiAgICAgICAgICAgICBpbnZhbGlkX3V0
ZjggPSBiJ1wyNTUnCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlX2lmX25lY2Vzc2FyeShfY2hh
bmdlbG9nMSkgKyBpbnZhbGlkX3V0ZjgKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMu
ZW5jb2RlKF9jaGFuZ2Vsb2cxKSArIGludmFsaWRfdXRmOAogICAgICAgICBjaGVja291dCA9IHNl
bGYuX21ha2VfY2hlY2tvdXQoKQogICAgICAgICBjaGVja291dC5fc2NtLmNvbnRlbnRzX2F0X3Jl
dmlzaW9uID0gbW9ja19jb250ZW50c19hdF9yZXZpc2lvbgogICAgICAgICBlbnRyeSA9IGNoZWNr
b3V0Ll9sYXRlc3RfZW50cnlfZm9yX2NoYW5nZWxvZ19hdF9yZXZpc2lvbigiZm9vIiwgImJhciIp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNl
cl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXJfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAKIGltcG9ydCByZQogaW1wb3J0
IHVuaXR0ZXN0CiAKLWltcG9ydCB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIg
YXMgZGlmZl9wYXJzZXIKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitp
bXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFyc2VyIGFzIGRpZmZfcGFyc2Vy
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5kaWZmX3Rlc3RfZGF0YSBpbXBvcnQgRElG
Rl9URVNUX0RBVEEKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vZ2l0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS9naXQucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDE2ICsyOSwxNiBAQAogCiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBsb2dnaW5nCi1pbXBv
cnQgb3MKIGltcG9ydCByZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxz
CisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRF
cnJvcgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uY29tbWl0bWVzc2FnZSBp
bXBvcnQgQ29tbWl0TWVzc2FnZQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNj
bSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgU0NNLCBjb21taXRfZXJyb3JfaGFuZGxlcgog
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnN2biBpbXBvcnQgU1ZOUmVwb3NpdG9y
eQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNv
ZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRv
cnkpOgogICAgICAgICBpZiBub3QgcmV2aXNpb246CiAgICAgICAgICAgICByZXR1cm4gZGlmZgog
Ci0gICAgICAgIHJldHVybiBlbmNvZGVfaWZfbmVjZXNzYXJ5KCJTdWJ2ZXJzaW9uIFJldmlzaW9u
OiAiKSArIGVuY29kZV9pZl9uZWNlc3NhcnkocmV2aXNpb24pICsgZW5jb2RlX2lmX25lY2Vzc2Fy
eSgnXG4nKSArIGVuY29kZV9pZl9uZWNlc3NhcnkoZGlmZikKKyAgICAgICAgcmV0dXJuIHN0cmlu
Z191dGlscy5lbmNvZGUoIlN1YnZlcnNpb24gUmV2aXNpb246ICIpICsgc3RyaW5nX3V0aWxzLmVu
Y29kZShyZXZpc2lvbikgKyBzdHJpbmdfdXRpbHMuZW5jb2RlKCdcbicpICsgc3RyaW5nX3V0aWxz
LmVuY29kZShkaWZmKQogCiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5v
bmUsIGNoYW5nZWRfZmlsZXM9Tm9uZSwgZ2l0X2luZGV4PUZhbHNlKToKICAgICAgICAgIiIiUmV0
dXJucyBhIGJ5dGUgYXJyYXkgKHN0cigpKSByZXByZXNlbnRpbmcgdGhlIHBhdGNoIGZpbGUuCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9z
Y20ucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY20ucHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDEwIEBAIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9zY21fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTYsOSArNTYsOCBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdCwgQW1iaWd1b3VzQ29tbWl0RXJyb3IKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lz
dGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtIGltcG9ydCBTQ00sIENo
ZWNrb3V0TmVlZHNVcGRhdGUsIGNvbW1pdF9lcnJvcl9oYW5kbGVyLCBBdXRoZW50aWNhdGlvbkVy
cm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtIGltcG9ydCBDaGVja291
dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJvcgog
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnN2biBpbXBvcnQgU1ZOCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNl
c3NhcnkKIAogCiAjIFdlIGNhY2hlIHRoZSBtb2NrIFNWTiByZXBvIHNvIHRoYXQgd2UgZG9uJ3Qg
Y3JlYXRlIGl0IGFnYWluIGZvciBlYWNoIGNhbGwgdG8gYW4gU1ZOVGVzdCBvciBHaXRUZXN0IHRl
c3RfIG1ldGhvZC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtL3N2bi5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQkod29ya2luZyBjb3B5KQpAQCAtMzYs
MTQgKzM2LDEzIEBAIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQog
Ci1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IFZlcnNpb24sIHN0cmluZ191dGlscwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtIGltcG9ydCBBdXRoZW50aWNhdGlvbkVycm9yLCBTQ00sIGNvbW1pdF9lcnJvcl9o
YW5kbGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBvcnQgc3ZuX3NlcnZl
cl9ob3N0LCBzdm5fc2VydmVyX3JlYWxtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBp
bXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9m
aW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNDE2LDQgKzQxNSw0IEBAIGNsYXNzIFNWTihTQ00s
IFNWTlJlcG9zaXRvcnkpOgogCiAgICAgZGVmIHByb3BnZXQoc2VsZiwgcG5hbWUsIHBhdGgpOgog
ICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCi0gICAgICAgIHJldHVybiBl
bmNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYuX3J1bl9zdm4oWydwZ2V0JywgcG5hbWUsIGJhc2VdLCBj
d2Q9ZGlyKS5yc3RyaXAoIlxuIikpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2Rl
KHNlbGYuX3J1bl9zdm4oWydwZ2V0JywgcG5hbWUsIGJhc2VdLCBjd2Q9ZGlyKS5yc3RyaXAoIlxu
IikpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVy
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
Y29tbWl0dGVycy5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQCBpbXBvcnQgZm5tYXRjaAogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgdW5pY29kZQorCiBmcm9tIGZ1bmN0b29s
cyBpbXBvcnQgcmVkdWNlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5lZGl0ZGlzdGFuY2UgaW1wb3J0
IGVkaXRfZGlzdGFuY2UKLWZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1v
aXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVT
eXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
ZW5jb2RlX2ZvciwgdW5pY29kZQogCiAKIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CkBAIC03
Myw3ICs3Myw3IEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBz
ZWxmLmVtYWlsc1swXQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBl
bmNvZGVfZm9yKHUnInt9IiA8e30+Jy5mb3JtYXQodW5pY29kZShzZWxmLmZ1bGxfbmFtZSksIHVu
aWNvZGUoc2VsZi5lbWFpbHNbMF0pKSwgc3RyKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxz
LmVuY29kZSh1JyJ7fSIgPHt9PicuZm9ybWF0KHVuaWNvZGUoc2VsZi5mdWxsX25hbWUpLCB1bmlj
b2RlKHNlbGYuZW1haWxzWzBdKSksIHRhcmdldF90eXBlPXN0cikKIAogICAgIGRlZiBfX3VuaWNv
ZGVfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHUnInt9IiA8e30+Jy5mb3JtYXQodW5pY29kZShz
ZWxmLmZ1bGxfbmFtZSksIHVuaWNvZGUoc2VsZi5lbWFpbHNbMF0pKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3c3NlcnZlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZXdzc2VydmVyLnB5CShyZXZpc2lvbiAyNjQ1
MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZXdzc2VydmVyLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCwxMCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBvcnQgZXdzc2VydmVyX2RlZmF1bHRfaG9z
dAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lm5ldHdvcmt0cmFuc2FjdGlvbiBpbXBvcnQgTmV0
d29ya1RyYW5zYWN0aW9uCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IHVuaWNvZGUKIAogaW1wb3J0IGxvZ2dpbmcKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9jay5weQkocmV2aXNpb24gMjY0NTA4KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmlu
Z0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAogaW1wb3J0IHN5cwogaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkJKHJldmlzaW9uIDI2
NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6
aWxsYS5weQkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOCBAQCBpbXBvcnQgc3lzCiBpbXBv
cnQgdXJsbGliCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lICAjIHVzZWQgaW4gdGlt
ZXN0YW1wKCkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTywgc3Ry
aW5nX3V0aWxzLCB1bmljb2RlCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0
aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8sIHVuaWNvZGUsIGRlY29kZV9mb3IKLWZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5hdHRhY2htZW50IGltcG9ydCBBdHRhY2ht
ZW50CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEuYnVnIGltcG9ydCBCdWcKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCBjb21taXR0ZXJzCkBAIC0yOTUsNyAr
Mjk0LDcgQEAgY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAgICAgZGVmIGlzX2ludmFs
aWRfYnVnemlsbGFfZW1haWwoc2VsZiwgc2VhcmNoX3N0cmluZyk6CiAgICAgICAgIHJldmlld19x
dWV1ZV91cmwgPSAicmVxdWVzdC5jZ2k/YWN0aW9uPXF1ZXVlJnJlcXVlc3Rlcj0lcyZwcm9kdWN0
PSZ0eXBlPXJldmlldyZyZXF1ZXN0ZWU9JmNvbXBvbmVudD0mZ3JvdXA9cmVxdWVzdGVlIiAlIHVy
bGxpYi5xdW90ZShzZWFyY2hfc3RyaW5nKQogICAgICAgICByZXN1bHRzX3BhZ2UgPSBzZWxmLl9s
b2FkX3F1ZXJ5KHJldmlld19xdWV1ZV91cmwpCi0gICAgICAgIHJldHVybiBib29sKHJlLnNlYXJj
aCgnZGlkIG5vdCBtYXRjaCBhbnl0aGluZycsIGRlY29kZV9mb3IocmVzdWx0c19wYWdlLnJlYWQo
KSwgc3RyKSkpCisgICAgICAgIHJldHVybiBib29sKHJlLnNlYXJjaCgnZGlkIG5vdCBtYXRjaCBh
bnl0aGluZycsIHN0cmluZ191dGlscy5kZWNvZGUocmVzdWx0c19wYWdlLnJlYWQoKSwgdGFyZ2V0
X3R5cGU9c3RyKSkpCiAKIAogY2xhc3MgQ29tbWl0UXVldWVGbGFnKG9iamVjdCk6CkBAIC01NjUs
NyArNTY0LDcgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgdGhl
IHJlc3VsdGluZyBwYWdlIGhhcyBhIHRpdGxlLCBhbmQgaXQgY29udGFpbnMgdGhlIHdvcmQKICAg
ICAgICAgICAgICMgImludmFsaWQiIGFzc3VtZSBpdCdzIHRoZSBsb2dpbiBmYWlsdXJlIHBhZ2Uu
CiAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgcmUuc2VhcmNoKGInSW52YWxpZCcsIG1hdGNoLmdy
b3VwKDEpLCByZS5JR05PUkVDQVNFKToKLSAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAi
QnVnemlsbGEgbG9naW4gZmFpbGVkOiB7fSIuZm9ybWF0KGRlY29kZV9mb3IobWF0Y2guZ3JvdXAo
MSksIHN0cikpCisgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkJ1Z3ppbGxhIGxvZ2lu
IGZhaWxlZDoge30iLmZvcm1hdChzdHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0
YXJnZXRfdHlwZT1zdHIpKQogICAgICAgICAgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uIG9u
bHkgaWYgdGhpcyB3YXMgdGhlIGxhc3QgYXR0ZW1wdAogICAgICAgICAgICAgICAgIGlmIGF0dGVt
cHRzIDwgNToKICAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvck1lc3NhZ2UpCkBA
IC02NDAsNyArNjM5LDcgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAogICAgIEBzdGF0aWNt
ZXRob2QKICAgICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfaWRfZnJvbV9hZGRfcGF0Y2hfdG9fYnVn
X3Jlc3BvbnNlKHJlc3BvbnNlX2h0bWwpOgotICAgICAgICByZXNwb25zZV9odG1sID0gZGVjb2Rl
X2ZvcihyZXNwb25zZV9odG1sLCBzdHIpCisgICAgICAgIHJlc3BvbnNlX2h0bWwgPSBzdHJpbmdf
dXRpbHMuZGVjb2RlKHJlc3BvbnNlX2h0bWwsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgbWF0
Y2ggPSByZS5zZWFyY2goJzx0aXRsZT5BdHRhY2htZW50ICg/UDxhdHRhY2htZW50X2lkPlxkKykg
YWRkZWQgdG8gQnVnIFxkKzwvdGl0bGU+JywgcmVzcG9uc2VfaHRtbCkKICAgICAgICAgaWYgbWF0
Y2g6CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2F0dGFjaG1lbnRfaWQnKQpAQCAt
Njg0LDcgKzY4Myw3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAKICAgICAjIEZJWE1FOiBU
aGVyZSBoYXMgdG8gYmUgYSBtb3JlIGNvbmNpc2Ugd2F5IHRvIHdyaXRlIHRoaXMgbWV0aG9kLgog
ICAgIGRlZiBfY2hlY2tfY3JlYXRlX2J1Z19yZXNwb25zZShzZWxmLCByZXNwb25zZV9odG1sKToK
LSAgICAgICAgcmVzcG9uc2VfaHRtbCA9IGRlY29kZV9mb3IocmVzcG9uc2VfaHRtbCwgc3RyKQor
ICAgICAgICByZXNwb25zZV9odG1sID0gc3RyaW5nX3V0aWxzLmRlY29kZShyZXNwb25zZV9odG1s
LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCc8dGl0bGU+QnVn
ICg/UDxidWdfaWQ+XGQrKSBTdWJtaXR0ZWRbXjxdKjwvdGl0bGU+JywgcmVzcG9uc2VfaHRtbCkK
ICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2J1Z19p
ZCcpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
emlsbGFfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ1MDgp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywxNSBAQAogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiBpbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24u
Y29uZmlnIGltcG9ydCB1cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVy
cyBpbXBvcnQgUmV2aWV3ZXIsIENvbW1pdHRlciwgQ29udHJpYnV0b3IsIENvbW1pdHRlckxpc3QK
IGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC53ZWJfbW9jayBpbXBvcnQgTW9ja0Jyb3dzZXIKIGZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEs
IEJ1Z3ppbGxhUXVlcmllcywgQ29tbWl0UXVldWVGbGFnLCBFZGl0VXNlcnNQYXJzZXIKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmlu
Z0lPCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRp
ZnVsU291cAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJv
dC9idWlsZGJvdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
MCArMjgsMTAgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGpzb24KLWltcG9ydCBvcGVyYXRv
cgogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgdXJsbGliCisKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKIAogaW1wb3J0IHdlYmtpdHB5LmNvbW1v
bi5jb25maWcudXJscyBhcyBjb25maWdfdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCkBAIC00MCw3ICs0MCw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5sYXlvdXR0ZXN0cmVzdWwKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJh
bnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LnJlZ3Jlc3Npb253aW5kb3cgaW1wb3J0IFJlZ3Jlc3Npb25XaW5kb3cKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgZ2V0X2xvZ2dlcgotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yLCB1bmljb2Rl
CiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0
IEJyb3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBC
ZWF1dGlmdWxTb3VwCiAKQEAgLTUyLDcgKzUxLDYgQEAgZWxzZToKICAgICBmcm9tIHVybGxpYjIg
aW1wb3J0IEhUVFBFcnJvciwgcXVvdGUsIFVSTEVycm9yLCB1cmxvcGVuCiAKIAotCiBfbG9nID0g
Z2V0X2xvZ2dlcihfX2ZpbGVfXykKIAogCkBAIC0zMTksOCArMzE3LDggQEAgY2xhc3MgQnVpbGRC
b3Qob2JqZWN0KToKICAgICAgICAgICAgICMgRklYTUU6IFdlIHRyZWF0IHNsYXZlIGxvc3QgYXMg
Z3JlZW4gZXZlbiB0aG91Z2ggaXQgaXMgbm90IHRvCiAgICAgICAgICAgICAjIHdvcmsgYXJvdW5k
IHRoZSBRdHMgYm90IGJlaW5nIG9uIGEgYnJva2VuIGludGVybmV0IGNvbm5lY3Rpb24uCiAgICAg
ICAgICAgICAjIFRoZSByZWFsIGZpeCBpcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzcwOTkKLSAgICAgICAgICAgIGJ1aWxkZXJbJ2lzX2dyZWVuJ10gPSBub3QgcmUu
c2VhcmNoKCdmYWlsJywgZGVjb2RlX2ZvcihjZWxsLnJlbmRlckNvbnRlbnRzKCksIHN0cikpIG9y
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wocmUuc2VhcmNoKCdsb3N0
JywgZGVjb2RlX2ZvcihjZWxsLnJlbmRlckNvbnRlbnRzKCksIHN0cikpKQorICAgICAgICAgICAg
YnVpbGRlclsnaXNfZ3JlZW4nXSA9IG5vdCByZS5zZWFyY2goJ2ZhaWwnLCBzdHJpbmdfdXRpbHMu
ZGVjb2RlKGNlbGwucmVuZGVyQ29udGVudHMoKSwgdGFyZ2V0X3R5cGU9c3RyKSkgb3IgXAorICAg
ICAgICAgICAgICAgIGJvb2wocmUuc2VhcmNoKCdsb3N0Jywgc3RyaW5nX3V0aWxzLmRlY29kZShj
ZWxsLnJlbmRlckNvbnRlbnRzKCksIHRhcmdldF90eXBlPXN0cikpKQogCiAgICAgICAgICAgICBz
dGF0dXNfbGlua19yZWdleHAgPSByImJ1aWxkZXJzLyg/UDxidWlsZGVyX25hbWU+LiopL2J1aWxk
cy8oP1A8YnVpbGRfbnVtYmVyPlxkKykiCiAgICAgICAgICAgICBsaW5rX21hdGNoID0gcmUubWF0
Y2goc3RhdHVzX2xpbmtfcmVnZXhwLCBzdGF0dXNfbGlua1snaHJlZiddKQpAQCAtMzM2LDcgKzMz
NCw3IEBAIGNsYXNzIEJ1aWxkQm90KG9iamVjdCk6CiAKICAgICBkZWYgX3BhcnNlX2N1cnJlbnRf
YnVpbGRfY2VsbChzZWxmLCBidWlsZGVyLCBjZWxsKToKICAgICAgICAgIyBDb252ZXJ0IHJlbmRl
cmVkIGNvbnRlbnRzIHRvIG5hdGl2ZSBzdHJpbmcKLSAgICAgICAgcmVuZGVyZWQgPSBkZWNvZGVf
Zm9yKGNlbGwucmVuZGVyQ29udGVudHMoKSwgc3RyKQorICAgICAgICByZW5kZXJlZCA9IHN0cmlu
Z191dGlscy5kZWNvZGUoY2VsbC5yZW5kZXJDb250ZW50cygpLCB0YXJnZXRfdHlwZT1zdHIpCiAK
ICAgICAgICAgIyBCZWF1dGlmdWxTb3VwIGFuZCBiczQgcmVuZGVyIGRpZmZlcmVudGx5CiAgICAg
ICAgIGlmICc8YnIvPicgaW4gcmVuZGVyZWQ6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Fic3RyYWN0ZXhlY3V0aXZlLnB5CShyZXZp
c2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYWJz
dHJhY3RleGVjdXRpdmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDkgQEAKIGltcG9y
dCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRp
bHMsIHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1w
b3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBh
dGliaWxpdHkKIAogY2xhc3MgQWJzdHJhY3RFeGVjdXRpdmUob2JqZWN0KToKIApAQCAtMTAxLDEz
ICsxMDIsMTMgQEAgY2xhc3MgQWJzdHJhY3RFeGVjdXRpdmUob2JqZWN0KToKICAgICAgICAgcGFz
cwogCiAgICAgZGVmIF9zdHJpbmdpZnlfYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgcmV0dXJu
IG1hcCh1bmljb2RlX2NvbXBhdGliaWxpdHkudW5pY29kZSwgYXJncykKKyAgICAgICAgcmV0dXJu
IG1hcCh1bmljb2RlLCBhcmdzKQogCiAgICAgZGVmIGNvbW1hbmRfZm9yX3ByaW50aW5nKHNlbGYs
IGFyZ3MpOgogICAgICAgICAiIiJSZXR1cm5zIGEgcHJpbnQtcmVhZHkgc3RyaW5nIHJlcHJlc2Vu
dGluZyBjb21tYW5kIGFyZ3MuCiAgICAgICAgIFRoZSBzdHJpbmcgc2hvdWxkIGJlIGNvcHkvcGFz
dGUgcmVhZHkgZm9yIGV4ZWN1dGlvbiBpbiBhIHNoZWxsLiIiIgogICAgICAgICBhcmdzID0gc2Vs
Zi5fc3RyaW5naWZ5X2FyZ3MoYXJncykKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGF0aWJp
bGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZf
bmVjZXNzYXJ5KCcgJy5qb2luKGFyZ3MpLCAndW5pY29kZV9lc2NhcGUnKSkKKyAgICAgICAgcmV0
dXJuIHN0cmluZ191dGlscy5kZWNvZGUoc3RyaW5nX3V0aWxzLmVuY29kZSgnICcuam9pbihhcmdz
KSwgZW5jb2Rpbmc9J3VuaWNvZGVfZXNjYXBlJykpCiAKICAgICBkZWYgcnVuX2NvbW1hbmQoc2Vs
ZiwgYXJncywgY3dkPU5vbmUsIGVudj1Ob25lLCBpbnB1dD1Ob25lLCBzdGRvdXQ9Tm9uZSwgZXJy
b3JfaGFuZGxlcj1Ob25lLCBpZ25vcmVfZXJyb3JzPUZhbHNlLAogICAgICAgICByZXR1cm5fZXhp
dF9jb2RlPUZhbHNlLCByZXR1cm5fc3RkZXJyPVRydWUsIGRlY29kZV9vdXRwdXQ9VHJ1ZSk6Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxv
Z3MucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9jcmFzaGxvZ3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgaW1w
b3J0IGRhdGV0aW1lCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBzdHJpbmdfdXRpbHMKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18p
CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgQ3Jhc2hMb2dzKG9iamVjdCk6CiAgICAgICAgIGZv
ciBwYXRoIGluIHJldmVyc2VkKHNvcnRlZChsb2dzKSk6CiAgICAgICAgICAgICB0cnk6CiAgICAg
ICAgICAgICAgICAgaWYgbm90IG5ld2VyX3RoYW4gb3Igc2VsZi5faG9zdC5maWxlc3lzdGVtLm10
aW1lKHBhdGgpID4gbmV3ZXJfdGhhbjoKLSAgICAgICAgICAgICAgICAgICAgbG9nX2ZpbGUgPSB1
bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lmX25lY2Vzc2FyeShzZWxmLl9ob3N0LmZpbGVz
eXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKSwgJ2FzY2lpJywgJ2lnbm9yZScpCisgICAgICAg
ICAgICAgICAgICAgIGxvZ19maWxlID0gc3RyaW5nX3V0aWxzLmRlY29kZShzZWxmLl9ob3N0LmZp
bGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShwYXRoKSwgZW5jb2Rpbmc9J2FzY2lpJywgZXJyb3Jz
PSdpZ25vcmUnKQogICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuR0xPQkFMX1BJRF9S
RUdFWC5zZWFyY2gobG9nX2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgaW50KG1hdGNoLmdyb3VwKCdwaWQnKSkgPT0gcGlkOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxMSArMjMsMTIgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9t
IHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5CiAKICMgTmVlZGVk
IHRvIHN1cHBvcnQgV2luZG93cyBwb3J0IHRlc3RzCiBmcm9tIHdlYmtpdHB5LnBvcnQud2luIGlt
cG9ydCBXaW5Qb3J0CkBAIC0yOTksNyArMzAwLDcgQEAgY2xhc3MgQ3Jhc2hMb2dzVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZmlsZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkv
TG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcyMl9x
dWFkemVuLmNyYXNoJ10gPSBzZWxmLm90aGVyX3Byb2Nlc3NfbW9ja19jcmFzaF9yZXBvcnQKICAg
ICAgICAgc2VsZi5maWxlc1snL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBv
cnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzIzX3F1YWR6ZW4uY3Jhc2gnXSA9IHNl
bGYubWlzZm9ybWF0dGVkX21vY2tfY3Jhc2hfcmVwb3J0CiAKLSAgICAgICAgc2VsZi5maWxlcyA9
IHtrZXk6IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KHZhbHVlKSBm
b3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmZpbGVzLml0ZW1zKCl9CisgICAgICAgIHNlbGYuZmlsZXMg
PSB7a2V5OiBzdHJpbmdfdXRpbHMuZW5jb2RlKHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxm
LmZpbGVzLml0ZW1zKCl9CiAKICAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0
ZW0oc2VsZi5maWxlcykKICAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhNb2NrU3lzdGVt
SG9zdChmaWxlc3lzdGVtPXNlbGYuZmlsZXN5c3RlbSksIENyYXNoTG9nc1Rlc3QuREFSV0lOX01P
Q0tfQ1JBU0hfRElSRUNUT1JZKQpAQCAtMzE3LDcgKzMxOCw3IEBAIGNsYXNzIENyYXNoTG9nc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGxf
bG9ncyksIDgpCiAKICAgICAgICAgZm9yIHRlc3QsIGNyYXNoX2xvZyBpbiBhbGxfbG9ncy5pdGVt
cygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyYXNoX2xvZyBpbiBbdW5pY29kZV9j
b21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3NhcnkodmFsdWUpIGZvciB2YWx1ZSBpbiBzZWxm
LmZpbGVzLnZhbHVlcygpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmFzaF9sb2cg
aW4gW3N0cmluZ191dGlscy5kZWNvZGUodmFsdWUpIGZvciB2YWx1ZSBpbiBzZWxmLmZpbGVzLnZh
bHVlcygpXSkKICAgICAgICAgICAgIGlmIHRlc3Quc3BsaXQoJy0nKVswXSAhPSAnU2FuZGJveCc6
CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QgPT0gIlVua25vd24iIG9yIGlu
dCh0ZXN0LnNwbGl0KCItIilbMV0pIGluIHJhbmdlKDI4NTI3LCAyODUzMSkpCiAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQko
cmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2V4ZWN1dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAgaW1wb3J0IHN1
YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBTdHJpbmdJTywgc3RyaW5nX3V0aWxzLCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5hYnN0cmFjdGV4ZWN1dGl2ZSBpbXBvcnQgQWJzdHJhY3RFeGVjdXRpdmUKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXR0ZWUgaW1wb3J0IFRlZQotZnJvbSB3ZWJr
aXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQogCiAKIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTcxLDcgKzcyLDcgQEAgY2xhc3MgU2NyaXB0RXJy
b3IoRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICByZXR1cm4gdSIlc1xuXG5MYXN0ICVzIGNo
YXJhY3RlcnMgb2Ygb3V0cHV0OlxuJXMiICUgXAogICAgICAgICAgICAgICAgICAgICAoc2VsZiwg
b3V0cHV0X2xpbWl0LCBzZWxmLm91dHB1dFstb3V0cHV0X2xpbWl0Ol0pCiAgICAgICAgICAgICBy
ZXR1cm4gdSIlc1xuXG4lcyIgJSAoc2VsZiwgc2VsZi5vdXRwdXQpCi0gICAgICAgIHJldHVybiB1
bmljb2RlX2NvbXBhdGliaWxpdHkudW5pY29kZShzZWxmKQorICAgICAgICByZXR1cm4gdW5pY29k
ZShzZWxmKQogCiAgICAgZGVmIGNvbW1hbmRfbmFtZShzZWxmKToKICAgICAgICAgY29tbWFuZF9w
YXRoID0gc2VsZi5zY3JpcHRfYXJncwpAQCAtMTI3LDcgKzEyOCw3IEBAIGNsYXNzIEV4ZWN1dGl2
ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJl
IGltcHJvdmVkIG5vdCB0byBmbGF0dGVuIG91dHB1dCB0byBzdGRvdXQuCiAgICAgICAgICAgICB3
aGlsZSBjaGlsZF9wcm9jZXNzLnBvbGwoKSBpcyBOb25lOgogICAgICAgICAgICAgICAgIG91dHB1
dF9saW5lID0gY2hpbGRfcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKQotICAgICAgICAgICAgICAg
IHRlZWRfb3V0cHV0LndyaXRlKHVuaWNvZGVfY29tcGF0aWJpbGl0eS5kZWNvZGVfZm9yKG91dHB1
dF9saW5lLCBzdHIpKQorICAgICAgICAgICAgICAgIHRlZWRfb3V0cHV0LndyaXRlKHN0cmluZ191
dGlscy5kZWNvZGUob3V0cHV0X2xpbmUsIHRhcmdldF90eXBlPXN0cikpCiAgICAgICAgICAgICBy
ZXR1cm4gY2hpbGRfcHJvY2Vzcy5wb2xsKCkKIAogICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIGRl
cHJlY2F0ZWQgbWV0aG9kIGFuZCBtb3ZlIGNhbGxlcnMgdG8gcnVuX2NvbW1hbmQuCkBAIC0xMzcs
NyArMTM4LDcgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAjIGJ1
dCBzdGlsbCBoYXZlIHRoZSBvdXRwdXQgdG8gc3R1ZmYgaW50byBhIGxvZyBmaWxlLgogICAgIGRl
ZiBydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZiwgYXJncywgcXVpZXQ9RmFsc2UsIGRlY29kZV9v
dXRwdXQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAjIENhY2hlIHRoZSBjaGlsZCdzIG91dHB1
dCBsb2NhbGx5IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBlcnJvciByZXBvcnRzLgotICAgICAgICBj
aGlsZF9vdXRfZmlsZSA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5TdHJpbmdJTygpCisgICAgICAg
IGNoaWxkX291dF9maWxlID0gU3RyaW5nSU8oKQogICAgICAgICB0ZWVfc3Rkb3V0ID0gc3lzLnN0
ZG91dAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBxdWlldDoKQEAgLTE1Myw5ICsxNTQs
OSBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICBjaGlsZF9v
dXRfZmlsZS5jbG9zZSgpCiAKICAgICAgICAgaWYgZGVjb2RlX291dHB1dDoKLSAgICAgICAgICAg
IGNoaWxkX291dHB1dCA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5
KGNoaWxkX291dHB1dCwgc2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQorICAgICAgICAg
ICAgY2hpbGRfb3V0cHV0ID0gc3RyaW5nX3V0aWxzLmRlY29kZShjaGlsZF9vdXRwdXQsIGVuY29k
aW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGNoaWxkX291dHB1dCA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVj
ZXNzYXJ5KGNoaWxkX291dHB1dCwgc2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQorICAg
ICAgICAgICAgY2hpbGRfb3V0cHV0ID0gc3RyaW5nX3V0aWxzLmVuY29kZShjaGlsZF9vdXRwdXQs
IGVuY29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKIAogICAgICAgICBpZiBl
eGl0X2NvZGU6CiAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihzY3JpcHRfYXJncz1hcmdz
LApAQCAtMzA2LDcgKzMwNyw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6
CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIHNvbWUgY2FzZXMgdGhlIGxpbmUgY2FuIGNv
bnRhaW4gb25lIG9yIG1vcmUKICAgICAgICAgICAgICAgICAgICAgICAgICMgbGVhZGluZyB3aGl0
ZS1zcGFjZXMsIHNvIHN0cmlwIGl0IGJlZm9yZSBzcGxpdC4KICAgICAgICAgICAgICAgICAgICAg
ICAgIHBpZCwgcHJvY2Vzc19uYW1lID0gbGluZS5zdHJpcCgpLnNwbGl0KGInICcsIDEpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzX25hbWVfZmlsdGVyKHVuaWNvZGVfY29tcGF0
aWJpbGl0eS5kZWNvZGVfZm9yKHByb2Nlc3NfbmFtZSwgc3RyKSk6CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBwcm9jZXNzX25hbWVfZmlsdGVyKHN0cmluZ191dGlscy5kZWNvZGUocHJvY2Vz
c19uYW1lLCB0YXJnZXRfdHlwZT1zdHIpKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5uaW5nX3BpZHMuYXBwZW5kKGludChwaWQpKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQg
VmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwpAQCAtMzc0LDcg
KzM3NSw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgICMg
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUyOAogICAgICAg
ICAjIGZvciBhbiBleGFtcGxlIG9mIGEgcmVncmVzaW9uIGNhdXNlZCBieSBwYXNzaW5nIGEgdW5p
Y29kZSBzdHJpbmcgZGlyZWN0bHkuCiAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGVu
Y29kZSBkaWZmZXJlbnRseSBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zLgotICAgICAgICBpbnB1dCA9
IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KGlucHV0LCBzZWxmLl9j
aGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgIGlucHV0ID0gc3RyaW5nX3V0aWxzLmVu
Y29kZShpbnB1dCwgZW5jb2Rpbmc9c2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQogICAg
ICAgICByZXR1cm4gKHNlbGYuUElQRSwgaW5wdXQpCiAKICAgICAjIEZJWE1FOiBydW5fYW5kX3Ro
cm93X2lmX2ZhaWwgc2hvdWxkIGJlIG1lcmdlZCBpbnRvIHRoaXMgbWV0aG9kLgpAQCAtNDA3LDEx
ICs0MDgsMTEgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAg
ICAgIGlmIG5vdCBzdHJpbmdfdG9fY29tbXVuaWNhdGU6CiAgICAgICAgICAgICAgICAgb3V0cHV0
ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUodW5pY29kZV9jb21wYXRpYmlsaXR5
LmVuY29kZV9pZl9uZWNlc3Nhcnkoc3RyaW5nX3RvX2NvbW11bmljYXRlLCAndXRmLTgnKSlbMF0K
KyAgICAgICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ191dGls
cy5lbmNvZGUoc3RyaW5nX3RvX2NvbW11bmljYXRlLCBlbmNvZGluZz0ndXRmLTgnKSlbMF0KIAog
ICAgICAgICAgICAgIyBydW5fY29tbWFuZCBhdXRvbWF0aWNhbGx5IGRlY29kZXMgdG8gdW5pY29k
ZSgpIGFuZCBjb252ZXJ0cyBDUkxGIHRvIExGIHVubGVzcyBleHBsaWNpdGx5IHRvbGQgbm90IHRv
LgogICAgICAgICAgICAgaWYgZGVjb2RlX291dHB1dDoKLSAgICAgICAgICAgICAgICBvdXRwdXQg
PSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lmX25lY2Vzc2FyeShvdXRwdXQsIHNlbGYu
X2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkucmVwbGFjZSgnXHJcbicsICdcbicpCisgICAgICAg
ICAgICAgICAgb3V0cHV0ID0gc3RyaW5nX3V0aWxzLmRlY29kZShvdXRwdXQsIGVuY29kaW5nPXNl
bGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkucmVwbGFjZSgnXHJcbicsICdcbicpCiAKICAg
ICAgICAgICAgICMgd2FpdCgpIGlzIG5vdCB0aHJlYWRzYWZlIGFuZCBjYW4gdGhyb3cgT1NFcnJv
ciBkdWUgdG86CiAgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzMx
NzE3CkBAIC00NjQsMTEgKzQ2NSwxMSBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRp
dmUpOgogICAgIGRlZiBfZW5jb2RlX2FyZ3VtZW50X2lmX25lZWRlZChzZWxmLCBhcmd1bWVudCk6
CiAgICAgICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfZW5jb2RlX2NoaWxkX3Byb2Nlc3NfYXJndW1l
bnRzKCk6CiAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnQKLSAgICAgICAgcmV0dXJuIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KGFyZ3VtZW50LCBzZWxmLl9jaGls
ZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2Rl
KGFyZ3VtZW50LCBlbmNvZGluZz1zZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCiAKICAg
ICBkZWYgX3N0cmluZ2lmeV9hcmdzKHNlbGYsIGFyZ3MpOgogICAgICAgICAjIFBvcGVuIHdpbGwg
dGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFyZ3MgYXJlIG5vbi1zdHJpbmdzIChsaWtlIGludCgpKQot
ICAgICAgICBzdHJpbmdfYXJncyA9IG1hcCh1bmljb2RlX2NvbXBhdGliaWxpdHkudW5pY29kZSwg
YXJncykKKyAgICAgICAgc3RyaW5nX2FyZ3MgPSBtYXAodW5pY29kZSwgYXJncykKICAgICAgICAg
IyBUaGUgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZiBQb3BlbiBjYW5ub3QgaGFuZGxlIHVuaWNv
ZGUgc3RyaW5ncy4gOigKICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl9lbmNvZGVfYXJndW1lbnRf
aWZfbmVlZGVkLCBzdHJpbmdfYXJncykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQkocmV2aXNpb24gMjY0
NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9t
b2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw4IEBACiBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IG9zCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgQnl0ZXNJTywgZGVjb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeSwgdW5pY29kZQor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIHN0cmluZ191dGlscywgdW5pY29kZQor
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJv
cgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC0zOCw4ICszOSw4IEBA
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIGNsYXNzIE1vY2tQcm9jZXNzKG9i
amVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0ZG91dD0nTU9DSyBTVERPVVRcbicsIHN0
ZGVycj0nJyk6CiAgICAgICAgIHNlbGYucGlkID0gNDIKLSAgICAgICAgc2VsZi5zdGRvdXQgPSBC
eXRlc0lPKGVuY29kZV9pZl9uZWNlc3Nhcnkoc3Rkb3V0KSkKLSAgICAgICAgc2VsZi5zdGRlcnIg
PSBCeXRlc0lPKGVuY29kZV9pZl9uZWNlc3Nhcnkoc3RkZXJyKSkKKyAgICAgICAgc2VsZi5zdGRv
dXQgPSBCeXRlc0lPKHN0cmluZ191dGlscy5lbmNvZGUoc3Rkb3V0KSkKKyAgICAgICAgc2VsZi5z
dGRlcnIgPSBCeXRlc0lPKHN0cmluZ191dGlscy5lbmNvZGUoc3RkZXJyKSkKICAgICAgICAgc2Vs
Zi5zdGRpbiA9IEJ5dGVzSU8oKQogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSAwCiAgICAgICAg
IHNlbGYuX2lzX3J1bm5pbmcgPSBGYWxzZQpAQCAtMTM4LDcgKzEzOSw3IEBAIGNsYXNzIE1vY2tF
eGVjdXRpdmUob2JqZWN0KToKICAgICAgICAgICAgICAgICBlbnZfc3RyaW5nID0gIiwgZW52PXsi
ICsgZW52X3N0cmluZyArICJ9IgogICAgICAgICAgICAgaW5wdXRfc3RyaW5nID0gIiIKICAgICAg
ICAgICAgIGlmIGlucHV0OgotICAgICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIsIGlucHV0
PSVzIiAlIGRlY29kZV9mb3IoaW5wdXQsIHN0cikKKyAgICAgICAgICAgICAgICBpbnB1dF9zdHJp
bmcgPSAiLCBpbnB1dD0lcyIgJSBzdHJpbmdfdXRpbHMuZGVjb2RlKGlucHV0LCB0YXJnZXRfdHlw
ZT1zdHIpCiAgICAgICAgICAgICBfbG9nLmluZm8oIk1PQ0sgcnVuX2NvbW1hbmQ6ICVzLCBjd2Q9
JXMlcyVzIiAlIChhcmdzLCBjd2QsIGVudl9zdHJpbmcsIGlucHV0X3N0cmluZykpCiAgICAgICAg
IG91dHB1dCA9ICJNT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzIgogCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDYgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IG9zCi1pbXBvcnQgZXJybm8KIGlt
cG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCkBAIC00Niw3ICs0NSw4
IEBAIGlmIHRoaXJkX3BhcnR5X3B5IG5vdCBpbiBzeXMucGF0aDoKIAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVT
eXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkK
KworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogCiAKIGNsYXNzIFNjcmlw
dEVycm9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBjbGFz
cyBFeGVjdXRpdmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGVuY29kaW5n
ID0gJ21iY3MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbmNvZGluZyA9ICd1dGYtOCcK
LSAgICAgICAgZW5jb2RlZF90b3IgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25l
Y2Vzc2FyeSh1bmljb2RlX3Rvcl9pbnB1dCwgZW5jb2RpbmcpCisgICAgICAgIGVuY29kZWRfdG9y
ID0gc3RyaW5nX3V0aWxzLmVuY29kZSh1bmljb2RlX3Rvcl9pbnB1dCwgZW5jb2Rpbmc9ZW5jb2Rp
bmcpCiAgICAgICAgICMgT24gV2luZG93cywgd2UgZXhwZWN0IHRoZSB1bmljb2RlLT5tYmNzLT51
bmljb2RlIHJvdW5kdHJpcCB0byBiZQogICAgICAgICAjIGxvc3N5LiBPbiBvdGhlciBwbGF0Zm9y
bXMsIHdlIGV4cGVjdCBhIGxvc3NsZXNzIHJvdW5kdHJpcC4KICAgICAgICAgaWYgc3lzLnBsYXRm
b3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgdW5pY29kZV90b3Jfb3V0cHV0ID0g
dW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3NhcnkoZW5jb2RlZF90b3IsIGVu
Y29kaW5nKQorICAgICAgICAgICAgdW5pY29kZV90b3Jfb3V0cHV0ID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShlbmNvZGVkX3RvciwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSB1bmljb2RlX3Rvcl9pbnB1dAogCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5w
eQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2ZpbGVzeXN0ZW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgaW1wb3J0
IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3NhcnksIGVuY29k
ZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCiBjbGFzcyBG
aWxlU3lzdGVtKG9iamVjdCk6CkBAIC0yMjcsNyArMjI3LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShv
YmplY3QpOgogCiAgICAgZGVmIHdyaXRlX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRz
KToKICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndy
aXRlKGVuY29kZV9mb3IoY29udGVudHMsIGJ5dGVzKSkKKyAgICAgICAgICAgIGYud3JpdGUoc3Ry
aW5nX3V0aWxzLmVuY29kZShjb250ZW50cywgdGFyZ2V0X3R5cGU9Ynl0ZXMpKQogCiAgICAgZGVm
IG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNlbGYsIHBhdGgsIGVycm9ycz0nc3RyaWN0Jyk6
CiAgICAgICAgICMgTm90ZTogVGhlcmUgYXBwZWFycyB0byBiZSBhbiBpc3N1ZSB3aXRoIHRoZSBy
ZXR1cm5lZCBmaWxlIG9iamVjdHMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBGaWxlU3lzdGVt
KG9iamVjdCk6CiAKICAgICAgICAgVGhlIGZpbGUgaXMgd3JpdHRlbiBlbmNvZGVkIGFzIFVURi04
IHdpdGggbm8gQk9NLiIiIgogICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICd3JywgJ3V0
Zi04JywgZXJyb3JzPWVycm9ycykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoZGVjb2RlX2lm
X25lY2Vzc2FyeShjb250ZW50cywgZXJyb3JzPWVycm9ycykpCisgICAgICAgICAgICBmLndyaXRl
KHN0cmluZ191dGlscy5kZWNvZGUoY29udGVudHMsIGVycm9ycz1lcnJvcnMpKQogCiAgICAgZGVm
IHNoYTEoc2VsZiwgcGF0aCk6CiAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5yZWFkX2JpbmFyeV9m
aWxlKHBhdGgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmls
ZXN5c3RlbV9tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDEwICszMCw4IEBAIGltcG9ydCBlcnJubwogaW1wb3J0IGhhc2hsaWIK
IGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiAKLWZyb20gd2Via2l0cHkuY29tbW9u
IGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgcGF0aAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFVuaWNvZGVJTywgc3RyaW5n
X3V0aWxzCiAKIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgc2VwID0gJy8nCkBA
IC00OCw3ICs0Niw3IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgdmFsdWUgb2YgTm9uZSBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGZpbGUgc2hv
dWxkCiAgICAgICAgICAgICAgICAgbm90IGV4aXN0LgogICAgICAgICAiIiIKLSAgICAgICAgc2Vs
Zi5maWxlcyA9IHtuYW1lOiB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2Fy
eShjb250ZW50cykgZm9yIG5hbWUsIGNvbnRlbnRzIGluIChmaWxlcyBvciB7fSkuaXRlbXMoKX0K
KyAgICAgICAgc2VsZi5maWxlcyA9IHtuYW1lOiBzdHJpbmdfdXRpbHMuZW5jb2RlKGNvbnRlbnRz
KSBmb3IgbmFtZSwgY29udGVudHMgaW4gKGZpbGVzIG9yIHt9KS5pdGVtcygpfQogICAgICAgICBz
ZWxmLndyaXR0ZW5fZmlsZXMgPSB7fQogICAgICAgICBzZWxmLmxhc3RfdG1wZGlyID0gTm9uZQog
ICAgICAgICBzZWxmLmN1cnJlbnRfdG1wbm8gPSAwCkBAIC0zMjksOCArMzI3LDggQEAgY2xhc3Mg
TW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwg
cGF0aCwgY29udGVudHMpOgogICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBhc3NlcnQgaWYg
ZGlybmFtZShwYXRoKSBkb2Vzbid0IGV4aXN0PwogICAgICAgICBzZWxmLm1heWJlX21ha2VfZGly
ZWN0b3J5KHNlbGYuZGlybmFtZShwYXRoKSkKLSAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IHVu
aWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfZm9yKGNvbnRlbnRzLCBieXRlcykKLSAgICAgICAg
c2VsZi53cml0dGVuX2ZpbGVzW3BhdGhdID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9m
b3IoY29udGVudHMsIGJ5dGVzKQorICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gc3RyaW5nX3V0
aWxzLmVuY29kZShjb250ZW50cykKKyAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVzW3BhdGhdID0g
c3RyaW5nX3V0aWxzLmVuY29kZShjb250ZW50cykKIAogICAgIGRlZiBvcGVuX3RleHRfZmlsZV9m
b3JfcmVhZGluZyhzZWxmLCBwYXRoLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgICBpZiBzZWxm
LmZpbGVzLmdldChwYXRoKSBpcyBOb25lOgpAQCAtMzQ0LDcgKzM0Miw3IEBAIGNsYXNzIE1vY2tG
aWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUo
cGF0aCkuZGVjb2RlKCd1dGYtOCcsIGVycm9ycz1lcnJvcnMpCiAKICAgICBkZWYgd3JpdGVfdGV4
dF9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzLCBlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICBy
ZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCB1bmljb2RlX2NvbXBhdGliaWxpdHku
ZW5jb2RlX2lmX25lY2Vzc2FyeShjb250ZW50cywgJ3V0Zi04JywgZXJyb3JzPWVycm9ycykpCisg
ICAgICAgIHJldHVybiBzZWxmLndyaXRlX2JpbmFyeV9maWxlKHBhdGgsIHN0cmluZ191dGlscy5l
bmNvZGUoY29udGVudHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz1lcnJvcnMpKQogCiAgICAg
ZGVmIHNoYTEoc2VsZiwgcGF0aCk6CiAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5yZWFkX2JpbmFy
eV9maWxlKHBhdGgpCkBAIC00NTMsMTMgKzQ1MSwxMyBAQCBjbGFzcyBXcml0YWJsZUJpbmFyeUZp
bGVPYmplY3Qob2JqZWN0KToKICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAKICAgICBkZWYg
d3JpdGUoc2VsZiwgc3RyaW5nKToKLSAgICAgICAgc2VsZi5mcy5maWxlc1tzZWxmLnBhdGhdICs9
IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KHN0cmluZywgJ3V0Zi04
JykKKyAgICAgICAgc2VsZi5mcy5maWxlc1tzZWxmLnBhdGhdICs9IHN0cmluZ191dGlscy5lbmNv
ZGUoc3RyaW5nLCBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICBzZWxmLmZzLndyaXR0ZW5fZmls
ZXNbc2VsZi5wYXRoXSA9IHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXQogCiAKIGNsYXNzIFdyaXRh
YmxlVGV4dEZpbGVPYmplY3QoV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KToKICAgICBkZWYgd3Jp
dGUoc2VsZiwgc3RyKToKLSAgICAgICAgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0LndyaXRlKHNl
bGYsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KHN0ciwgJ3V0Zi04
JykpCisgICAgICAgIFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdC53cml0ZShzZWxmLCBzdHJpbmdf
dXRpbHMuZW5jb2RlKHN0ciwgZW5jb2Rpbmc9J3V0Zi04JykpCiAKIAogY2xhc3MgUmVhZGFibGVC
aW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CkBAIC00OTIsNyArNDkwLDcgQEAgY2xhc3MgUmVhZGFi
bGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CiAKIGNsYXNzIFJlYWRhYmxlVGV4dEZpbGVPYmpl
Y3QoUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnMs
IHBhdGgsIGRhdGEpOgotICAgICAgICBzdXBlcihSZWFkYWJsZVRleHRGaWxlT2JqZWN0LCBzZWxm
KS5fX2luaXRfXyhmcywgcGF0aCwgdW5pY29kZV9jb21wYXRpYmlsaXR5LlVuaWNvZGVJTyh1bmlj
b2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2ZvcihkYXRhLCB1bmljb2RlX2NvbXBhdGliaWxpdHku
dW5pY29kZSkpKQorICAgICAgICBzdXBlcihSZWFkYWJsZVRleHRGaWxlT2JqZWN0LCBzZWxmKS5f
X2luaXRfXyhmcywgcGF0aCwgVW5pY29kZUlPKHN0cmluZ191dGlscy5kZWNvZGUoZGF0YSkpKQog
CiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBzZWxmLmRhdGEuY2xvc2UoKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNh
cHR1cmUucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKIAogY2xhc3MgT3V0cHV0Q2FwdHVyZShv
YmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1
dHRlZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vb3V0cHV0dGVlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0dGVlX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw5IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0dGVlIGltcG9ydCBUZWUsIE91dHB1dFRl
ZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJp
bmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5vdXRwdXR0ZWUgaW1wb3J0IFRlZQogCiAKIGNsYXNzIFNpbXBsZVRlZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRp
b25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw5IEBACiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCB1bml0
dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRw
eS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24u
dW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IGxpbnRfdGVzdF9leHBlY3RhdGlvbnMKIAogCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19p
bnRlZ3JhdGlvbnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxMyBAQCBpbXBv
cnQganNvbgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0
IG91dHB1dGNhcHR1cmUsIHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxv
Z3NfdW5pdHRlc3QgaW1wb3J0IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3
ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9z
dF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21w
YXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwotCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgcnVuX3dlYmtpdF90ZXN0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
LnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTCiBmcm9tIHdl
YmtpdHB5LnBvcnQgaW1wb3J0IHRlc3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVf
dGVzdF9ydW5uZXIucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOSArMjksOCBAQAogCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCi1p
bXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGRlY29kZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCB0ZXN0X3Jlc3Vs
dF93cml0ZXIKIGZyb20gd2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlcklucHV0LCBE
cml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVz
dF9leHBlY3RhdGlvbnMKQEAgLTIxNSw3ICsyMTQsNyBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVy
KG9iamVjdCk6CiAgICAgICAgIGVsaWYgZHJpdmVyX291dHB1dC5lcnJvcjoKICAgICAgICAgICAg
IF9sb2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIgbGluZXM6IiAlIChzZWxmLl93b3JrZXJf
bmFtZSwgdGVzdG5hbWUpKQogICAgICAgICBmb3IgbGluZSBpbiBkcml2ZXJfb3V0cHV0LmVycm9y
LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiAge30iLmZvcm1hdChkZWNv
ZGVfZm9yKGxpbmUsIHN0cikpKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICB7fSIuZm9ybWF0
KHN0cmluZ191dGlscy5kZWNvZGUobGluZSwgdGFyZ2V0X3R5cGU9c3RyKSkpCiAgICAgICAgIHJl
dHVybiBmYWlsdXJlcwogCiAgICAgZGVmIF9jb21wYXJlX291dHB1dChzZWxmLCBleHBlY3RlZF9k
cml2ZXJfb3V0cHV0LCBkcml2ZXJfb3V0cHV0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHNfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVpbGRi
b3RfcmVzdWx0c191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0c191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEwIEBACiAKIGltcG9ydCB1bml0dGVzdAog
Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21t
b24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0
b29sIGltcG9ydCBNb2NrT3B0aW9ucwotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5t
b2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHNfdW5pdHRlc3QKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBidWlsZGJvdF9yZXN1bHRzCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAgaW1wb3J0IHJlCiBpbXBv
cnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzLm1ldGVyZWRfc3RyZWFt
IGltcG9ydCBNZXRlcmVkU3RyZWFtCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSAr
MzAsMTEgQEAKIAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGltZQogaW1w
b3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9j
a0hvc3QKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwogCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KLWZyb20gd2Via2l0cHkgaW1wb3J0
IHBvcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtYW5h
Z2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxMSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotaW1wb3J0IGpzb24KLWltcG9ydCBtYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJv
bSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZy
b20gd2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlck91dHB1dAotZnJvbSB3ZWJraXRw
eS5wb3J0LnRlc3QgaW1wb3J0IFRlc3REcml2ZXIKIGZyb20gd2Via2l0cHkucG9ydC50ZXN0IGlt
cG9ydCBUZXN0UG9ydAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBp
bXBvcnQgUGVyZlRlc3QKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3Qg
aW1wb3J0IFBlcmZUZXN0TWV0cmljCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlv
bnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAgaW1wb3J0IHVuaXR0ZXN0
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmlu
Z0lPCiBmcm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJPdXRwdXQKIGZyb20g
d2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAogZnJvbSB3ZWJraXRweS5wZXJmb3Jt
YW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDEzIEBACiAiIiJVbml0IHRlc3RzIGZvciBy
dW5fcGVyZl90ZXN0cy4iIiIKIAogaW1wb3J0IGpzb24KLWltcG9ydCByZQogaW1wb3J0IHVuaXR0
ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRw
eS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0Ci1mcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rl
c3RzLnBlcmZ0ZXN0IGltcG9ydCBERUZBVUxUX1RFU1RfUlVOTkVSX0NPVU5UCiBmcm9tIHdlYmtp
dHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0c3J1bm5lciBpbXBvcnQgUGVyZlRlc3RzUnVu
bmVyCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDI2
NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBAIGltcG9ydCBzeXMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBv
cnQgT3JkZXJlZERpY3QKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9y
dCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgcmVhZF9jaGVja3N1bV9m
cm9tX3BuZwpAQCAtNTIsNyArNTMsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQ
VUJMSUNfVEFCTEUsIElOVEVSTkFMX1RBQkxFLCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJraXRw
eS5jb21tb24ud2F2ZWRpZmYgaW1wb3J0IFdhdmVEaWZmCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53
ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2Fy
eSwgZGVjb2RlX2ZvcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29u
ZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkucG9ydCBp
bXBvcnQgY29uZmlnIGFzIHBvcnRfY29uZmlnCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGRy
aXZlcgpAQCAtMzI2LDggKzMyNiw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgZGlm
Zl90ZXh0KHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0LCBleHBlY3RlZF9maWxlbmFt
ZSwgYWN0dWFsX2ZpbGVuYW1lKToKICAgICAgICAgIiIiUmV0dXJucyBhIHN0cmluZyBjb250YWlu
aW5nIHRoZSBkaWZmIG9mIHRoZSB0d28gdGV4dCBzdHJpbmdzCiAgICAgICAgIGluICd1bmlmaWVk
IGRpZmYnIGZvcm1hdC4iIiIKLSAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBkZWNvZGVfZm9y
KGVuY29kZV9pZl9uZWNlc3NhcnkoZXhwZWN0ZWRfZmlsZW5hbWUpLCBzdHIpCi0gICAgICAgIGFj
dHVhbF9maWxlbmFtZSA9IGRlY29kZV9mb3IoZW5jb2RlX2lmX25lY2Vzc2FyeShhY3R1YWxfZmls
ZW5hbWUpLCBzdHIpCisgICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShzdHJpbmdfdXRpbHMuZW5jb2RlKGV4cGVjdGVkX2ZpbGVuYW1lKSwgdGFyZ2V0X3R5cGU9
c3RyKQorICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0cmlu
Z191dGlscy5lbmNvZGUoYWN0dWFsX2ZpbGVuYW1lKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAg
ICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZXhwZWN0ZWRfdGV4dC5zcGxpdGxpbmVzKFRy
dWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX3RleHQuc3Bs
aXRsaW5lcyhUcnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2ZpbGVuYW1lLApAQCAtNDg4LDcgKzQ4OCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgICAgIGJhc2VsaW5lX3BhdGggPSBzZWxmLmV4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFt
ZSwgJy53ZWJhcmNoaXZlJywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCiAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoYmFzZWxpbmVfcGF0aCk6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgdGV4dCA9IGRlY29kZV9mb3Ioc2VsZi5fZmlsZXN5
c3RlbS5yZWFkX2JpbmFyeV9maWxlKGJhc2VsaW5lX3BhdGgpLCBzdHIpCisgICAgICAgIHRleHQg
PSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShi
YXNlbGluZV9wYXRoKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICByZXR1cm4gdGV4dC5yZXBs
YWNlKCJcclxuIiwgIlxuIikKIAogICAgIGRlZiBfZ2V0X3JlZnRlc3RfbGlzdChzZWxmLCB0ZXN0
X25hbWUpOgpAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICBpZiBhcmdzOgogICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChhcmdzKQog
ICAgICAgICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQocnVuX3NjcmlwdF9j
b21tYW5kLCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpLCBkZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRw
dXQsIGVudj1lbnYpCi0gICAgICAgIF9sb2cuZGVidWcoJ091dHB1dCBvZiAlczpcbiVzJyAlIChy
dW5fc2NyaXB0X2NvbW1hbmQsIGVuY29kZV9mb3Iob3V0cHV0LCBzdHIpIGlmIGRlY29kZV9vdXRw
dXQgZWxzZSBvdXRwdXQpKQorICAgICAgICBfbG9nLmRlYnVnKCdPdXRwdXQgb2YgJXM6XG4lcycg
JSAocnVuX3NjcmlwdF9jb21tYW5kLCBzdHJpbmdfdXRpbHMuZW5jb2RlKG91dHB1dCwgdGFyZ2V0
X3R5cGU9c3RyKSBpZiBkZWNvZGVfb3V0cHV0IGVsc2Ugb3V0cHV0KSkKICAgICAgICAgcmV0dXJu
IG91dHB1dAogCiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwx
MiBAQCBpbXBvcnQgc2hsZXgKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgb3MKKwog
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBzdHJpbmdfdXRpbHMKIAotZnJvbSBvcy5wYXRoIGltcG9ydCBub3JtcGF0aAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ucHJvZmlsZXIgaW1wb3J0IFByb2ZpbGVyRmFjdG9yeQotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNv
ZGVfZm9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtODcsMTEg
Kzg3LDExIEBAIGNsYXNzIERyaXZlck91dHB1dChvYmplY3QpOgogICAgICAgICAgICAgdGVzdF90
aW1lPTAsIG1lYXN1cmVtZW50cz1Ob25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hl
ZF9wcm9jZXNzX25hbWU9Jz8/JywKICAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNo
X2xvZz1Ob25lLCBwaWQ9Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3MgY291bGQgYmUgcmVu
YW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkgZG8uCi0gICAgICAgIHNlbGYudGV4dCA9
IGRlY29kZV9mb3IodGV4dCwgc3RyKSBpZiB0ZXh0IGVsc2UgTm9uZQorICAgICAgICBzZWxmLnRl
eHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHRleHQsIHRhcmdldF90eXBlPXN0cikgaWYgdGV4dCBl
bHNlIE5vbmUKICAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdlICAjIE1heSBiZSBlbXB0eS1zdHJp
bmcgaWYgdGhlIHRlc3QgY3Jhc2hlcy4KICAgICAgICAgc2VsZi5pbWFnZV9oYXNoID0gaW1hZ2Vf
aGFzaAogICAgICAgICBzZWxmLmltYWdlX2RpZmYgPSBOb25lICAjIGltYWdlX2RpZmYgZ2V0cyBm
aWxsZWQgaW4gYWZ0ZXIgY29uc3RydWN0aW9uLgotICAgICAgICBzZWxmLmF1ZGlvID0gZW5jb2Rl
X2lmX25lY2Vzc2FyeShhdWRpbykgaWYgYXVkaW8gZWxzZSBOb25lICAjIEJpbmFyeSBmb3JtYXQg
aXMgcG9ydC1kZXBlbmRlbnQuCisgICAgICAgIHNlbGYuYXVkaW8gPSBzdHJpbmdfdXRpbHMuZW5j
b2RlKGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRl
cGVuZGVudC4KICAgICAgICAgc2VsZi5jcmFzaCA9IGNyYXNoCiAgICAgICAgIHNlbGYuY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBjcmFzaGVkX3Byb2Nlc3NfbmFtZQogICAgICAgICBzZWxmLmNyYXNo
ZWRfcGlkID0gY3Jhc2hlZF9waWQKQEAgLTIxNSw3ICsyMTUsNyBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mud3JpdGUoY29tbWFuZCkKICAgICAg
ICAgdGV4dCwgYXVkaW8gPSBzZWxmLl9yZWFkX2ZpcnN0X2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJf
aW5wdXQudGVzdF9uYW1lKSAgIyBGaXJzdCBibG9jayBpcyBlaXRoZXIgdGV4dCBvciBhdWRpbwog
ICAgICAgICBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2ggPSBzZWxmLl9yZWFkX29wdGlvbmFsX2lt
YWdlX2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSAgIyBUaGUgc2Vjb25k
IChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0YS4KLSAgICAgICAgdGV4dCA9IGRlY29kZV9m
b3IodGV4dCwgc3RyKQorICAgICAgICB0ZXh0ID0gc3RyaW5nX3V0aWxzLmRlY29kZSh0ZXh0LCB0
YXJnZXRfdHlwZT1zdHIpCiAKICAgICAgICAgY3Jhc2hlZCA9IHNlbGYuaGFzX2NyYXNoZWQoKQog
ICAgICAgICB0aW1lZF9vdXQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQKQEAgLTIy
OSw5ICsyMjksOSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgICMgSW4gdGhl
IHRpbWVvdXQgY2FzZSwgd2Uga2lsbCB0aGUgaHVuZyBwcm9jZXNzIGFzIHdlbGwuCiAgICAgICAg
ICAgICBvdXQsIGVyciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnN0b3Aoc2VsZi5fcG9ydC5kcml2
ZXJfc3RvcF90aW1lb3V0KCkgaWYgc3RvcF93aGVuX2RvbmUgZWxzZSAwLjApCiAgICAgICAgICAg
ICBpZiBvdXQ6Ci0gICAgICAgICAgICAgICAgdGV4dCArPSBkZWNvZGVfZm9yKG91dCwgc3RyKQor
ICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyaW5nX3V0aWxzLmRlY29kZShvdXQsIHRhcmdldF90
eXBlPXN0cikKICAgICAgICAgICAgIGlmIGVycjoKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9y
X2Zyb21fdGVzdCArPSBkZWNvZGVfZm9yKGVyciwgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYu
ZXJyb3JfZnJvbV90ZXN0ICs9IHN0cmluZ191dGlscy5kZWNvZGUoZXJyLCB0YXJnZXRfdHlwZT1z
dHIpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKIAogICAgICAgICBj
cmFzaF9sb2cgPSBOb25lCkBAIC0yODQsOCArMjg0LDggQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6
CiAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICBt
ID0gcmUubWF0Y2goYideKFteOl0rKTogKFswLTldKykkJywgbGluZSkKICAgICAgICAgICAgIGlm
IG06Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtLmdyb3VwKDEp
LCBzdHIpCi0gICAgICAgICAgICAgICAgcHJvY2Vzc19pZCA9IGRlY29kZV9mb3IobS5ncm91cCgy
KSwgc3RyKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfbmFtZSA9IHN0cmluZ191dGlscy5kZWNv
ZGUobS5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKQorICAgICAgICAgICAgICAgIHByb2Nlc3Nf
aWQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG0uZ3JvdXAoMiksIHRhcmdldF90eXBlPXN0cikKICAg
ICAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzZXNbcHJvY2Vzc19uYW1lXS5hcHBlbmQocHJvY2Vz
c19pZCkKIAogICAgICAgICByZXR1cm4gY2hpbGRfcHJvY2Vzc2VzCkBAIC01NDksNyArNTQ5LDcg
QEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX3RpbWVv
dXQoc2VsZiwgb3V0X2xpbmUpOgogICAgICAgICBpZiBvdXRfbGluZS5zdGFydHN3aXRoKGIiI1BJ
RCBVTlJFU1BPTlNJVkUgLSAiKToKICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goYicjUElE
IFVOUkVTUE9OU0lWRSAtIChcUyspJywgb3V0X2xpbmUpCi0gICAgICAgICAgICBjaGlsZF9wcm9j
ZXNzX25hbWUgPSBkZWNvZGVfZm9yKG1hdGNoLmdyb3VwKDEpLCBzdHIpIGlmIG1hdGNoIGVsc2Ug
J1dlYlByb2Nlc3MnCisgICAgICAgICAgICBjaGlsZF9wcm9jZXNzX25hbWUgPSBzdHJpbmdfdXRp
bHMuZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1zdHIpIGlmIG1hdGNoIGVsc2Ug
J1dlYlByb2Nlc3MnCiAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChiJ3BpZCAoXGQrKScs
IG91dF9saW5lKQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19waWQgPSBpbnQobWF0Y2guZ3Jv
dXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgZXJyX2xpbmUgPSAnV2FpdCBv
biBub3RpZnlEb25lIHRpbWVkIG91dCwgcHJvY2VzcyAnICsgY2hpbGRfcHJvY2Vzc19uYW1lICsg
JyBwaWQgPSAnICsgc3RyKGNoaWxkX3Byb2Nlc3NfcGlkKQpAQCAtNTcyLDIxICs1NzIsMjEgQEAg
Y2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBl
bGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aChiIiNDUkFTSEVEIC0gIik6CiAgICAgICAgICAgICBt
YXRjaCA9IHJlLm1hdGNoKGInI0NSQVNIRUQgLSAoXFMrKScsIGVycm9yX2xpbmUpCi0gICAgICAg
ICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobWF0Y2guZ3JvdXAo
MSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKKyAgICAgICAgICAgIHNlbGYuX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShtYXRjaC5ncm91cCgxKSwg
dGFyZ2V0X3R5cGU9c3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJwogICAgICAgICAgICAg
bWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBlcnJvcl9saW5lKQogICAgICAgICAgICAg
c2VsZi5fY3Jhc2hlZF9waWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9u
ZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgY3Jhc2gsIHBpZCA9ICVzJyAlIChzZWxmLl9j
cmFzaGVkX3Byb2Nlc3NfbmFtZSwgc3RyKHNlbGYuX2NyYXNoZWRfcGlkKSkpCiAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aChiIiNQUk9D
RVNTIFVOUkVTUE9OU0lWRSAtICIpOgogICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChiJyNQ
Uk9DRVNTIFVOUkVTUE9OU0lWRSAtIChcUyspJywgZXJyb3JfbGluZSkKLSAgICAgICAgICAgIGNo
aWxkX3Byb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobWF0Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0
Y2ggZWxzZSAnV2ViUHJvY2VzcycKKyAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9IHN0
cmluZ191dGlscy5kZWNvZGUobWF0Y2guZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikgaWYgbWF0
Y2ggZWxzZSAnV2ViUHJvY2VzcycKICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGIncGlk
IChcZCspJywgZXJyb3JfbGluZSkKICAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfcGlkID0gaW50
KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAgICAgICAgIF9sb2cuZGVi
dWcoJyVzIGlzIHVucmVzcG9uc2l2ZSwgcGlkID0gJXMnICUgKGNoaWxkX3Byb2Nlc3NfbmFtZSwg
c3RyKGNoaWxkX3Byb2Nlc3NfcGlkKSkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdGltZWRf
b3V0ID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2hpbGRfcHJvY2Vzc19waWQ6CiAgICAgICAgICAg
ICAgICAgc2VsZi5fcG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNoaWxk
X3Byb2Nlc3NfcGlkLCBzZWxmLl90YXJnZXRfaG9zdCkKLSAgICAgICAgICAgIHNlbGYuZXJyb3Jf
ZnJvbV90ZXN0ICs9IGRlY29kZV9mb3IoZXJyb3JfbGluZSwgc3RyKQorICAgICAgICAgICAgc2Vs
Zi5lcnJvcl9mcm9tX3Rlc3QgKz0gc3RyaW5nX3V0aWxzLmRlY29kZShlcnJvcl9saW5lLCB0YXJn
ZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZSgnI1NB
TVBMRSBGSU5JU0hFRFxuJywgVHJ1ZSkgICMgTXVzdCBiZSBhYmxlIHRvIGlnbm9yZSBhIGJyb2tl
biBwaXBlIGhlcmUsIHRhcmdldCBwcm9jZXNzIG1heSBhbHJlYWR5IGJlIGNsb3NlZC4KICAgICAg
ICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLmhhc19jcmFzaGVkKCkKQEAg
LTY0MCw3ICs2NDAsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKIAogICAgIGRlZiBfcmVhZF9o
ZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVy
X2ZpbHRlcj1Ob25lKToKICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGhlYWRlcl90ZXh0KSBh
bmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlzIE5vbmU6Ci0gICAgICAgICAgICB2YWx1
ZSA9IGRlY29kZV9mb3IobGluZS5zcGxpdCgpWzFdLCBzdHIpCisgICAgICAgICAgICB2YWx1ZSA9
IHN0cmluZ191dGlscy5kZWNvZGUobGluZS5zcGxpdCgpWzFdLCB0YXJnZXRfdHlwZT1zdHIpCiAg
ICAgICAgICAgICBpZiBoZWFkZXJfZmlsdGVyOgogICAgICAgICAgICAgICAgIHZhbHVlID0gaGVh
ZGVyX2ZpbHRlcih2YWx1ZSkKICAgICAgICAgICAgIHNldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRy
LCB2YWx1ZSkKQEAgLTY2MSw3ICs2NjEsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKIAogICAg
ICAgICAjIE5vdGUsIHdlJ3JlIG5vdCByZWFkaW5nIEV4cGVjdGVkSGFzaDogaGVyZSwgYnV0IHdl
IGNvdWxkLgogICAgICAgICAjIElmIHRoZSBsaW5lIHdhc24ndCBhIGhlYWRlciwgd2UganVzdCBh
cHBlbmQgaXQgdG8gdGhlIGNvbnRlbnQuCi0gICAgICAgIGJsb2NrLmNvbnRlbnQgPSBlbmNvZGVf
aWZfbmVjZXNzYXJ5KGJsb2NrLmNvbnRlbnQpICsgbGluZQorICAgICAgICBibG9jay5jb250ZW50
ID0gc3RyaW5nX3V0aWxzLmVuY29kZShibG9jay5jb250ZW50KSArIGxpbmUKIAogICAgIGRlZiBf
c3RyaXBfZW9mKHNlbGYsIGxpbmUpOgogICAgICAgICBpZiBsaW5lIGFuZCBsaW5lLmVuZHN3aXRo
KGIiI0VPRlxuIik6CkBAIC03MDYsNyArNzA2LDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgIyBGSVhNRTogVW5saWtlIEhUVFAsIERSVCBkdW1wcyB0aGUgY29udGVu
dCByaWdodCBhZnRlciBwcmludGluZyBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlci4KICAgICAgICAg
ICAgICAgICAjIERvbid0IHdhaXQgdW50aWwgd2UncmUgZG9uZSB3aXRoIGhlYWRlcnMsIGp1c3Qg
cmVhZCB0aGUgYmluYXJ5IGJsb2IgcmlnaHQgbm93LgogICAgICAgICAgICAgICAgIGlmIGNvbnRl
bnRfbGVuZ3RoX2JlZm9yZV9oZWFkZXJfY2hlY2sgIT0gYmxvY2suX2NvbnRlbnRfbGVuZ3RoOgot
ICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gZW5jb2RlX2lmX25lY2Vzc2FyeShz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRf
bGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgYmxvY2suY29udGVudCA9IHN0cmluZ191dGls
cy5lbmNvZGUoc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2Nr
Ll9jb250ZW50X2xlbmd0aCkpCiAKICAgICAgICAgICAgIGlmIGVycl9saW5lOgogICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVz
cyhlcnJfbGluZSk6CkBAIC03MjQsOSArNzI0LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY2FuIGxpa2VseSBiZSByZW1vdmVkIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzE4NzAxNDQ3PiBpcyBmaXhlZC4KICAgICAgICAgICAgICAgICAg
ICAgZGVhZGxpbmUgKz0gMTAgKiA2MCAqIDEwMDAKICAgICAgICAgICAgICAgICBpZiBhc2FuX3Zp
b2xhdGlvbl9kZXRlY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0
X2Zyb21fZHJpdmVyICs9IGRlY29kZV9mb3IoZXJyX2xpbmUsIHN0cikKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJpdmVyICs9IHN0cmluZ191dGlscy5kZWNv
ZGUoZXJyX2xpbmUsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBkZWNvZGVfZm9yKGVycl9s
aW5lLCBzdHIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IHN0
cmluZ191dGlscy5kZWNvZGUoZXJyX2xpbmUsIHRhcmdldF90eXBlPXN0cikKIAogICAgICAgICBp
ZiBhc2FuX3Zpb2xhdGlvbl9kZXRlY3RlZCBhbmQgbm90IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19u
YW1lOgogICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5wcm9jZXNzX25hbWUoKQpAQCAtNzU5LDcgKzc1OSw3IEBAIGNsYXNzIENvbnRl
bnRCbG9jayhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBiYXNl
NjQuYjY0ZGVjb2RlKHNlbGYuY29udGVudCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IGRlY29kZV9mb3Ioc2Vs
Zi5jb250ZW50LCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBz
dHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuY29udGVudCwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAg
ICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxmLmRl
Y29kZWRfY29udGVudCA9IE5vbmUKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2ltYWdlX2RpZmYucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2ltYWdlX2RpZmYucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9pbWFnZV9kaWZmLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw3IEBAIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiAKLWZyb20gd2Via2l0cHkucG9y
dCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgZGVjb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2Fy
eQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIHN0cmluZ191dGlscwogCiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTU5LDkgKzU4LDkgQEAgY2xhc3Mg
SW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9zdGFydCh0b2xlcmFu
Y2UpCiAgICAgICAgICAgICAjIE5vdGUgdGhhdCBhbHRob3VnaCB3ZSBhcmUgaGFuZGVkICdvbGQn
LCAnbmV3JywgSW1hZ2VEaWZmIHdhbnRzICduZXcnLCAnb2xkJy4KICAgICAgICAgICAgIGJ1ZmZl
ciA9IEJ5dGVzSU8oKQotICAgICAgICAgICAgYnVmZmVyLndyaXRlKGVuY29kZV9pZl9uZWNlc3Nh
cnkoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQobGVuKGFjdHVhbF9jb250ZW50cykpKSkK
KyAgICAgICAgICAgIGJ1ZmZlci53cml0ZShzdHJpbmdfdXRpbHMuZW5jb2RlKCdDb250ZW50LUxl
bmd0aDoge31cbicuZm9ybWF0KGxlbihhY3R1YWxfY29udGVudHMpKSkpCiAgICAgICAgICAgICBi
dWZmZXIud3JpdGUoYWN0dWFsX2NvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLndyaXRlKGVu
Y29kZV9pZl9uZWNlc3NhcnkoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQobGVuKGV4cGVj
dGVkX2NvbnRlbnRzKSkpKQorICAgICAgICAgICAgYnVmZmVyLndyaXRlKHN0cmluZ191dGlscy5l
bmNvZGUoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQobGVuKGV4cGVjdGVkX2NvbnRlbnRz
KSkpKQogICAgICAgICAgICAgYnVmZmVyLndyaXRlKGV4cGVjdGVkX2NvbnRlbnRzKQogICAgICAg
ICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShidWZmZXIuZ2V0dmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybiBzZWxmLl9yZWFkKCkKQEAgLTkyLDEyICs5MSwxMiBAQCBjbGFzcyBJbWFnZURpZmZl
cihvYmplY3QpOgogCiAgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aChiJ0NvbnRlbnQt
TGVuZ3RoJyk6CiAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKGInQ29udGVudC1MZW5ndGg6
IChcZCspJywgb3V0cHV0KQotICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KGRl
Y29kZV9mb3IobS5ncm91cCgxKSwgc3RyKSkKKyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0
aCA9IGludChzdHJpbmdfdXRpbHMuZGVjb2RlKG0uZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikp
CiAgICAgICAgICAgICAgICAgb3V0cHV0X2ltYWdlID0gc2VsZi5fcHJvY2Vzcy5yZWFkX3N0ZG91
dChkZWFkbGluZSwgY29udGVudF9sZW5ndGgpCiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2Vs
Zi5fcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQogICAgICAgICAgICAgICAgIGJy
ZWFrCiAKLSAgICAgICAgc3RkZXJyID0gZGVjb2RlX2ZvcihzZWxmLl9wcm9jZXNzLnBvcF9hbGxf
YnVmZmVyZWRfc3RkZXJyKCksIHN0cikKKyAgICAgICAgc3RkZXJyID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShzZWxmLl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCksIHRhcmdldF90eXBl
PXN0cikKICAgICAgICAgZXJyX3N0ciA9ICcnCiAgICAgICAgIGlmIHN0ZGVycjoKICAgICAgICAg
ICAgIGVycl9zdHIgKz0gIkltYWdlRGlmZiBwcm9kdWNlZCBzdGRlcnIgb3V0cHV0OlxuIiArIHN0
ZGVycgpAQCAtMTExLDcgKzExMCw3IEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6CiAgICAg
ICAgICAgICBtID0gcmUubWF0Y2goYidkaWZmOiAoLispJSAocGFzc2VkfGZhaWxlZCknLCBvdXRw
dXQpCiAgICAgICAgICAgICBpZiBtLmdyb3VwKDIpID09IGIncGFzc2VkJzoKICAgICAgICAgICAg
ICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCi0gICAgICAgICAgICBkaWZmX3BlcmNlbnQgPSBm
bG9hdChkZWNvZGVfZm9yKG0uZ3JvdXAoMSksIHN0cikpCisgICAgICAgICAgICBkaWZmX3BlcmNl
bnQgPSBmbG9hdChzdHJpbmdfdXRpbHMuZGVjb2RlKG0uZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0
cikpCiAKICAgICAgICAgcmV0dXJuIChvdXRwdXRfaW1hZ2UsIGRpZmZfcGVyY2VudCwgZXJyX3N0
ciBvciBOb25lKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVj
dG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0
ZWN0b3IucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9sZWFrZGV0ZWN0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDkgQEAKIGltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgcmUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3Jp
cHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIApAQCAtNzksNyArODAsNyBAQCBjbGFzcyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKICAgICBk
ZWYgX3BhcnNlX2xlYWtzX291dHB1dChzZWxmLCBsZWFrc19vdXRwdXQpOgogICAgICAgICBpZiBu
b3QgbGVha3Nfb3V0cHV0OgogICAgICAgICAgICAgcmV0dXJuIDAsIDAsIDAKLSAgICAgICAgbGVh
a3Nfb3V0cHV0ID0gZW5jb2RlX2lmX25lY2Vzc2FyeShsZWFrc19vdXRwdXQpCisgICAgICAgIGxl
YWtzX291dHB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUobGVha3Nfb3V0cHV0KQogICAgICAgICBf
LCBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2goYidQcm9jZXNzICg/UDxwaWQ+XFxkKyk6ICg/UDxj
b3VudD5cXGQrKSBsZWFrcz8gZm9yICg/UDxieXRlcz5cXGQrKSB0b3RhbCcsIGxlYWtzX291dHB1
dCkuZ3JvdXBzKCkKICAgICAgICAgZXhjbHVkZWRfbWF0Y2ggPSByZS5zZWFyY2goYicoP1A8ZXhj
bHVkZWQ+XFxkKykgbGVha3M/IGV4Y2x1ZGVkJywgbGVha3Nfb3V0cHV0KQogICAgICAgICBleGNs
dWRlZCA9IGV4Y2x1ZGVkX21hdGNoLmdyb3VwKCdleGNsdWRlZCcpIGlmIGV4Y2x1ZGVkX21hdGNo
IGVsc2UgMApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92
YWxncmluZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVh
a2RldGVjdG9yX3ZhbGdyaW5kLnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMSArMzEsMTAgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIGlt
cG9ydCBoYXNobGliCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2Vz
cwogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IHBhcnNlU3RyaW5nCiBmcm9tIHhtbC5wYXJz
ZXJzLmV4cGF0IGltcG9ydCBFeHBhdEVycm9yCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2Zvcgor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTE5OCw3ICsxOTcsNyBAQCBjbGFzcyBWYWxncmluZEVy
cm9yOgogICAgICAgICAjIFRoaXMgaXMgYSBkZXZpY2UtaW5kZXBlbmRlbnQgaGFzaCBpZGVudGlm
eWluZyB0aGUgc3VwcHJlc3Npb24uCiAgICAgICAgICMgQnkgcHJpbnRpbmcgb3V0IHRoaXMgaGFz
aCB3ZSBjYW4gZmluZCBkdXBsaWNhdGUgcmVwb3J0cyBiZXR3ZWVuIHRlc3RzIGFuZAogICAgICAg
ICAjIGRpZmZlcmVudCBzaGFyZHMgcnVubmluZyBvbiBtdWx0aXBsZSBidWlsZGJvdHMKLSAgICAg
ICAgcmV0dXJuIGludChoYXNobGliLm1kNShlbmNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYudW5pcXVl
X3N0cmluZygpKSkuaGV4ZGlnZXN0KClbOjE2XSwgMTYpCisgICAgICAgIHJldHVybiBpbnQoaGFz
aGxpYi5tZDUoc3RyaW5nX3V0aWxzLmVuY29kZShzZWxmLnVuaXF1ZV9zdHJpbmcoKSkpLmhleGRp
Z2VzdCgpWzoxNl0sIDE2KQogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1
cm4gaGFzaChzZWxmLnVuaXF1ZV9zdHJpbmcoKSkKQEAgLTIyNCw3ICsyMjMsNyBAQCBjbGFzcyBM
ZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgogICAgICAgICAgICAgcGFyc2VkX3N0cmluZyA9
IHBhcnNlU3RyaW5nKGxlYWtzX291dHB1dCkKICAgICAgICAgZXhjZXB0IEV4cGF0RXJyb3IgYXMg
ZToKICAgICAgICAgICAgIHBhcnNlX2ZhaWxlZCA9IFRydWUKLSAgICAgICAgICAgIF9sb2cuZXJy
b3IoImNvdWxkIG5vdCBwYXJzZSAlczogJXMiICUgKGRlY29kZV9mb3IobGVha3Nfb3V0cHV0LCBz
dHIpLCBlKSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoImNvdWxkIG5vdCBwYXJzZSAlczogJXMi
ICUgKHN0cmluZ191dGlscy5kZWNvZGUobGVha3Nfb3V0cHV0LCB0YXJnZXRfdHlwZT1zdHIpLCBl
KSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGN1cl9yZXBvcnRfZXJyb3JzID0gc2V0
KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3Jp
bmRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEzIEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRl
Y29kZV9mb3IKIGZyb20gd2Via2l0cHkucG9ydC5sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQgaW1wb3J0
IExlYWtEZXRlY3RvclZhbGdyaW5kCiAKIApAQCAtODA4LDcgKzgwOCw3IEBAIFN1cHByZXNzaW9u
cyB1c2VkOgogCiBkZWYgbW9ja19ydW5fY3BwZmlsdF9jb21tYW5kKGFyZ3MpOgogICAgIGlmIGFy
Z3NbMF0gPT0gJ2MrK2ZpbHQnOgotICAgICAgICByZXR1cm4gdmFsZ3JpbmRfb3V0cHV0X2NwcGZp
bHRfbWFwW2RlY29kZV9mb3IoYXJnc1syXSwgc3RyKV0KKyAgICAgICAgcmV0dXJuIHZhbGdyaW5k
X291dHB1dF9jcHBmaWx0X21hcFtzdHJpbmdfdXRpbHMuZGVjb2RlKGFyZ3NbMl0sIHRhcmdldF90
eXBlPXN0cildCiAgICAgcmV0dXJuICIiCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkJKHJldmlzaW9uIDI2NDUwOCkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsMTUgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLWltcG9ydCBkYXRldGltZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBz
aHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiAK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25lY2Vzc2FyeQog
ZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiAK
IApAQCAtMTE0LDcgKzExMyw3IEBAIGNsYXNzIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG9iamVjdCk6
CiAKICAgICAgICAgcHJvYyA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3BlbihjbWQsIHN0ZGluPU5vbmUs
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAg
IGNyYXNoX2xvZywgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGVycm9ycyA9
IGRlY29kZV9pZl9uZWNlc3Nhcnkoc3RyKHN0ZGVyciBvciAnPGVtcHR5PicpLCBlcnJvcnM9J2ln
bm9yZScpLnNwbGl0bGluZXMoKQorICAgICAgICBlcnJvcnMgPSBzdHJpbmdfdXRpbHMuZGVjb2Rl
KHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3JzPSdpZ25vcmUnKS5zcGxpdGxpbmVzKCkK
ICAgICAgICAgcmV0dXJuIGNyYXNoX2xvZywgZXJyb3JzCiAKICAgICBkZWYgZ2VuZXJhdGVfY3Jh
c2hfbG9nKHNlbGYsIHN0ZG91dCwgc3RkZXJyKToKQEAgLTE0OSw3ICsxNDgsNyBAQCBjbGFzcyBH
REJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgogICAgICAgICBlbGlmIGNvcmVkdW1wY3RsOgog
ICAgICAgICAgICAgY3Jhc2hfbG9nLCBlcnJvcnMgPSBzZWxmLl9nZXRfdHJhY2VfZnJvbV9zeXN0
ZW1kKGNvcmVkdW1wY3RsLCBwaWRfcmVwcmVzZW50YXRpb24pCiAKLSAgICAgICAgc3RkZXJyX2xp
bmVzID0gZXJyb3JzICsgZGVjb2RlX2lmX25lY2Vzc2FyeShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+
JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5lcygpCisgICAgICAgIHN0ZGVycl9saW5lcyA9
IGVycm9ycyArIHN0cmluZ191dGlscy5kZWNvZGUoc3RyKHN0ZGVyciBvciAnPGVtcHR5PicpLCBl
cnJvcnM9J2lnbm9yZScpLnNwbGl0bGluZXMoKQogICAgICAgICBlcnJvcnNfc3RyID0gJ1xuJy5q
b2luKCgnU1RERVJSOiAnICsgc3RkZXJyX2xpbmUpIGZvciBzdGRlcnJfbGluZSBpbiBzdGRlcnJf
bGluZXMpCiAgICAgICAgIGNwcGZpbHRfcHJvYyA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3BlbigKICAg
ICAgICAgICAgIFsnYysrZmlsdCddLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbW9ja19kcnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnQucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0
OCwxMiBAQCBzY3JpcHRfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlyCiBpZiBzY3Jp
cHRfZGlyIG5vdCBpbiBzeXMucGF0aDoKICAgICBzeXMucGF0aC5hcHBlbmQoc2NyaXB0X2RpcikK
IAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNv
ZGVfZm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lz
dGVtSG9zdAogZnJvbSB3ZWJraXRweS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVySW5wdXQsIERy
aXZlck91dHB1dCwgRHJpdmVyUHJveHkKIGZyb20gd2Via2l0cHkucG9ydC5mYWN0b3J5IGltcG9y
dCBQb3J0RmFjdG9yeQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCkBAIC0yMzEsNyArMjMyLDcg
QEAgY2xhc3MgTW9ja0RSVChvYmplY3QpOgogICAgICAgICAgICAgaWYgb3V0cHV0LmltYWdlX2hh
c2ggIT0gdGVzdF9pbnB1dC5pbWFnZV9oYXNoOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91
dC53cml0ZSgnQ29udGVudC1UeXBlOiBpbWFnZS9wbmdcbicpCiAgICAgICAgICAgICAgICAgc2Vs
Zi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LUxlbmd0aDogJXNcbicgJSBsZW4ob3V0cHV0LmltYWdl
KSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoZGVjb2RlX2ZvcihvdXRwdXQu
aW1hZ2UsIHN0cikpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKHN0cmluZ191
dGlscy5kZWNvZGUob3V0cHV0LmltYWdlLCB0YXJnZXRfdHlwZT1zdHIpKQogICAgICAgICBzZWxm
Ll9zdGRvdXQud3JpdGUoJyNFT0ZcbicpCiAgICAgICAgIHNlbGYuX3N0ZG91dC5mbHVzaCgpCiAg
ICAgICAgIHNlbGYuX3N0ZGVyci53cml0ZSgnI0VPRlxuJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDUw
OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDExIEBACiAKICIiIlVuaXQgdGVzdHMgZm9yIE1v
Y2tEUlQuIiIiCiAKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkucG9ydCBp
bXBvcnQgbW9ja19kcnQKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQog
ZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCB0ZXN0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDggKzM1LDcgQEAgaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUK
IAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5j
b2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwog
CiAjIE5vdGUgdGhhdCBhbHRob3VnaCB3aW4zMiBweXRob24gZG9lcyBwcm92aWRlIGFuIGltcGxl
bWVudGF0aW9uIG9mCiAjIHRoZSB3aW4zMiBzZWxlY3QgQVBJLCBpdCBvbmx5IHdvcmtzIG9uIHNv
Y2tldHMsIGFuZCBub3Qgb24gdGhlIG5hbWVkIHBpcGVzCkBAIC0xODUsNyArMTg0LDcgQEAgY2xh
c3MgU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvYzoKICAg
ICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5f
cHJvYy5zdGRpbi53cml0ZShlbmNvZGVfaWZfbmVjZXNzYXJ5KGJ5dGVzKSkKKyAgICAgICAgICAg
IHNlbGYuX3Byb2Muc3RkaW4ud3JpdGUoc3RyaW5nX3V0aWxzLmVuY29kZShieXRlcykpCiAgICAg
ICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLmZsdXNoKCkKICAgICAgICAgZXhjZXB0IChJT0Vycm9y
LCBWYWx1ZUVycm9yKSBhcyBlOgogICAgICAgICAgICAgc2VsZi5zdG9wKDAuMCkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5
CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVy
X3Byb2Nlc3NfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDEzIEBACiAjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCiBjbGFzcyBNb2NrU2VydmVyUHJvY2VzcyhvYmpl
Y3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaj1Ob25lLCBuYW1lPU5vbmUsIGNt
ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBsaW5lcz1Ob25lLCBj
cmFzaGVkPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lLCBjcmFzaF9tZXNzYWdlPU5vbmUpOgogICAg
ICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIHNlbGYubGluZXMgPSBbZW5jb2Rl
X2lmX25lY2Vzc2FyeShsaW5lKSBmb3IgbGluZSBpbiAobGluZXMgb3IgW10pXQorICAgICAgICBz
ZWxmLmxpbmVzID0gW3N0cmluZ191dGlscy5lbmNvZGUobGluZSkgZm9yIGxpbmUgaW4gKGxpbmVz
IG9yIFtdKV0KICAgICAgICAgc2VsZi5jcmFzaGVkID0gY3Jhc2hlZAogICAgICAgICBzZWxmLndy
aXRlcyA9IFtdCiAgICAgICAgIHNlbGYuY21kID0gY21kCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvdGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvdGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMiBAQAogCiBpbXBv
cnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20g
d2Via2l0cHkucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCBEcml2ZXJPdXRwdXQKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RD
b25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9y
dCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0
IFBVQkxJQ19UQUJMRSwgVmVyc2lvbk5hbWVNYXAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeQog
CiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0LiBFYWNoIGluZGl2
aWR1YWwgZXhwZWN0YXRpb24KQEAgLTQ0Miw4ICs0NDMsOCBAQCBjbGFzcyBUZXN0UG9ydChQb3J0
KToKICAgICAgICAgcmV0dXJuICdSZWxlYXNlJwogCiAgICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwg
ZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNlPU5vbmUpOgotICAg
ICAgICBleHBlY3RlZF9jb250ZW50cyA9IGVuY29kZV9pZl9uZWNlc3NhcnkoZXhwZWN0ZWRfY29u
dGVudHMpCi0gICAgICAgIGFjdHVhbF9jb250ZW50cyA9IGVuY29kZV9pZl9uZWNlc3NhcnkoYWN0
dWFsX2NvbnRlbnRzKQorICAgICAgICBleHBlY3RlZF9jb250ZW50cyA9IHN0cmluZ191dGlscy5l
bmNvZGUoZXhwZWN0ZWRfY29udGVudHMpCisgICAgICAgIGFjdHVhbF9jb250ZW50cyA9IHN0cmlu
Z191dGlscy5lbmNvZGUoYWN0dWFsX2NvbnRlbnRzKQogICAgICAgICBkaWZmZWQgPSBhY3R1YWxf
Y29udGVudHMgIT0gZXhwZWN0ZWRfY29udGVudHMKICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250
ZW50cyBhbmQgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgogICAgICAgICAgICAgcmV0dXJuIChOb25l
LCAwLCBOb25lKQpAQCAtNDUzLDggKzQ1NCw4IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAg
ICAgICAgICAgYXNzZXJ0IHRvbGVyYW5jZSA9PSAwCiAgICAgICAgIGlmIGRpZmZlZDoKICAgICAg
ICAgICAgIHJldHVybiAoIjwge31cbi0tLVxuPiB7fVxuIi5mb3JtYXQoCi0gICAgICAgICAgICAg
ICAgZGVjb2RlX2ZvcihleHBlY3RlZF9jb250ZW50cywgc3RyKSwKLSAgICAgICAgICAgICAgICBk
ZWNvZGVfZm9yKGFjdHVhbF9jb250ZW50cywgc3RyKSwKKyAgICAgICAgICAgICAgICBzdHJpbmdf
dXRpbHMuZGVjb2RlKGV4cGVjdGVkX2NvbnRlbnRzLCB0YXJnZXRfdHlwZT1zdHIpLAorICAgICAg
ICAgICAgICAgIHN0cmluZ191dGlscy5kZWNvZGUoYWN0dWFsX2NvbnRlbnRzLCB0YXJnZXRfdHlw
ZT1zdHIpLAogICAgICAgICAgICAgKSwgMSwgTm9uZSkKICAgICAgICAgcmV0dXJuIChOb25lLCAw
LCBOb25lKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Jlc3VsdHMvdXBsb2FkX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcmVzdWx0cy91
cGxvYWRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkg
KzI5LDEwIEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8KKwogZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVw
bG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IG1vY2sK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJ
TwogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogICAgIGJhc2VzdHJpbmcgPSBzdHIK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQkocmV2
aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRl
ci5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEyIEBACiBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0K
IGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURl
dGVjdG9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IGRlY29kZV9mb3IKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC01
Niw3ICs1Nyw3IEBAIGNsYXNzIFBhdGNoUmVhZGVyKG9iamVjdCk6CiAgICAgZGVmIGNoZWNrKHNl
bGYsIHBhdGNoX3N0cmluZywgZnM9Tm9uZSk6CiAgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIHRo
ZSBnaXZlbiBwYXRjaC4iIiIKICAgICAgICAgZnMgPSBmcyBvciBGaWxlU3lzdGVtKCkKLSAgICAg
ICAgcGF0Y2hfc3RyaW5nID0gZGVjb2RlX2ZvcihwYXRjaF9zdHJpbmcsIHN0cikKKyAgICAgICAg
cGF0Y2hfc3RyaW5nID0gc3RyaW5nX3V0aWxzLmRlY29kZShwYXRjaF9zdHJpbmcsIHRhcmdldF90
eXBlPXN0cikKICAgICAgICAgcGF0Y2hfZmlsZXMgPSBEaWZmUGFyc2VyKHBhdGNoX3N0cmluZy5z
cGxpdGxpbmVzKCkpLmZpbGVzCiAKICAgICAgICAgIyBJZiB0aGUgdXNlciB1c2VzIGdpdCwgY2hl
Y2tpbmcgc3VidmVyc2lvbiBjb25maWcgZmlsZSBvbmx5IG9uY2UgaXMgZW5vdWdoLgpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHJldmlzaW9u
IDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTIgQEAgaW1wb3J0IG9zCiBpbXBvcnQgb3Mu
cGF0aAogaW1wb3J0IHJlCiBpbXBvcnQgc3RyaW5nCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pY29k
ZWRhdGEKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRw
eS5zdHlsZS5jaGVja2Vycy5jb21tb24gaW1wb3J0IG1hdGNoLCBzZWFyY2gsIHN1Yiwgc3Vibgog
ZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNvZGUKIAogIyBUaGUg
a2V5IHRvIHVzZSB0byBwcm92aWRlIGEgY2xhc3MgdG8gZmFrZSBsb2FkaW5nIGEgaGVhZGVyIGZp
bGUuCiBJTkNMVURFX0lPX0lOSkVDVElPTl9LRVkgPSAnaW5jbHVkZV9oZWFkZXJfaW8nCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91
bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDkgQEAgaW1wb3J0IG9zLnBhdGgKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVu
aXR0ZXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IGRlY29kZV9pZl9uZWNlc3NhcnkKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscworCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzIGltcG9ydCBjcHAgYXMgY3BwX3N0
eWxlCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNwcCBpbXBvcnQgQ3BwQ2hlY2tlcgog
ZnJvbSB3ZWJraXRweS5zdHlsZS5maWx0ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KQEAg
LTI0NjUsNyArMjQ2Nyw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToK
ICAgICAgICAgZGVmIGRvX3Rlc3Qoc2VsZiwgcmF3X2J5dGVzLCBoYXNfaW52YWxpZF91dGY4KToK
ICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0
VHJ1ZSkKICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3Bw
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2lmX25lY2Vzc2Fy
eShyYXdfYnl0ZXMsIGVuY29kaW5nPSd1dGY4JywgZXJyb3JzPSdyZXBsYWNlJykuc3BsaXQoJ1xu
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ191dGlscy5kZWNv
ZGUocmF3X2J5dGVzLCBlbmNvZGluZz0ndXRmOCcsIGVycm9ycz0ncmVwbGFjZScpLnNwbGl0KCdc
bicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Ip
CiAgICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgogICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvcHl0aG9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3Rl
bSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmVTY29wZQogZnJvbSB3ZWJraXRweS5jb21tb24u
d2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgcGVwOApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L21haW4ucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTYgQEAgaW1wb3J0IHRyYWNl
YmFjawogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1
dGlscyBpbXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uaG9z
dCBpbXBvcnQgSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5
IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVy
CiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRw
eS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogZnJvbSB3ZWJraXRw
eS5yZXN1bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMub3B0
aW9ucyBpbXBvcnQgdXBsb2FkX29wdGlvbnMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogX2hvc3QgPSBI
b3N0KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFp
bl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOCBAQCBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9u
LnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3Rl
bSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0L3ByaW50ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L3ByaW50ZXIucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdC9wcmludGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5ICsyMywxMCBAQAogCiBpbXBv
cnQgbG9nZ2luZwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJl
YW0KIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKIApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5lcl91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0
ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBAIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
U3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9u
cwogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0
cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90ZXN0L3NraXBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90ZXN0L3NraXBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdC9za2lwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw3ICsyMyw4IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBp
bXBvcnQgc2tpcF9pZgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
aXJjX2NvbW1hbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9pcmNfY29tbWFuZC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIg
KzMwLDEyIEBAIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
b25maWcgaW1wb3J0IGlyYyBhcyBjb25maWdfaXJjCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcgaW1wb3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGlt
cG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQud2ViIGltcG9ydCBX
ZWIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVu
aWNvZGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFRlcm1pbmF0
ZVF1ZXVlCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgam9pbl93aXRoX3NlcGFy
YXRvcnMKIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vh
cmx5d2FybmluZ3N5c3RlbS5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkod29ya2luZyBjb3B5
KQpAQCAtMjksMjAgKzI5LDE3IEBACiAKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwotaW1w
b3J0IG9zCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgogaW1wb3J0IHN5cwogCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlz
dAotZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBEZXByZWNhdGVkUG9y
dAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvcgogZnJvbSB3
ZWJraXRweS50b29sLmJvdC5lYXJseXdhcm5pbmdzeXN0ZW10YXNrIGltcG9ydCBFYXJseVdhcm5p
bmdTeXN0ZW1UYXNrLCBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdhdGUKIGZyb20gd2Via2l0
cHkudG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1
bHRzUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmpzY3Rlc3RyZXN1bHRzcmVhZGVyIGlt
cG9ydCBKU0NUZXN0UmVzdWx0c1JlYWRlcgogZnJvbSB3ZWJraXRweS50b29sLmJvdC5wYXRjaGFu
YWx5c2lzdGFzayBpbXBvcnQgVW5hYmxlVG9BcHBseVBhdGNoLCBQYXRjaElzTm90VmFsaWQsIFBh
dGNoSXNOb3RBcHBsaWNhYmxlCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGlt
cG9ydCBRdWV1ZUVuZ2luZQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBv
cnQgQWJzdHJhY3RSZXZpZXdRdWV1ZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCkBAIC0xNTYsOSArMTUzLDkgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0o
QWJzdHJhYwogICAgICAgICBjbGFzc2VzID0gW10KICAgICAgICAgZm9yIG5hbWUsIGNvbmZpZyBp
biBld3Nlcy5pdGVtcygpOgogICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAw
KToKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gZW5jb2RlX2ZvcihuYW1lLCBzdHIpLnRy
YW5zbGF0ZSgnIC0nKQorICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBzdHJpbmdfdXRpbHMu
ZW5jb2RlKG5hbWUsIHRhcmdldF90eXBlPXN0cikudHJhbnNsYXRlKCcgLScpCiAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBlbmNvZGVfZm9yKG5hbWUsIHN0
cikudHJhbnNsYXRlKE5vbmUsICcgLScpCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IHN0
cmluZ191dGlscy5lbmNvZGUobmFtZSwgdGFyZ2V0X3R5cGU9c3RyKS50cmFuc2xhdGUoTm9uZSwg
JyAtJykKIAogICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQodHlwZSh0cmFuc2xhdGVkLCAoY2xz
LCksIHsKICAgICAgICAgICAgICAgICAnbmFtZSc6IGNvbmZpZy5nZXQoJ25hbWUnLCBjb25maWdb
J3BvcnQnXSArICctZXdzJyksCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVldWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWV1ZXMucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3
ICsyNywxOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGNvZGVj
cwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBv
cnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29w
dGlvbgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0
ZWRQb3J0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1l
bnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5
dGVzSU8KIGZyb20gd2Via2l0cHkudG9vbC5ib3QuYm90aW5mbyBpbXBvcnQgQm90SW5mbwotZnJv
bSB3ZWJraXRweS50b29sLmJvdC5mbGFreXRlc3RyZXBvcnRlciBpbXBvcnQgRmxha3lUZXN0UmVw
b3J0ZXIKLWZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1w
b3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNo
YW5hbHlzaXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNoSXNOb3RWYWxpZAog
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1
ZXVlRW5naW5lRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVwc2VxdWVu
Y2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgotZnJvbSB3ZWJraXRweS50b29sLm11
bHRpY29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQsIFRyeUFnYWluCitmcm9tIHdlYmtpdHB5LnRv
b2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi1pbXBvcnQgb3MKLQotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQu
c2NtIGltcG9ydCBDaGVja291dE5lZWRzVXBkYXRlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KLWZyb20gd2Via2l0cHkuY29tbW9uLm5l
dC5sYXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKLWZyb20gd2Via2l0
cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29t
bWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1
ZXVlc3Rlc3QgaW1wb3J0IFF1ZXVlc1Rlc3QKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5z
dGVwc2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZQotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0
b29sIGltcG9ydCBNb2NrVG9vbCwgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja1Rvb2wKIAogCiBjbGFzcyBUZXN0UXVldWUoQWJzdHJhY3RQYXRjaFF1
ZXVlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xh
bmRlZC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2hhc2xhbmRlZC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDEzIEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGlt
cG9ydCB0ZW1wZmlsZQogCi1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVwIGlt
cG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgZGlmZl9wYXJz
ZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3Ry
aW5nSU8KIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzIGltcG9ydCBjb25maXJtZGlmZgogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRl
cl91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NTA4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEw
ICsyOSwxMSBAQCBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3Qg
aW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGlt
cG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGlt
cG9ydCBXZWJLaXRGaW5kZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgdW5pY29kZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNv
dXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVy
IGltcG9ydCBfVzNDVGVzdENvbnZlcnRlcgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2V4cG9ydGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEw
ICsyNywxMSBAQAogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1p
bXBvcnQgdGltZQogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20u
Z2l0IGltcG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKQEAgLTM5LDcg
KzQwLDYgQEAgZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BURwogZnJvbSB3
ZWJraXRweS53M2Mud3B0X2xpbnRlciBpbXBvcnQgV1BUTGludGVyCiBmcm9tIHdlYmtpdHB5Lncz
Yy5jb21tb24gaW1wb3J0IFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUsIFdQVF9HSF9VUkws
IFdQVFBhdGhzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2Rl
X2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgogICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJyb3IKQEAgLTE2MCw3ICsxNjAs
NyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICByZXR1
cm4gbGluZS5zcGxpdChiJyAnKVstMV0KIAogICAgIGRlZiBfaXNfaWdub3JlZF9maWxlKHNlbGYs
IGZpbGVuYW1lKToKLSAgICAgICAgZmlsZW5hbWUgPSBkZWNvZGVfZm9yKGZpbGVuYW1lLCBzdHIp
CisgICAgICAgIGZpbGVuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShmaWxlbmFtZSwgdGFyZ2V0
X3R5cGU9c3RyKQogICAgICAgICBmb3Igc3VmZml4IGluIEVYQ0xVREVEX0ZJTEVfU1VGRklYRVM6
CiAgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aChzdWZmaXgpOgogICAgICAgICAgICAg
ICAgIHJldHVybiBUcnVlCkBAIC0xODUsMTAgKzE4NSwxMCBAQCBjbGFzcyBXZWJQbGF0Zm9ybVRl
c3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICBfLCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5
c3RlbS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0X2V4cG9ydF9wYXRjaCcpCiAgICAgICAgIHBh
dGNoX2RhdGEgPSBzZWxmLl93cHRfcGF0Y2gKICAgICAgICAgaWYgYidkaWZmJyBub3QgaW4gcGF0
Y2hfZGF0YToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwg
cGF0Y2ggZGF0YSBpczogInt9IicuZm9ybWF0KGRlY29kZV9mb3IocGF0Y2hfZGF0YSwgc3RyKSkp
CisgICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRh
dGEgaXM6ICJ7fSInLmZvcm1hdChzdHJpbmdfdXRpbHMuZGVjb2RlKHBhdGNoX2RhdGEsIHRhcmdl
dF90eXBlPXN0cikpKQogICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAjIEZJWE1FOiBX
ZSBjYW4gcHJvYmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90
IGRvIHRoYXQgcmVwbGFjZW1lbnQuCi0gICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJl
cGxhY2UoZW5jb2RlX2lmX25lY2Vzc2FyeShXRUJLSVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCisg
ICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2Uoc3RyaW5nX3V0aWxzLmVuY29k
ZShXRUJLSVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCiAKICAgICAgICAgIyBGSVhNRTogU3VwcG9y
dCBzdHJpcHBpbmcgb2YgPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgLS0+IGNvbW1lbnRzLgogICAg
ICAgICBzZWxmLmhhc193ZWJraXRfdGVzdF9ydW5uZXJfc3BlY2lmaWNfY2hhbmdlcyA9IGInd2Vi
a2l0LXRlc3QtcnVubmVyJyBpbiBwYXRjaF9kYXRhCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy93cHRfZ2l0aHViLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3dwdF9naXRodWIucHkJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3dwdF9naXRodWIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwx
MiBAQCBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHN5cwor
CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgc3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9y
dCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS53M2MuY29tbW9uIGltcG9ydCBXUFRfR0hfT1JHLCBX
UFRfR0hfUkVQT19OQU1FLCBFWFBPUlRfUFJfTEFCRUwKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2Zv
cgogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogICAgIGZyb20gdXJsbGliLmVycm9y
IGltcG9ydCBIVFRQRXJyb3IKQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgV1BUR2l0SHViKG9iamVj
dCk6CiAKICAgICBkZWYgYXV0aF90b2tlbihzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuaGFz
X2NyZWRlbnRpYWxzKCkKLSAgICAgICAgcmV0dXJuIGRlY29kZV9mb3IoYmFzZTY0LmI2NGVuY29k
ZShlbmNvZGVfaWZfbmVjZXNzYXJ5KCd7fTp7fScuZm9ybWF0KHNlbGYudXNlciwgc2VsZi50b2tl
bikpKSwgc3RyKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmRlY29kZShiYXNlNjQuYjY0
ZW5jb2RlKHN0cmluZ191dGlscy5lbmNvZGUoJ3t9Ont9Jy5mb3JtYXQoc2VsZi51c2VyLCBzZWxm
LnRva2VuKSkpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICBkZWYgcmVxdWVzdChzZWxmLCBwYXRo
LCBtZXRob2QsIGJvZHk9Tm9uZSk6CiAgICAgICAgICIiIlNlbmRzIGEgcmVxdWVzdCB0byBHaXRI
dWIgQVBJIGFuZCBkZXNlcmlhbGl6ZXMgdGhlIHJlc3BvbnNlLgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1Yl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogaW1wb3J0IGJhc2U2NAogaW1w
b3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNz
YXJ5LCBkZWNvZGVfZm9yCi1mcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRH
aXRIdWIsIE1lcmdlRXJyb3IKK2Zyb20gd2Via2l0cHkudzNjLndwdF9naXRodWIgaW1wb3J0IFdQ
VEdpdEh1YgogCiAKIGNsYXNzIFdQVEdpdEh1YlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAt
NDYsNCArNDcsNCBAQCBjbGFzcyBXUFRHaXRIdWJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9hdXRoX3Rva2VuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAog
ICAgICAgICAgICAgc2VsZi53cHRfZ2l0aHViLmF1dGhfdG9rZW4oKSwKLSAgICAgICAgICAgIGRl
Y29kZV9mb3IoYmFzZTY0LmVuY29kZXN0cmluZyhlbmNvZGVfaWZfbmVjZXNzYXJ5KCdydXRhYmFn
YTpkZWNhZmJhZCcpKSwgc3RyKS5zdHJpcCgpKQorICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRl
Y29kZShiYXNlNjQuZW5jb2Rlc3RyaW5nKHN0cmluZ191dGlscy5lbmNvZGUoJ3J1dGFiYWdhOmRl
Y2FmYmFkJykpLCB0YXJnZXRfdHlwZT1zdHIpLnN0cmlwKCkpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjQ1MDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3Np
bXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMiArMjMsMTEgQEAKIGlt
cG9ydCBqc29uCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZl
cnNpb24KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIFZlcnNpb24KIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlMgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBv
cnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0
X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIGZyb20gd2Via2l0cHku
eGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmljZVR5cGUKIGZyb20gd2Via2l0cHkueGNvZGUu
c2ltdWxhdGVkX2RldmljZSBpbXBvcnQgRGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFu
YWdlciwgU2ltdWxhdGVkRGV2aWNlCiAKQEAgLTY1MSw3ICs2NTAsNyBAQCBjbGFzcyBTaW11bGF0
ZWREZXZpY2VUZXN0KHVuaXR0ZXN0LlRlc3RDCiAgICAgICAgICMgYXMgZGV0ZXJtaW5lZCBmcm9t
IHRoZSAuanNvbiBvdXRwdXQuCiAgICAgICAgIGRldmljZV9wbGlzdCA9IGRldmljZS5maWxlc3lz
dGVtLmV4cGFuZHVzZXIoZGV2aWNlLmZpbGVzeXN0ZW0uam9pbihTaW11bGF0ZWREZXZpY2VNYW5h
Z2VyLnNpbXVsYXRvcl9kZXZpY2VfcGF0aCwgZGV2aWNlLnVkaWQsICdkZXZpY2UucGxpc3QnKSkK
ICAgICAgICAgaW5kZXhfcG9zaXRpb24gPSBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2Vf
cGxpc3RdLmluZGV4KGInPC9pbnRlZ2VyPicpIC0gMQotICAgICAgICBkZXZpY2UuZmlsZXN5c3Rl
bS5maWxlc1tkZXZpY2VfcGxpc3RdID0gZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3Bs
aXN0XVs6aW5kZXhfcG9zaXRpb25dICsgZW5jb2RlX2lmX25lY2Vzc2FyeShzdHIoc3RhdGUpKSAr
IGRldmljZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1baW5kZXhfcG9zaXRpb24gKyAx
Ol0KKyAgICAgICAgZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XSA9IGRldmlj
ZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1bOmluZGV4X3Bvc2l0aW9uXSArIHN0cmlu
Z191dGlscy5lbmNvZGUoc3RyKHN0YXRlKSkgKyBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZp
Y2VfcGxpc3RdW2luZGV4X3Bvc2l0aW9uICsgMTpdCiAKICAgICBkZWYgdGVzdF9zd2FwcGluZ19k
ZXZpY2VzKHNlbGYpOgogICAgICAgICBTaW11bGF0ZWREZXZpY2VUZXN0LnJlc2V0X3NpbXVsYXRl
ZF9kZXZpY2VfbWFuYWdlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404818</attachid>
            <date>2020-07-21 06:50:39 -0700</date>
            <delta_ts>2020-07-22 09:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200721065038.patch</filename>
            <type>text/plain</type>
            <size>117094</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyMSBAQAorMjAyMC0wNy0yMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2VudHJhbGl6ZSBoYW5kbGlu
ZyBvZiB1bmljb2RlIGVuY29kaW5nL2RlY29kaW5nIGFsb25nIHdpdGggdmFyaW91cyB0b29scwor
ICAgICAgICBmb3IgcHJpbnRpbmcgc3RyaW5ncy4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6CisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9zdHJpbmdfdXRpbHMucHk6
IEFkZGVkLgorICAgICAgICAoZW5jb2RlKTogRW5jb2RlIGEgc3RyaW5nIGFzIGJ5dGVzLgorICAg
ICAgICAoZGVjb2RlKTogRGVjb2RlIGEgYnl0ZXMgYXMgYSBzdHJpbmcuCisgICAgICAgIChvcmRp
bmFsKTogQ29udmVydCBhIG51bWJlciB0byAxc3QsIDJuZCwgM3JkLCA0dGgsIGVjdC4KKyAgICAg
ICAgKHBsdXJhbGl6ZSk6IENvbnZlcnQgYSBzdHJpbmcgdG8gaXQncyBwbHVybGFyaXplZCB2ZXJz
aW9uLCBpZiBwcm92aWRlZCBudW1iZXIgaW5kaWNhdGVzCisgICAgICAgIGl0IHNob3VsZCBiZS4K
KyAgICAgICAgKGpvaW4pOiBKb2luIGEgbGlzdCBvZiBlbGVtZW50cyBpbiBhIGh1bWFuLXJlYWRh
YmxlIGZvcm0uCisgICAgICAgIChvdXRfb2YpOiBDcmVhdGUgYSBmcmFjdGlvbiB3aGljaCB0YWtl
cyB1cCBhIGNvbnN0YW50IGFtb3VudCBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAoZWxhcHNlZCk6
IERlc2NyaWJlIHRoZSBhbW91bnQgb2YgdGltZSBlbGFwc2VkIGFzIGEgaHVtYW4tcmVhZGFibGUg
c3RyaW5nLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvdGVzdHMvc3RyaW5nX3V0aWxzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFN0
cmluZ1V0aWxzKTogVGVzdCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9hcGlfdGVzdHMvcnVubmVyLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRo
IHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4u
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAg
ICAgICByZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0
eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6IFJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weTogUmVw
bGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHk6IFJl
cGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCBy
ZW1vdmUgdW51c2VkIGltcG9ydHMKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL2dpdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAgICAgICAgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zdm4ucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0
aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJz
LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAg
ICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29t
cGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBv
cnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWls
ZGJvdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3
c3NlcnZlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRjaC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9t
X3BuZ191bml0dGVzdC5weTogRGl0dG8KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHk6IERpdHRv
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmVfbW9jay5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weTogUmVwbGFj
ZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
b3V0cHV0Y2FwdHVyZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJp
bmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1
dHRlZV91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdW5pY29kZV9jb21wYXRpYmlsaXR5LnB5OiBSZXBsYWNlZCB3aXRoIHdlYmtpdGNvcmVweS5z
dHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1v
dmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xp
bnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWls
ZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3Vu
aXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0
cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9wcmludGluZ191bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5
OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAg
ICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZl
ci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmlu
ZC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZQorICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weTogRGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5w
eTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNl
ZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191
dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6IFJlcGxh
Y2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2Vk
IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3Qu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9wcmludGVyLnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3Qvc2tpcF91bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQorICAgICAgICB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQor
ICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMsIHJlbW92ZSB1bnVzZWQKKyAgICAgICAgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3czYy93cHRfZ2l0aHViLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0
aHViX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisKIDIwMjAtMDctMjAgIEFh
a2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIFVzZSAt
cSB3aGlsZSB1bnppcHBpbmcgbGF5b3V0LXRlc3QtcmVzdWx0cy56aXAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5tZAkocmV2aXNpb24gMjY0
NjQwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5tZAko
d29ya2luZyBjb3B5KQpAQCAtMTAsMyArMTAsMTYgQEAgVmVyc2lvbiByZXByZXNlbnRhdGlvbgog
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KIHZlcnNpb24gPSBWZXJzaW9uKDEsIDIs
IDMpCiBgYGAKKworVW5pY29kZSBzdHJlYW0gbWFuYWdlbWVudCBhY3Jvc3MgUHl0aG9uIDIgYW5k
IDMKK2BgYAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBVbmlj
b2RlSU8sIHVuaWNvZGUKK2BgYAorCitFbmNvZGluZyBhbmQgZGVjb2RpbmcgYnl0ZSBzdHJpbmdz
IGFuZCB1bmljb2RlIHN0cmluZ3MKK2BgYAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscworCitzdHJpbmdfdXRpbHMuZW5jb2RlKC4uLikKK3N0cmluZ191dGlscy5kZWNvZGUo
Li4uKQorYGBgCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2NDY0
MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
X19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxLDQgKzIxLDYgQEAKICMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZy
b20gd2Via2l0Y29yZXB5LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KLXZlcnNpb24gPSBWZXJzaW9u
KDAsIDAsIDEpCitmcm9tIHdlYmtpdGNvcmVweS5zdHJpbmdfdXRpbHMgaW1wb3J0IEJ5dGVzSU8s
IFN0cmluZ0lPLCBVbmljb2RlSU8sIHVuaWNvZGUKKwordmVyc2lvbiA9IFZlcnNpb24oMCwgMCwg
MikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvc3RyaW5nX3V0aWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvc3RyaW5nX3V0aWxzLnB5CShub25leGlzdGVudCkK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvc3Ry
aW5nX3V0aWxzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAyIEBACisjIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBpbworaW1wb3J0IHN5cworCitC
eXRlc0lPID0gaW8uQnl0ZXNJTworaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICBT
dHJpbmdJTyA9IGlvLlN0cmluZ0lPCitlbHNlOgorICAgIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0
cmluZ0lPCitVbmljb2RlSU8gPSBpby5TdHJpbmdJTworCit1bmljb2RlID0gc3RyIGlmIHN5cy52
ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSB1bmljb2RlCisKKworZGVmIGVuY29kZShzdHJpbmcs
IGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JywgdGFyZ2V0X3R5cGU9Ynl0ZXMpOgor
ICAgIGlmIHR5cGUoc3RyaW5nKSA9PSB1bmljb2RlIGFuZCB0YXJnZXRfdHlwZSA9PSBieXRlczoK
KyAgICAgICAgcmV0dXJuIHN0cmluZy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisg
ICAgcmV0dXJuIHN0cmluZworCisKK2RlZiBkZWNvZGUoZGF0YSwgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnLCB0YXJnZXRfdHlwZT11bmljb2RlKToKKyAgICBpZiB0eXBlKGRhdGEp
ID09IGJ5dGVzIGFuZCB0YXJnZXRfdHlwZSA9PSB1bmljb2RlOgorICAgICAgICByZXR1cm4gZGF0
YS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgcmV0dXJuIGRhdGEKKworCitk
ZWYgb3JkaW5hbChudW1iZXIpOgorICAgIG51bWJlciA9IGludChudW1iZXIpCisgICAgaWYgMTAg
PCBudW1iZXIgJSAxMDAgPCAyMDoKKyAgICAgICAgcmV0dXJuICd7fXRoJy5mb3JtYXQobnVtYmVy
KQorICAgIHJldHVybiAne317fScuZm9ybWF0KAorICAgICAgICBudW1iZXIsIHsKKyAgICAgICAg
ICAgIDE6ICdzdCcsCisgICAgICAgICAgICAyOiAnbmQnLAorICAgICAgICAgICAgMzogJ3JkJywK
KyAgICAgICAgfS5nZXQobnVtYmVyICUgMTAsICd0aCcpCisgICAgKQorCisKK2RlZiBwbHVyYWxp
emUobnVtYmVyLCBzdHJpbmcsIHBsdXJhbD1Ob25lKToKKyAgICBpZiBudW1iZXIgPT0gMToKKyAg
ICAgICAgcmV0dXJuICcxIHt9Jy5mb3JtYXQoc3RyaW5nKQorICAgIGlmIHBsdXJhbDoKKyAgICAg
ICAgcmV0dXJuICd7fSB7fScuZm9ybWF0KG51bWJlciwgcGx1cmFsKQorICAgIHJldHVybiAne30g
e31zJy5mb3JtYXQobnVtYmVyLCBzdHJpbmcpCisKKworZGVmIGpvaW4obGlzdCwgY29uanVuY3Rp
b249J2FuZCcpOgorICAgIGlmIG5vdCBsaXN0OgorICAgICAgICByZXR1cm4gJ05vdGhpbmcnCisg
ICAgaWYgbGVuKGxpc3QpID09IDE6CisgICAgICAgIHJldHVybiBsaXN0WzBdCisgICAgcmV0dXJu
ICd7fSB7fSB7fScuZm9ybWF0KCcsICcuam9pbihsaXN0WzotMV0pLCBjb25qdW5jdGlvbiwgbGlz
dFstMV0pCisKKworZGVmIG91dF9vZihudW1iZXIsIGJhc2UpOgorICAgIG51bWJlciA9IHN0cihu
dW1iZXIpCisgICAgYmFzZSA9IHN0cihiYXNlKQorICAgIHJldHVybiAnW3t9e30ve31dJy5mb3Jt
YXQoJyAnICogKGxlbihiYXNlKSAtIGxlbihudW1iZXIpKSwgbnVtYmVyLCBiYXNlKQorCisKK2Rl
ZiBlbGFwc2VkKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPD0gMDoKKyAgICAgICAgcmV0dXJu
ICdubyB0aW1lJworICAgIGVsaWYgc2Vjb25kcyA8IDE6CisgICAgICAgIHJldHVybiAnbGVzcyB0
aGFuIGEgc2Vjb25kJworCisgICAgc2Vjb25kcyA9IGludChyb3VuZChzZWNvbmRzKSkKKyAgICBt
aW51dGVzID0gc2Vjb25kcyAvLyA2MAorICAgIGhvdXJzID0gbWludXRlcyAvLyA2MAorICAgIGRh
eXMgPSBob3VycyAvLyAyNAorCisgICAgZm9yY2UgPSBGYWxzZQorICAgIHJlc3VsdCA9ICcnCisg
ICAgZm9yIHZhbHVlLCBkZXNjcmlwdGlvbiBpbiBbKGRheXMsICdkYXknKSwgKGhvdXJzICUgMjQs
ICdob3VyJyksIChtaW51dGVzICUgNjAsICdtaW51dGUnKV06CisgICAgICAgIGlmIGZvcmNlIG9y
IHZhbHVlOgorICAgICAgICAgICAgZm9yY2UgPSBUcnVlCisgICAgICAgICAgICByZXN1bHQgKz0g
JyAnICsgcGx1cmFsaXplKHZhbHVlLCBkZXNjcmlwdGlvbikKKyAgICBpZiBmb3JjZToKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdFsxOl0gKyAnIGFuZCAnICsgcGx1cmFsaXplKHNlY29uZHMgJSA2MCwg
J3NlY29uZCcpCisgICAgcmV0dXJuIHBsdXJhbGl6ZShzZWNvbmRzICUgNjAsICdzZWNvbmQnKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS92
ZXJzaW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdmVyc2lvbi5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS92ZXJzaW9uLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMCwxMCArMjAsOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwog
IyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUKIAotZnJvbSBmdW5jdG9vbHMg
aW1wb3J0IHRvdGFsX29yZGVyaW5nCitmcm9tIHdlYmtpdGNvcmVweS5zdHJpbmdfdXRpbHMgaW1w
b3J0IHVuaWNvZGUKIAogCiBjbGFzcyBWZXJzaW9uKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3N0cmluZ191dGls
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3N0cmluZ191dGlsc191bml0dGVzdC5weQkobm9u
ZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L3Rlc3RzL3N0cmluZ191dGlsc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDgyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5
dGVzSU8sIFN0cmluZ0lPLCBVbmljb2RlSU8sIHVuaWNvZGUsIHN0cmluZ191dGlscworCisKK2Ns
YXNzIFN0cmluZ1V0aWxzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9ieXRlc2lv
KHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBCeXRlc0lPKCkKKyAgICAgICAgc3RyZWFtLndyaXRl
KGInYnl0ZXMgZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVl
KCksIGInYnl0ZXMgZGF0YScpCisKKyAgICBkZWYgdGVzdF9zdHJpbmdpbyhzZWxmKToKKyAgICAg
ICAgc3RyZWFtID0gU3RyaW5nSU8oKQorICAgICAgICBzdHJlYW0ud3JpdGUoJ3N0cmluZyBkYXRh
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwgJ3N0cmluZyBk
YXRhJykKKworICAgIGRlZiB0ZXN0X3VuaWNvZGVpbyhzZWxmKToKKyAgICAgICAgc3RyZWFtID0g
VW5pY29kZUlPKCkKKyAgICAgICAgc3RyZWFtLndyaXRlKHUndW5pY29kXHUwMEU5IGRhdGEnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLCB1J3VuaWNvZFx1MDBF
OSBkYXRhJykKKworICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodW5pY29kZSh1J3VuaWNvZGU6IFx1MDBFOScpLCB1J3VuaWNvZGU6IFx1MDBFOScp
CisKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyaW5nX3V0aWxzLmVuY29kZSh1J3VuaWNvZGU6IFx1MDBFOScpLCBiJ3VuaWNvZGU6IFx4YzNc
eGE5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuZW5jb2RlKGInYnl0
ZXMgZGF0YScpLCBiJ2J5dGVzIGRhdGEnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5kZWNvZGUodSd1bmljb2RlOiBc
dTAwRTknKSwgdSd1bmljb2RlOiBcdTAwRTknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmluZ191dGlscy5kZWNvZGUoYid1bmljb2RlOiBceGMzXHhhOScpLCB1J3VuaWNvZGU6IFx1MDBF
OScpCisKKyAgICBkZWYgdGVzdF9vcmRpbmFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDApLCAnMHRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgxKSwgJzFzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMiksICcybmQnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDMpLCAnM3JkJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCg0KSwgJzR0aCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoNSksICc1dGgnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDYpLCAnNnRoJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCg3KSwgJzd0aCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoOCksICc4dGgnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDkpLCAnOXRoJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgxMCksICcxMHRoJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgxMSksICcxMXRoJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgxMiksICcxMnRoJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgxMyksICcxM3RoJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgyMSksICcyMXN0
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgyMiksICcy
Mm5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgyMyks
ICcyM3JkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgx
MDEpLCAnMTAxc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRp
bmFsKDExMSksICcxMTF0aCcpCisKKyAgICBkZWYgdGVzdF9wbHVyYWxpemUoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLnBsdXJhbGl6ZSgwLCAnc2Vjb25kJyks
ICcwIHNlY29uZHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5wbHVy
YWxpemUoMSwgJ3NlY29uZCcpLCAnMSBzZWNvbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmluZ191dGlscy5wbHVyYWxpemUoMiwgJ3NlY29uZCcpLCAnMiBzZWNvbmRzJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1cmFsaXplKDAsICdtb3VzZScsICdt
aWNlJyksICcwIG1pY2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5w
bHVyYWxpemUoMSwgJ21vdXNlJywgJ21pY2UnKSwgJzEgbW91c2UnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmluZ191dGlscy5wbHVyYWxpemUoMiwgJ21vdXNlJywgJ21pY2UnKSwgJzIg
bWljZScpCisKKyAgICBkZWYgdGVzdF9saXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmluZ191dGlscy5qb2luKFsnaW50ZWdlcicsICdzdHJpbmcnLCAnZmxvYXQnXSksICdp
bnRlZ2VyLCBzdHJpbmcgYW5kIGZsb2F0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJp
bmdfdXRpbHMuam9pbihbJ2ludGVnZXInLCAnc3RyaW5nJ10pLCAnaW50ZWdlciBhbmQgc3RyaW5n
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuam9pbihbJ2ludGVnZXIn
XSksICdpbnRlZ2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuam9p
bihbXSksICdOb3RoaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMu
am9pbihbJ2ludGVnZXInLCAnc3RyaW5nJ10sIGNvbmp1bmN0aW9uPSdvcicpLCAnaW50ZWdlciBv
ciBzdHJpbmcnKQorCisgICAgZGVmIHRlc3Rfb3V0b2Yoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm91dF9vZigxLCAzKSwgJ1sxLzNdJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3V0X29mKDEsIDEwKSwgJ1sgMS8xMF0nKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vdXRfb2YoMTAsIDEwKSwgJ1sxMC8x
MF0nKQorCisgICAgZGVmIHRlc3RfZWxhcHNlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJpbmdfdXRpbHMuZWxhcHNlZCgwKSwgJ25vIHRpbWUnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmluZ191dGlscy5lbGFwc2VkKC41KSwgJ2xlc3MgdGhhbiBhIHNlY29uZCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoMSksICcxIHNl
Y29uZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoNCks
ICc0IHNlY29uZHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5lbGFw
c2VkKDc0KSwgJzEgbWludXRlIGFuZCAxNCBzZWNvbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJpbmdfdXRpbHMuZWxhcHNlZCgzICogNjAgKiA2MCksICczIGhvdXJzIDAgbWludXRl
cyBhbmQgMCBzZWNvbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMu
ZWxhcHNlZCgyNCAqIDYwICogNjAgKyA2MCAqIDYwICsgNCAqIDYwICsgNSksICcxIGRheSAxIGhv
dXIgNCBtaW51dGVzIGFuZCA1IHNlY29uZHMnKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9hcGlfdGVzdHMvcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYXBpX3Rlc3RzL3J1bm5lci5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9hcGlfdGVzdHMvcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSAr
MjQsMTIgQEAgaW1wb3J0IG9zCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRpbWUKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgbWVzc2FnZV9wb29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5pdGVyYXRpb25fY29tcGF0
aWJpbGl0eSBpbXBvcnQgaXRlcml0ZW1zCiBmcm9tIHdlYmtpdHB5LnBvcnQuc2VydmVyX3Byb2Nl
c3MgaW1wb3J0IFNlcnZlclByb2Nlc3MsIF9sb2cgYXMgc2VydmVyX3Byb2Nlc3NfbG9nZ2VyCiBm
cm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9kZXZpY2UgaW1wb3J0IFNpbXVsYXRlZERldmlj
ZU1hbmFnZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBv
cnQgZGVjb2RlX2ZvcgogCiAKIGNsYXNzIFJ1bm5lcihvYmplY3QpOgpAQCAtMTc5LDExICsxODAs
MTEgQEAgY2xhc3MgX1dvcmtlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBicmVhawog
CiAgICAgICAgICAgICAgICAgaWYgc3RkZXJyX2xpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0
ZGVycl9saW5lID0gZGVjb2RlX2ZvcihzdGRlcnJfbGluZSwgc3RyKQorICAgICAgICAgICAgICAg
ICAgICBzdGRlcnJfbGluZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RkZXJyX2xpbmUsIHRhcmdl
dF90eXBlPXN0cikKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyX2J1ZmZlciArPSBzdGRlcnJf
bGluZQogICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3QoJ2xvZycsIG91dHB1dD1zdGRlcnJf
bGluZVs6LTFdKQogICAgICAgICAgICAgICAgIGlmIHN0ZG91dF9saW5lOgotICAgICAgICAgICAg
ICAgICAgICBzdGRvdXRfbGluZSA9IGRlY29kZV9mb3Ioc3Rkb3V0X2xpbmUsIHN0cikKKyAgICAg
ICAgICAgICAgICAgICAgc3Rkb3V0X2xpbmUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0ZG91dF9s
aW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICAgICAgICAgIGlmICcqKlBBU1MqKicg
aW4gc3Rkb3V0X2xpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBSdW5uZXIu
U1RBVFVTX1BBU1NFRAogICAgICAgICAgICAgICAgICAgICBlbGlmICcqKkZBSUwqKicgaW4gc3Rk
b3V0X2xpbmU6CkBAIC0yMDIsOCArMjAzLDggQEAgY2xhc3MgX1dvcmtlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHN0YXR1cyA9IFJ1bm5lci5TVEFUVVNfRkFJTEVECiAKICAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHJlbWFpbmluZ19zdGRlcnIgPSBkZWNvZGVfZm9yKHNlcnZlcl9w
cm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCksIHN0cikKLSAgICAgICAgICAgIHJlbWFp
bmluZ19zdGRvdXQgPSBkZWNvZGVfZm9yKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRf
c3Rkb3V0KCksIHN0cikKKyAgICAgICAgICAgIHJlbWFpbmluZ19zdGRlcnIgPSBzdHJpbmdfdXRp
bHMuZGVjb2RlKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCksIHRhcmdl
dF90eXBlPXN0cikKKyAgICAgICAgICAgIHJlbWFpbmluZ19zdGRvdXQgPSBzdHJpbmdfdXRpbHMu
ZGVjb2RlKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3Rkb3V0KCksIHRhcmdldF90
eXBlPXN0cikKICAgICAgICAgICAgIHNlbGYucG9zdCgnbG9nJywgb3V0cHV0PXJlbWFpbmluZ19z
dGRlcnIgKyByZW1haW5pbmdfc3Rkb3V0KQogICAgICAgICAgICAgb3V0cHV0X2J1ZmZlciA9IHN0
ZGVycl9idWZmZXIgKyBzdGRvdXRfYnVmZmVyICsgcmVtYWluaW5nX3N0ZGVyciArIHJlbWFpbmlu
Z19zdGRvdXQKICAgICAgICAgICAgIHNlcnZlcl9wcm9jZXNzLnN0b3AoKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxMiArMjcsMTMgQEAgaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGlt
cG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZp
bGUKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3Rl
bQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5j
b2RlX2lmX25lY2Vzc2FyeQogCiAKIGNsYXNzIEJpbmRpbmdzVGVzdHM6CkBAIC03Nyw3ICs3OCw3
IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAgICAobmFtZSwgZXh0ZW5zaW9uKSA9
IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKICAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAh
PSAnLmlkbCc6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG9zLndyaXRl
KGlkbF9maWxlc19saXN0WzBdLCBlbmNvZGVfaWZfbmVjZXNzYXJ5KG9zLnBhdGguam9pbihpbnB1
dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpICsgIlxuIikpCisgICAgICAgICAgICBvcy53cml0ZShp
ZGxfZmlsZXNfbGlzdFswXSwgc3RyaW5nX3V0aWxzLmVuY29kZShvcy5wYXRoLmpvaW4oaW5wdXRf
ZGlyZWN0b3J5LCBpbnB1dF9maWxlKSArICJcbiIpKQogICAgICAgICBvcy5jbG9zZShpZGxfZmls
ZXNfbGlzdFswXSkKIAogICAgICAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2gucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2gucHkJKHJldmlzaW9uIDI2NDY0
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMCBAQCBpbXBvcnQgZXJybm8KIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
c3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCkBAIC01MCw4ICs1Miw4IEBAIGNsYXNzIFByZXR0eVBhdGNoKG9iamVjdCk6
CiAgICAgZGVmIHByZXR0eV9kaWZmX2ZpbGUoc2VsZiwgZGlmZik6CiAgICAgICAgICMgRGlmZnMg
Y2FuIGNvbnRhaW4gbXVsdGlwbGUgdGV4dCBmaWxlcyBvZiBkaWZmZXJlbnQgZW5jb2RpbmdzCiAg
ICAgICAgICMgc28gd2UgYWx3YXlzIGRlYWwgd2l0aCB0aGVtIGFzIGJ5dGUgYXJyYXlzLCBub3Qg
dW5pY29kZSBzdHJpbmdzLgotICAgICAgICBkaWZmID0gZW5jb2RlX2lmX25lY2Vzc2FyeShkaWZm
KQotICAgICAgICBwcmV0dHlfZGlmZiA9IGVuY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5wcmV0dHlf
ZGlmZihkaWZmKSkKKyAgICAgICAgZGlmZiA9IHN0cmluZ191dGlscy5lbmNvZGUoZGlmZikKKyAg
ICAgICAgcHJldHR5X2RpZmYgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKHNlbGYucHJldHR5X2RpZmYo
ZGlmZikpCiAgICAgICAgIGRpZmZfZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShz
dWZmaXg9Ii5odG1sIikKICAgICAgICAgZGlmZl9maWxlLndyaXRlKHByZXR0eV9kaWZmKQogICAg
ICAgICBkaWZmX2ZpbGUuZmx1c2goKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5CShyZXZpc2lvbiAyNjQ2
NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21f
cG5nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVu
Y29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBz
dHJpbmdfdXRpbHMKIAogZGVmIHJlYWRfY2hlY2tzdW0oZmlsZWhhbmRsZSk6CiAgICAgIyBXZSBl
eHBlY3QgdGhlIGNvbW1lbnQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KLSAg
ICBkYXRhID0gZW5jb2RlX2lmX25lY2Vzc2FyeShmaWxlaGFuZGxlLnJlYWQoMjA0OCkpCisgICAg
ZGF0YSA9IHN0cmluZ191dGlscy5lbmNvZGUoZmlsZWhhbmRsZS5yZWFkKDIwNDgpKQogICAgIGNv
bW1lbnRfa2V5ID0gYid0RVh0Y2hlY2tzdW1ceDAwJwogICAgIGNvbW1lbnRfcG9zID0gZGF0YS5m
aW5kKGNvbW1lbnRfa2V5KQogICAgIGlmIGNvbW1lbnRfcG9zID09IC0xOgogICAgICAgICByZXR1
cm4KIAogICAgIGNoZWNrc3VtX3BvcyA9IGNvbW1lbnRfcG9zICsgbGVuKGNvbW1lbnRfa2V5KQot
ICAgIHJldHVybiBkZWNvZGVfZm9yKGRhdGFbY2hlY2tzdW1fcG9zOmNoZWNrc3VtX3BvcyArIDMy
XSwgc3RyKQorICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKGRhdGFbY2hlY2tzdW1fcG9z
OmNoZWNrc3VtX3BvcyArIDMyXSwgdGFyZ2V0X3R5cGU9c3RyKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zy
b21fcG5nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw4ICsyMiwxMCBAQAogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgdW5pdHRlc3QK
KworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29t
bW9uIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiAKIAogY2xhc3MgUmVhZENoZWNr
c3VtRnJvbVBuZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vdW5pY29kZV9jb21wYXRpYmlsaXR5LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3VuaWNvZGVfY29tcGF0aWJpbGl0eS5weQkocmV2
aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdW5pY29kZV9j
b21wYXRpYmlsaXR5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDQ4ICsyMCwxOSBAQAogIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgaW8KLWltcG9ydCBzeXMKLQotCi1CeXRlc0lP
ID0gaW8uQnl0ZXNJTwotaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICBTdHJpbmdJ
TyA9IGlvLlN0cmluZ0lPCi1lbHNlOgotICAgIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lP
Ci1Vbmljb2RlSU8gPSBpby5TdHJpbmdJTwotCi11bmljb2RlID0gc3RyIGlmIHN5cy52ZXJzaW9u
X2luZm8gPiAoMywgMCkgZWxzZSB1bmljb2RlCi0KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBV
bmljb2RlSU8sIFN0cmluZ0lPLCBCeXRlc0lPLCB1bmljb2RlLCBzdHJpbmdfdXRpbHMKIAogZGVm
IGVuY29kZV9pZl9uZWNlc3NhcnkodmFsdWUsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3Ry
aWN0Jyk6Ci0gICAgIyBJbiBQeXRob24gMywgc3RyaW5nIHR5cGVzIG11c3QgYmUgZW5jb2RlZAot
ICAgIGlmIHR5cGUodmFsdWUpID09IHVuaWNvZGU6Ci0gICAgICAgIHJldHVybiB2YWx1ZS5lbmNv
ZGUoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCi0gICAgcmV0dXJuIHZhbHVlCisgICAgcmV0dXJu
IHN0cmluZ191dGlscy5lbmNvZGUodmFsdWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJy
b3JzKQogCiAKIGRlZiBlbmNvZGVfZm9yKHZhbHVlLCB0YXJnZXRfdHlwZSwgKiprd2FyZ3MpOgot
ICAgIGlmIHRhcmdldF90eXBlID09IGJ5dGVzOgotICAgICAgICByZXR1cm4gZW5jb2RlX2lmX25l
Y2Vzc2FyeSh2YWx1ZSwgKiprd2FyZ3MpCi0KLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMs
IDApIGFuZCB0YXJnZXRfdHlwZSA9PSBzdHI6Ci0gICAgICAgIHJldHVybiBlbmNvZGVfaWZfbmVj
ZXNzYXJ5KHZhbHVlLCAqKmt3YXJncykKLSAgICByZXR1cm4gdmFsdWUKKyAgICByZXR1cm4gc3Ry
aW5nX3V0aWxzLmVuY29kZSh2YWx1ZSwgdGFyZ2V0X3R5cGU9dGFyZ2V0X3R5cGUsICoqa3dhcmdz
KQogCiAKIGRlZiBkZWNvZGVfaWZfbmVjZXNzYXJ5KHZhbHVlLCBlbmNvZGluZz0ndXRmLTgnLCBl
cnJvcnM9J3N0cmljdCcpOgotICAgICMgSW4gUHl0aG9uIDIsIHN0cmluZyB0eXBlcyBtaWdodCBu
ZWVkIHRvIGJlIGRlY29kZWQKLSAgICBpZiB0eXBlKHZhbHVlKSA9PSBieXRlczoKLSAgICAgICAg
cmV0dXJuIHZhbHVlLmRlY29kZShlbmNvZGluZywgZXJyb3JzPWVycm9ycykKLSAgICByZXR1cm4g
dmFsdWUKKyAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmRlY29kZSh2YWx1ZSwgZW5jb2Rpbmc9ZW5j
b2RpbmcsIGVycm9ycz1lcnJvcnMpCiAKIAogZGVmIGRlY29kZV9mb3IodmFsdWUsIHRhcmdldF90
eXBlKToKLSAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIGlm
IHR5cGUodmFsdWUpID09IHRhcmdldF90eXBlOgotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBp
ZiB0YXJnZXRfdHlwZSA9PSB1bmljb2RlOgotICAgICAgICByZXR1cm4gZGVjb2RlX2lmX25lY2Vz
c2FyeShieXRlcyh2YWx1ZSkpCi0gICAgcmV0dXJuIHZhbHVlCisgICAgcmV0dXJuIHN0cmluZ191
dGlscy5kZWNvZGUodmFsdWUsIHRhcmdldF90eXBlPXRhcmdldF90eXBlKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYucHkJKHJldmlzaW9uIDI2NDY0MCkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxMSArMjEsOSBAQAogIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IHN0cnVjdAotaW1wb3J0IHN5cwot
aW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgd2F2ZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIAogCiBjbGFzcyBXYXZlRGlmZihvYmplY3Qp
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9n
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2NoYW5nZWxvZy5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICsz
MiwxMCBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgdGV4dHdyYXAKIAorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPLCB1bmljb2RlCisKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTywgdW5pY29k
ZQogaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBhcyBjb25maWdfdXJscwogCiBf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDYgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCAqCiAKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkJKHJldmlzaW9u
IDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNr
b3V0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIGltcG9ydCBzeXMKIAot
aWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQg
cmVkdWNlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRw
eS5jb21tb24uY29uZmlnIGltcG9ydCB1cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZywgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9n
CkBAIC0zNyw3ICszNiw5IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNvbW1pdGlu
Zm8KIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ29tbWl0TWVzc2Fn
ZQogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworCitp
ZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgorICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBy
ZWR1Y2UKIAogCiAjIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgV2ViS2l0LXNwZWNpZmljIHBh
cnRzIG9mIHRoZSBjaGVja291dCAobGlrZSBDaGFuZ2VMb2dzKS4KSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTIgKzI2LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgY29k
ZWNzCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVu
aXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UsIFND
TURldGVjdG9yCkBAIC00Miw3ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtIGkKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sg
aW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIGZyb20g
d2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKIApAQCAtMzQ0LDcgKzM0Miw3
IEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAj
IHNvIHdlIGVuY29kZSBvdXIgdW5pY29kZSBDaGFuZ2VMb2cgZG93biB0byBhIHV0Zi04IHN0cmVh
bS4KICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyB1dGYtOCBkZWNvZGluZyBzaG91bGQgaWdu
b3JlIGludmFsaWQgY29kZXBvaW50cy4KICAgICAgICAgICAgIGludmFsaWRfdXRmOCA9IGInXDI1
NScKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVfaWZfbmVjZXNzYXJ5KF9jaGFuZ2Vsb2cxKSAr
IGludmFsaWRfdXRmOAorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoX2No
YW5nZWxvZzEpICsgaW52YWxpZF91dGY4CiAgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9j
aGVja291dCgpCiAgICAgICAgIGNoZWNrb3V0Ll9zY20uY29udGVudHNfYXRfcmV2aXNpb24gPSBt
b2NrX2NvbnRlbnRzX2F0X3JldmlzaW9uCiAgICAgICAgIGVudHJ5ID0gY2hlY2tvdXQuX2xhdGVz
dF9lbnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKCJmb28iLCAiYmFyIikKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QK
IAotaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5kaWZmX3BhcnNlciBhcyBkaWZmX3Bh
cnNlcgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgYXMgZGlmZl9wYXJzZXIKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfdGVzdF9kYXRhIGltcG9ydCBESUZGX1RFU1RfREFU
QQogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9n
aXQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL2dpdC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMTYgKzI5
LDE2IEBACiAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwogaW1w
b3J0IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3
ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5jb21taXRtZXNzYWdlIGltcG9ydCBDb21t
aXRNZXNzYWdlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtIGltcG9ydCBB
dXRoZW50aWNhdGlvbkVycm9yLCBTQ00sIGNvbW1pdF9lcnJvcl9oYW5kbGVyCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5zY20uc3ZuIGltcG9ydCBTVk5SZXBvc2l0b3J5Ci1mcm9tIHdl
YmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IsIGVu
Y29kZV9pZl9uZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CkBAIC0zNDgsNyArMzQ4LDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAg
ICAgIGlmIG5vdCByZXZpc2lvbjoKICAgICAgICAgICAgIHJldHVybiBkaWZmCiAKLSAgICAgICAg
cmV0dXJuIGVuY29kZV9pZl9uZWNlc3NhcnkoIlN1YnZlcnNpb24gUmV2aXNpb246ICIpICsgZW5j
b2RlX2lmX25lY2Vzc2FyeShyZXZpc2lvbikgKyBlbmNvZGVfaWZfbmVjZXNzYXJ5KCdcbicpICsg
ZW5jb2RlX2lmX25lY2Vzc2FyeShkaWZmKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVu
Y29kZSgiU3VidmVyc2lvbiBSZXZpc2lvbjogIikgKyBzdHJpbmdfdXRpbHMuZW5jb2RlKHJldmlz
aW9uKSArIHN0cmluZ191dGlscy5lbmNvZGUoJ1xuJykgKyBzdHJpbmdfdXRpbHMuZW5jb2RlKGRp
ZmYpCiAKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgY2hhbmdl
ZF9maWxlcz1Ob25lLCBnaXRfaW5kZXg9RmFsc2UpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0
ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQkocmV2
aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTAgQEAgaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5p
Y29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVj
dXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3Rl
bSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCB1bmljb2RlCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3Nj
bV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC01Niw5ICs1Niw4IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2Nt
LmdpdCBpbXBvcnQgR2l0LCBBbWJpZ3VvdXNDb21taXRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KLWZyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IFNDTSwgQ2hlY2tvdXROZWVk
c1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhlbnRpY2F0aW9uRXJyb3IKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IENoZWNrb3V0TmVlZHNVcGRh
dGUsIGNvbW1pdF9lcnJvcl9oYW5kbGVyLCBBdXRoZW50aWNhdGlvbkVycm9yCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5zY20uc3ZuIGltcG9ydCBTVk4KLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25lY2Vzc2FyeQogCiAK
ICMgV2UgY2FjaGUgdGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQg
YWdhaW4gZm9yIGVhY2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9k
LgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vc3ZuLnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20vc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMTMg
QEAgaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKLWZyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lv
biwgc3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20g
aW1wb3J0IEF1dGhlbnRpY2F0aW9uRXJyb3IsIFNDTSwgY29tbWl0X2Vycm9yX2hhbmRsZXIKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxzIGltcG9ydCBzdm5fc2VydmVyX2hvc3QsIHN2
bl9zZXJ2ZXJfcmVhbG0KIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1v
aXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0
aXZlLCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBv
cnQgV2ViS2l0RmluZGVyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCkBAIC00MTYsNCArNDE1LDQgQEAgY2xhc3MgU1ZOKFNDTSwgU1ZOUmVwb3Np
dG9yeSk6CiAKICAgICBkZWYgcHJvcGdldChzZWxmLCBwbmFtZSwgcGF0aCk6CiAgICAgICAgIGRp
ciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKLSAgICAgICAgcmV0dXJuIGVuY29kZV9pZl9u
ZWNlc3Nhcnkoc2VsZi5fcnVuX3N2bihbJ3BnZXQnLCBwbmFtZSwgYmFzZV0sIGN3ZD1kaXIpLnJz
dHJpcCgiXG4iKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoc2VsZi5fcnVu
X3N2bihbJ3BnZXQnLCBwbmFtZSwgYmFzZV0sIGN3ZD1kaXIpLnJzdHJpcCgiXG4iKSkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJz
LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
b25maWcvY29tbWl0dGVycy5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBAIGlt
cG9ydCBmbm1hdGNoCiBpbXBvcnQganNvbgogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgc3RyaW5nX3V0aWxzLCB1bmljb2RlCisKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBy
ZWR1Y2UKIGZyb20gd2Via2l0cHkuY29tbW9uLmVkaXRkaXN0YW5jZSBpbXBvcnQgZWRpdF9kaXN0
YW5jZQotZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJv
bSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfZm9y
LCB1bmljb2RlCiAKIAogY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKQEAgLTczLDcgKzczLDcg
QEAgY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuZW1haWxz
WzBdCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGVuY29kZV9mb3Io
dScie30iIDx7fT4nLmZvcm1hdCh1bmljb2RlKHNlbGYuZnVsbF9uYW1lKSwgdW5pY29kZShzZWxm
LmVtYWlsc1swXSkpLCBzdHIpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHUn
Int9IiA8e30+Jy5mb3JtYXQodW5pY29kZShzZWxmLmZ1bGxfbmFtZSksIHVuaWNvZGUoc2VsZi5l
bWFpbHNbMF0pKSwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYp
OgogICAgICAgICByZXR1cm4gdScie30iIDx7fT4nLmZvcm1hdCh1bmljb2RlKHNlbGYuZnVsbF9u
YW1lKSwgdW5pY29kZShzZWxmLmVtYWlsc1swXSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvZXdzc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9ld3NzZXJ2ZXIucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9ld3NzZXJ2ZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDkgKzIwLDEwIEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZy51cmxzIGltcG9ydCBld3NzZXJ2ZXJfZGVmYXVsdF9ob3N0CiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBOZXR3b3JrVHJhbnNh
Y3Rpb24KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
dW5pY29kZQogCiBpbXBvcnQgbG9nZ2luZwogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvd2ViX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwogCiBpbXBvcnQgc3lzCiBpZiBzeXMudmVyc2lv
bl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQkocmV2aXNpb24gMjY0NjQwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw4IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIK
IAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUgICMgdXNlZCBpbiB0aW1lc3RhbXAoKQor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBzdHJpbmdfdXRpbHMs
IHVuaWNvZGUKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBCeXRlc0lPLCBTdHJpbmdJTywgdW5pY29kZSwgZGVjb2RlX2ZvcgotZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmJ1Z3ppbGxhLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKIGZyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5idWcgaW1wb3J0IEJ1ZwogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IGNvbW1pdHRlcnMKQEAgLTI5NSw3ICsyOTQsNyBAQCBj
bGFzcyBCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKICAgICBkZWYgaXNfaW52YWxpZF9idWd6aWxs
YV9lbWFpbChzZWxmLCBzZWFyY2hfc3RyaW5nKToKICAgICAgICAgcmV2aWV3X3F1ZXVlX3VybCA9
ICJyZXF1ZXN0LmNnaT9hY3Rpb249cXVldWUmcmVxdWVzdGVyPSVzJnByb2R1Y3Q9JnR5cGU9cmV2
aWV3JnJlcXVlc3RlZT0mY29tcG9uZW50PSZncm91cD1yZXF1ZXN0ZWUiICUgdXJsbGliLnF1b3Rl
KHNlYXJjaF9zdHJpbmcpCiAgICAgICAgIHJlc3VsdHNfcGFnZSA9IHNlbGYuX2xvYWRfcXVlcnko
cmV2aWV3X3F1ZXVlX3VybCkKLSAgICAgICAgcmV0dXJuIGJvb2wocmUuc2VhcmNoKCdkaWQgbm90
IG1hdGNoIGFueXRoaW5nJywgZGVjb2RlX2ZvcihyZXN1bHRzX3BhZ2UucmVhZCgpLCBzdHIpKSkK
KyAgICAgICAgcmV0dXJuIGJvb2wocmUuc2VhcmNoKCdkaWQgbm90IG1hdGNoIGFueXRoaW5nJywg
c3RyaW5nX3V0aWxzLmRlY29kZShyZXN1bHRzX3BhZ2UucmVhZCgpLCB0YXJnZXRfdHlwZT1zdHIp
KSkKIAogCiBjbGFzcyBDb21taXRRdWV1ZUZsYWcob2JqZWN0KToKQEAgLTU2NSw3ICs1NjQsNyBA
QCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICAgICAgIyBJZiB0aGUgcmVzdWx0aW5n
IHBhZ2UgaGFzIGEgdGl0bGUsIGFuZCBpdCBjb250YWlucyB0aGUgd29yZAogICAgICAgICAgICAg
IyAiaW52YWxpZCIgYXNzdW1lIGl0J3MgdGhlIGxvZ2luIGZhaWx1cmUgcGFnZS4KICAgICAgICAg
ICAgIGlmIG1hdGNoIGFuZCByZS5zZWFyY2goYidJbnZhbGlkJywgbWF0Y2guZ3JvdXAoMSksIHJl
LklHTk9SRUNBU0UpOgotICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJCdWd6aWxsYSBs
b2dpbiBmYWlsZWQ6IHt9Ii5mb3JtYXQoZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSkK
KyAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiQnVnemlsbGEgbG9naW4gZmFpbGVkOiB7
fSIuZm9ybWF0KHN0cmluZ191dGlscy5kZWNvZGUobWF0Y2guZ3JvdXAoMSksIHRhcmdldF90eXBl
PXN0cikpCiAgICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24gb25seSBpZiB0aGlz
IHdhcyB0aGUgbGFzdCBhdHRlbXB0CiAgICAgICAgICAgICAgICAgaWYgYXR0ZW1wdHMgPCA1Ogog
ICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yTWVzc2FnZSkKQEAgLTY0MCw3ICs2
MzksNyBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogCiAgICAgQHN0YXRpY21ldGhvZAogICAg
IGRlZiBfcGFyc2VfYXR0YWNobWVudF9pZF9mcm9tX2FkZF9wYXRjaF90b19idWdfcmVzcG9uc2Uo
cmVzcG9uc2VfaHRtbCk6Ci0gICAgICAgIHJlc3BvbnNlX2h0bWwgPSBkZWNvZGVfZm9yKHJlc3Bv
bnNlX2h0bWwsIHN0cikKKyAgICAgICAgcmVzcG9uc2VfaHRtbCA9IHN0cmluZ191dGlscy5kZWNv
ZGUocmVzcG9uc2VfaHRtbCwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICBtYXRjaCA9IHJlLnNl
YXJjaCgnPHRpdGxlPkF0dGFjaG1lbnQgKD9QPGF0dGFjaG1lbnRfaWQ+XGQrKSBhZGRlZCB0byBC
dWcgXGQrPC90aXRsZT4nLCByZXNwb25zZV9odG1sKQogICAgICAgICBpZiBtYXRjaDoKICAgICAg
ICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgnYXR0YWNobWVudF9pZCcpCkBAIC02ODQsNyArNjgz
LDcgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAogICAgICMgRklYTUU6IFRoZXJlIGhhcyB0
byBiZSBhIG1vcmUgY29uY2lzZSB3YXkgdG8gd3JpdGUgdGhpcyBtZXRob2QuCiAgICAgZGVmIF9j
aGVja19jcmVhdGVfYnVnX3Jlc3BvbnNlKHNlbGYsIHJlc3BvbnNlX2h0bWwpOgotICAgICAgICBy
ZXNwb25zZV9odG1sID0gZGVjb2RlX2ZvcihyZXNwb25zZV9odG1sLCBzdHIpCisgICAgICAgIHJl
c3BvbnNlX2h0bWwgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHJlc3BvbnNlX2h0bWwsIHRhcmdldF90
eXBlPXN0cikKICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJzx0aXRsZT5CdWcgKD9QPGJ1Z19p
ZD5cZCspIFN1Ym1pdHRlZFtePF0qPC90aXRsZT4nLCByZXNwb25zZV9odG1sKQogICAgICAgICBp
ZiBtYXRjaDoKICAgICAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgnYnVnX2lkJykKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDE1IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGlt
cG9ydCBkYXRldGltZQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1w
b3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBS
ZXZpZXdlciwgQ29tbWl0dGVyLCBDb250cmlidXRvciwgQ29tbWl0dGVyTGlzdAogZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0LndlYl9tb2NrIGltcG9ydCBNb2NrQnJvd3NlcgogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmJ1Z3ppbGxhLmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYSwgQnVnemlsbGFR
dWVyaWVzLCBDb21taXRRdWV1ZUZsYWcsIEVkaXRVc2Vyc1BhcnNlcgogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20g
d2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiBm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVpbGRib3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90
LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVpbGRib3QvYnVpbGRib3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQganNvbgotaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQg
cmUKIGltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IHN0cmluZ191dGlscywgdW5pY29kZQogCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNvbmZpZy51
cmxzIGFzIGNvbmZpZ191cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQg
bWVtb2l6ZWQKQEAgLTQwLDcgKzQwLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91
dHRlc3RyZXN1bAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lm5ldHdvcmt0cmFuc2FjdGlvbiBp
bXBvcnQgTmV0d29ya1RyYW5zYWN0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQucmVncmVz
c2lvbndpbmRvdyBpbXBvcnQgUmVncmVzc2lvbldpbmRvdwogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBnZXRfbG9nZ2VyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IsIHVuaWNvZGUKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3Nlcgog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAKIApAQCAtNTIsNyArNTEsNiBAQCBlbHNlOgogICAgIGZyb20gdXJsbGliMiBpbXBvcnQgSFRU
UEVycm9yLCBxdW90ZSwgVVJMRXJyb3IsIHVybG9wZW4KIAogCi0KIF9sb2cgPSBnZXRfbG9nZ2Vy
KF9fZmlsZV9fKQogCiAKQEAgLTMxOSw4ICszMTcsOCBAQCBjbGFzcyBCdWlsZEJvdChvYmplY3Qp
OgogICAgICAgICAgICAgIyBGSVhNRTogV2UgdHJlYXQgc2xhdmUgbG9zdCBhcyBncmVlbiBldmVu
IHRob3VnaCBpdCBpcyBub3QgdG8KICAgICAgICAgICAgICMgd29yayBhcm91bmQgdGhlIFF0cyBi
b3QgYmVpbmcgb24gYSBicm9rZW4gaW50ZXJuZXQgY29ubmVjdGlvbi4KICAgICAgICAgICAgICMg
VGhlIHJlYWwgZml4IGlzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzA5OQotICAgICAgICAgICAgYnVpbGRlclsnaXNfZ3JlZW4nXSA9IG5vdCByZS5zZWFyY2goJ2Zh
aWwnLCBkZWNvZGVfZm9yKGNlbGwucmVuZGVyQ29udGVudHMoKSwgc3RyKSkgb3IgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbChyZS5zZWFyY2goJ2xvc3QnLCBkZWNvZGVf
Zm9yKGNlbGwucmVuZGVyQ29udGVudHMoKSwgc3RyKSkpCisgICAgICAgICAgICBidWlsZGVyWydp
c19ncmVlbiddID0gbm90IHJlLnNlYXJjaCgnZmFpbCcsIHN0cmluZ191dGlscy5kZWNvZGUoY2Vs
bC5yZW5kZXJDb250ZW50cygpLCB0YXJnZXRfdHlwZT1zdHIpKSBvciBcCisgICAgICAgICAgICAg
ICAgYm9vbChyZS5zZWFyY2goJ2xvc3QnLCBzdHJpbmdfdXRpbHMuZGVjb2RlKGNlbGwucmVuZGVy
Q29udGVudHMoKSwgdGFyZ2V0X3R5cGU9c3RyKSkpCiAKICAgICAgICAgICAgIHN0YXR1c19saW5r
X3JlZ2V4cCA9IHIiYnVpbGRlcnMvKD9QPGJ1aWxkZXJfbmFtZT4uKikvYnVpbGRzLyg/UDxidWls
ZF9udW1iZXI+XGQrKSIKICAgICAgICAgICAgIGxpbmtfbWF0Y2ggPSByZS5tYXRjaChzdGF0dXNf
bGlua19yZWdleHAsIHN0YXR1c19saW5rWydocmVmJ10pCkBAIC0zMzYsNyArMzM0LDcgQEAgY2xh
c3MgQnVpbGRCb3Qob2JqZWN0KToKIAogICAgIGRlZiBfcGFyc2VfY3VycmVudF9idWlsZF9jZWxs
KHNlbGYsIGJ1aWxkZXIsIGNlbGwpOgogICAgICAgICAjIENvbnZlcnQgcmVuZGVyZWQgY29udGVu
dHMgdG8gbmF0aXZlIHN0cmluZwotICAgICAgICByZW5kZXJlZCA9IGRlY29kZV9mb3IoY2VsbC5y
ZW5kZXJDb250ZW50cygpLCBzdHIpCisgICAgICAgIHJlbmRlcmVkID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShjZWxsLnJlbmRlckNvbnRlbnRzKCksIHRhcmdldF90eXBlPXN0cikKIAogICAgICAgICAj
IEJlYXV0aWZ1bFNvdXAgYW5kIGJzNCByZW5kZXIgZGlmZmVyZW50bHkKICAgICAgICAgaWYgJzxi
ci8+JyBpbiByZW5kZXJlZDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9hYnN0cmFjdGV4ZWN1dGl2ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHkJKHJldmlzaW9uIDI2NDY0
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9hYnN0cmFjdGV4ZWN1
dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOSBAQAogaW1wb3J0IHN5cwogaW1w
b3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgdW5pY29k
ZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5
c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQog
CiBjbGFzcyBBYnN0cmFjdEV4ZWN1dGl2ZShvYmplY3QpOgogCkBAIC0xMDEsMTMgKzEwMiwxMyBA
QCBjbGFzcyBBYnN0cmFjdEV4ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICBwYXNzCiAKICAgICBk
ZWYgX3N0cmluZ2lmeV9hcmdzKHNlbGYsIGFyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKHVuaWNv
ZGVfY29tcGF0aWJpbGl0eS51bmljb2RlLCBhcmdzKQorICAgICAgICByZXR1cm4gbWFwKHVuaWNv
ZGUsIGFyZ3MpCiAKICAgICBkZWYgY29tbWFuZF9mb3JfcHJpbnRpbmcoc2VsZiwgYXJncyk6CiAg
ICAgICAgICIiIlJldHVybnMgYSBwcmludC1yZWFkeSBzdHJpbmcgcmVwcmVzZW50aW5nIGNvbW1h
bmQgYXJncy4KICAgICAgICAgVGhlIHN0cmluZyBzaG91bGQgYmUgY29weS9wYXN0ZSByZWFkeSBm
b3IgZXhlY3V0aW9uIGluIGEgc2hlbGwuIiIiCiAgICAgICAgIGFyZ3MgPSBzZWxmLl9zdHJpbmdp
ZnlfYXJncyhhcmdzKQotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29k
ZV9pZl9uZWNlc3NhcnkodW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nhcnko
JyAnLmpvaW4oYXJncyksICd1bmljb2RlX2VzY2FwZScpKQorICAgICAgICByZXR1cm4gc3RyaW5n
X3V0aWxzLmRlY29kZShzdHJpbmdfdXRpbHMuZW5jb2RlKCcgJy5qb2luKGFyZ3MpLCBlbmNvZGlu
Zz0ndW5pY29kZV9lc2NhcGUnKSkKIAogICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCBj
d2Q9Tm9uZSwgZW52PU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBlcnJvcl9oYW5kbGVy
PU5vbmUsIGlnbm9yZV9lcnJvcnM9RmFsc2UsCiAgICAgICAgIHJldHVybl9leGl0X2NvZGU9RmFs
c2UsIHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1dD1UcnVlKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQkocmV2
aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Ny
YXNobG9ncy5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBpbXBvcnQgZGF0ZXRp
bWUKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1w
b3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscwogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTExMSw3
ICsxMTEsNyBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgZm9yIHBhdGggaW4g
cmV2ZXJzZWQoc29ydGVkKGxvZ3MpKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICBpZiBub3QgbmV3ZXJfdGhhbiBvciBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ubXRpbWUocGF0aCkg
PiBuZXdlcl90aGFuOgotICAgICAgICAgICAgICAgICAgICBsb2dfZmlsZSA9IHVuaWNvZGVfY29t
cGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5yZWFk
X2JpbmFyeV9maWxlKHBhdGgpLCAnYXNjaWknLCAnaWdub3JlJykKKyAgICAgICAgICAgICAgICAg
ICAgbG9nX2ZpbGUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5y
ZWFkX2JpbmFyeV9maWxlKHBhdGgpLCBlbmNvZGluZz0nYXNjaWknLCBlcnJvcnM9J2lnbm9yZScp
CiAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5HTE9CQUxfUElEX1JFR0VYLnNlYXJj
aChsb2dfZmlsZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBpbnQobWF0Y2guZ3JvdXAoJ3BpZCcpKSA9PSBwaWQ6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxv
Z3NfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDExICsyMywxMiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hs
b2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lz
dGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHku
Y29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKIAogIyBOZWVkZWQgdG8gc3VwcG9y
dCBXaW5kb3dzIHBvcnQgdGVzdHMKIGZyb20gd2Via2l0cHkucG9ydC53aW4gaW1wb3J0IFdpblBv
cnQKQEAgLTI5OSw3ICszMDAsNyBAQCBjbGFzcyBDcmFzaExvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5maWxlc1snL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdu
b3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzIyX3F1YWR6ZW4uY3Jh
c2gnXSA9IHNlbGYub3RoZXJfcHJvY2Vzc19tb2NrX2NyYXNoX3JlcG9ydAogICAgICAgICBzZWxm
LmZpbGVzWycvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJl
bmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MjNfcXVhZHplbi5jcmFzaCddID0gc2VsZi5taXNmb3Jt
YXR0ZWRfbW9ja19jcmFzaF9yZXBvcnQKIAotICAgICAgICBzZWxmLmZpbGVzID0ge2tleTogdW5p
Y29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkodmFsdWUpIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuZmlsZXMuaXRlbXMoKX0KKyAgICAgICAgc2VsZi5maWxlcyA9IHtrZXk6IHN0
cmluZ191dGlscy5lbmNvZGUodmFsdWUpIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZmlsZXMuaXRl
bXMoKX0KIAogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShzZWxmLmZp
bGVzKQogICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKE1vY2tTeXN0ZW1Ib3N0KGZpbGVz
eXN0ZW09c2VsZi5maWxlc3lzdGVtKSwgQ3Jhc2hMb2dzVGVzdC5EQVJXSU5fTU9DS19DUkFTSF9E
SVJFQ1RPUlkpCkBAIC0zMTcsNyArMzE4LDcgQEAgY2xhc3MgQ3Jhc2hMb2dzVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbF9sb2dzKSwgOCkK
IAogICAgICAgICBmb3IgdGVzdCwgY3Jhc2hfbG9nIGluIGFsbF9sb2dzLml0ZW1zKCk6Ci0gICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoY3Jhc2hfbG9nIGluIFt1bmljb2RlX2NvbXBhdGliaWxp
dHkuZGVjb2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSkgZm9yIHZhbHVlIGluIHNlbGYuZmlsZXMudmFs
dWVzKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyYXNoX2xvZyBpbiBbc3RyaW5n
X3V0aWxzLmRlY29kZSh2YWx1ZSkgZm9yIHZhbHVlIGluIHNlbGYuZmlsZXMudmFsdWVzKCldKQog
ICAgICAgICAgICAgaWYgdGVzdC5zcGxpdCgnLScpWzBdICE9ICdTYW5kYm94JzoKICAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdCA9PSAiVW5rbm93biIgb3IgaW50KHRlc3Quc3Bs
aXQoIi0iKVsxXSkgaW4gcmFuZ2UoMjg1MjcsIDI4NTMxKSkKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CShyZXZpc2lvbiAy
NjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZl
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQCBpbXBvcnQgc3VicHJvY2Vzcwog
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmlu
Z0lPLCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmFic3RyYWN0ZXhlY3V0aXZlIGltcG9ydCBBYnN0cmFjdEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dHRlZSBpbXBvcnQgVGVlCi1mcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQpAQCAtNzEsNyArNzIsNyBAQCBjbGFzcyBTY3JpcHRFcnJvcihFeGNlcHRp
b24pOgogICAgICAgICAgICAgICAgIHJldHVybiB1IiVzXG5cbkxhc3QgJXMgY2hhcmFjdGVycyBv
ZiBvdXRwdXQ6XG4lcyIgJSBcCiAgICAgICAgICAgICAgICAgICAgIChzZWxmLCBvdXRwdXRfbGlt
aXQsIHNlbGYub3V0cHV0Wy1vdXRwdXRfbGltaXQ6XSkKICAgICAgICAgICAgIHJldHVybiB1IiVz
XG5cbiVzIiAlIChzZWxmLCBzZWxmLm91dHB1dCkKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29t
cGF0aWJpbGl0eS51bmljb2RlKHNlbGYpCisgICAgICAgIHJldHVybiB1bmljb2RlKHNlbGYpCiAK
ICAgICBkZWYgY29tbWFuZF9uYW1lKHNlbGYpOgogICAgICAgICBjb21tYW5kX3BhdGggPSBzZWxm
LnNjcmlwdF9hcmdzCkBAIC0xMjcsNyArMTI4LDcgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0
RXhlY3V0aXZlKToKICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgaW1wcm92ZWQg
bm90IHRvIGZsYXR0ZW4gb3V0cHV0IHRvIHN0ZG91dC4KICAgICAgICAgICAgIHdoaWxlIGNoaWxk
X3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgb3V0cHV0X2xpbmUgPSBj
aGlsZF9wcm9jZXNzLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgdGVlZF9vdXRw
dXQud3JpdGUodW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9mb3Iob3V0cHV0X2xpbmUsIHN0
cikpCisgICAgICAgICAgICAgICAgdGVlZF9vdXRwdXQud3JpdGUoc3RyaW5nX3V0aWxzLmRlY29k
ZShvdXRwdXRfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAgICAgIHJldHVybiBjaGls
ZF9wcm9jZXNzLnBvbGwoKQogCiAgICAgIyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVwcmVjYXRlZCBt
ZXRob2QgYW5kIG1vdmUgY2FsbGVycyB0byBydW5fY29tbWFuZC4KQEAgLTEzNyw3ICsxMzgsNyBA
QCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICMgYnV0IHN0aWxsIGhh
dmUgdGhlIG91dHB1dCB0byBzdHVmZiBpbnRvIGEgbG9nIGZpbGUuCiAgICAgZGVmIHJ1bl9hbmRf
dGhyb3dfaWZfZmFpbChzZWxmLCBhcmdzLCBxdWlldD1GYWxzZSwgZGVjb2RlX291dHB1dD1UcnVl
LCAqKmt3YXJncyk6CiAgICAgICAgICMgQ2FjaGUgdGhlIGNoaWxkJ3Mgb3V0cHV0IGxvY2FsbHkg
c28gaXQgY2FuIGJlIHVzZWQgZm9yIGVycm9yIHJlcG9ydHMuCi0gICAgICAgIGNoaWxkX291dF9m
aWxlID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LlN0cmluZ0lPKCkKKyAgICAgICAgY2hpbGRfb3V0
X2ZpbGUgPSBTdHJpbmdJTygpCiAgICAgICAgIHRlZV9zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIGlmIHF1aWV0OgpAQCAtMTUzLDkgKzE1NCw5IEBAIGNsYXNz
IEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgIGNoaWxkX291dF9maWxlLmNs
b3NlKCkKIAogICAgICAgICBpZiBkZWNvZGVfb3V0cHV0OgotICAgICAgICAgICAgY2hpbGRfb3V0
cHV0ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3NhcnkoY2hpbGRfb3V0
cHV0LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgICAgICBjaGlsZF9v
dXRwdXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGNoaWxkX291dHB1dCwgZW5jb2Rpbmc9c2VsZi5f
Y2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2hp
bGRfb3V0cHV0ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoY2hp
bGRfb3V0cHV0LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgICAgICBj
aGlsZF9vdXRwdXQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGNoaWxkX291dHB1dCwgZW5jb2Rpbmc9
c2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQogCiAgICAgICAgIGlmIGV4aXRfY29kZToK
ICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKHNjcmlwdF9hcmdzPWFyZ3MsCkBAIC0zMDYs
NyArMzA3LDcgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAg
ICAgICAgICAgICAgICAgICMgSW4gc29tZSBjYXNlcyB0aGUgbGluZSBjYW4gY29udGFpbiBvbmUg
b3IgbW9yZQogICAgICAgICAgICAgICAgICAgICAgICAgIyBsZWFkaW5nIHdoaXRlLXNwYWNlcywg
c28gc3RyaXAgaXQgYmVmb3JlIHNwbGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBw
cm9jZXNzX25hbWUgPSBsaW5lLnN0cmlwKCkuc3BsaXQoYicgJywgMSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHByb2Nlc3NfbmFtZV9maWx0ZXIodW5pY29kZV9jb21wYXRpYmlsaXR5LmRl
Y29kZV9mb3IocHJvY2Vzc19uYW1lLCBzdHIpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IHByb2Nlc3NfbmFtZV9maWx0ZXIoc3RyaW5nX3V0aWxzLmRlY29kZShwcm9jZXNzX25hbWUsIHRh
cmdldF90eXBlPXN0cikpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfcGlk
cy5hcHBlbmQoaW50KHBpZCkpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
IGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCkBAIC0zNzQsNyArMzc1LDcgQEAg
Y2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAgIyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTI4CiAgICAgICAgICMgZm9yIGFu
IGV4YW1wbGUgb2YgYSByZWdyZXNpb24gY2F1c2VkIGJ5IHBhc3NpbmcgYSB1bmljb2RlIHN0cmlu
ZyBkaXJlY3RseS4KICAgICAgICAgIyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gZW5jb2RlIGRpZmZl
cmVudGx5IG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMuCi0gICAgICAgIGlucHV0ID0gdW5pY29kZV9j
b21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoaW5wdXQsIHNlbGYuX2NoaWxkX3Byb2Nl
c3NfZW5jb2RpbmcoKSkKKyAgICAgICAgaW5wdXQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGlucHV0
LCBlbmNvZGluZz1zZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCiAgICAgICAgIHJldHVy
biAoc2VsZi5QSVBFLCBpbnB1dCkKIAogICAgICMgRklYTUU6IHJ1bl9hbmRfdGhyb3dfaWZfZmFp
bCBzaG91bGQgYmUgbWVyZ2VkIGludG8gdGhpcyBtZXRob2QuCkBAIC00MDcsMTEgKzQwOCwxMSBA
QCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAgICAgaWYgbm90
IHN0cmluZ190b19jb21tdW5pY2F0ZToKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNz
LmNvbW11bmljYXRlKClbMF0KICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0
cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSh1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lm
X25lY2Vzc2FyeShzdHJpbmdfdG9fY29tbXVuaWNhdGUsICd1dGYtOCcpKVswXQorICAgICAgICAg
ICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoc3RyaW5nX3V0aWxzLmVuY29kZShz
dHJpbmdfdG9fY29tbXVuaWNhdGUsIGVuY29kaW5nPSd1dGYtOCcpKVswXQogCiAgICAgICAgICAg
ICAjIHJ1bl9jb21tYW5kIGF1dG9tYXRpY2FsbHkgZGVjb2RlcyB0byB1bmljb2RlKCkgYW5kIGNv
bnZlcnRzIENSTEYgdG8gTEYgdW5sZXNzIGV4cGxpY2l0bHkgdG9sZCBub3QgdG8uCiAgICAgICAg
ICAgICBpZiBkZWNvZGVfb3V0cHV0OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IHVuaWNvZGVf
Y29tcGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KG91dHB1dCwgc2VsZi5fY2hpbGRfcHJv
Y2Vzc19lbmNvZGluZygpKS5yZXBsYWNlKCdcclxuJywgJ1xuJykKKyAgICAgICAgICAgICAgICBv
dXRwdXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG91dHB1dCwgZW5jb2Rpbmc9c2VsZi5fY2hpbGRf
cHJvY2Vzc19lbmNvZGluZygpKS5yZXBsYWNlKCdcclxuJywgJ1xuJykKIAogICAgICAgICAgICAg
IyB3YWl0KCkgaXMgbm90IHRocmVhZHNhZmUgYW5kIGNhbiB0aHJvdyBPU0Vycm9yIGR1ZSB0bzoK
ICAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MzE3MTcKQEAgLTQ2
NCwxMSArNDY1LDExIEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAg
ZGVmIF9lbmNvZGVfYXJndW1lbnRfaWZfbmVlZGVkKHNlbGYsIGFyZ3VtZW50KToKICAgICAgICAg
aWYgbm90IHNlbGYuX3Nob3VsZF9lbmNvZGVfY2hpbGRfcHJvY2Vzc19hcmd1bWVudHMoKToKICAg
ICAgICAgICAgIHJldHVybiBhcmd1bWVudAotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXRp
YmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoYXJndW1lbnQsIHNlbGYuX2NoaWxkX3Byb2Nlc3Nf
ZW5jb2RpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoYXJndW1lbnQs
IGVuY29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKIAogICAgIGRlZiBfc3Ry
aW5naWZ5X2FyZ3Moc2VsZiwgYXJncyk6CiAgICAgICAgICMgUG9wZW4gd2lsbCB0aHJvdyBhbiBl
eGNlcHRpb24gaWYgYXJncyBhcmUgbm9uLXN0cmluZ3MgKGxpa2UgaW50KCkpCi0gICAgICAgIHN0
cmluZ19hcmdzID0gbWFwKHVuaWNvZGVfY29tcGF0aWJpbGl0eS51bmljb2RlLCBhcmdzKQorICAg
ICAgICBzdHJpbmdfYXJncyA9IG1hcCh1bmljb2RlLCBhcmdzKQogICAgICAgICAjIFRoZSBXaW5k
b3dzIGltcGxlbWVudGF0aW9uIG9mIFBvcGVuIGNhbm5vdCBoYW5kbGUgdW5pY29kZSBzdHJpbmdz
LiA6KAogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX2VuY29kZV9hcmd1bWVudF9pZl9uZWVkZWQs
IHN0cmluZ19hcmdzKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZXhlY3V0aXZlX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDggQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MK
IAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRl
c0lPLCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgc3RyaW5nX3V0aWxzLCB1bmljb2RlCisKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTM4LDggKzM5LDggQEAgX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogY2xhc3MgTW9ja1Byb2Nlc3Mob2JqZWN0KToKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgc3Rkb3V0PSdNT0NLIFNURE9VVFxuJywgc3RkZXJyPScnKToK
ICAgICAgICAgc2VsZi5waWQgPSA0MgotICAgICAgICBzZWxmLnN0ZG91dCA9IEJ5dGVzSU8oZW5j
b2RlX2lmX25lY2Vzc2FyeShzdGRvdXQpKQotICAgICAgICBzZWxmLnN0ZGVyciA9IEJ5dGVzSU8o
ZW5jb2RlX2lmX25lY2Vzc2FyeShzdGRlcnIpKQorICAgICAgICBzZWxmLnN0ZG91dCA9IEJ5dGVz
SU8oc3RyaW5nX3V0aWxzLmVuY29kZShzdGRvdXQpKQorICAgICAgICBzZWxmLnN0ZGVyciA9IEJ5
dGVzSU8oc3RyaW5nX3V0aWxzLmVuY29kZShzdGRlcnIpKQogICAgICAgICBzZWxmLnN0ZGluID0g
Qnl0ZXNJTygpCiAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IDAKICAgICAgICAgc2VsZi5faXNf
cnVubmluZyA9IEZhbHNlCkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2ZShv
YmplY3QpOgogICAgICAgICAgICAgICAgIGVudl9zdHJpbmcgPSAiLCBlbnY9eyIgKyBlbnZfc3Ry
aW5nICsgIn0iCiAgICAgICAgICAgICBpbnB1dF9zdHJpbmcgPSAiIgogICAgICAgICAgICAgaWYg
aW5wdXQ6Ci0gICAgICAgICAgICAgICAgaW5wdXRfc3RyaW5nID0gIiwgaW5wdXQ9JXMiICUgZGVj
b2RlX2ZvcihpbnB1dCwgc3RyKQorICAgICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIsIGlu
cHV0PSVzIiAlIHN0cmluZ191dGlscy5kZWNvZGUoaW5wdXQsIHRhcmdldF90eXBlPXN0cikKICAg
ICAgICAgICAgIF9sb2cuaW5mbygiTU9DSyBydW5fY29tbWFuZDogJXMsIGN3ZD0lcyVzJXMiICUg
KGFyZ3MsIGN3ZCwgZW52X3N0cmluZywgaW5wdXRfc3RyaW5nKSkKICAgICAgICAgb3V0cHV0ID0g
Ik1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MiCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5w
eQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKLWltcG9ydCBlcnJubwogaW1wb3J0IHNpZ25h
bAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKQEAgLTQ2LDcgKzQ1LDggQEAgaWYgdGhp
cmRfcGFydHlfcHkgbm90IGluIHN5cy5wYXRoOgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJv
bSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQorCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIAogY2xhc3MgU2NyaXB0RXJyb3JUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEzOSwxMSArMTM5LDExIEBAIGNsYXNzIEV4ZWN1dGl2
ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgZW5jb2RpbmcgPSAnbWJjcycK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kaW5nID0gJ3V0Zi04JwotICAgICAgICBl
bmNvZGVkX3RvciA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KHVu
aWNvZGVfdG9yX2lucHV0LCBlbmNvZGluZykKKyAgICAgICAgZW5jb2RlZF90b3IgPSBzdHJpbmdf
dXRpbHMuZW5jb2RlKHVuaWNvZGVfdG9yX2lucHV0LCBlbmNvZGluZz1lbmNvZGluZykKICAgICAg
ICAgIyBPbiBXaW5kb3dzLCB3ZSBleHBlY3QgdGhlIHVuaWNvZGUtPm1iY3MtPnVuaWNvZGUgcm91
bmR0cmlwIHRvIGJlCiAgICAgICAgICMgbG9zc3kuIE9uIG90aGVyIHBsYXRmb3Jtcywgd2UgZXhw
ZWN0IGEgbG9zc2xlc3Mgcm91bmR0cmlwLgogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnd2luJyk6Ci0gICAgICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkuZGVjb2RlX2lmX25lY2Vzc2FyeShlbmNvZGVkX3RvciwgZW5jb2RpbmcpCisg
ICAgICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVuY29k
ZWRfdG9yLCBlbmNvZGluZz1lbmNvZGluZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHVu
aWNvZGVfdG9yX291dHB1dCA9IHVuaWNvZGVfdG9yX2lucHV0CiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CShyZXZpc2lv
biAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbS5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBpbXBvcnQgc3lzCiBpbXBv
cnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25lY2Vzc2FyeSwgZW5jb2RlX2ZvcgorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogCiAKIGNsYXNzIEZpbGVTeXN0ZW0o
b2JqZWN0KToKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAK
ICAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAg
ICB3aXRoIG9wZW4ocGF0aCwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoZW5jb2Rl
X2Zvcihjb250ZW50cywgYnl0ZXMpKQorICAgICAgICAgICAgZi53cml0ZShzdHJpbmdfdXRpbHMu
ZW5jb2RlKGNvbnRlbnRzLCB0YXJnZXRfdHlwZT1ieXRlcykpCiAKICAgICBkZWYgb3Blbl90ZXh0
X2ZpbGVfZm9yX3JlYWRpbmcoc2VsZiwgcGF0aCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAg
IyBOb3RlOiBUaGVyZSBhcHBlYXJzIHRvIGJlIGFuIGlzc3VlIHdpdGggdGhlIHJldHVybmVkIGZp
bGUgb2JqZWN0cwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToK
IAogICAgICAgICBUaGUgZmlsZSBpcyB3cml0dGVuIGVuY29kZWQgYXMgVVRGLTggd2l0aCBubyBC
T00uIiIiCiAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmLTgnLCBlcnJv
cnM9ZXJyb3JzKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShkZWNvZGVfaWZfbmVjZXNzYXJ5
KGNvbnRlbnRzLCBlcnJvcnM9ZXJyb3JzKSkKKyAgICAgICAgICAgIGYud3JpdGUoc3RyaW5nX3V0
aWxzLmRlY29kZShjb250ZW50cywgZXJyb3JzPWVycm9ycykpCiAKICAgICBkZWYgc2hhMShzZWxm
LCBwYXRoKToKICAgICAgICAgY29udGVudHMgPSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21v
Y2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTAgKzMwLDggQEAgaW1wb3J0IGVycm5vCiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IG9z
CiBpbXBvcnQgcmUKLWltcG9ydCBzeXMKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVu
aWNvZGVfY29tcGF0aWJpbGl0eQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBw
YXRoCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVW5pY29kZUlPLCBzdHJpbmdfdXRpbHMKIAog
Y2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBzZXAgPSAnLycKQEAgLTQ4LDcgKzQ2
LDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICB2YWx1
ZSBvZiBOb25lIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmlsZSBzaG91bGQKICAgICAg
ICAgICAgICAgICBub3QgZXhpc3QuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLmZpbGVzID0g
e25hbWU6IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KGNvbnRlbnRz
KSBmb3IgbmFtZSwgY29udGVudHMgaW4gKGZpbGVzIG9yIHt9KS5pdGVtcygpfQorICAgICAgICBz
ZWxmLmZpbGVzID0ge25hbWU6IHN0cmluZ191dGlscy5lbmNvZGUoY29udGVudHMpIGZvciBuYW1l
LCBjb250ZW50cyBpbiAoZmlsZXMgb3Ige30pLml0ZW1zKCl9CiAgICAgICAgIHNlbGYud3JpdHRl
bl9maWxlcyA9IHt9CiAgICAgICAgIHNlbGYubGFzdF90bXBkaXIgPSBOb25lCiAgICAgICAgIHNl
bGYuY3VycmVudF90bXBubyA9IDAKQEAgLTMyOSw4ICszMjcsOCBAQCBjbGFzcyBNb2NrRmlsZVN5
c3RlbShvYmplY3QpOgogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250
ZW50cyk6CiAgICAgICAgICMgRklYTUU6IHNob3VsZCB0aGlzIGFzc2VydCBpZiBkaXJuYW1lKHBh
dGgpIGRvZXNuJ3QgZXhpc3Q/CiAgICAgICAgIHNlbGYubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2Vs
Zi5kaXJuYW1lKHBhdGgpKQotICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gdW5pY29kZV9jb21w
YXRpYmlsaXR5LmVuY29kZV9mb3IoY29udGVudHMsIGJ5dGVzKQotICAgICAgICBzZWxmLndyaXR0
ZW5fZmlsZXNbcGF0aF0gPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2Zvcihjb250ZW50
cywgYnl0ZXMpCisgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBzdHJpbmdfdXRpbHMuZW5jb2Rl
KGNvbnRlbnRzKQorICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXNbcGF0aF0gPSBzdHJpbmdfdXRp
bHMuZW5jb2RlKGNvbnRlbnRzKQogCiAgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5n
KHNlbGYsIHBhdGgsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgIGlmIHNlbGYuZmlsZXMuZ2V0
KHBhdGgpIGlzIE5vbmU6CkBAIC0zNDQsNyArMzQyLDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0o
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKS5kZWNv
ZGUoJ3V0Zi04JywgZXJyb3JzPWVycm9ycykKIAogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2Vs
ZiwgcGF0aCwgY29udGVudHMsIGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBzZWxm
LndyaXRlX2JpbmFyeV9maWxlKHBhdGgsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZf
bmVjZXNzYXJ5KGNvbnRlbnRzLCAndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKSkKKyAgICAgICAgcmV0
dXJuIHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUocGF0aCwgc3RyaW5nX3V0aWxzLmVuY29kZShjb250
ZW50cywgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPWVycm9ycykpCiAKICAgICBkZWYgc2hhMShz
ZWxmLCBwYXRoKToKICAgICAgICAgY29udGVudHMgPSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0
aCkKQEAgLTQ1MywxMyArNDUxLDEzIEBAIGNsYXNzIFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdChv
YmplY3QpOgogICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKIAogICAgIGRlZiB3cml0ZShzZWxm
LCBzdHJpbmcpOgotICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0gKz0gdW5pY29kZV9j
b21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nhcnkoc3RyaW5nLCAndXRmLTgnKQorICAgICAg
ICBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0gKz0gc3RyaW5nX3V0aWxzLmVuY29kZShzdHJpbmcs
IGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIHNlbGYuZnMud3JpdHRlbl9maWxlc1tzZWxmLnBh
dGhdID0gc2VsZi5mcy5maWxlc1tzZWxmLnBhdGhdCiAKIAogY2xhc3MgV3JpdGFibGVUZXh0Rmls
ZU9iamVjdChXcml0YWJsZUJpbmFyeUZpbGVPYmplY3QpOgogICAgIGRlZiB3cml0ZShzZWxmLCBz
dHIpOgotICAgICAgICBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qud3JpdGUoc2VsZiwgdW5pY29k
ZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nhcnkoc3RyLCAndXRmLTgnKSkKKyAgICAg
ICAgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0LndyaXRlKHNlbGYsIHN0cmluZ191dGlscy5lbmNv
ZGUoc3RyLCBlbmNvZGluZz0ndXRmLTgnKSkKIAogCiBjbGFzcyBSZWFkYWJsZUJpbmFyeUZpbGVP
YmplY3Qob2JqZWN0KToKQEAgLTQ5Miw3ICs0OTAsNyBAQCBjbGFzcyBSZWFkYWJsZUJpbmFyeUZp
bGVPYmplY3Qob2JqZWN0KToKIAogY2xhc3MgUmVhZGFibGVUZXh0RmlsZU9iamVjdChSZWFkYWJs
ZUJpbmFyeUZpbGVPYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgcGF0aCwgZGF0
YSk6Ci0gICAgICAgIHN1cGVyKFJlYWRhYmxlVGV4dEZpbGVPYmplY3QsIHNlbGYpLl9faW5pdF9f
KGZzLCBwYXRoLCB1bmljb2RlX2NvbXBhdGliaWxpdHkuVW5pY29kZUlPKHVuaWNvZGVfY29tcGF0
aWJpbGl0eS5kZWNvZGVfZm9yKGRhdGEsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS51bmljb2RlKSkp
CisgICAgICAgIHN1cGVyKFJlYWRhYmxlVGV4dEZpbGVPYmplY3QsIHNlbGYpLl9faW5pdF9fKGZz
LCBwYXRoLCBVbmljb2RlSU8oc3RyaW5nX3V0aWxzLmRlY29kZShkYXRhKSkpCiAKICAgICBkZWYg
Y2xvc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuZGF0YS5jbG9zZSgpCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQko
cmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L291dHB1dGNhcHR1cmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgaW1wb3J0
IGxvZ2dpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgU3RyaW5nSU8KIAogCiBjbGFzcyBPdXRwdXRDYXB0dXJlKG9iamVjdCk6Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0dGVlX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9vdXRwdXR0ZWVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXR0ZWVfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDggKzI4LDkgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5vdXRwdXR0ZWUgaW1wb3J0IFRlZSwgT3V0cHV0VGVlCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLm91dHB1dHRlZSBpbXBvcnQgVGVlCiAKIAogY2xhc3MgU2ltcGxlVGVlVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
aW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDggKzI5LDkgQEAKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5o
b3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgbGludF90ZXN0X2V4cGVjdGF0aW9ucwogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQgKzMyLDEzIEBAIGltcG9ydCBqc29uCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2Fw
dHVyZSwgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9nc191bml0dGVz
dCBpbXBvcnQgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4KIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1w
b3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IFN0cmluZ0lPCi0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5f
d2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5f
cmVzdWx0cyBpbXBvcnQgSU5URVJSVVBURURfRVhJVF9TVEFUVVMKIGZyb20gd2Via2l0cHkucG9y
dCBpbXBvcnQgdGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5l
ci5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw5ICsyOSw4IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKLWltcG9ydCB0aW1l
CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVj
b2RlX2ZvcgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IHRlc3RfcmVzdWx0X3dyaXRlcgog
ZnJvbSB3ZWJraXRweS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVySW5wdXQsIERyaXZlck91dHB1
dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0
aW9ucwpAQCAtMjE1LDcgKzIxNCw3IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXIob2JqZWN0KToK
ICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmVycm9yOgogICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczoiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCB0ZXN0
bmFtZSkpCiAgICAgICAgIGZvciBsaW5lIGluIGRyaXZlcl9vdXRwdXQuZXJyb3Iuc3BsaXRsaW5l
cygpOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICB7fSIuZm9ybWF0KGRlY29kZV9mb3IobGlu
ZSwgc3RyKSkpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCIgIHt9Ii5mb3JtYXQoc3RyaW5nX3V0
aWxzLmRlY29kZShsaW5lLCB0YXJnZXRfdHlwZT1zdHIpKSkKICAgICAgICAgcmV0dXJuIGZhaWx1
cmVzCiAKICAgICBkZWYgX2NvbXBhcmVfb3V0cHV0KHNlbGYsIGV4cGVjdGVkX2RyaXZlcl9vdXRw
dXQsIGRyaXZlcl9vdXRwdXQpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRz
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21v
Y2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGli
aWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tPcHRpb25zCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBv
cnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9y
dCB0ZXN0X3J1bl9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1w
b3J0IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMudmlld3MgaW1wb3J0IGJ1aWxkYm90X3Jlc3VsdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVy
ZWRfc3RyZWFtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQCBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGlt
cG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1l
dGVyZWRTdHJlYW0KIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weQkocmV2aXNp
b24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
cHJpbnRpbmdfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxMSBAQAog
CiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRl
c3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgbG9ndGVzdGluZwotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21w
YXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwotZnJvbSB3ZWJraXRweSBpbXBvcnQgcG9ydAotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1hbmFnZXIKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTUgKzI2LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1p
bXBvcnQganNvbgotaW1wb3J0IG1hdGgKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRw
eS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0Ci1mcm9tIHdlYmtpdHB5LnBvcnQudGVz
dCBpbXBvcnQgVGVzdERyaXZlcgogZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQ
b3J0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJm
VGVzdAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVy
ZlRlc3RNZXRyaWMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVz
dHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRl
Z3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3
ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20g
d2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5w
b3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3Rz
LnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5u
ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMTMgQEAKICIiIlVuaXQgdGVzdHMgZm9yIHJ1bl9wZXJmX3Rl
c3RzLiIiIgogCiBpbXBvcnQganNvbgotaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhv
c3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRw
dXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnBvcnQudGVz
dCBpbXBvcnQgVGVzdFBvcnQKLWZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRl
c3QgaW1wb3J0IERFRkFVTFRfVEVTVF9SVU5ORVJfQ09VTlQKIGZyb20gd2Via2l0cHkucGVyZm9y
bWFuY2VfdGVzdHMucGVyZnRlc3RzcnVubmVyIGltcG9ydCBQZXJmVGVzdHNSdW5uZXIKIAogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2aXNpb24gMjY0NjQwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAgaW1wb3J0IHN5cwogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVk
RGljdAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBzdHJpbmdfdXRpbHMKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRfZmls
ZXMKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCkBA
IC01Miw3ICs1Myw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0K
IGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFBVQkxJQ19UQUJM
RSwgSU5URVJOQUxfVEFCTEUsIFZlcnNpb25OYW1lTWFwCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53
YXZlZGlmZiBpbXBvcnQgV2F2ZURpZmYKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5k
ZXIgaW1wb3J0IFdlYktpdEZpbmRlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21w
YXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVf
Zm9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9u
IGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBjb25m
aWcgYXMgcG9ydF9jb25maWcKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZHJpdmVyCkBAIC0z
MjYsOCArMzI2LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBkaWZmX3RleHQoc2Vs
ZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxf
ZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRp
ZmYgb2YgdGhlIHR3byB0ZXh0IHN0cmluZ3MKICAgICAgICAgaW4gJ3VuaWZpZWQgZGlmZicgZm9y
bWF0LiIiIgotICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IGRlY29kZV9mb3IoZW5jb2RlX2lm
X25lY2Vzc2FyeShleHBlY3RlZF9maWxlbmFtZSksIHN0cikKLSAgICAgICAgYWN0dWFsX2ZpbGVu
YW1lID0gZGVjb2RlX2ZvcihlbmNvZGVfaWZfbmVjZXNzYXJ5KGFjdHVhbF9maWxlbmFtZSksIHN0
cikKKyAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0cmlu
Z191dGlscy5lbmNvZGUoZXhwZWN0ZWRfZmlsZW5hbWUpLCB0YXJnZXRfdHlwZT1zdHIpCisgICAg
ICAgIGFjdHVhbF9maWxlbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RyaW5nX3V0aWxzLmVu
Y29kZShhY3R1YWxfZmlsZW5hbWUpLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIGRpZmYgPSBk
aWZmbGliLnVuaWZpZWRfZGlmZihleHBlY3RlZF90ZXh0LnNwbGl0bGluZXMoVHJ1ZSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfdGV4dC5zcGxpdGxpbmVzKFRy
dWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZW5h
bWUsCkBAIC00ODgsNyArNDg4LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAg
YmFzZWxpbmVfcGF0aCA9IHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUodGVzdF9uYW1lLCAnLndlYmFy
Y2hpdmUnLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKICAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9maWxlc3lzdGVtLmV4aXN0cyhiYXNlbGluZV9wYXRoKToKICAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICB0ZXh0ID0gZGVjb2RlX2ZvcihzZWxmLl9maWxlc3lzdGVtLnJlYWRf
YmluYXJ5X2ZpbGUoYmFzZWxpbmVfcGF0aCksIHN0cikKKyAgICAgICAgdGV4dCA9IHN0cmluZ191
dGlscy5kZWNvZGUoc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGJhc2VsaW5lX3Bh
dGgpLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoIlxyXG4i
LCAiXG4iKQogCiAgICAgZGVmIF9nZXRfcmVmdGVzdF9saXN0KHNlbGYsIHRlc3RfbmFtZSk6CkBA
IC0xNDkyLDcgKzE0OTIsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGlmIGFyZ3M6
CiAgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCiAgICAgICAgIG91
dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3
ZD1zZWxmLndlYmtpdF9iYXNlKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVu
dikKLSAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRf
Y29tbWFuZCwgZW5jb2RlX2ZvcihvdXRwdXQsIHN0cikgaWYgZGVjb2RlX291dHB1dCBlbHNlIG91
dHB1dCkpCisgICAgICAgIF9sb2cuZGVidWcoJ091dHB1dCBvZiAlczpcbiVzJyAlIChydW5fc2Ny
aXB0X2NvbW1hbmQsIHN0cmluZ191dGlscy5lbmNvZGUob3V0cHV0LCB0YXJnZXRfdHlwZT1zdHIp
IGlmIGRlY29kZV9vdXRwdXQgZWxzZSBvdXRwdXQpKQogICAgICAgICByZXR1cm4gb3V0cHV0CiAK
ICAgICBkZWYgX2J1aWxkX2RyaXZlcihzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kcml2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlci5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIGltcG9y
dCBzaGxleAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcworCiBmcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscwogCi1mcm9tIG9zLnBhdGggaW1wb3J0IG5vcm1wYXRoCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wcm9m
aWxlciBpbXBvcnQgUHJvZmlsZXJGYWN0b3J5Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKIAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC04NywxMSArODcsMTEgQEAg
Y2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X3RpbWU9MCwgbWVh
c3VyZW1lbnRzPU5vbmUsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3Nf
bmFtZT0nPz8nLAogICAgICAgICAgICAgY3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5vbmUs
IHBpZD1Ob25lKToKICAgICAgICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSByZW5hbWVkIHRvIGJl
dHRlciBjbGFyaWZ5IHdoYXQgdGhleSBkby4KLSAgICAgICAgc2VsZi50ZXh0ID0gZGVjb2RlX2Zv
cih0ZXh0LCBzdHIpIGlmIHRleHQgZWxzZSBOb25lCisgICAgICAgIHNlbGYudGV4dCA9IHN0cmlu
Z191dGlscy5kZWNvZGUodGV4dCwgdGFyZ2V0X3R5cGU9c3RyKSBpZiB0ZXh0IGVsc2UgTm9uZQog
ICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0aGUg
dGVzdCBjcmFzaGVzLgogICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBpbWFnZV9oYXNoCiAgICAg
ICAgIHNlbGYuaW1hZ2VfZGlmZiA9IE5vbmUgICMgaW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBh
ZnRlciBjb25zdHJ1Y3Rpb24uCi0gICAgICAgIHNlbGYuYXVkaW8gPSBlbmNvZGVfaWZfbmVjZXNz
YXJ5KGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRl
cGVuZGVudC4KKyAgICAgICAgc2VsZi5hdWRpbyA9IHN0cmluZ191dGlscy5lbmNvZGUoYXVkaW8p
IGlmIGF1ZGlvIGVsc2UgTm9uZSAgIyBCaW5hcnkgZm9ybWF0IGlzIHBvcnQtZGVwZW5kZW50Lgog
ICAgICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKICAgICAgICAgc2VsZi5jcmFzaGVkX3Byb2Nlc3Nf
bmFtZSA9IGNyYXNoZWRfcHJvY2Vzc19uYW1lCiAgICAgICAgIHNlbGYuY3Jhc2hlZF9waWQgPSBj
cmFzaGVkX3BpZApAQCAtMjE1LDcgKzIxNSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAg
ICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogICAgICAgICB0ZXh0LCBh
dWRpbyA9IHNlbGYuX3JlYWRfZmlyc3RfYmxvY2soZGVhZGxpbmUsIGRyaXZlcl9pbnB1dC50ZXN0
X25hbWUpICAjIEZpcnN0IGJsb2NrIGlzIGVpdGhlciB0ZXh0IG9yIGF1ZGlvCiAgICAgICAgIGlt
YWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2so
ZGVhZGxpbmUsIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpICAjIFRoZSBzZWNvbmQgKG9wdGlvbmFs
KSBibG9jayBpcyBpbWFnZSBkYXRhLgotICAgICAgICB0ZXh0ID0gZGVjb2RlX2Zvcih0ZXh0LCBz
dHIpCisgICAgICAgIHRleHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHRleHQsIHRhcmdldF90eXBl
PXN0cikKIAogICAgICAgICBjcmFzaGVkID0gc2VsZi5oYXNfY3Jhc2hlZCgpCiAgICAgICAgIHRp
bWVkX291dCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dApAQCAtMjI5LDkgKzIyOSw5
IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgIyBJbiB0aGUgdGltZW91dCBj
YXNlLCB3ZSBraWxsIHRoZSBodW5nIHByb2Nlc3MgYXMgd2VsbC4KICAgICAgICAgICAgIG91dCwg
ZXJyID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RvcChzZWxmLl9wb3J0LmRyaXZlcl9zdG9wX3Rp
bWVvdXQoKSBpZiBzdG9wX3doZW5fZG9uZSBlbHNlIDAuMCkKICAgICAgICAgICAgIGlmIG91dDoK
LSAgICAgICAgICAgICAgICB0ZXh0ICs9IGRlY29kZV9mb3Iob3V0LCBzdHIpCisgICAgICAgICAg
ICAgICAgdGV4dCArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG91dCwgdGFyZ2V0X3R5cGU9c3RyKQog
ICAgICAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0
ICs9IGRlY29kZV9mb3IoZXJyLCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9t
X3Rlc3QgKz0gc3RyaW5nX3V0aWxzLmRlY29kZShlcnIsIHRhcmdldF90eXBlPXN0cikKICAgICAg
ICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQogCiAgICAgICAgIGNyYXNoX2xvZyA9
IE5vbmUKQEAgLTI4NCw4ICsyODQsOCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAg
Zm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKICAgICAgICAgICAgIG0gPSByZS5tYXRj
aChiJ14oW146XSspOiAoWzAtOV0rKSQnLCBsaW5lKQogICAgICAgICAgICAgaWYgbToKLSAgICAg
ICAgICAgICAgICBwcm9jZXNzX25hbWUgPSBkZWNvZGVfZm9yKG0uZ3JvdXAoMSksIHN0cikKLSAg
ICAgICAgICAgICAgICBwcm9jZXNzX2lkID0gZGVjb2RlX2ZvcihtLmdyb3VwKDIpLCBzdHIpCisg
ICAgICAgICAgICAgICAgcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShtLmdyb3Vw
KDEpLCB0YXJnZXRfdHlwZT1zdHIpCisgICAgICAgICAgICAgICAgcHJvY2Vzc19pZCA9IHN0cmlu
Z191dGlscy5kZWNvZGUobS5ncm91cCgyKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAg
ICAgIGNoaWxkX3Byb2Nlc3Nlc1twcm9jZXNzX25hbWVdLmFwcGVuZChwcm9jZXNzX2lkKQogCiAg
ICAgICAgIHJldHVybiBjaGlsZF9wcm9jZXNzZXMKQEAgLTU0OSw3ICs1NDksNyBAQCBjbGFzcyBE
cml2ZXIob2JqZWN0KToKICAgICBkZWYgX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dChzZWxmLCBv
dXRfbGluZSk6CiAgICAgICAgIGlmIG91dF9saW5lLnN0YXJ0c3dpdGgoYiIjUElEIFVOUkVTUE9O
U0lWRSAtICIpOgogICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChiJyNQSUQgVU5SRVNQT05T
SVZFIC0gKFxTKyknLCBvdXRfbGluZSkKLSAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9
IGRlY29kZV9mb3IobWF0Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2Vz
cycKKyAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUo
bWF0Y2guZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2Vz
cycKICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgb3V0X2xpbmUp
CiAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzX3BpZCA9IGludChtYXRjaC5ncm91cCgxKSkgaWYg
bWF0Y2ggZWxzZSBOb25lCiAgICAgICAgICAgICBlcnJfbGluZSA9ICdXYWl0IG9uIG5vdGlmeURv
bmUgdGltZWQgb3V0LCBwcm9jZXNzICcgKyBjaGlsZF9wcm9jZXNzX25hbWUgKyAnIHBpZCA9ICcg
KyBzdHIoY2hpbGRfcHJvY2Vzc19waWQpCkBAIC01NzIsMjEgKzU3MiwyMSBAQCBjbGFzcyBEcml2
ZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsaWYgZXJyb3Jf
bGluZS5zdGFydHN3aXRoKGIiI0NSQVNIRUQgLSAiKToKICAgICAgICAgICAgIG1hdGNoID0gcmUu
bWF0Y2goYicjQ1JBU0hFRCAtIChcUyspJywgZXJyb3JfbGluZSkKLSAgICAgICAgICAgIHNlbGYu
X2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBp
ZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJworICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9j
ZXNzX25hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRfdHlw
ZT1zdHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCiAgICAgICAgICAgICBtYXRjaCA9IHJl
LnNlYXJjaChiJ3BpZCAoXGQrKScsIGVycm9yX2xpbmUpCiAgICAgICAgICAgICBzZWxmLl9jcmFz
aGVkX3BpZCA9IGludChtYXRjaC5ncm91cCgxKSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAgICAgICAg
ICAgICBfbG9nLmRlYnVnKCclcyBjcmFzaCwgcGlkID0gJXMnICUgKHNlbGYuX2NyYXNoZWRfcHJv
Y2Vzc19uYW1lLCBzdHIoc2VsZi5fY3Jhc2hlZF9waWQpKSkKICAgICAgICAgICAgIHJldHVybiBU
cnVlCiAgICAgICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKGIiI1BST0NFU1MgVU5SRVNQ
T05TSVZFIC0gIik6CiAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI1BST0NFU1MgVU5S
RVNQT05TSVZFIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAgY2hpbGRfcHJvY2Vz
c19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdX
ZWJQcm9jZXNzJworICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxz
LmRlY29kZShtYXRjaC5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSBpZiBtYXRjaCBlbHNlICdX
ZWJQcm9jZXNzJwogICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBl
cnJvcl9saW5lKQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19waWQgPSBpbnQobWF0Y2guZ3Jv
dXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgaXMg
dW5yZXNwb25zaXZlLCBwaWQgPSAlcycgJSAoY2hpbGRfcHJvY2Vzc19uYW1lLCBzdHIoY2hpbGRf
cHJvY2Vzc19waWQpKSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVl
CiAgICAgICAgICAgICBpZiBjaGlsZF9wcm9jZXNzX3BpZDoKICAgICAgICAgICAgICAgICBzZWxm
Ll9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19w
aWQsIHNlbGYuX3RhcmdldF9ob3N0KQotICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3Qg
Kz0gZGVjb2RlX2ZvcihlcnJvcl9saW5lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmVycm9yX2Zy
b21fdGVzdCArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVycm9yX2xpbmUsIHRhcmdldF90eXBlPXN0
cikKICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKCcjU0FNUExFIEZJTklT
SEVEXG4nLCBUcnVlKSAgIyBNdXN0IGJlIGFibGUgdG8gaWdub3JlIGEgYnJva2VuIHBpcGUgaGVy
ZSwgdGFyZ2V0IHByb2Nlc3MgbWF5IGFscmVhZHkgYmUgY2xvc2VkLgogICAgICAgICAgICAgcmV0
dXJuIFRydWUKICAgICAgICAgcmV0dXJuIHNlbGYuaGFzX2NyYXNoZWQoKQpAQCAtNjQwLDcgKzY0
MCw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgZGVmIF9yZWFkX2hlYWRlcihzZWxm
LCBibG9jaywgbGluZSwgaGVhZGVyX3RleHQsIGhlYWRlcl9hdHRyLCBoZWFkZXJfZmlsdGVyPU5v
bmUpOgogICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoaGVhZGVyX3RleHQpIGFuZCBnZXRhdHRy
KGJsb2NrLCBoZWFkZXJfYXR0cikgaXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gZGVjb2Rl
X2ZvcihsaW5lLnNwbGl0KClbMV0sIHN0cikKKyAgICAgICAgICAgIHZhbHVlID0gc3RyaW5nX3V0
aWxzLmRlY29kZShsaW5lLnNwbGl0KClbMV0sIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAg
IGlmIGhlYWRlcl9maWx0ZXI6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBoZWFkZXJfZmlsdGVy
KHZhbHVlKQogICAgICAgICAgICAgc2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIsIHZhbHVlKQpA
QCAtNjYxLDcgKzY2MSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgICAgICMgTm90
ZSwgd2UncmUgbm90IHJlYWRpbmcgRXhwZWN0ZWRIYXNoOiBoZXJlLCBidXQgd2UgY291bGQuCiAg
ICAgICAgICMgSWYgdGhlIGxpbmUgd2Fzbid0IGEgaGVhZGVyLCB3ZSBqdXN0IGFwcGVuZCBpdCB0
byB0aGUgY29udGVudC4KLSAgICAgICAgYmxvY2suY29udGVudCA9IGVuY29kZV9pZl9uZWNlc3Nh
cnkoYmxvY2suY29udGVudCkgKyBsaW5lCisgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzdHJpbmdf
dXRpbHMuZW5jb2RlKGJsb2NrLmNvbnRlbnQpICsgbGluZQogCiAgICAgZGVmIF9zdHJpcF9lb2Yo
c2VsZiwgbGluZSk6CiAgICAgICAgIGlmIGxpbmUgYW5kIGxpbmUuZW5kc3dpdGgoYiIjRU9GXG4i
KToKQEAgLTcwNiw3ICs3MDYsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBVbmxpa2UgSFRUUCwgRFJUIGR1bXBzIHRoZSBjb250ZW50IHJpZ2h0IGFm
dGVyIHByaW50aW5nIGEgQ29udGVudC1MZW5ndGggaGVhZGVyLgogICAgICAgICAgICAgICAgICMg
RG9uJ3Qgd2FpdCB1bnRpbCB3ZSdyZSBkb25lIHdpdGggaGVhZGVycywganVzdCByZWFkIHRoZSBi
aW5hcnkgYmxvYiByaWdodCBub3cuCiAgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGhf
YmVmb3JlX2hlYWRlcl9jaGVjayAhPSBibG9jay5fY29udGVudF9sZW5ndGg6Ci0gICAgICAgICAg
ICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYuX3NlcnZl
cl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBibG9jay5fY29udGVudF9sZW5ndGgpKQor
ICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gc3RyaW5nX3V0aWxzLmVuY29kZShz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRf
bGVuZ3RoKSkKIAogICAgICAgICAgICAgaWYgZXJyX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYg
c2VsZi5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaF9vcl91bnJlc3BvbnNpdmVuZXNzKGVycl9saW5l
KToKQEAgLTcyNCw5ICs3MjQsOSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgIyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIHJlbW92ZWQgb25jZSA8cmRhcjov
L3Byb2JsZW0vMTg3MDE0NDc+IGlzIGZpeGVkLgogICAgICAgICAgICAgICAgICAgICBkZWFkbGlu
ZSArPSAxMCAqIDYwICogMTAwMAogICAgICAgICAgICAgICAgIGlmIGFzYW5fdmlvbGF0aW9uX2Rl
dGVjdGVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jcmFzaF9yZXBvcnRfZnJvbV9kcml2
ZXIgKz0gZGVjb2RlX2ZvcihlcnJfbGluZSwgc3RyKQorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9jcmFzaF9yZXBvcnRfZnJvbV9kcml2ZXIgKz0gc3RyaW5nX3V0aWxzLmRlY29kZShlcnJfbGlu
ZSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGRlY29kZV9mb3IoZXJyX2xpbmUsIHN0cikK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gc3RyaW5nX3V0aWxz
LmRlY29kZShlcnJfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAgICAgIGlmIGFzYW5fdmlv
bGF0aW9uX2RldGVjdGVkIGFuZCBub3Qgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6CiAgICAg
ICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LnByb2Nlc3NfbmFtZSgpCkBAIC03NTksNyArNzU5LDcgQEAgY2xhc3MgQ29udGVudEJsb2NrKG9i
amVjdCk6CiAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNv
ZGUoc2VsZi5jb250ZW50KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gZGVjb2RlX2ZvcihzZWxmLmNvbnRlbnQs
IHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IHN0cmluZ191dGls
cy5kZWNvZGUoc2VsZi5jb250ZW50LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBleGNl
cHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250
ZW50ID0gTm9uZQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlm
Zi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlm
Zi5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lt
YWdlX2RpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDcgQEAgaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCByZQogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBz
ZXJ2ZXJfcHJvY2VzcwotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5
IGltcG9ydCBCeXRlc0lPLCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5Citmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgc3RyaW5nX3V0aWxzCiAKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTksOSArNTgsOSBAQCBjbGFzcyBJbWFnZURpZmZl
cihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KHRvbGVyYW5jZSkKICAgICAg
ICAgICAgICMgTm90ZSB0aGF0IGFsdGhvdWdoIHdlIGFyZSBoYW5kZWQgJ29sZCcsICduZXcnLCBJ
bWFnZURpZmYgd2FudHMgJ25ldycsICdvbGQnLgogICAgICAgICAgICAgYnVmZmVyID0gQnl0ZXNJ
TygpCi0gICAgICAgICAgICBidWZmZXIud3JpdGUoZW5jb2RlX2lmX25lY2Vzc2FyeSgnQ29udGVu
dC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oYWN0dWFsX2NvbnRlbnRzKSkpKQorICAgICAgICAg
ICAgYnVmZmVyLndyaXRlKHN0cmluZ191dGlscy5lbmNvZGUoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxu
Jy5mb3JtYXQobGVuKGFjdHVhbF9jb250ZW50cykpKSkKICAgICAgICAgICAgIGJ1ZmZlci53cml0
ZShhY3R1YWxfY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXIud3JpdGUoZW5jb2RlX2lmX25l
Y2Vzc2FyeSgnQ29udGVudC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oZXhwZWN0ZWRfY29udGVu
dHMpKSkpCisgICAgICAgICAgICBidWZmZXIud3JpdGUoc3RyaW5nX3V0aWxzLmVuY29kZSgnQ29u
dGVudC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oZXhwZWN0ZWRfY29udGVudHMpKSkpCiAgICAg
ICAgICAgICBidWZmZXIud3JpdGUoZXhwZWN0ZWRfY29udGVudHMpCiAgICAgICAgICAgICBzZWxm
Ll9wcm9jZXNzLndyaXRlKGJ1ZmZlci5nZXR2YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX3JlYWQoKQpAQCAtOTIsMTIgKzkxLDEyIEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6
CiAKICAgICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKGInQ29udGVudC1MZW5ndGgnKToK
ICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goYidDb250ZW50LUxlbmd0aDogKFxkKyknLCBv
dXRwdXQpCi0gICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoZGVjb2RlX2Zvciht
Lmdyb3VwKDEpLCBzdHIpKQorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHN0
cmluZ191dGlscy5kZWNvZGUobS5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAg
ICAgICAgICBvdXRwdXRfaW1hZ2UgPSBzZWxmLl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5l
LCBjb250ZW50X2xlbmd0aCkKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9wcm9jZXNz
LnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAg
ICAgICBzdGRlcnIgPSBkZWNvZGVfZm9yKHNlbGYuX3Byb2Nlc3MucG9wX2FsbF9idWZmZXJlZF9z
dGRlcnIoKSwgc3RyKQorICAgICAgICBzdGRlcnIgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYu
X3Byb2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAg
ICAgICBlcnJfc3RyID0gJycKICAgICAgICAgaWYgc3RkZXJyOgogICAgICAgICAgICAgZXJyX3N0
ciArPSAiSW1hZ2VEaWZmIHByb2R1Y2VkIHN0ZGVyciBvdXRwdXQ6XG4iICsgc3RkZXJyCkBAIC0x
MTEsNyArMTEwLDcgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgICAgIG0g
PSByZS5tYXRjaChiJ2RpZmY6ICguKyklIChwYXNzZWR8ZmFpbGVkKScsIG91dHB1dCkKICAgICAg
ICAgICAgIGlmIG0uZ3JvdXAoMikgPT0gYidwYXNzZWQnOgogICAgICAgICAgICAgICAgIHJldHVy
biAoTm9uZSwgMCwgTm9uZSkKLSAgICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KGRlY29k
ZV9mb3IobS5ncm91cCgxKSwgc3RyKSkKKyAgICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0
KHN0cmluZ191dGlscy5kZWNvZGUobS5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSkKIAogICAg
ICAgICByZXR1cm4gKG91dHB1dF9pbWFnZSwgZGlmZl9wZXJjZW50LCBlcnJfc3RyIG9yIE5vbmUp
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weQko
cmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRl
Y3Rvci5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOSBAQAogaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCByZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9p
Zl9uZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC03
OSw3ICs4MCw3IEBAIGNsYXNzIExlYWtEZXRlY3RvcihvYmplY3QpOgogICAgIGRlZiBfcGFyc2Vf
bGVha3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCk6CiAgICAgICAgIGlmIG5vdCBsZWFrc19v
dXRwdXQ6CiAgICAgICAgICAgICByZXR1cm4gMCwgMCwgMAotICAgICAgICBsZWFrc19vdXRwdXQg
PSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGxlYWtzX291dHB1dCkKKyAgICAgICAgbGVha3Nfb3V0cHV0
ID0gc3RyaW5nX3V0aWxzLmVuY29kZShsZWFrc19vdXRwdXQpCiAgICAgICAgIF8sIGNvdW50LCBi
eXRlcyA9IHJlLnNlYXJjaChiJ1Byb2Nlc3MgKD9QPHBpZD5cXGQrKTogKD9QPGNvdW50PlxcZCsp
IGxlYWtzPyBmb3IgKD9QPGJ5dGVzPlxcZCspIHRvdGFsJywgbGVha3Nfb3V0cHV0KS5ncm91cHMo
KQogICAgICAgICBleGNsdWRlZF9tYXRjaCA9IHJlLnNlYXJjaChiJyg/UDxleGNsdWRlZD5cXGQr
KSBsZWFrcz8gZXhjbHVkZWQnLCBsZWFrc19vdXRwdXQpCiAgICAgICAgIGV4Y2x1ZGVkID0gZXhj
bHVkZWRfbWF0Y2guZ3JvdXAoJ2V4Y2x1ZGVkJykgaWYgZXhjbHVkZWRfbWF0Y2ggZWxzZSAwCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3Jf
dmFsZ3JpbmQucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICsz
MSwxMCBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogaW1wb3J0IGhhc2hs
aWIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKLWltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHht
bC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2VTdHJpbmcKIGZyb20geG1sLnBhcnNlcnMuZXhwYXQg
aW1wb3J0IEV4cGF0RXJyb3IKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIApAQCAtMTk4LDcgKzE5Nyw3IEBAIGNsYXNzIFZhbGdyaW5kRXJyb3I6CiAgICAg
ICAgICMgVGhpcyBpcyBhIGRldmljZS1pbmRlcGVuZGVudCBoYXNoIGlkZW50aWZ5aW5nIHRoZSBz
dXBwcmVzc2lvbi4KICAgICAgICAgIyBCeSBwcmludGluZyBvdXQgdGhpcyBoYXNoIHdlIGNhbiBm
aW5kIGR1cGxpY2F0ZSByZXBvcnRzIGJldHdlZW4gdGVzdHMgYW5kCiAgICAgICAgICMgZGlmZmVy
ZW50IHNoYXJkcyBydW5uaW5nIG9uIG11bHRpcGxlIGJ1aWxkYm90cwotICAgICAgICByZXR1cm4g
aW50KGhhc2hsaWIubWQ1KGVuY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi51bmlxdWVfc3RyaW5nKCkp
KS5oZXhkaWdlc3QoKVs6MTZdLCAxNikKKyAgICAgICAgcmV0dXJuIGludChoYXNobGliLm1kNShz
dHJpbmdfdXRpbHMuZW5jb2RlKHNlbGYudW5pcXVlX3N0cmluZygpKSkuaGV4ZGlnZXN0KClbOjE2
XSwgMTYpCiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNoKHNl
bGYudW5pcXVlX3N0cmluZygpKQpAQCAtMjI0LDcgKzIyMyw3IEBAIGNsYXNzIExlYWtEZXRlY3Rv
clZhbGdyaW5kKG9iamVjdCk6CiAgICAgICAgICAgICBwYXJzZWRfc3RyaW5nID0gcGFyc2VTdHJp
bmcobGVha3Nfb3V0cHV0KQogICAgICAgICBleGNlcHQgRXhwYXRFcnJvciBhcyBlOgogICAgICAg
ICAgICAgcGFyc2VfZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAgX2xvZy5lcnJvcigiY291bGQg
bm90IHBhcnNlICVzOiAlcyIgJSAoZGVjb2RlX2ZvcihsZWFrc19vdXRwdXQsIHN0ciksIGUpKQor
ICAgICAgICAgICAgX2xvZy5lcnJvcigiY291bGQgbm90IHBhcnNlICVzOiAlcyIgJSAoc3RyaW5n
X3V0aWxzLmRlY29kZShsZWFrc19vdXRwdXQsIHRhcmdldF90eXBlPXN0ciksIGUpKQogICAgICAg
ICAgICAgcmV0dXJuCiAKICAgICAgICAgY3VyX3JlcG9ydF9lcnJvcnMgPSBzZXQoKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVj
dG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTMgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2Zvcgog
ZnJvbSB3ZWJraXRweS5wb3J0LmxlYWtkZXRlY3Rvcl92YWxncmluZCBpbXBvcnQgTGVha0RldGVj
dG9yVmFsZ3JpbmQKIAogCkBAIC04MDgsNyArODA4LDcgQEAgU3VwcHJlc3Npb25zIHVzZWQ6CiAK
IGRlZiBtb2NrX3J1bl9jcHBmaWx0X2NvbW1hbmQoYXJncyk6CiAgICAgaWYgYXJnc1swXSA9PSAn
YysrZmlsdCc6Ci0gICAgICAgIHJldHVybiB2YWxncmluZF9vdXRwdXRfY3BwZmlsdF9tYXBbZGVj
b2RlX2ZvcihhcmdzWzJdLCBzdHIpXQorICAgICAgICByZXR1cm4gdmFsZ3JpbmRfb3V0cHV0X2Nw
cGZpbHRfbWFwW3N0cmluZ191dGlscy5kZWNvZGUoYXJnc1syXSwgdGFyZ2V0X3R5cGU9c3RyKV0K
ICAgICByZXR1cm4gIiIKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGlu
dXhfZ2V0X2NyYXNoX2xvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDE2ICsyNywxNSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
aW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHNodXRpbAogaW1w
b3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIAogCkBAIC0xMTQs
NyArMTEzLDcgQEAgY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0b3Iob2JqZWN0KToKIAogICAgICAg
ICBwcm9jID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKGNtZCwgc3RkaW49Tm9uZSwgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgY3Jhc2hfbG9n
LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKCkKLSAgICAgICAgZXJyb3JzID0gZGVjb2RlX2lm
X25lY2Vzc2FyeShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3Bs
aXRsaW5lcygpCisgICAgICAgIGVycm9ycyA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RyKHN0ZGVy
ciBvciAnPGVtcHR5PicpLCBlcnJvcnM9J2lnbm9yZScpLnNwbGl0bGluZXMoKQogICAgICAgICBy
ZXR1cm4gY3Jhc2hfbG9nLCBlcnJvcnMKIAogICAgIGRlZiBnZW5lcmF0ZV9jcmFzaF9sb2coc2Vs
Ziwgc3Rkb3V0LCBzdGRlcnIpOgpAQCAtMTQ5LDcgKzE0OCw3IEBAIGNsYXNzIEdEQkNyYXNoTG9n
R2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgIGVsaWYgY29yZWR1bXBjdGw6CiAgICAgICAgICAg
ICBjcmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF90cmFjZV9mcm9tX3N5c3RlbWQoY29yZWR1
bXBjdGwsIHBpZF9yZXByZXNlbnRhdGlvbikKIAotICAgICAgICBzdGRlcnJfbGluZXMgPSBlcnJv
cnMgKyBkZWNvZGVfaWZfbmVjZXNzYXJ5KHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3Jz
PSdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsg
c3RyaW5nX3V0aWxzLmRlY29kZShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdu
b3JlJykuc3BsaXRsaW5lcygpCiAgICAgICAgIGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERF
UlI6ICcgKyBzdGRlcnJfbGluZSkgZm9yIHN0ZGVycl9saW5lIGluIHN0ZGVycl9saW5lcykKICAg
ICAgICAgY3BwZmlsdF9wcm9jID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKAogICAgICAgICAgICAg
WydjKytmaWx0J10sIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9tb2NrX2RydC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbW9ja19kcnQucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9tb2NrX2RydC5weQkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDEyIEBAIHNj
cmlwdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXIKIGlmIHNjcmlwdF9kaXIgbm90
IGluIHN5cy5wYXRoOgogICAgIHN5cy5wYXRoLmFwcGVuZChzY3JpcHRfZGlyKQogCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBm
cm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJJbnB1dCwgRHJpdmVyT3V0cHV0
LCBEcml2ZXJQcm94eQogZnJvbSB3ZWJraXRweS5wb3J0LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0
b3J5CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTIzMSw3ICsyMzIsNyBAQCBjbGFzcyBN
b2NrRFJUKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBvdXRwdXQuaW1hZ2VfaGFzaCAhPSB0ZXN0
X2lucHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdD
b250ZW50LVR5cGU6IGltYWdlL3BuZ1xuJykKICAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQu
d3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlc1xuJyAlIGxlbihvdXRwdXQuaW1hZ2UpKQotICAgICAg
ICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShkZWNvZGVfZm9yKG91dHB1dC5pbWFnZSwgc3Ry
KSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoc3RyaW5nX3V0aWxzLmRlY29k
ZShvdXRwdXQuaW1hZ2UsIHRhcmdldF90eXBlPXN0cikpCiAgICAgICAgIHNlbGYuX3N0ZG91dC53
cml0ZSgnI0VPRlxuJykKICAgICAgICAgc2VsZi5fc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc2Vs
Zi5fc3RkZXJyLndyaXRlKCcjRU9GXG4nKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3IgTW9ja0RSVC4iIiIK
IAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2Nr
IGltcG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21w
YXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBtb2Nr
X2RydAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiBmcm9tIHdlYmtp
dHB5LnBvcnQgaW1wb3J0IHRlc3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9z
ZXJ2ZXJfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2VydmVyX3Byb2Nlc3MucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsOCAr
MzUsNyBAQCBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVj
ZXNzYXJ5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKICMgTm90ZSB0
aGF0IGFsdGhvdWdoIHdpbjMyIHB5dGhvbiBkb2VzIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24g
b2YKICMgdGhlIHdpbjMyIHNlbGVjdCBBUEksIGl0IG9ubHkgd29ya3Mgb24gc29ja2V0cywgYW5k
IG5vdCBvbiB0aGUgbmFtZWQgcGlwZXMKQEAgLTE4NSw3ICsxODQsNyBAQCBjbGFzcyBTZXJ2ZXJQ
cm9jZXNzKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jOgogICAgICAgICAgICAg
c2VsZi5fc3RhcnQoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGlu
LndyaXRlKGVuY29kZV9pZl9uZWNlc3NhcnkoYnl0ZXMpKQorICAgICAgICAgICAgc2VsZi5fcHJv
Yy5zdGRpbi53cml0ZShzdHJpbmdfdXRpbHMuZW5jb2RlKGJ5dGVzKSkKICAgICAgICAgICAgIHNl
bGYuX3Byb2Muc3RkaW4uZmx1c2goKQogICAgICAgICBleGNlcHQgKElPRXJyb3IsIFZhbHVlRXJy
b3IpIGFzIGU6CiAgICAgICAgICAgICBzZWxmLnN0b3AoMC4wKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHJldmlzaW9u
IDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19t
b2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IHN0cmluZ191dGlscwogCiAKIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqPU5vbmUsIG5hbWU9Tm9uZSwgY21kPU5vbmUsIGVu
dj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIGxpbmVzPU5vbmUsIGNyYXNoZWQ9RmFs
c2UsIHRhcmdldF9ob3N0PU5vbmUsIGNyYXNoX21lc3NhZ2U9Tm9uZSk6CiAgICAgICAgIHNlbGYu
dGltZWRfb3V0ID0gRmFsc2UKLSAgICAgICAgc2VsZi5saW5lcyA9IFtlbmNvZGVfaWZfbmVjZXNz
YXJ5KGxpbmUpIGZvciBsaW5lIGluIChsaW5lcyBvciBbXSldCisgICAgICAgIHNlbGYubGluZXMg
PSBbc3RyaW5nX3V0aWxzLmVuY29kZShsaW5lKSBmb3IgbGluZSBpbiAobGluZXMgb3IgW10pXQog
ICAgICAgICBzZWxmLmNyYXNoZWQgPSBjcmFzaGVkCiAgICAgICAgIHNlbGYud3JpdGVzID0gW10K
ICAgICAgICAgc2VsZi5jbWQgPSBjbWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC90ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0
LnB5CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDEyIEBACiAKIGltcG9ydCB0aW1lCiAK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5w
b3J0IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRp
b24KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9n
cwogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgUFVCTElDX1RB
QkxFLCBWZXJzaW9uTmFtZU1hcAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIAogIyBUaGlz
IHNldHMgYmFzaWMgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QuIEVhY2ggaW5kaXZpZHVhbCBleHBl
Y3RhdGlvbgpAQCAtNDQyLDggKzQ0Myw4IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAg
ICByZXR1cm4gJ1JlbGVhc2UnCiAKICAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9j
b250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2U9Tm9uZSk6Ci0gICAgICAgIGV4cGVj
dGVkX2NvbnRlbnRzID0gZW5jb2RlX2lmX25lY2Vzc2FyeShleHBlY3RlZF9jb250ZW50cykKLSAg
ICAgICAgYWN0dWFsX2NvbnRlbnRzID0gZW5jb2RlX2lmX25lY2Vzc2FyeShhY3R1YWxfY29udGVu
dHMpCisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gc3RyaW5nX3V0aWxzLmVuY29kZShleHBl
Y3RlZF9jb250ZW50cykKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gc3RyaW5nX3V0aWxzLmVu
Y29kZShhY3R1YWxfY29udGVudHMpCiAgICAgICAgIGRpZmZlZCA9IGFjdHVhbF9jb250ZW50cyAh
PSBleHBlY3RlZF9jb250ZW50cwogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIGFuZCBu
b3QgZXhwZWN0ZWRfY29udGVudHM6CiAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUp
CkBAIC00NTMsOCArNDU0LDggQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICAgICBh
c3NlcnQgdG9sZXJhbmNlID09IDAKICAgICAgICAgaWYgZGlmZmVkOgogICAgICAgICAgICAgcmV0
dXJuICgiPCB7fVxuLS0tXG4+IHt9XG4iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBkZWNvZGVf
Zm9yKGV4cGVjdGVkX2NvbnRlbnRzLCBzdHIpLAotICAgICAgICAgICAgICAgIGRlY29kZV9mb3Io
YWN0dWFsX2NvbnRlbnRzLCBzdHIpLAorICAgICAgICAgICAgICAgIHN0cmluZ191dGlscy5kZWNv
ZGUoZXhwZWN0ZWRfY29udGVudHMsIHRhcmdldF90eXBlPXN0ciksCisgICAgICAgICAgICAgICAg
c3RyaW5nX3V0aWxzLmRlY29kZShhY3R1YWxfY29udGVudHMsIHRhcmdldF90eXBlPXN0ciksCiAg
ICAgICAgICAgICApLCAxLCBOb25lKQogICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCiAK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXN1bHRzL3VwbG9hZF91bml0
dGVzdC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXN1
bHRzL3VwbG9hZF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTAgQEAg
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgQnl0ZXNJTworCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMudXBsb2FkIGltcG9y
dCBVcGxvYWQKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgbW9jawotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRlc0lPCiAKIGlmIHN5
cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CiAgICAgYmFzZXN0cmluZyA9IHN0cgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5CShyZXZpc2lvbiAyNjQ2
NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTIgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUK
IAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5kaWZmX3BhcnNlciBpbXBvcnQgRGlmZlBhcnNlcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2Zv
cgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTU2LDcgKzU3LDcg
QEAgY2xhc3MgUGF0Y2hSZWFkZXIob2JqZWN0KToKICAgICBkZWYgY2hlY2soc2VsZiwgcGF0Y2hf
c3RyaW5nLCBmcz1Ob25lKToKICAgICAgICAgIiIiQ2hlY2sgc3R5bGUgaW4gdGhlIGdpdmVuIHBh
dGNoLiIiIgogICAgICAgICBmcyA9IGZzIG9yIEZpbGVTeXN0ZW0oKQotICAgICAgICBwYXRjaF9z
dHJpbmcgPSBkZWNvZGVfZm9yKHBhdGNoX3N0cmluZywgc3RyKQorICAgICAgICBwYXRjaF9zdHJp
bmcgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHBhdGNoX3N0cmluZywgdGFyZ2V0X3R5cGU9c3RyKQog
ICAgICAgICBwYXRjaF9maWxlcyA9IERpZmZQYXJzZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMo
KSkuZmlsZXMKIAogICAgICAgICAjIElmIHRoZSB1c2VyIHVzZXMgZ2l0LCBjaGVja2luZyBzdWJ2
ZXJzaW9uIGNvbmZpZyBmaWxlIG9ubHkgb25jZSBpcyBlbm91Z2guCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkocmV2aXNpb24gMjY0NjQwKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDEyICs0MywxMiBAQCBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBv
cnQgcmUKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBzeXMKIGltcG9ydCB1bmljb2RlZGF0YQogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmNo
ZWNrZXJzLmNvbW1vbiBpbXBvcnQgbWF0Y2gsIHNlYXJjaCwgc3ViLCBzdWJuCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9u
LnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQogCiAjIFRoZSBrZXkgdG8gdXNl
IHRvIHByb3ZpZGUgYSBjbGFzcyB0byBmYWtlIGxvYWRpbmcgYSBoZWFkZXIgZmlsZS4KIElOQ0xV
REVfSU9fSU5KRUNUSU9OX0tFWSA9ICdpbmNsdWRlX2hlYWRlcl9pbycKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2NwcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsOSBAQCBpbXBv
cnQgb3MucGF0aAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lm
X25lY2Vzc2FyeQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUKIGZyb20g
d2Via2l0cHkuc3R5bGUuY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyCiBmcm9tIHdlYmtp
dHB5LnN0eWxlLmZpbHRlciBpbXBvcnQgRmlsdGVyQ29uZmlndXJhdGlvbgpAQCAtMjQ2NSw3ICsy
NDY3LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBk
ZWYgZG9fdGVzdChzZWxmLCByYXdfYnl0ZXMsIGhhc19pbnZhbGlkX3V0ZjgpOgogICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRUcnVlKQogICAg
ICAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfaWZfbmVjZXNzYXJ5KHJhd19ieXRl
cywgZW5jb2Rpbmc9J3V0ZjgnLCBlcnJvcnM9J3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29kZShyYXdfYnl0
ZXMsIGVuY29kaW5nPSd1dGY4JywgZXJyb3JzPSdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAg
ICAgICMgVGhlIHdhcm5pbmcgYXBwZWFycyBvbmx5IG9uY2UuCiAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9w
eXRob24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9weXRob24ucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw5
IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1w
b3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBp
bXBvcnQgT3V0cHV0Q2FwdHVyZVNjb3BlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmlu
ZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5z
dGFsbGVkIGltcG9ydCBweWNvZGVzdHlsZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21h
aW4ucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9t
YWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTYgQEAgaW1wb3J0IHRyYWNlYmFj
awogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGls
cyBpbXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBp
bXBvcnQgSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBm
cm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50
ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogZnJvbSB3ZWJraXRweS5y
ZXN1bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMub3B0aW9u
cyBpbXBvcnQgdXBsb2FkX29wdGlvbnMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmlu
Z0lPCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogX2hvc3QgPSBIb3N0
KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOCBAQCBpbXBvcnQgbG9nZ2lu
ZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBp
bXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L3ByaW50ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3By
aW50ZXIucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9wcmludGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5ICsyMywxMCBAQAogCiBpbXBvcnQg
bG9nZ2luZwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0K
IGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5lcl91bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgcmUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3Ry
aW5nSU8KKwogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwog
ZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0cHku
dGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0L3NraXBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90ZXN0L3NraXBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGVzdC9za2lwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3
ICsyMyw4IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBv
cnQgc2tpcF9pZgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJj
X2NvbW1hbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9pcmNfY29tbWFuZC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMw
LDEyIEBAIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogCitmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcgaW1wb3J0IGlyYyBhcyBjb25maWdfaXJjCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcg
aW1wb3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9y
dCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQud2ViIGltcG9ydCBXZWIK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9y
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNv
ZGUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFRlcm1pbmF0ZVF1
ZXVlCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgam9pbl93aXRoX3NlcGFyYXRv
cnMKIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5
d2FybmluZ3N5c3RlbS5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkod29ya2luZyBjb3B5KQpA
QCAtMjksMjAgKzI5LDE3IEBACiAKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0
IG9zCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgogaW1wb3J0IHN5cwogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAot
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBEZXByZWNhdGVkUG9ydAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvcgogZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5lYXJseXdhcm5pbmdzeXN0ZW10YXNrIGltcG9ydCBFYXJseVdhcm5pbmdT
eXN0ZW1UYXNrLCBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdhdGUKIGZyb20gd2Via2l0cHku
dG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRz
UmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmpzY3Rlc3RyZXN1bHRzcmVhZGVyIGltcG9y
dCBKU0NUZXN0UmVzdWx0c1JlYWRlcgogZnJvbSB3ZWJraXRweS50b29sLmJvdC5wYXRjaGFuYWx5
c2lzdGFzayBpbXBvcnQgVW5hYmxlVG9BcHBseVBhdGNoLCBQYXRjaElzTm90VmFsaWQsIFBhdGNo
SXNOb3RBcHBsaWNhYmxlCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9y
dCBRdWV1ZUVuZ2luZQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQg
QWJzdHJhY3RSZXZpZXdRdWV1ZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18p
CkBAIC0xNTYsOSArMTUzLDkgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJz
dHJhYwogICAgICAgICBjbGFzc2VzID0gW10KICAgICAgICAgZm9yIG5hbWUsIGNvbmZpZyBpbiBl
d3Nlcy5pdGVtcygpOgogICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToK
LSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gZW5jb2RlX2ZvcihuYW1lLCBzdHIpLnRyYW5z
bGF0ZSgnIC0nKQorICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBzdHJpbmdfdXRpbHMuZW5j
b2RlKG5hbWUsIHRhcmdldF90eXBlPXN0cikudHJhbnNsYXRlKCcgLScpCiAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBlbmNvZGVfZm9yKG5hbWUsIHN0ciku
dHJhbnNsYXRlKE5vbmUsICcgLScpCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IHN0cmlu
Z191dGlscy5lbmNvZGUobmFtZSwgdGFyZ2V0X3R5cGU9c3RyKS50cmFuc2xhdGUoTm9uZSwgJyAt
JykKIAogICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQodHlwZSh0cmFuc2xhdGVkLCAoY2xzLCks
IHsKICAgICAgICAgICAgICAgICAnbmFtZSc6IGNvbmZpZy5nZXQoJ25hbWUnLCBjb25maWdbJ3Bv
cnQnXSArICctZXdzJyksCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXMucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsy
NywxOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGNvZGVjcwog
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQg
dGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlv
bgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQ
b3J0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9y
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVz
SU8KIGZyb20gd2Via2l0cHkudG9vbC5ib3QuYm90aW5mbyBpbXBvcnQgQm90SW5mbwotZnJvbSB3
ZWJraXRweS50b29sLmJvdC5mbGFreXRlc3RyZXBvcnRlciBpbXBvcnQgRmxha3lUZXN0UmVwb3J0
ZXIKLWZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0
IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoYW5h
bHlzaXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNoSXNOb3RWYWxpZAogZnJv
bSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVl
RW5naW5lRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVwc2VxdWVuY2Ug
aW1wb3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgotZnJvbSB3ZWJraXRweS50b29sLm11bHRp
Y29tbWFuZHRvb2wgaW1wb3J0IENvbW1hbmQsIFRyeUFnYWluCitmcm9tIHdlYmtpdHB5LnRvb2wu
bXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NjQwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCi1pbXBvcnQgb3MKLQotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2Nt
IGltcG9ydCBDaGVja291dE5lZWRzVXBkYXRlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5s
YXlvdXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKLWZyb20gd2Via2l0cHku
Y29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0
cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSB3ZWJraXRweS50b29sLmNv
bW1hbmRzLnF1ZXVlcyBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVl
c3Rlc3QgaW1wb3J0IFF1ZXVlc1Rlc3QKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVw
c2VxdWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZQotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29s
IGltcG9ydCBNb2NrVG9vbCwgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9v
bCBpbXBvcnQgTW9ja1Rvb2wKIAogCiBjbGFzcyBUZXN0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVl
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRl
ZC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2hhc2xhbmRlZC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDEzIEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9y
dCB0ZW1wZmlsZQogCi1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVwIGltcG9y
dCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlw
dEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgZGlmZl9wYXJzZXIK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5n
SU8KIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzIGltcG9ydCBjb25maXJtZGlmZgogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91
bml0dGVzdC5weQkocmV2aXNpb24gMjY0NjQwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsy
OSwxMSBAQCBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1w
b3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9y
dCBXZWJLaXRGaW5kZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgdW5pY29kZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAg
aW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGlt
cG9ydCBfVzNDVGVzdENvbnZlcnRlcgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2V4cG9ydGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfZXhwb3J0ZXIucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsy
NywxMSBAQAogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBv
cnQgdGltZQogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0
IGltcG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKQEAgLTM5LDcgKzQw
LDYgQEAgZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BURwogZnJvbSB3ZWJr
aXRweS53M2Mud3B0X2xpbnRlciBpbXBvcnQgV1BUTGludGVyCiBmcm9tIHdlYmtpdHB5LnczYy5j
b21tb24gaW1wb3J0IFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUsIFdQVF9HSF9VUkwsIFdQ
VFBhdGhzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lm
X25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgog
ICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJyb3IKQEAgLTE2MCw3ICsxNjAsNyBA
QCBjbGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4g
bGluZS5zcGxpdChiJyAnKVstMV0KIAogICAgIGRlZiBfaXNfaWdub3JlZF9maWxlKHNlbGYsIGZp
bGVuYW1lKToKLSAgICAgICAgZmlsZW5hbWUgPSBkZWNvZGVfZm9yKGZpbGVuYW1lLCBzdHIpCisg
ICAgICAgIGZpbGVuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShmaWxlbmFtZSwgdGFyZ2V0X3R5
cGU9c3RyKQogICAgICAgICBmb3Igc3VmZml4IGluIEVYQ0xVREVEX0ZJTEVfU1VGRklYRVM6CiAg
ICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aChzdWZmaXgpOgogICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCkBAIC0xODUsMTAgKzE4NSwxMCBAQCBjbGFzcyBXZWJQbGF0Zm9ybVRlc3RF
eHBvcnRlcihvYmplY3QpOgogICAgICAgICBfLCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3Rl
bS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0X2V4cG9ydF9wYXRjaCcpCiAgICAgICAgIHBhdGNo
X2RhdGEgPSBzZWxmLl93cHRfcGF0Y2gKICAgICAgICAgaWYgYidkaWZmJyBub3QgaW4gcGF0Y2hf
ZGF0YToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0
Y2ggZGF0YSBpczogInt9IicuZm9ybWF0KGRlY29kZV9mb3IocGF0Y2hfZGF0YSwgc3RyKSkpCisg
ICAgICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEg
aXM6ICJ7fSInLmZvcm1hdChzdHJpbmdfdXRpbHMuZGVjb2RlKHBhdGNoX2RhdGEsIHRhcmdldF90
eXBlPXN0cikpKQogICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAjIEZJWE1FOiBXZSBj
YW4gcHJvYmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRv
IHRoYXQgcmVwbGFjZW1lbnQuCi0gICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxh
Y2UoZW5jb2RlX2lmX25lY2Vzc2FyeShXRUJLSVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCisgICAg
ICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2Uoc3RyaW5nX3V0aWxzLmVuY29kZShX
RUJLSVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCiAKICAgICAgICAgIyBGSVhNRTogU3VwcG9ydCBz
dHJpcHBpbmcgb2YgPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgLS0+IGNvbW1lbnRzLgogICAgICAg
ICBzZWxmLmhhc193ZWJraXRfdGVzdF9ydW5uZXJfc3BlY2lmaWNfY2hhbmdlcyA9IGInd2Via2l0
LXRlc3QtcnVubmVyJyBpbiBwYXRjaF9kYXRhCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy93cHRfZ2l0aHViLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3dwdF9naXRodWIucHkJKHJldmlzaW9uIDI2NDY0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3dwdF9naXRodWIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMiBA
QCBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHN5cworCiBm
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgc3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBt
ZW1vaXplZAogZnJvbSB3ZWJraXRweS53M2MuY29tbW9uIGltcG9ydCBXUFRfR0hfT1JHLCBXUFRf
R0hfUkVQT19OQU1FLCBFWFBPUlRfUFJfTEFCRUwKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2Zvcgog
CiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogICAgIGZyb20gdXJsbGliLmVycm9yIGlt
cG9ydCBIVFRQRXJyb3IKQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgV1BUR2l0SHViKG9iamVjdCk6
CiAKICAgICBkZWYgYXV0aF90b2tlbihzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuaGFzX2Ny
ZWRlbnRpYWxzKCkKLSAgICAgICAgcmV0dXJuIGRlY29kZV9mb3IoYmFzZTY0LmI2NGVuY29kZShl
bmNvZGVfaWZfbmVjZXNzYXJ5KCd7fTp7fScuZm9ybWF0KHNlbGYudXNlciwgc2VsZi50b2tlbikp
KSwgc3RyKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmRlY29kZShiYXNlNjQuYjY0ZW5j
b2RlKHN0cmluZ191dGlscy5lbmNvZGUoJ3t9Ont9Jy5mb3JtYXQoc2VsZi51c2VyLCBzZWxmLnRv
a2VuKSkpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICBkZWYgcmVxdWVzdChzZWxmLCBwYXRoLCBt
ZXRob2QsIGJvZHk9Tm9uZSk6CiAgICAgICAgICIiIlNlbmRzIGEgcmVxdWVzdCB0byBHaXRIdWIg
QVBJIGFuZCBkZXNlcmlhbGl6ZXMgdGhlIHJlc3BvbnNlLgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2Mvd3B0X2dpdGh1Yl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ2
NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0
IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJv
bSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5
LCBkZWNvZGVfZm9yCi1mcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRI
dWIsIE1lcmdlRXJyb3IKK2Zyb20gd2Via2l0cHkudzNjLndwdF9naXRodWIgaW1wb3J0IFdQVEdp
dEh1YgogCiAKIGNsYXNzIFdQVEdpdEh1YlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDYs
NCArNDcsNCBAQCBjbGFzcyBXUFRHaXRIdWJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBk
ZWYgdGVzdF9hdXRoX3Rva2VuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAg
ICAgICAgICAgc2VsZi53cHRfZ2l0aHViLmF1dGhfdG9rZW4oKSwKLSAgICAgICAgICAgIGRlY29k
ZV9mb3IoYmFzZTY0LmVuY29kZXN0cmluZyhlbmNvZGVfaWZfbmVjZXNzYXJ5KCdydXRhYmFnYTpk
ZWNhZmJhZCcpKSwgc3RyKS5zdHJpcCgpKQorICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29k
ZShiYXNlNjQuZW5jb2Rlc3RyaW5nKHN0cmluZ191dGlscy5lbmNvZGUoJ3J1dGFiYWdhOmRlY2Fm
YmFkJykpLCB0YXJnZXRfdHlwZT1zdHIpLnN0cmlwKCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjQ2NDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVs
YXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0j
IENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMiArMjMsMTEgQEAKIGltcG9y
dCBqc29uCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNp
b24KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIFZlcnNpb24KIAogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0
aXZlMgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQg
TW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21v
Y2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIGZyb20gd2Via2l0cHkueGNv
ZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmljZVR5cGUKIGZyb20gd2Via2l0cHkueGNvZGUuc2lt
dWxhdGVkX2RldmljZSBpbXBvcnQgRGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdl
ciwgU2ltdWxhdGVkRGV2aWNlCiAKQEAgLTY1MSw3ICs2NTAsNyBAQCBjbGFzcyBTaW11bGF0ZWRE
ZXZpY2VUZXN0KHVuaXR0ZXN0LlRlc3RDCiAgICAgICAgICMgYXMgZGV0ZXJtaW5lZCBmcm9tIHRo
ZSAuanNvbiBvdXRwdXQuCiAgICAgICAgIGRldmljZV9wbGlzdCA9IGRldmljZS5maWxlc3lzdGVt
LmV4cGFuZHVzZXIoZGV2aWNlLmZpbGVzeXN0ZW0uam9pbihTaW11bGF0ZWREZXZpY2VNYW5hZ2Vy
LnNpbXVsYXRvcl9kZXZpY2VfcGF0aCwgZGV2aWNlLnVkaWQsICdkZXZpY2UucGxpc3QnKSkKICAg
ICAgICAgaW5kZXhfcG9zaXRpb24gPSBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxp
c3RdLmluZGV4KGInPC9pbnRlZ2VyPicpIC0gMQotICAgICAgICBkZXZpY2UuZmlsZXN5c3RlbS5m
aWxlc1tkZXZpY2VfcGxpc3RdID0gZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0
XVs6aW5kZXhfcG9zaXRpb25dICsgZW5jb2RlX2lmX25lY2Vzc2FyeShzdHIoc3RhdGUpKSArIGRl
dmljZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1baW5kZXhfcG9zaXRpb24gKyAxOl0K
KyAgICAgICAgZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XSA9IGRldmljZS5m
aWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1bOmluZGV4X3Bvc2l0aW9uXSArIHN0cmluZ191
dGlscy5lbmNvZGUoc3RyKHN0YXRlKSkgKyBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2Vf
cGxpc3RdW2luZGV4X3Bvc2l0aW9uICsgMTpdCiAKICAgICBkZWYgdGVzdF9zd2FwcGluZ19kZXZp
Y2VzKHNlbGYpOgogICAgICAgICBTaW11bGF0ZWREZXZpY2VUZXN0LnJlc2V0X3NpbXVsYXRlZF9k
ZXZpY2VfbWFuYWdlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404931</attachid>
            <date>2020-07-22 09:45:37 -0700</date>
            <delta_ts>2020-07-22 11:53:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200722094536.patch</filename>
            <type>text/plain</type>
            <size>13909</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDcwMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDIwLTA3LTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc3RyaW5nX3V0aWxzIChQYXJ0IDEpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDZW50cmFsaXpl
IGhhbmRsaW5nIG9mIHVuaWNvZGUgZW5jb2RpbmcvZGVjb2RpbmcgYWxvbmcgd2l0aCB2YXJpb3Vz
IHRvb2xzCisgICAgICAgIGZvciBwcmludGluZyBzdHJpbmdzLgorCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3N0cmluZ191
dGlscy5weTogQWRkZWQuCisgICAgICAgIChlbmNvZGUpOiBFbmNvZGUgYSBzdHJpbmcgYXMgYnl0
ZXMuCisgICAgICAgIChkZWNvZGUpOiBEZWNvZGUgYSBieXRlcyBhcyBhIHN0cmluZy4KKyAgICAg
ICAgKG9yZGluYWwpOiBDb252ZXJ0IGEgbnVtYmVyIHRvIDFzdCwgMm5kLCAzcmQsIDR0aCwgZWN0
LgorICAgICAgICAocGx1cmFsaXplKTogQ29udmVydCBhIHN0cmluZyB0byBpdCdzIHBsdXJsYXJp
emVkIHZlcnNpb24sIGlmIHByb3ZpZGVkIG51bWJlciBpbmRpY2F0ZXMKKyAgICAgICAgaXQgc2hv
dWxkIGJlLgorICAgICAgICAoam9pbik6IEpvaW4gYSBsaXN0IG9mIGVsZW1lbnRzIGluIGEgaHVt
YW4tcmVhZGFibGUgZm9ybS4KKyAgICAgICAgKG91dF9vZik6IENyZWF0ZSBhIGZyYWN0aW9uIHdo
aWNoIHRha2VzIHVwIGEgY29uc3RhbnQgYW1vdW50IG9mIGNoYXJhY3RlcnMuCisgICAgICAgIChl
bGFwc2VkKTogRGVzY3JpYmUgdGhlIGFtb3VudCBvZiB0aW1lIGVsYXBzZWQgYXMgYSBodW1hbi1y
ZWFkYWJsZSBzdHJpbmcuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS90ZXN0cy9zdHJpbmdfdXRpbHNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAg
ICAgICAoU3RyaW5nVXRpbHMpOiBUZXN0IHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi91bmljb2RlX2NvbXBhdGliaWxpdHkucHk6IFJlcGxhY2VkIHdpdGgg
d2Via2l0Y29yZXB5LnN0cmluZ191dGlscy4KKwogMjAyMC0wNy0yMiAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHB5XSBSZW1vdmUgdmVyc2lv
bi5weQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5t
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvUkVB
RE1FLm1kCShyZXZpc2lvbiAyNjQ3MDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvUkVBRE1FLm1kCSh3b3JraW5nIGNvcHkpCkBAIC0xMCwzICsxMCwxNiBAQCBWZXJz
aW9uIHJlcHJlc2VudGF0aW9uCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgogdmVy
c2lvbiA9IFZlcnNpb24oMSwgMiwgMykKIGBgYAorCitVbmljb2RlIHN0cmVhbSBtYW5hZ2VtZW50
IGFjcm9zcyBQeXRob24gMiBhbmQgMworYGBgCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQnl0
ZXNJTywgU3RyaW5nSU8sIFVuaWNvZGVJTywgdW5pY29kZQorYGBgCisKK0VuY29kaW5nIGFuZCBk
ZWNvZGluZyBieXRlIHN0cmluZ3MgYW5kIHVuaWNvZGUgc3RyaW5ncworYGBgCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKK3N0cmluZ191dGlscy5lbmNvZGUoLi4uKQor
c3RyaW5nX3V0aWxzLmRlY29kZSguLi4pCitgYGAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRf
Xy5weQkocmV2aXNpb24gMjY0NzAxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsNCAr
MjEsNiBAQAogIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogZnJvbSB3ZWJraXRjb3JlcHkudmVyc2lvbiBpbXBvcnQgVmVyc2lv
bgotdmVyc2lvbiA9IFZlcnNpb24oMCwgMCwgMSkKK2Zyb20gd2Via2l0Y29yZXB5LnN0cmluZ191
dGlscyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8sIFVuaWNvZGVJTywgdW5pY29kZQorCit2ZXJz
aW9uID0gVmVyc2lvbigwLCAwLCAyKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS9zdHJpbmdfdXRpbHMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9zdHJpbmdfdXRp
bHMucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9zdHJpbmdfdXRpbHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0
IGlvCitpbXBvcnQgc3lzCisKK0J5dGVzSU8gPSBpby5CeXRlc0lPCitpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApOgorICAgIFN0cmluZ0lPID0gaW8uU3RyaW5nSU8KK2Vsc2U6CisgICAgZnJv
bSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KK1VuaWNvZGVJTyA9IGlvLlN0cmluZ0lPCisKK3Vu
aWNvZGUgPSBzdHIgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIHVuaWNvZGUKKwor
CitkZWYgZW5jb2RlKHN0cmluZywgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnLCB0
YXJnZXRfdHlwZT1ieXRlcyk6CisgICAgaWYgdHlwZShzdHJpbmcpID09IHVuaWNvZGUgYW5kIHRh
cmdldF90eXBlID09IGJ5dGVzOgorICAgICAgICByZXR1cm4gc3RyaW5nLmVuY29kZShlbmNvZGlu
ZywgZXJyb3JzPWVycm9ycykKKyAgICByZXR1cm4gc3RyaW5nCisKKworZGVmIGRlY29kZShkYXRh
LCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcsIHRhcmdldF90eXBlPXVuaWNvZGUp
OgorICAgIGlmIHR5cGUoZGF0YSkgPT0gYnl0ZXMgYW5kIHRhcmdldF90eXBlID09IHVuaWNvZGU6
CisgICAgICAgIHJldHVybiBkYXRhLmRlY29kZShlbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAg
ICByZXR1cm4gZGF0YQorCisKK2RlZiBvcmRpbmFsKG51bWJlcik6CisgICAgbnVtYmVyID0gaW50
KG51bWJlcikKKyAgICBpZiAxMCA8IG51bWJlciAlIDEwMCA8IDIwOgorICAgICAgICByZXR1cm4g
J3t9dGgnLmZvcm1hdChudW1iZXIpCisgICAgcmV0dXJuICd7fXt9Jy5mb3JtYXQoCisgICAgICAg
IG51bWJlciwgeworICAgICAgICAgICAgMTogJ3N0JywKKyAgICAgICAgICAgIDI6ICduZCcsCisg
ICAgICAgICAgICAzOiAncmQnLAorICAgICAgICB9LmdldChudW1iZXIgJSAxMCwgJ3RoJykKKyAg
ICApCisKKworZGVmIHBsdXJhbGl6ZShudW1iZXIsIHN0cmluZywgcGx1cmFsPU5vbmUpOgorICAg
IGlmIG51bWJlciA9PSAxOgorICAgICAgICByZXR1cm4gJzEge30nLmZvcm1hdChzdHJpbmcpCisg
ICAgaWYgcGx1cmFsOgorICAgICAgICByZXR1cm4gJ3t9IHt9Jy5mb3JtYXQobnVtYmVyLCBwbHVy
YWwpCisgICAgcmV0dXJuICd7fSB7fXMnLmZvcm1hdChudW1iZXIsIHN0cmluZykKKworCitkZWYg
am9pbihsaXN0LCBjb25qdW5jdGlvbj0nYW5kJyk6CisgICAgaWYgbm90IGxpc3Q6CisgICAgICAg
IHJldHVybiAnTm90aGluZycKKyAgICBpZiBsZW4obGlzdCkgPT0gMToKKyAgICAgICAgcmV0dXJu
IGxpc3RbMF0KKyAgICByZXR1cm4gJ3t9IHt9IHt9Jy5mb3JtYXQoJywgJy5qb2luKGxpc3RbOi0x
XSksIGNvbmp1bmN0aW9uLCBsaXN0Wy0xXSkKKworCitkZWYgb3V0X29mKG51bWJlciwgYmFzZSk6
CisgICAgbnVtYmVyID0gc3RyKG51bWJlcikKKyAgICBiYXNlID0gc3RyKGJhc2UpCisgICAgcmV0
dXJuICdbe317fS97fV0nLmZvcm1hdCgnICcgKiAobGVuKGJhc2UpIC0gbGVuKG51bWJlcikpLCBu
dW1iZXIsIGJhc2UpCisKKworZGVmIGVsYXBzZWQoc2Vjb25kcyk6CisgICAgaWYgc2Vjb25kcyA8
PSAwOgorICAgICAgICByZXR1cm4gJ25vIHRpbWUnCisgICAgZWxpZiBzZWNvbmRzIDwgMToKKyAg
ICAgICAgcmV0dXJuICdsZXNzIHRoYW4gYSBzZWNvbmQnCisKKyAgICBzZWNvbmRzID0gaW50KHJv
dW5kKHNlY29uZHMpKQorICAgIG1pbnV0ZXMgPSBzZWNvbmRzIC8vIDYwCisgICAgaG91cnMgPSBt
aW51dGVzIC8vIDYwCisgICAgZGF5cyA9IGhvdXJzIC8vIDI0CisKKyAgICBmb3JjZSA9IEZhbHNl
CisgICAgcmVzdWx0ID0gJycKKyAgICBmb3IgdmFsdWUsIGRlc2NyaXB0aW9uIGluIFsoZGF5cywg
J2RheScpLCAoaG91cnMgJSAyNCwgJ2hvdXInKSwgKG1pbnV0ZXMgJSA2MCwgJ21pbnV0ZScpXToK
KyAgICAgICAgaWYgZm9yY2Ugb3IgdmFsdWU6CisgICAgICAgICAgICBmb3JjZSA9IFRydWUKKyAg
ICAgICAgICAgIHJlc3VsdCArPSAnICcgKyBwbHVyYWxpemUodmFsdWUsIGRlc2NyaXB0aW9uKQor
ICAgIGlmIGZvcmNlOgorICAgICAgICByZXR1cm4gcmVzdWx0WzE6XSArICcgYW5kICcgKyBwbHVy
YWxpemUoc2Vjb25kcyAlIDYwLCAnc2Vjb25kJykKKyAgICByZXR1cm4gcGx1cmFsaXplKHNlY29u
ZHMgJSA2MCwgJ3NlY29uZCcpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L3ZlcnNpb24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS92ZXJzaW9uLnB5CShyZXZpc2lv
biAyNjQ3MDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L3ZlcnNpb24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEwICsyMCw5IEBACiAjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCiAjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBy
ZQogCi1mcm9tIGZ1bmN0b29scyBpbXBvcnQgdG90YWxfb3JkZXJpbmcKK2Zyb20gd2Via2l0Y29y
ZXB5LnN0cmluZ191dGlscyBpbXBvcnQgdW5pY29kZQogCiAKIGNsYXNzIFZlcnNpb24ob2JqZWN0
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvdGVzdHMvc3RyaW5nX3V0aWxzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvc3RyaW5nX3V0
aWxzX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvc3RyaW5nX3V0aWxzX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8sIFVuaWNvZGVJTywgdW5pY29kZSwg
c3RyaW5nX3V0aWxzCisKKworY2xhc3MgU3RyaW5nVXRpbHModW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgIGRlZiB0ZXN0X2J5dGVzaW8oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IEJ5dGVzSU8oKQor
ICAgICAgICBzdHJlYW0ud3JpdGUoYidieXRlcyBkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwgYidieXRlcyBkYXRhJykKKworICAgIGRlZiB0ZXN0X3N0
cmluZ2lvKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTygpCisgICAgICAgIHN0cmVh
bS53cml0ZSgnc3RyaW5nIGRhdGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5n
ZXR2YWx1ZSgpLCAnc3RyaW5nIGRhdGEnKQorCisgICAgZGVmIHRlc3RfdW5pY29kZWlvKHNlbGYp
OgorICAgICAgICBzdHJlYW0gPSBVbmljb2RlSU8oKQorICAgICAgICBzdHJlYW0ud3JpdGUodSd1
bmljb2RcdTAwRTkgZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZh
bHVlKCksIHUndW5pY29kXHUwMEU5IGRhdGEnKQorCisgICAgZGVmIHRlc3RfdW5pY29kZShzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlKHUndW5pY29kZTogXHUwMEU5Jyks
IHUndW5pY29kZTogXHUwMEU5JykKKworICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMuZW5jb2RlKHUndW5pY29kZTogXHUwMEU5
JyksIGIndW5pY29kZTogXHhjM1x4YTknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmlu
Z191dGlscy5lbmNvZGUoYidieXRlcyBkYXRhJyksIGInYnl0ZXMgZGF0YScpCisKKyAgICBkZWYg
dGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxz
LmRlY29kZSh1J3VuaWNvZGU6IFx1MDBFOScpLCB1J3VuaWNvZGU6IFx1MDBFOScpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmRlY29kZShiJ3VuaWNvZGU6IFx4YzNceGE5
JyksIHUndW5pY29kZTogXHUwMEU5JykKKworICAgIGRlZiB0ZXN0X29yZGluYWwoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMCksICcwdGgnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDEpLCAnMXN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCgyKSwgJzJuZCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMyksICczcmQn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDQpLCAnNHRo
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCg1KSwgJzV0
aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoNiksICc2
dGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDcpLCAn
N3RoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3JkaW5hbCg4KSwg
Jzh0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoOSks
ICc5dGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFsKDEw
KSwgJzEwdGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRpbmFs
KDExKSwgJzExdGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vcmRp
bmFsKDEyKSwgJzEydGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5v
cmRpbmFsKDEzKSwgJzEzdGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGls
cy5vcmRpbmFsKDIxKSwgJzIxc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191
dGlscy5vcmRpbmFsKDIyKSwgJzIybmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmlu
Z191dGlscy5vcmRpbmFsKDIzKSwgJzIzcmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmluZ191dGlscy5vcmRpbmFsKDEwMSksICcxMDFzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyaW5nX3V0aWxzLm9yZGluYWwoMTExKSwgJzExMXRoJykKKworICAgIGRlZiB0ZXN0X3Bs
dXJhbGl6ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMucGx1
cmFsaXplKDAsICdzZWNvbmQnKSwgJzAgc2Vjb25kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyaW5nX3V0aWxzLnBsdXJhbGl6ZSgxLCAnc2Vjb25kJyksICcxIHNlY29uZCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLnBsdXJhbGl6ZSgyLCAnc2Vjb25kJyks
ICcyIHNlY29uZHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5wbHVy
YWxpemUoMCwgJ21vdXNlJywgJ21pY2UnKSwgJzAgbWljZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyaW5nX3V0aWxzLnBsdXJhbGl6ZSgxLCAnbW91c2UnLCAnbWljZScpLCAnMSBtb3Vz
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLnBsdXJhbGl6ZSgyLCAn
bW91c2UnLCAnbWljZScpLCAnMiBtaWNlJykKKworICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmpvaW4oWydpbnRlZ2VyJywgJ3N0
cmluZycsICdmbG9hdCddKSwgJ2ludGVnZXIsIHN0cmluZyBhbmQgZmxvYXQnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5qb2luKFsnaW50ZWdlcicsICdzdHJpbmcnXSks
ICdpbnRlZ2VyIGFuZCBzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191
dGlscy5qb2luKFsnaW50ZWdlciddKSwgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmluZ191dGlscy5qb2luKFtdKSwgJ05vdGhpbmcnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmluZ191dGlscy5qb2luKFsnaW50ZWdlcicsICdzdHJpbmcnXSwgY29uanVuY3Rp
b249J29yJyksICdpbnRlZ2VyIG9yIHN0cmluZycpCisKKyAgICBkZWYgdGVzdF9vdXRvZihzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRpbHMub3V0X29mKDEsIDMpLCAn
WzEvM10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5vdXRfb2YoMSwg
MTApLCAnWyAxLzEwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLm91
dF9vZigxMCwgMTApLCAnWzEwLzEwXScpCisKKyAgICBkZWYgdGVzdF9lbGFwc2VkKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5lbGFwc2VkKDApLCAnbm8gdGlt
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoLjUpLCAn
bGVzcyB0aGFuIGEgc2Vjb25kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmdfdXRp
bHMuZWxhcHNlZCgxKSwgJzEgc2Vjb25kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJp
bmdfdXRpbHMuZWxhcHNlZCg0KSwgJzQgc2Vjb25kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyaW5nX3V0aWxzLmVsYXBzZWQoNzQpLCAnMSBtaW51dGUgYW5kIDE0IHNlY29uZHMnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZ191dGlscy5lbGFwc2VkKDMgKiA2MCAqIDYw
KSwgJzMgaG91cnMgMCBtaW51dGVzIGFuZCAwIHNlY29uZHMnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmluZ191dGlscy5lbGFwc2VkKDI0ICogNjAgKiA2MCArIDYwICogNjAgKyA0ICog
NjAgKyA1KSwgJzEgZGF5IDEgaG91ciA0IG1pbnV0ZXMgYW5kIDUgc2Vjb25kcycpCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi91bmljb2RlX2NvbXBhdGliaWxpdHkucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdW5pY29kZV9jb21wYXRp
YmlsaXR5LnB5CShyZXZpc2lvbiAyNjQ3MDEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi91bmljb2RlX2NvbXBhdGliaWxpdHkucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsNDggKzIwLDE5IEBACiAjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBpbwotaW1wb3J0IHN5
cwotCi0KLUJ5dGVzSU8gPSBpby5CeXRlc0lPCi1pZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgotICAgIFN0cmluZ0lPID0gaW8uU3RyaW5nSU8KLWVsc2U6Ci0gICAgZnJvbSBTdHJpbmdJTyBp
bXBvcnQgU3RyaW5nSU8KLVVuaWNvZGVJTyA9IGlvLlN0cmluZ0lPCi0KLXVuaWNvZGUgPSBzdHIg
aWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIHVuaWNvZGUKLQorZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IFVuaWNvZGVJTywgU3RyaW5nSU8sIEJ5dGVzSU8sIHVuaWNvZGUsIHN0cmlu
Z191dGlscwogCiBkZWYgZW5jb2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSwgZW5jb2Rpbmc9J3V0Zi04
JywgZXJyb3JzPSdzdHJpY3QnKToKLSAgICAjIEluIFB5dGhvbiAzLCBzdHJpbmcgdHlwZXMgbXVz
dCBiZSBlbmNvZGVkCi0gICAgaWYgdHlwZSh2YWx1ZSkgPT0gdW5pY29kZToKLSAgICAgICAgcmV0
dXJuIHZhbHVlLmVuY29kZShlbmNvZGluZywgZXJyb3JzPWVycm9ycykKLSAgICByZXR1cm4gdmFs
dWUKKyAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29kZSh2YWx1ZSwgZW5jb2Rpbmc9ZW5jb2Rp
bmcsIGVycm9ycz1lcnJvcnMpCiAKIAogZGVmIGVuY29kZV9mb3IodmFsdWUsIHRhcmdldF90eXBl
LCAqKmt3YXJncyk6Ci0gICAgaWYgdGFyZ2V0X3R5cGUgPT0gYnl0ZXM6Ci0gICAgICAgIHJldHVy
biBlbmNvZGVfaWZfbmVjZXNzYXJ5KHZhbHVlLCAqKmt3YXJncykKLQotICAgIGlmIHN5cy52ZXJz
aW9uX2luZm8gPCAoMywgMCkgYW5kIHRhcmdldF90eXBlID09IHN0cjoKLSAgICAgICAgcmV0dXJu
IGVuY29kZV9pZl9uZWNlc3NhcnkodmFsdWUsICoqa3dhcmdzKQotICAgIHJldHVybiB2YWx1ZQor
ICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHZhbHVlLCB0YXJnZXRfdHlwZT10YXJnZXRf
dHlwZSwgKiprd2FyZ3MpCiAKIAogZGVmIGRlY29kZV9pZl9uZWNlc3NhcnkodmFsdWUsIGVuY29k
aW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgIyBJbiBQeXRob24gMiwgc3RyaW5n
IHR5cGVzIG1pZ2h0IG5lZWQgdG8gYmUgZGVjb2RlZAotICAgIGlmIHR5cGUodmFsdWUpID09IGJ5
dGVzOgotICAgICAgICByZXR1cm4gdmFsdWUuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnM9ZXJyb3Jz
KQotICAgIHJldHVybiB2YWx1ZQorICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKHZhbHVl
LCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKIAogCiBkZWYgZGVjb2RlX2Zvcih2
YWx1ZSwgdGFyZ2V0X3R5cGUpOgotICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgIHJldHVy
biBOb25lCi0gICAgaWYgdHlwZSh2YWx1ZSkgPT0gdGFyZ2V0X3R5cGU6Ci0gICAgICAgIHJldHVy
biB2YWx1ZQotICAgIGlmIHRhcmdldF90eXBlID09IHVuaWNvZGU6Ci0gICAgICAgIHJldHVybiBk
ZWNvZGVfaWZfbmVjZXNzYXJ5KGJ5dGVzKHZhbHVlKSkKLSAgICByZXR1cm4gdmFsdWUKKyAgICBy
ZXR1cm4gc3RyaW5nX3V0aWxzLmRlY29kZSh2YWx1ZSwgdGFyZ2V0X3R5cGU9dGFyZ2V0X3R5cGUp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404943</attachid>
            <date>2020-07-22 11:53:48 -0700</date>
            <delta_ts>2020-07-22 11:58:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200722115347.patch</filename>
            <type>text/plain</type>
            <size>103770</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwOCBAQAorMjAyMC0wNy0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscyAoUGFydCAyKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2VudHJhbGl6
ZSBoYW5kbGluZyBvZiB1bmljb2RlIGVuY29kaW5nL2RlY29kaW5nIGFsb25nIHdpdGggdmFyaW91
cyB0b29scworICAgICAgICBmb3IgcHJpbnRpbmcgc3RyaW5ncy4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bm5lci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iaW5k
aW5ncy9tYWluLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191
dGlscywKKyAgICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weTogUmVwbGFjZSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5OiBSZW1vdmUgdW51c2VkIGlt
cG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tv
dXQucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0
ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmlu
Z191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29k
ZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAgICAgICByZW1vdmUgdW51c2VkIGltcG9ydHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAg
IHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc3ZuLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRo
IHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcv
Y29tbWl0dGVycy5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdf
dXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6IFJlcGxhY2UgdW5pY29k
ZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVp
bGRib3QvYnVpbGRib3QucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9ld3NzZXJ2ZXIucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgg
c3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJf
bW9jay5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5
cGF0Y2gucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxz
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9w
bmcucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRfY2hl
Y2tzdW1fZnJvbV9wbmdfdW5pdHRlc3QucHk6IERpdHRvCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2Fic3RyYWN0ZXhlY3V0aXZlLnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5OiBEaXR0by4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0
LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZXhlY3V0aXZlX21vY2sucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21w
YXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAgICAgICByZW1vdmUgdW51c2VkIGltcG9y
dHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0u
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHk6
IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAgICAg
ICByZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL291dHB1dGNhcHR1cmUucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5
IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9vdXRwdXR0ZWVfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0
X3J1bm5lci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAgICAgICBz
dHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OiBS
ZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscy4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0c191bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGli
aWxpdHkgd2l0aAorICAgICAgICBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5p
Y29kZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51
c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdF91bml0dGVzdC5weTogUmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVn
cmF0aW9udGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9j
b21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2VkIGlt
cG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6IFJlcGxhY2Ug
dW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5
IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5
IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVz
dC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9j
cmFzaF9sb2cucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2Nr
X2RydC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5OiBS
ZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisg
ICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9z
ZXJ2ZXJfcHJvY2Vzcy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L3NlcnZlcl9wcm9jZXNzX21vY2sucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdp
dGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5
OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Jlc3VsdHMvdXBsb2FkX3VuaXR0
ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMs
IHJlbW92ZQorICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBh
dGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9weXRob24ucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRl
ci5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5lcl91bml0
dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L3NraXBfdW5p
dHRlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJj
X2NvbW1hbmQucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0
aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weTogUmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9oYXNsYW5kZWQucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgg
c3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHk6IFJlcGxhY2Ug
dW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2VkCisgICAgICAgIGltcG9ydHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1Yi5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1Yl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQorICAgICAgICB1bnVzZWQgaW1w
b3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2Vf
dW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0
aWxzLgorCiAyMDIwLTA3LTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc3RyaW5nX3V0aWxzIChQYXJ0IDEpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9ydW5uZXIucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvcnVubmVyLnB5CShyZXZpc2lvbiAy
NjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9ydW5uZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMiBAQCBpbXBvcnQgb3MKIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisK
IGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBtZXNzYWdlX3Bvb2wKIGZyb20gd2Via2l0cHku
Y29tbW9uLml0ZXJhdGlvbl9jb21wYXRpYmlsaXR5IGltcG9ydCBpdGVyaXRlbXMKIGZyb20gd2Vi
a2l0cHkucG9ydC5zZXJ2ZXJfcHJvY2VzcyBpbXBvcnQgU2VydmVyUHJvY2VzcywgX2xvZyBhcyBz
ZXJ2ZXJfcHJvY2Vzc19sb2dnZXIKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2Rldmlj
ZSBpbXBvcnQgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yCiAKIAogY2xhc3MgUnVubmVyKG9i
amVjdCk6CkBAIC0xNzksMTEgKzE4MCwxMSBAQCBjbGFzcyBfV29ya2VyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAgICAgICBpZiBzdGRlcnJfbGluZToK
LSAgICAgICAgICAgICAgICAgICAgc3RkZXJyX2xpbmUgPSBkZWNvZGVfZm9yKHN0ZGVycl9saW5l
LCBzdHIpCisgICAgICAgICAgICAgICAgICAgIHN0ZGVycl9saW5lID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShzdGRlcnJfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgICAgICAgICBz
dGRlcnJfYnVmZmVyICs9IHN0ZGVycl9saW5lCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9z
dCgnbG9nJywgb3V0cHV0PXN0ZGVycl9saW5lWzotMV0pCiAgICAgICAgICAgICAgICAgaWYgc3Rk
b3V0X2xpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0ZG91dF9saW5lID0gZGVjb2RlX2Zvcihz
dGRvdXRfbGluZSwgc3RyKQorICAgICAgICAgICAgICAgICAgICBzdGRvdXRfbGluZSA9IHN0cmlu
Z191dGlscy5kZWNvZGUoc3Rkb3V0X2xpbmUsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAg
ICAgICAgICAgaWYgJyoqUEFTUyoqJyBpbiBzdGRvdXRfbGluZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXR1cyA9IFJ1bm5lci5TVEFUVVNfUEFTU0VECiAgICAgICAgICAgICAgICAgICAg
IGVsaWYgJyoqRkFJTCoqJyBpbiBzdGRvdXRfbGluZToKQEAgLTIwMiw4ICsyMDMsOCBAQCBjbGFz
cyBfV29ya2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc3RhdHVzID0gUnVubmVyLlNUQVRV
U19GQUlMRUQKIAogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcmVtYWluaW5nX3N0ZGVy
ciA9IGRlY29kZV9mb3Ioc2VydmVyX3Byb2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKSwg
c3RyKQotICAgICAgICAgICAgcmVtYWluaW5nX3N0ZG91dCA9IGRlY29kZV9mb3Ioc2VydmVyX3By
b2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRvdXQoKSwgc3RyKQorICAgICAgICAgICAgcmVtYWlu
aW5nX3N0ZGVyciA9IHN0cmluZ191dGlscy5kZWNvZGUoc2VydmVyX3Byb2Nlc3MucG9wX2FsbF9i
dWZmZXJlZF9zdGRlcnIoKSwgdGFyZ2V0X3R5cGU9c3RyKQorICAgICAgICAgICAgcmVtYWluaW5n
X3N0ZG91dCA9IHN0cmluZ191dGlscy5kZWNvZGUoc2VydmVyX3Byb2Nlc3MucG9wX2FsbF9idWZm
ZXJlZF9zdGRvdXQoKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgc2VsZi5wb3N0KCds
b2cnLCBvdXRwdXQ9cmVtYWluaW5nX3N0ZGVyciArIHJlbWFpbmluZ19zdGRvdXQpCiAgICAgICAg
ICAgICBvdXRwdXRfYnVmZmVyID0gc3RkZXJyX2J1ZmZlciArIHN0ZG91dF9idWZmZXIgKyByZW1h
aW5pbmdfc3RkZXJyICsgcmVtYWluaW5nX3N0ZG91dAogICAgICAgICAgICAgc2VydmVyX3Byb2Nl
c3Muc3RvcCgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CShy
ZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4u
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMyBAQCBpbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHNodXRpbAotaW1wb3J0IHN1YnByb2Nlc3MKIGlt
cG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3Ry
aW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24g
aW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIAogY2xhc3MgQmluZGlu
Z3NUZXN0czoKQEAgLTc3LDcgKzc4LDcgQEAgY2xhc3MgQmluZGluZ3NUZXN0czoKICAgICAgICAg
ICAgIChuYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQogICAg
ICAgICAgICAgaWYgZXh0ZW5zaW9uICE9ICcuaWRsJzoKICAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgb3Mud3JpdGUoaWRsX2ZpbGVzX2xpc3RbMF0sIGVuY29kZV9pZl9uZWNl
c3Nhcnkob3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmlsZSkgKyAiXG4iKSkK
KyAgICAgICAgICAgIG9zLndyaXRlKGlkbF9maWxlc19saXN0WzBdLCBzdHJpbmdfdXRpbHMuZW5j
b2RlKG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpICsgIlxuIikpCiAg
ICAgICAgIG9zLmNsb3NlKGlkbF9maWxlc19saXN0WzBdKQogCiAgICAgICAgIGNtZCA9IFsncGVy
bCcsICctdycsCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRj
aC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlw
YXRjaC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vcHJldHR5cGF0Y2gucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEwIEBAIGltcG9y
dCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCisKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiBf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTUwLDggKzUyLDggQEAgY2xh
c3MgUHJldHR5UGF0Y2gob2JqZWN0KToKICAgICBkZWYgcHJldHR5X2RpZmZfZmlsZShzZWxmLCBk
aWZmKToKICAgICAgICAgIyBEaWZmcyBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXh0IGZpbGVzIG9m
IGRpZmZlcmVudCBlbmNvZGluZ3MKICAgICAgICAgIyBzbyB3ZSBhbHdheXMgZGVhbCB3aXRoIHRo
ZW0gYXMgYnl0ZSBhcnJheXMsIG5vdCB1bmljb2RlIHN0cmluZ3MuCi0gICAgICAgIGRpZmYgPSBl
bmNvZGVfaWZfbmVjZXNzYXJ5KGRpZmYpCi0gICAgICAgIHByZXR0eV9kaWZmID0gZW5jb2RlX2lm
X25lY2Vzc2FyeShzZWxmLnByZXR0eV9kaWZmKGRpZmYpKQorICAgICAgICBkaWZmID0gc3RyaW5n
X3V0aWxzLmVuY29kZShkaWZmKQorICAgICAgICBwcmV0dHlfZGlmZiA9IHN0cmluZ191dGlscy5l
bmNvZGUoc2VsZi5wcmV0dHlfZGlmZihkaWZmKSkKICAgICAgICAgZGlmZl9maWxlID0gdGVtcGZp
bGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD0iLmh0bWwiKQogICAgICAgICBkaWZmX2ZpbGUu
d3JpdGUocHJldHR5X2RpZmYpCiAgICAgICAgIGRpZmZfZmlsZS5mbHVzaCgpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRfY2hlY2tzdW1fZnJv
bV9wbmcucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmcucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsy
NywxNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogCiBkZWYgcmVhZF9jaGVja3N1bShm
aWxlaGFuZGxlKToKICAgICAjIFdlIGV4cGVjdCB0aGUgY29tbWVudCB0byBiZSBhdCB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBmaWxlLgotICAgIGRhdGEgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGZpbGVo
YW5kbGUucmVhZCgyMDQ4KSkKKyAgICBkYXRhID0gc3RyaW5nX3V0aWxzLmVuY29kZShmaWxlaGFu
ZGxlLnJlYWQoMjA0OCkpCiAgICAgY29tbWVudF9rZXkgPSBiJ3RFWHRjaGVja3N1bVx4MDAnCiAg
ICAgY29tbWVudF9wb3MgPSBkYXRhLmZpbmQoY29tbWVudF9rZXkpCiAgICAgaWYgY29tbWVudF9w
b3MgPT0gLTE6CiAgICAgICAgIHJldHVybgogCiAgICAgY2hlY2tzdW1fcG9zID0gY29tbWVudF9w
b3MgKyBsZW4oY29tbWVudF9rZXkpCi0gICAgcmV0dXJuIGRlY29kZV9mb3IoZGF0YVtjaGVja3N1
bV9wb3M6Y2hlY2tzdW1fcG9zICsgMzJdLCBzdHIpCisgICAgcmV0dXJuIHN0cmluZ191dGlscy5k
ZWNvZGUoZGF0YVtjaGVja3N1bV9wb3M6Y2hlY2tzdW1fcG9zICsgMzJdLCB0YXJnZXRfdHlwZT1z
dHIpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zy
b21fcG5nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9wbmdfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcx
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3JlYWRfY2hlY2tzdW1fZnJvbV9w
bmdfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDEwIEBACiAjIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5n
SU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5n
SU8KIAogCiBjbGFzcyBSZWFkQ2hlY2tzdW1Gcm9tUG5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXZlZGlmZi5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXZlZGlmZi5weQkocmV2aXNp
b24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDExICsyMSw5IEBACiAjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgc3RydWN0
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB3YXZlCiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8K
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogCiAKIGNsYXNzIFdh
dmVEaWZmKG9iamVjdCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9jaGFuZ2Vsb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDkgKzMyLDEwIEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCB0
ZXh0d3JhcAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8sIHVuaWNvZGUKKwog
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxp
c3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lz
dGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0
cmluZ0lPLCB1bmljb2RlCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxzIGFzIGNv
bmZpZ191cmxzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0ICoKIAogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291
dC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hlY2tvdXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAKIAog
aW1wb3J0IHN5cwogCi1pZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAgIGZyb20gZnVu
Y3Rvb2xzIGltcG9ydCByZWR1Y2UKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IHVybHMKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nLCBwYXJzZV9idWdfaWRf
ZnJvbV9jaGFuZ2Vsb2cKQEAgLTM3LDcgKzM2LDkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuY29tbWl0aW5mbwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9y
dCBDb21taXRNZXNzYWdlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVt
b2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlw
dEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IFN0cmluZ0lPCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgZnJvbSBmdW5j
dG9vbHMgaW1wb3J0IHJlZHVjZQogCiAKICMgVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBXZWJL
aXQtc3BlY2lmaWMgcGFydHMgb2YgdGhlIGNoZWNrb3V0IChsaWtlIENoYW5nZUxvZ3MpLgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hlY2tvdXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMiArMjYsMTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBm
aWxlCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGVja291dCBpbXBvcnQgQ2hl
Y2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hh
bmdlTG9nRW50cnkKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ29t
bWl0TWVzc2FnZSwgU0NNRGV0ZWN0b3IKQEAgLTQyLDcgKzQxLDYgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZp
bGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25l
Y2Vzc2FyeQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIAogCkBA
IC0zNDQsNyArMzQyLDcgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgICAgICMgc28gd2UgZW5jb2RlIG91ciB1bmljb2RlIENoYW5nZUxvZyBkb3duIHRv
IGEgdXRmLTggc3RyZWFtLgogICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIHV0Zi04IGRlY29k
aW5nIHNob3VsZCBpZ25vcmUgaW52YWxpZCBjb2RlcG9pbnRzLgogICAgICAgICAgICAgaW52YWxp
ZF91dGY4ID0gYidcMjU1JwotICAgICAgICAgICAgcmV0dXJuIGVuY29kZV9pZl9uZWNlc3Nhcnko
X2NoYW5nZWxvZzEpICsgaW52YWxpZF91dGY4CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nX3V0
aWxzLmVuY29kZShfY2hhbmdlbG9nMSkgKyBpbnZhbGlkX3V0ZjgKICAgICAgICAgY2hlY2tvdXQg
PSBzZWxmLl9tYWtlX2NoZWNrb3V0KCkKICAgICAgICAgY2hlY2tvdXQuX3NjbS5jb250ZW50c19h
dF9yZXZpc2lvbiA9IG1vY2tfY29udGVudHNfYXRfcmV2aXNpb24KICAgICAgICAgZW50cnkgPSBj
aGVja291dC5fbGF0ZXN0X2VudHJ5X2Zvcl9jaGFuZ2Vsb2dfYXRfcmV2aXNpb24oImZvbyIsICJi
YXIiKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9w
YXJzZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiBpbXBvcnQgcmUKIGlt
cG9ydCB1bml0dGVzdAogCi1pbXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFy
c2VyIGFzIGRpZmZfcGFyc2VyCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAot
ZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJ
TworaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5kaWZmX3BhcnNlciBhcyBkaWZmX3Bh
cnNlcgogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl90ZXN0X2RhdGEgaW1wb3J0
IERJRkZfVEVTVF9EQVRBCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtL2dpdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxNiArMjksMTYgQEAKIAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgbG9nZ2luZwot
aW1wb3J0IG9zCiBpbXBvcnQgcmUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2Ny
aXB0RXJyb3IKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmNvbW1pdG1lc3Nh
Z2UgaW1wb3J0IENvbW1pdE1lc3NhZ2UKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bS5zY20gaW1wb3J0IEF1dGhlbnRpY2F0aW9uRXJyb3IsIFNDTSwgY29tbWl0X2Vycm9yX2hhbmRs
ZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zdm4gaW1wb3J0IFNWTlJlcG9z
aXRvcnkKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
ZGVjb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKQEAgLTM0OCw3ICszNDgsNyBAQCBjbGFzcyBHaXQoU0NNLCBTVk5SZXBv
c2l0b3J5KToKICAgICAgICAgaWYgbm90IHJldmlzaW9uOgogICAgICAgICAgICAgcmV0dXJuIGRp
ZmYKIAotICAgICAgICByZXR1cm4gZW5jb2RlX2lmX25lY2Vzc2FyeSgiU3VidmVyc2lvbiBSZXZp
c2lvbjogIikgKyBlbmNvZGVfaWZfbmVjZXNzYXJ5KHJldmlzaW9uKSArIGVuY29kZV9pZl9uZWNl
c3NhcnkoJ1xuJykgKyBlbmNvZGVfaWZfbmVjZXNzYXJ5KGRpZmYpCisgICAgICAgIHJldHVybiBz
dHJpbmdfdXRpbHMuZW5jb2RlKCJTdWJ2ZXJzaW9uIFJldmlzaW9uOiAiKSArIHN0cmluZ191dGls
cy5lbmNvZGUocmV2aXNpb24pICsgc3RyaW5nX3V0aWxzLmVuY29kZSgnXG4nKSArIHN0cmluZ191
dGlscy5lbmNvZGUoZGlmZikKIAogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dD1Ob25lLCBjaGFuZ2VkX2ZpbGVzPU5vbmUsIGdpdF9pbmRleD1GYWxzZSk6CiAgICAgICAgICIi
IlJldHVybnMgYSBieXRlIGFycmF5IChzdHIoKSkgcmVwcmVzZW50aW5nIHRoZSBwYXRjaCBmaWxl
LgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vc2NtLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20vc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMCBA
QCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNvZGUKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2
NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21f
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDggQEAgZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5zY20uZ2l0IGltcG9ydCBHaXQsIEFtYmlndW91c0NvbW1pdEVycm9yCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2Nt
X3N5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQgU0NN
LCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRp
b25FcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQgQ2hl
Y2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhlbnRpY2F0aW9uRXJy
b3IKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zdm4gaW1wb3J0IFNWTgotZnJv
bSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZf
bmVjZXNzYXJ5CiAKIAogIyBXZSBjYWNoZSB0aGUgbW9jayBTVk4gcmVwbyBzbyB0aGF0IHdlIGRv
bid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBjYWxsIHRvIGFuIFNWTlRlc3Qgb3IgR2l0VGVz
dCB0ZXN0XyBtZXRob2QuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDE0ICszNiwxMyBAQCBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZp
bGUKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBWZXJzaW9uLCBzdHJpbmdfdXRpbHMKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuc2NtLnNjbSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgU0NNLCBjb21taXRfZXJy
b3JfaGFuZGxlcgogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnVybHMgaW1wb3J0IHN2bl9z
ZXJ2ZXJfaG9zdCwgc3ZuX3NlcnZlcl9yZWFsbQogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJr
aXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTQxNiw0ICs0MTUsNCBAQCBjbGFzcyBTVk4o
U0NNLCBTVk5SZXBvc2l0b3J5KToKIAogICAgIGRlZiBwcm9wZ2V0KHNlbGYsIHBuYW1lLCBwYXRo
KToKICAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgICAgICByZXR1
cm4gZW5jb2RlX2lmX25lY2Vzc2FyeShzZWxmLl9ydW5fc3ZuKFsncGdldCcsIHBuYW1lLCBiYXNl
XSwgY3dkPWRpcikucnN0cmlwKCJcbiIpKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVu
Y29kZShzZWxmLl9ydW5fc3ZuKFsncGdldCcsIHBuYW1lLCBiYXNlXSwgY3dkPWRpcikucnN0cmlw
KCJcbiIpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1p
dHRlcnMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29u
ZmlnL2NvbW1pdHRlcnMucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
MSArMzMsMTEgQEAgaW1wb3J0IGZubWF0Y2gKIGltcG9ydCBqc29uCiBpbXBvcnQgc3lzCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKKwogZnJvbSBmdW5j
dG9vbHMgaW1wb3J0IHJlZHVjZQogZnJvbSB3ZWJraXRweS5jb21tb24uZWRpdGRpc3RhbmNlIGlt
cG9ydCBlZGl0X2Rpc3RhbmNlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQg
bWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1w
b3J0IGVuY29kZV9mb3IsIHVuaWNvZGUKIAogCiBjbGFzcyBDb250cmlidXRvcihvYmplY3QpOgpA
QCAtNzMsNyArNzMsNyBAQCBjbGFzcyBDb250cmlidXRvcihvYmplY3QpOgogICAgICAgICByZXR1
cm4gc2VsZi5lbWFpbHNbMF0KIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1
cm4gZW5jb2RlX2Zvcih1JyJ7fSIgPHt9PicuZm9ybWF0KHVuaWNvZGUoc2VsZi5mdWxsX25hbWUp
LCB1bmljb2RlKHNlbGYuZW1haWxzWzBdKSksIHN0cikKKyAgICAgICAgcmV0dXJuIHN0cmluZ191
dGlscy5lbmNvZGUodScie30iIDx7fT4nLmZvcm1hdCh1bmljb2RlKHNlbGYuZnVsbF9uYW1lKSwg
dW5pY29kZShzZWxmLmVtYWlsc1swXSkpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICBkZWYgX191
bmljb2RlX18oc2VsZik6CiAgICAgICAgIHJldHVybiB1JyJ7fSIgPHt9PicuZm9ybWF0KHVuaWNv
ZGUoc2VsZi5mdWxsX25hbWUpLCB1bmljb2RlKHNlbGYuZW1haWxzWzBdKSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9ld3NzZXJ2ZXIucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3c3NlcnZlci5weQkocmV2aXNpb24g
MjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3c3NlcnZlci5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsMTAgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUKKwog
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnVybHMgaW1wb3J0IGV3c3NlcnZlcl9kZWZhdWx0
X2hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24gaW1wb3J0
IE5ldHdvcmtUcmFuc2FjdGlvbgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCB1bmljb2RlCiAKIGltcG9ydCBsb2dnaW5nCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9jay5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkJKHJldmlzaW9uIDI2NDcx
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9jay5weQkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBT
dHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKIGltcG9ydCBzeXMK
IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CShyZXZpc2lv
biAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEv
YnVnemlsbGEucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDggQEAgaW1wb3J0IHN5cwog
aW1wb3J0IHVybGxpYgogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSAgIyB1c2VkIGlu
IHRpbWVzdGFtcCgpCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8s
IHN0cmluZ191dGlscywgdW5pY29kZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCB1bmljb2RlLCBkZWNvZGVfZm9y
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEuYXR0YWNobWVudCBpbXBvcnQgQXR0
YWNobWVudAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhLmJ1ZyBpbXBvcnQgQnVn
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgY29tbWl0dGVycwpAQCAtMjk1
LDcgKzI5NCw3IEBAIGNsYXNzIEJ1Z3ppbGxhUXVlcmllcyhvYmplY3QpOgogICAgIGRlZiBpc19p
bnZhbGlkX2J1Z3ppbGxhX2VtYWlsKHNlbGYsIHNlYXJjaF9zdHJpbmcpOgogICAgICAgICByZXZp
ZXdfcXVldWVfdXJsID0gInJlcXVlc3QuY2dpP2FjdGlvbj1xdWV1ZSZyZXF1ZXN0ZXI9JXMmcHJv
ZHVjdD0mdHlwZT1yZXZpZXcmcmVxdWVzdGVlPSZjb21wb25lbnQ9Jmdyb3VwPXJlcXVlc3RlZSIg
JSB1cmxsaWIucXVvdGUoc2VhcmNoX3N0cmluZykKICAgICAgICAgcmVzdWx0c19wYWdlID0gc2Vs
Zi5fbG9hZF9xdWVyeShyZXZpZXdfcXVldWVfdXJsKQotICAgICAgICByZXR1cm4gYm9vbChyZS5z
ZWFyY2goJ2RpZCBub3QgbWF0Y2ggYW55dGhpbmcnLCBkZWNvZGVfZm9yKHJlc3VsdHNfcGFnZS5y
ZWFkKCksIHN0cikpKQorICAgICAgICByZXR1cm4gYm9vbChyZS5zZWFyY2goJ2RpZCBub3QgbWF0
Y2ggYW55dGhpbmcnLCBzdHJpbmdfdXRpbHMuZGVjb2RlKHJlc3VsdHNfcGFnZS5yZWFkKCksIHRh
cmdldF90eXBlPXN0cikpKQogCiAKIGNsYXNzIENvbW1pdFF1ZXVlRmxhZyhvYmplY3QpOgpAQCAt
NTY1LDcgKzU2NCw3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgICAgICAjIElm
IHRoZSByZXN1bHRpbmcgcGFnZSBoYXMgYSB0aXRsZSwgYW5kIGl0IGNvbnRhaW5zIHRoZSB3b3Jk
CiAgICAgICAgICAgICAjICJpbnZhbGlkIiBhc3N1bWUgaXQncyB0aGUgbG9naW4gZmFpbHVyZSBw
YWdlLgogICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIHJlLnNlYXJjaChiJ0ludmFsaWQnLCBtYXRj
aC5ncm91cCgxKSwgcmUuSUdOT1JFQ0FTRSk6Ci0gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gIkJ1Z3ppbGxhIGxvZ2luIGZhaWxlZDoge30iLmZvcm1hdChkZWNvZGVfZm9yKG1hdGNoLmdy
b3VwKDEpLCBzdHIpKQorICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJCdWd6aWxsYSBs
b2dpbiBmYWlsZWQ6IHt9Ii5mb3JtYXQoc3RyaW5nX3V0aWxzLmRlY29kZShtYXRjaC5ncm91cCgx
KSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlv
biBvbmx5IGlmIHRoaXMgd2FzIHRoZSBsYXN0IGF0dGVtcHQKICAgICAgICAgICAgICAgICBpZiBh
dHRlbXB0cyA8IDU6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3JNZXNzYWdl
KQpAQCAtNjQwLDcgKzYzOSw3IEBAIGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAKICAgICBAc3Rh
dGljbWV0aG9kCiAgICAgZGVmIF9wYXJzZV9hdHRhY2htZW50X2lkX2Zyb21fYWRkX3BhdGNoX3Rv
X2J1Z19yZXNwb25zZShyZXNwb25zZV9odG1sKToKLSAgICAgICAgcmVzcG9uc2VfaHRtbCA9IGRl
Y29kZV9mb3IocmVzcG9uc2VfaHRtbCwgc3RyKQorICAgICAgICByZXNwb25zZV9odG1sID0gc3Ry
aW5nX3V0aWxzLmRlY29kZShyZXNwb25zZV9odG1sLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKCc8dGl0bGU+QXR0YWNobWVudCAoP1A8YXR0YWNobWVudF9pZD5c
ZCspIGFkZGVkIHRvIEJ1ZyBcZCs8L3RpdGxlPicsIHJlc3BvbnNlX2h0bWwpCiAgICAgICAgIGlm
IG1hdGNoOgogICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdhdHRhY2htZW50X2lkJykK
QEAgLTY4NCw3ICs2ODMsNyBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogCiAgICAgIyBGSVhN
RTogVGhlcmUgaGFzIHRvIGJlIGEgbW9yZSBjb25jaXNlIHdheSB0byB3cml0ZSB0aGlzIG1ldGhv
ZC4KICAgICBkZWYgX2NoZWNrX2NyZWF0ZV9idWdfcmVzcG9uc2Uoc2VsZiwgcmVzcG9uc2VfaHRt
bCk6Ci0gICAgICAgIHJlc3BvbnNlX2h0bWwgPSBkZWNvZGVfZm9yKHJlc3BvbnNlX2h0bWwsIHN0
cikKKyAgICAgICAgcmVzcG9uc2VfaHRtbCA9IHN0cmluZ191dGlscy5kZWNvZGUocmVzcG9uc2Vf
aHRtbCwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgnPHRpdGxl
PkJ1ZyAoP1A8YnVnX2lkPlxkKykgU3VibWl0dGVkW148XSo8L3RpdGxlPicsIHJlc3BvbnNlX2h0
bWwpCiAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdi
dWdfaWQnKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQkocmV2aXNpb24gMjY0
NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3pp
bGxhX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QK
IAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1p
dHRlcnMgaW1wb3J0IFJldmlld2VyLCBDb21taXR0ZXIsIENvbnRyaWJ1dG9yLCBDb21taXR0ZXJM
aXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQud2ViX21vY2sgaW1wb3J0IE1vY2tCcm93c2Vy
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEuYnVnemlsbGEgaW1wb3J0IEJ1Z3pp
bGxhLCBCdWd6aWxsYVF1ZXJpZXMsIENvbW1pdFF1ZXVlRmxhZywgRWRpdFVzZXJzUGFyc2VyCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBT
dHJpbmdJTwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJl
YXV0aWZ1bFNvdXAKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJv
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVp
bGRib3QvYnVpbGRib3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTAgKzI4LDEwIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBqc29uCi1pbXBvcnQgb3Bl
cmF0b3IKIGltcG9ydCByZQogaW1wb3J0IHN5cwotaW1wb3J0IHVybGxpYgorCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzLCB1bmljb2RlCiAKIGltcG9ydCB3ZWJraXRweS5j
b21tb24uY29uZmlnLnVybHMgYXMgY29uZmlnX3VybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLm1l
bW9pemVkIGltcG9ydCBtZW1vaXplZApAQCAtNDAsNyArNDAsNiBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubmV0d29y
a3RyYW5zYWN0aW9uIGltcG9ydCBOZXR3b3JrVHJhbnNhY3Rpb24KIGZyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5yZWdyZXNzaW9ud2luZG93IGltcG9ydCBSZWdyZXNzaW9uV2luZG93CiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGdldF9sb2dnZXIKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvciwgdW5p
Y29kZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGlt
cG9ydCBCcm93c2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBv
cnQgQmVhdXRpZnVsU291cAogCkBAIC01Miw3ICs1MSw2IEBAIGVsc2U6CiAgICAgZnJvbSB1cmxs
aWIyIGltcG9ydCBIVFRQRXJyb3IsIHF1b3RlLCBVUkxFcnJvciwgdXJsb3BlbgogCiAKLQogX2xv
ZyA9IGdldF9sb2dnZXIoX19maWxlX18pCiAKIApAQCAtMzE5LDggKzMxNyw4IEBAIGNsYXNzIEJ1
aWxkQm90KG9iamVjdCk6CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSB0cmVhdCBzbGF2ZSBsb3N0
IGFzIGdyZWVuIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCB0bwogICAgICAgICAgICAgIyB3b3JrIGFy
b3VuZCB0aGUgUXRzIGJvdCBiZWluZyBvbiBhIGJyb2tlbiBpbnRlcm5ldCBjb25uZWN0aW9uLgog
ICAgICAgICAgICAgIyBUaGUgcmVhbCBmaXggaXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3MDk5Ci0gICAgICAgICAgICBidWlsZGVyWydpc19ncmVlbiddID0gbm90
IHJlLnNlYXJjaCgnZmFpbCcsIGRlY29kZV9mb3IoY2VsbC5yZW5kZXJDb250ZW50cygpLCBzdHIp
KSBvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKHJlLnNlYXJjaCgn
bG9zdCcsIGRlY29kZV9mb3IoY2VsbC5yZW5kZXJDb250ZW50cygpLCBzdHIpKSkKKyAgICAgICAg
ICAgIGJ1aWxkZXJbJ2lzX2dyZWVuJ10gPSBub3QgcmUuc2VhcmNoKCdmYWlsJywgc3RyaW5nX3V0
aWxzLmRlY29kZShjZWxsLnJlbmRlckNvbnRlbnRzKCksIHRhcmdldF90eXBlPXN0cikpIG9yIFwK
KyAgICAgICAgICAgICAgICBib29sKHJlLnNlYXJjaCgnbG9zdCcsIHN0cmluZ191dGlscy5kZWNv
ZGUoY2VsbC5yZW5kZXJDb250ZW50cygpLCB0YXJnZXRfdHlwZT1zdHIpKSkKIAogICAgICAgICAg
ICAgc3RhdHVzX2xpbmtfcmVnZXhwID0gciJidWlsZGVycy8oP1A8YnVpbGRlcl9uYW1lPi4qKS9i
dWlsZHMvKD9QPGJ1aWxkX251bWJlcj5cZCspIgogICAgICAgICAgICAgbGlua19tYXRjaCA9IHJl
Lm1hdGNoKHN0YXR1c19saW5rX3JlZ2V4cCwgc3RhdHVzX2xpbmtbJ2hyZWYnXSkKQEAgLTMzNiw3
ICszMzQsNyBAQCBjbGFzcyBCdWlsZEJvdChvYmplY3QpOgogCiAgICAgZGVmIF9wYXJzZV9jdXJy
ZW50X2J1aWxkX2NlbGwoc2VsZiwgYnVpbGRlciwgY2VsbCk6CiAgICAgICAgICMgQ29udmVydCBy
ZW5kZXJlZCBjb250ZW50cyB0byBuYXRpdmUgc3RyaW5nCi0gICAgICAgIHJlbmRlcmVkID0gZGVj
b2RlX2ZvcihjZWxsLnJlbmRlckNvbnRlbnRzKCksIHN0cikKKyAgICAgICAgcmVuZGVyZWQgPSBz
dHJpbmdfdXRpbHMuZGVjb2RlKGNlbGwucmVuZGVyQ29udGVudHMoKSwgdGFyZ2V0X3R5cGU9c3Ry
KQogCiAgICAgICAgICMgQmVhdXRpZnVsU291cCBhbmQgYnM0IHJlbmRlciBkaWZmZXJlbnRseQog
ICAgICAgICBpZiAnPGJyLz4nIGluIHJlbmRlcmVkOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2Fic3RyYWN0ZXhlY3V0aXZlLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9hYnN0cmFjdGV4ZWN1dGl2ZS5weQko
cmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2Fic3RyYWN0ZXhlY3V0aXZlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw5IEBACiBp
bXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5n
X3V0aWxzLCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVt
IGltcG9ydCBGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9j
b21wYXRpYmlsaXR5CiAKIGNsYXNzIEFic3RyYWN0RXhlY3V0aXZlKG9iamVjdCk6CiAKQEAgLTEw
MSwxMyArMTAyLDEzIEBAIGNsYXNzIEFic3RyYWN0RXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAg
IHBhc3MKIAogICAgIGRlZiBfc3RyaW5naWZ5X2FyZ3Moc2VsZiwgYXJncyk6Ci0gICAgICAgIHJl
dHVybiBtYXAodW5pY29kZV9jb21wYXRpYmlsaXR5LnVuaWNvZGUsIGFyZ3MpCisgICAgICAgIHJl
dHVybiBtYXAodW5pY29kZSwgYXJncykKIAogICAgIGRlZiBjb21tYW5kX2Zvcl9wcmludGluZyhz
ZWxmLCBhcmdzKToKICAgICAgICAgIiIiUmV0dXJucyBhIHByaW50LXJlYWR5IHN0cmluZyByZXBy
ZXNlbnRpbmcgY29tbWFuZCBhcmdzLgogICAgICAgICBUaGUgc3RyaW5nIHNob3VsZCBiZSBjb3B5
L3Bhc3RlIHJlYWR5IGZvciBleGVjdXRpb24gaW4gYSBzaGVsbC4iIiIKICAgICAgICAgYXJncyA9
IHNlbGYuX3N0cmluZ2lmeV9hcmdzKGFyZ3MpCi0gICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBh
dGliaWxpdHkuZGVjb2RlX2lmX25lY2Vzc2FyeSh1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2Rl
X2lmX25lY2Vzc2FyeSgnICcuam9pbihhcmdzKSwgJ3VuaWNvZGVfZXNjYXBlJykpCisgICAgICAg
IHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0cmluZ191dGlscy5lbmNvZGUoJyAnLmpvaW4o
YXJncyksIGVuY29kaW5nPSd1bmljb2RlX2VzY2FwZScpKQogCiAgICAgZGVmIHJ1bl9jb21tYW5k
KHNlbGYsIGFyZ3MsIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgaW5wdXQ9Tm9uZSwgc3Rkb3V0PU5vbmUs
IGVycm9yX2hhbmRsZXI9Tm9uZSwgaWdub3JlX2Vycm9ycz1GYWxzZSwKICAgICAgICAgcmV0dXJu
X2V4aXRfY29kZT1GYWxzZSwgcmV0dXJuX3N0ZGVycj1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUp
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jh
c2hsb2dzLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
IGltcG9ydCBkYXRldGltZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5Citmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgICAg
ICBmb3IgcGF0aCBpbiByZXZlcnNlZChzb3J0ZWQobG9ncykpOgogICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgIGlmIG5vdCBuZXdlcl90aGFuIG9yIHNlbGYuX2hvc3QuZmlsZXN5c3Rl
bS5tdGltZShwYXRoKSA+IG5ld2VyX3RoYW46Ci0gICAgICAgICAgICAgICAgICAgIGxvZ19maWxl
ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5faG9zdC5m
aWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCksICdhc2NpaScsICdpZ25vcmUnKQorICAg
ICAgICAgICAgICAgICAgICBsb2dfZmlsZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc2VsZi5faG9z
dC5maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCksIGVuY29kaW5nPSdhc2NpaScsIGVy
cm9ycz0naWdub3JlJykKICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkdMT0JBTF9Q
SURfUkVHRVguc2VhcmNoKGxvZ19maWxlKQogICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaDoK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGludChtYXRjaC5ncm91cCgncGlkJykpID09IHBp
ZDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3Nf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDEyIEBACiAKIGltcG9ydCB1bml0dGVzdAogCitmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAot
ZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQogCiAjIE5l
ZWRlZCB0byBzdXBwb3J0IFdpbmRvd3MgcG9ydCB0ZXN0cwogZnJvbSB3ZWJraXRweS5wb3J0Lndp
biBpbXBvcnQgV2luUG9ydApAQCAtMjk5LDcgKzMwMCw3IEBAIGNsYXNzIENyYXNoTG9nc1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmZpbGVzWycvVXNlcnMvbW9jay9MaWJy
YXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3
MjJfcXVhZHplbi5jcmFzaCddID0gc2VsZi5vdGhlcl9wcm9jZXNzX21vY2tfY3Jhc2hfcmVwb3J0
CiAgICAgICAgIHNlbGYuZmlsZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGlj
UmVwb3J0cy9EdW1wUmVuZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcyM19xdWFkemVuLmNyYXNoJ10g
PSBzZWxmLm1pc2Zvcm1hdHRlZF9tb2NrX2NyYXNoX3JlcG9ydAogCi0gICAgICAgIHNlbGYuZmls
ZXMgPSB7a2V5OiB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeSh2YWx1
ZSkgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5maWxlcy5pdGVtcygpfQorICAgICAgICBzZWxmLmZp
bGVzID0ge2tleTogc3RyaW5nX3V0aWxzLmVuY29kZSh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4g
c2VsZi5maWxlcy5pdGVtcygpfQogCiAgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IE1vY2tGaWxl
U3lzdGVtKHNlbGYuZmlsZXMpCiAgICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFzaExvZ3MoTW9ja1N5
c3RlbUhvc3QoZmlsZXN5c3RlbT1zZWxmLmZpbGVzeXN0ZW0pLCBDcmFzaExvZ3NUZXN0LkRBUldJ
Tl9NT0NLX0NSQVNIX0RJUkVDVE9SWSkKQEAgLTMxNyw3ICszMTgsNyBAQCBjbGFzcyBDcmFzaExv
Z3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
YWxsX2xvZ3MpLCA4KQogCiAgICAgICAgIGZvciB0ZXN0LCBjcmFzaF9sb2cgaW4gYWxsX2xvZ3Mu
aXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmFzaF9sb2cgaW4gW3VuaWNv
ZGVfY29tcGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KHZhbHVlKSBmb3IgdmFsdWUgaW4g
c2VsZi5maWxlcy52YWx1ZXMoKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY3Jhc2hf
bG9nIGluIFtzdHJpbmdfdXRpbHMuZGVjb2RlKHZhbHVlKSBmb3IgdmFsdWUgaW4gc2VsZi5maWxl
cy52YWx1ZXMoKV0pCiAgICAgICAgICAgICBpZiB0ZXN0LnNwbGl0KCctJylbMF0gIT0gJ1NhbmRi
b3gnOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0ID09ICJVbmtub3duIiBv
ciBpbnQodGVzdC5zcGxpdCgiLSIpWzFdKSBpbiByYW5nZSgyODUyNywgMjg1MzEpKQogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUu
cHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9leGVjdXRpdmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBAIGltcG9y
dCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgU3RyaW5nSU8sIHN0cmluZ191dGlscywgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uYWJzdHJhY3RleGVjdXRpdmUgaW1wb3J0IEFic3RyYWN0RXhlY3V0aXZl
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0dGVlIGltcG9ydCBUZWUKLWZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKIAogCiBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC03MSw3ICs3Miw3IEBAIGNsYXNzIFNjcmlw
dEVycm9yKEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHUiJXNcblxuTGFzdCAl
cyBjaGFyYWN0ZXJzIG9mIG91dHB1dDpcbiVzIiAlIFwKICAgICAgICAgICAgICAgICAgICAgKHNl
bGYsIG91dHB1dF9saW1pdCwgc2VsZi5vdXRwdXRbLW91dHB1dF9saW1pdDpdKQogICAgICAgICAg
ICAgcmV0dXJuIHUiJXNcblxuJXMiICUgKHNlbGYsIHNlbGYub3V0cHV0KQotICAgICAgICByZXR1
cm4gdW5pY29kZV9jb21wYXRpYmlsaXR5LnVuaWNvZGUoc2VsZikKKyAgICAgICAgcmV0dXJuIHVu
aWNvZGUoc2VsZikKIAogICAgIGRlZiBjb21tYW5kX25hbWUoc2VsZik6CiAgICAgICAgIGNvbW1h
bmRfcGF0aCA9IHNlbGYuc2NyaXB0X2FyZ3MKQEAgLTEyNyw3ICsxMjgsNyBAQCBjbGFzcyBFeGVj
dXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb3Vs
ZCBiZSBpbXByb3ZlZCBub3QgdG8gZmxhdHRlbiBvdXRwdXQgdG8gc3Rkb3V0LgogICAgICAgICAg
ICAgd2hpbGUgY2hpbGRfcHJvY2Vzcy5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICBv
dXRwdXRfbGluZSA9IGNoaWxkX3Byb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkKLSAgICAgICAgICAg
ICAgICB0ZWVkX291dHB1dC53cml0ZSh1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2Zvcihv
dXRwdXRfbGluZSwgc3RyKSkKKyAgICAgICAgICAgICAgICB0ZWVkX291dHB1dC53cml0ZShzdHJp
bmdfdXRpbHMuZGVjb2RlKG91dHB1dF9saW5lLCB0YXJnZXRfdHlwZT1zdHIpKQogICAgICAgICAg
ICAgcmV0dXJuIGNoaWxkX3Byb2Nlc3MucG9sbCgpCiAKICAgICAjIEZJWE1FOiBSZW1vdmUgdGhp
cyBkZXByZWNhdGVkIG1ldGhvZCBhbmQgbW92ZSBjYWxsZXJzIHRvIHJ1bl9jb21tYW5kLgpAQCAt
MTM3LDcgKzEzOCw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAg
IyBidXQgc3RpbGwgaGF2ZSB0aGUgb3V0cHV0IHRvIHN0dWZmIGludG8gYSBsb2cgZmlsZS4KICAg
ICBkZWYgcnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYsIGFyZ3MsIHF1aWV0PUZhbHNlLCBkZWNv
ZGVfb3V0cHV0PVRydWUsICoqa3dhcmdzKToKICAgICAgICAgIyBDYWNoZSB0aGUgY2hpbGQncyBv
dXRwdXQgbG9jYWxseSBzbyBpdCBjYW4gYmUgdXNlZCBmb3IgZXJyb3IgcmVwb3J0cy4KLSAgICAg
ICAgY2hpbGRfb3V0X2ZpbGUgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuU3RyaW5nSU8oKQorICAg
ICAgICBjaGlsZF9vdXRfZmlsZSA9IFN0cmluZ0lPKCkKICAgICAgICAgdGVlX3N0ZG91dCA9IHN5
cy5zdGRvdXQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgcXVpZXQ6CkBAIC0xNTMsOSAr
MTU0LDkgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAgY2hp
bGRfb3V0X2ZpbGUuY2xvc2UoKQogCiAgICAgICAgIGlmIGRlY29kZV9vdXRwdXQ6Ci0gICAgICAg
ICAgICBjaGlsZF9vdXRwdXQgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lmX25lY2Vz
c2FyeShjaGlsZF9vdXRwdXQsIHNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKKyAgICAg
ICAgICAgIGNoaWxkX291dHB1dCA9IHN0cmluZ191dGlscy5kZWNvZGUoY2hpbGRfb3V0cHV0LCBl
bmNvZGluZz1zZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBjaGlsZF9vdXRwdXQgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lm
X25lY2Vzc2FyeShjaGlsZF9vdXRwdXQsIHNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkK
KyAgICAgICAgICAgIGNoaWxkX291dHB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUoY2hpbGRfb3V0
cHV0LCBlbmNvZGluZz1zZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCiAKICAgICAgICAg
aWYgZXhpdF9jb2RlOgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3Ioc2NyaXB0X2FyZ3M9
YXJncywKQEAgLTMwNiw3ICszMDcsNyBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRp
dmUpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBzb21lIGNhc2VzIHRoZSBsaW5lIGNh
biBjb250YWluIG9uZSBvciBtb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGxlYWRpbmcg
d2hpdGUtc3BhY2VzLCBzbyBzdHJpcCBpdCBiZWZvcmUgc3BsaXQuCiAgICAgICAgICAgICAgICAg
ICAgICAgICBwaWQsIHByb2Nlc3NfbmFtZSA9IGxpbmUuc3RyaXAoKS5zcGxpdChiJyAnLCAxKQot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc19uYW1lX2ZpbHRlcih1bmljb2RlX2Nv
bXBhdGliaWxpdHkuZGVjb2RlX2Zvcihwcm9jZXNzX25hbWUsIHN0cikpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgcHJvY2Vzc19uYW1lX2ZpbHRlcihzdHJpbmdfdXRpbHMuZGVjb2RlKHBy
b2Nlc3NfbmFtZSwgdGFyZ2V0X3R5cGU9c3RyKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVubmluZ19waWRzLmFwcGVuZChpbnQocGlkKSkKICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKQEAgLTM3
NCw3ICszNzUsNyBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAg
ICAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MjgKICAg
ICAgICAgIyBmb3IgYW4gZXhhbXBsZSBvZiBhIHJlZ3Jlc2lvbiBjYXVzZWQgYnkgcGFzc2luZyBh
IHVuaWNvZGUgc3RyaW5nIGRpcmVjdGx5LgogICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0
byBlbmNvZGUgZGlmZmVyZW50bHkgb24gZGlmZmVyZW50IHBsYXRmb3Jtcy4KLSAgICAgICAgaW5w
dXQgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShpbnB1dCwgc2Vs
Zi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQorICAgICAgICBpbnB1dCA9IHN0cmluZ191dGls
cy5lbmNvZGUoaW5wdXQsIGVuY29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkK
ICAgICAgICAgcmV0dXJuIChzZWxmLlBJUEUsIGlucHV0KQogCiAgICAgIyBGSVhNRTogcnVuX2Fu
ZF90aHJvd19pZl9mYWlsIHNob3VsZCBiZSBtZXJnZWQgaW50byB0aGlzIG1ldGhvZC4KQEAgLTQw
NywxMSArNDA4LDExIEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAg
ICAgICAgICBpZiBub3Qgc3RyaW5nX3RvX2NvbW11bmljYXRlOgogICAgICAgICAgICAgICAgIG91
dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXQogICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHVuaWNvZGVfY29tcGF0aWJp
bGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KHN0cmluZ190b19jb21tdW5pY2F0ZSwgJ3V0Zi04Jykp
WzBdCisgICAgICAgICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShzdHJpbmdf
dXRpbHMuZW5jb2RlKHN0cmluZ190b19jb21tdW5pY2F0ZSwgZW5jb2Rpbmc9J3V0Zi04JykpWzBd
CiAKICAgICAgICAgICAgICMgcnVuX2NvbW1hbmQgYXV0b21hdGljYWxseSBkZWNvZGVzIHRvIHVu
aWNvZGUoKSBhbmQgY29udmVydHMgQ1JMRiB0byBMRiB1bmxlc3MgZXhwbGljaXRseSB0b2xkIG5v
dCB0by4KICAgICAgICAgICAgIGlmIGRlY29kZV9vdXRwdXQ6Ci0gICAgICAgICAgICAgICAgb3V0
cHV0ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3Nhcnkob3V0cHV0LCBz
ZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKQorICAg
ICAgICAgICAgICAgIG91dHB1dCA9IHN0cmluZ191dGlscy5kZWNvZGUob3V0cHV0LCBlbmNvZGlu
Zz1zZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKQog
CiAgICAgICAgICAgICAjIHdhaXQoKSBpcyBub3QgdGhyZWFkc2FmZSBhbmQgY2FuIHRocm93IE9T
RXJyb3IgZHVlIHRvOgogICAgICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3Vl
MTczMTcxNwpAQCAtNDY0LDExICs0NjUsMTEgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhl
Y3V0aXZlKToKICAgICBkZWYgX2VuY29kZV9hcmd1bWVudF9pZl9uZWVkZWQoc2VsZiwgYXJndW1l
bnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5fc2hvdWxkX2VuY29kZV9jaGlsZF9wcm9jZXNzX2Fy
Z3VtZW50cygpOgogICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50Ci0gICAgICAgIHJldHVybiB1
bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShhcmd1bWVudCwgc2VsZi5f
Y2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVu
Y29kZShhcmd1bWVudCwgZW5jb2Rpbmc9c2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQog
CiAgICAgZGVmIF9zdHJpbmdpZnlfYXJncyhzZWxmLCBhcmdzKToKICAgICAgICAgIyBQb3BlbiB3
aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhcmdzIGFyZSBub24tc3RyaW5ncyAobGlrZSBpbnQo
KSkKLSAgICAgICAgc3RyaW5nX2FyZ3MgPSBtYXAodW5pY29kZV9jb21wYXRpYmlsaXR5LnVuaWNv
ZGUsIGFyZ3MpCisgICAgICAgIHN0cmluZ19hcmdzID0gbWFwKHVuaWNvZGUsIGFyZ3MpCiAgICAg
ICAgICMgVGhlIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgUG9wZW4gY2Fubm90IGhhbmRsZSB1
bmljb2RlIHN0cmluZ3MuIDooCiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5fZW5jb2RlX2FyZ3Vt
ZW50X2lmX25lZWRlZCwgc3RyaW5nX2FyZ3MpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkJKHJldmlzaW9u
IDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmVfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOCBAQAogaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCBvcwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IEJ5dGVzSU8sIGRlY29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3NhcnksIHVuaWNv
ZGUKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBCeXRlc0lPLCBzdHJpbmdfdXRpbHMsIHVuaWNv
ZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0
RXJyb3IKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtMzgsOCArMzks
OCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBNb2NrUHJvY2Vz
cyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGRvdXQ9J01PQ0sgU1RET1VUXG4n
LCBzdGRlcnI9JycpOgogICAgICAgICBzZWxmLnBpZCA9IDQyCi0gICAgICAgIHNlbGYuc3Rkb3V0
ID0gQnl0ZXNJTyhlbmNvZGVfaWZfbmVjZXNzYXJ5KHN0ZG91dCkpCi0gICAgICAgIHNlbGYuc3Rk
ZXJyID0gQnl0ZXNJTyhlbmNvZGVfaWZfbmVjZXNzYXJ5KHN0ZGVycikpCisgICAgICAgIHNlbGYu
c3Rkb3V0ID0gQnl0ZXNJTyhzdHJpbmdfdXRpbHMuZW5jb2RlKHN0ZG91dCkpCisgICAgICAgIHNl
bGYuc3RkZXJyID0gQnl0ZXNJTyhzdHJpbmdfdXRpbHMuZW5jb2RlKHN0ZGVycikpCiAgICAgICAg
IHNlbGYuc3RkaW4gPSBCeXRlc0lPKCkKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gMAogICAg
ICAgICBzZWxmLl9pc19ydW5uaW5nID0gRmFsc2UKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBN
b2NrRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZW52X3N0cmluZyA9ICIsIGVu
dj17IiArIGVudl9zdHJpbmcgKyAifSIKICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIiCiAg
ICAgICAgICAgICBpZiBpbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1dF9zdHJpbmcgPSAiLCBp
bnB1dD0lcyIgJSBkZWNvZGVfZm9yKGlucHV0LCBzdHIpCisgICAgICAgICAgICAgICAgaW5wdXRf
c3RyaW5nID0gIiwgaW5wdXQ9JXMiICUgc3RyaW5nX3V0aWxzLmRlY29kZShpbnB1dCwgdGFyZ2V0
X3R5cGU9c3RyKQogICAgICAgICAgICAgX2xvZy5pbmZvKCJNT0NLIHJ1bl9jb21tYW5kOiAlcywg
Y3dkPSVzJXMlcyIgJSAoYXJncywgY3dkLCBlbnZfc3RyaW5nLCBpbnB1dF9zdHJpbmcpKQogICAg
ICAgICBvdXRwdXQgPSAiTU9DSyBvdXRwdXQgb2YgY2hpbGQgcHJvY2VzcyIKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0
aXZlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcwotaW1wb3J0IGVycm5v
CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwpAQCAtNDYsNyAr
NDUsOCBAQCBpZiB0aGlyZF9wYXJ0eV9weSBub3QgaW4gc3lzLnBhdGg6CiAKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tG
aWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmls
aXR5CisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCiBjbGFzcyBT
Y3JpcHRFcnJvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTM5LDExICsxMzksMTEgQEAg
Y2xhc3MgRXhlY3V0aXZlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBlbmNv
ZGluZyA9ICdtYmNzJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RpbmcgPSAndXRm
LTgnCi0gICAgICAgIGVuY29kZWRfdG9yID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9p
Zl9uZWNlc3NhcnkodW5pY29kZV90b3JfaW5wdXQsIGVuY29kaW5nKQorICAgICAgICBlbmNvZGVk
X3RvciA9IHN0cmluZ191dGlscy5lbmNvZGUodW5pY29kZV90b3JfaW5wdXQsIGVuY29kaW5nPWVu
Y29kaW5nKQogICAgICAgICAjIE9uIFdpbmRvd3MsIHdlIGV4cGVjdCB0aGUgdW5pY29kZS0+bWJj
cy0+dW5pY29kZSByb3VuZHRyaXAgdG8gYmUKICAgICAgICAgIyBsb3NzeS4gT24gb3RoZXIgcGxh
dGZvcm1zLCB3ZSBleHBlY3QgYSBsb3NzbGVzcyByb3VuZHRyaXAuCiAgICAgICAgIGlmIHN5cy5w
bGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgIHVuaWNvZGVfdG9yX291dHB1
dCA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KGVuY29kZWRfdG9y
LCBlbmNvZGluZykKKyAgICAgICAgICAgIHVuaWNvZGVfdG9yX291dHB1dCA9IHN0cmluZ191dGls
cy5kZWNvZGUoZW5jb2RlZF90b3IsIGVuY29kaW5nPWVuY29kaW5nKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgdW5pY29kZV90b3Jfb3V0cHV0ID0gdW5pY29kZV90b3JfaW5wdXQKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0
ZW0ucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9maWxlc3lzdGVtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGlt
cG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5LCBl
bmNvZGVfZm9yCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIAogY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgpAQCAtMjI3LDcgKzIyNyw3IEBAIGNsYXNzIEZpbGVTeXN0
ZW0ob2JqZWN0KToKIAogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250
ZW50cyk6CiAgICAgICAgIHdpdGggb3BlbihwYXRoLCAnd2InKSBhcyBmOgotICAgICAgICAgICAg
Zi53cml0ZShlbmNvZGVfZm9yKGNvbnRlbnRzLCBieXRlcykpCisgICAgICAgICAgICBmLndyaXRl
KHN0cmluZ191dGlscy5lbmNvZGUoY29udGVudHMsIHRhcmdldF90eXBlPWJ5dGVzKSkKIAogICAg
IGRlZiBvcGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoLCBlcnJvcnM9J3N0cmlj
dCcpOgogICAgICAgICAjIE5vdGU6IFRoZXJlIGFwcGVhcnMgdG8gYmUgYW4gaXNzdWUgd2l0aCB0
aGUgcmV0dXJuZWQgZmlsZSBvYmplY3RzCkBAIC0yNTcsNyArMjU3LDcgQEAgY2xhc3MgRmlsZVN5
c3RlbShvYmplY3QpOgogCiAgICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBV
VEYtOCB3aXRoIG5vIEJPTS4iIiIKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycs
ICd1dGYtOCcsIGVycm9ycz1lcnJvcnMpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGRlY29k
ZV9pZl9uZWNlc3NhcnkoY29udGVudHMsIGVycm9ycz1lcnJvcnMpKQorICAgICAgICAgICAgZi53
cml0ZShzdHJpbmdfdXRpbHMuZGVjb2RlKGNvbnRlbnRzLCBlcnJvcnM9ZXJyb3JzKSkKIAogICAg
IGRlZiBzaGExKHNlbGYsIHBhdGgpOgogICAgICAgICBjb250ZW50cyA9IHNlbGYucmVhZF9iaW5h
cnlfZmlsZShwYXRoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsOCBAQCBpbXBvcnQgZXJybm8KIGltcG9ydCBoYXNo
bGliCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHN5cwogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbiBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IHBhdGgKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBVbmljb2RlSU8sIHN0
cmluZ191dGlscwogCiBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgIHNlcCA9ICcv
JwpAQCAtNDgsNyArNDYsNyBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAg
ICAgICAgICAgIHZhbHVlIG9mIE5vbmUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxl
IHNob3VsZAogICAgICAgICAgICAgICAgIG5vdCBleGlzdC4KICAgICAgICAgIiIiCi0gICAgICAg
IHNlbGYuZmlsZXMgPSB7bmFtZTogdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNl
c3NhcnkoY29udGVudHMpIGZvciBuYW1lLCBjb250ZW50cyBpbiAoZmlsZXMgb3Ige30pLml0ZW1z
KCl9CisgICAgICAgIHNlbGYuZmlsZXMgPSB7bmFtZTogc3RyaW5nX3V0aWxzLmVuY29kZShjb250
ZW50cykgZm9yIG5hbWUsIGNvbnRlbnRzIGluIChmaWxlcyBvciB7fSkuaXRlbXMoKX0KICAgICAg
ICAgc2VsZi53cml0dGVuX2ZpbGVzID0ge30KICAgICAgICAgc2VsZi5sYXN0X3RtcGRpciA9IE5v
bmUKICAgICAgICAgc2VsZi5jdXJyZW50X3RtcG5vID0gMApAQCAtMzI5LDggKzMyNyw4IEBAIGNs
YXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgZGVmIHdyaXRlX2JpbmFyeV9maWxlKHNl
bGYsIHBhdGgsIGNvbnRlbnRzKToKICAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYXNzZXJ0
IGlmIGRpcm5hbWUocGF0aCkgZG9lc24ndCBleGlzdD8KICAgICAgICAgc2VsZi5tYXliZV9tYWtl
X2RpcmVjdG9yeShzZWxmLmRpcm5hbWUocGF0aCkpCi0gICAgICAgIHNlbGYuZmlsZXNbcGF0aF0g
PSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2Zvcihjb250ZW50cywgYnl0ZXMpCi0gICAg
ICAgIHNlbGYud3JpdHRlbl9maWxlc1twYXRoXSA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNv
ZGVfZm9yKGNvbnRlbnRzLCBieXRlcykKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IHN0cmlu
Z191dGlscy5lbmNvZGUoY29udGVudHMpCisgICAgICAgIHNlbGYud3JpdHRlbl9maWxlc1twYXRo
XSA9IHN0cmluZ191dGlscy5lbmNvZGUoY29udGVudHMpCiAKICAgICBkZWYgb3Blbl90ZXh0X2Zp
bGVfZm9yX3JlYWRpbmcoc2VsZiwgcGF0aCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAgaWYg
c2VsZi5maWxlcy5nZXQocGF0aCkgaXMgTm9uZToKQEAgLTM0NCw3ICszNDIsNyBAQCBjbGFzcyBN
b2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9m
aWxlKHBhdGgpLmRlY29kZSgndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKQogCiAgICAgZGVmIHdyaXRl
X3RleHRfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cywgZXJyb3JzPSdzdHJpY3QnKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUocGF0aCwgdW5pY29kZV9jb21wYXRpYmls
aXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoY29udGVudHMsICd1dGYtOCcsIGVycm9ycz1lcnJvcnMp
KQorICAgICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBzdHJpbmdfdXRp
bHMuZW5jb2RlKGNvbnRlbnRzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKSkKIAog
ICAgIGRlZiBzaGExKHNlbGYsIHBhdGgpOgogICAgICAgICBjb250ZW50cyA9IHNlbGYucmVhZF9i
aW5hcnlfZmlsZShwYXRoKQpAQCAtNDUzLDEzICs0NTEsMTMgQEAgY2xhc3MgV3JpdGFibGVCaW5h
cnlGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogCiAgICAg
ZGVmIHdyaXRlKHNlbGYsIHN0cmluZyk6Ci0gICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRo
XSArPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShzdHJpbmcsICd1
dGYtOCcpCisgICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXSArPSBzdHJpbmdfdXRpbHMu
ZW5jb2RlKHN0cmluZywgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgc2VsZi5mcy53cml0dGVu
X2ZpbGVzW3NlbGYucGF0aF0gPSBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0KIAogCiBjbGFzcyBX
cml0YWJsZVRleHRGaWxlT2JqZWN0KFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdCk6CiAgICAgZGVm
IHdyaXRlKHNlbGYsIHN0cik6Ci0gICAgICAgIFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdC53cml0
ZShzZWxmLCB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShzdHIsICd1
dGYtOCcpKQorICAgICAgICBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qud3JpdGUoc2VsZiwgc3Ry
aW5nX3V0aWxzLmVuY29kZShzdHIsIGVuY29kaW5nPSd1dGYtOCcpKQogCiAKIGNsYXNzIFJlYWRh
YmxlQmluYXJ5RmlsZU9iamVjdChvYmplY3QpOgpAQCAtNDkyLDcgKzQ5MCw3IEBAIGNsYXNzIFJl
YWRhYmxlQmluYXJ5RmlsZU9iamVjdChvYmplY3QpOgogCiBjbGFzcyBSZWFkYWJsZVRleHRGaWxl
T2JqZWN0KFJlYWRhYmxlQmluYXJ5RmlsZU9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZzLCBwYXRoLCBkYXRhKToKLSAgICAgICAgc3VwZXIoUmVhZGFibGVUZXh0RmlsZU9iamVjdCwg
c2VsZikuX19pbml0X18oZnMsIHBhdGgsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5Vbmljb2RlSU8o
dW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9mb3IoZGF0YSwgdW5pY29kZV9jb21wYXRpYmls
aXR5LnVuaWNvZGUpKSkKKyAgICAgICAgc3VwZXIoUmVhZGFibGVUZXh0RmlsZU9iamVjdCwgc2Vs
ZikuX19pbml0X18oZnMsIHBhdGgsIFVuaWNvZGVJTyhzdHJpbmdfdXRpbHMuZGVjb2RlKGRhdGEp
KSkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5kYXRhLmNsb3NlKCkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRw
dXRjYXB0dXJlLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8K
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwogCiAKIGNsYXNzIE91dHB1dENhcHR1
cmUob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9v
dXRwdXR0ZWVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL291dHB1dHRlZV91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dHRlZV91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOSBAQAogCiBpbXBvcnQgdW5pdHRlc3QK
IAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dHRlZSBpbXBvcnQgVGVlLCBPdXRw
dXRUZWUKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
U3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0dGVlIGltcG9ydCBUZWUKIAogCiBjbGFzcyBTaW1wbGVU
ZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVj
dGF0aW9uc191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOSBAQAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQg
dW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzIGltcG9ydCBsaW50X3Rlc3RfZXhwZWN0YXRpb25zCiAKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3Jh
dGlvbnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDI2NDcx
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTMgQEAg
aW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBvdXRwdXRjYXB0dXJlLCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jh
c2hsb2dzX3VuaXR0ZXN0IGltcG9ydCBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2RhcndpbgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZy
b20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KLQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUwogZnJv
bSB3ZWJraXRweS5wb3J0IGltcG9ydCB0ZXN0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2lu
Z2xlX3Rlc3RfcnVubmVyLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDggQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBy
ZQotaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmls
aXR5IGltcG9ydCBkZWNvZGVfZm9yCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0
aWxzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgdGVzdF9y
ZXN1bHRfd3JpdGVyCiBmcm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJJbnB1
dCwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfZXhwZWN0YXRpb25zCkBAIC0yMTUsNyArMjE0LDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICBlbGlmIGRyaXZlcl9vdXRwdXQuZXJyb3I6CiAgICAgICAg
ICAgICBfbG9nLmRlYnVnKCIlcyAlcyBvdXRwdXQgc3RkZXJyIGxpbmVzOiIgJSAoc2VsZi5fd29y
a2VyX25hbWUsIHRlc3RuYW1lKSkKICAgICAgICAgZm9yIGxpbmUgaW4gZHJpdmVyX291dHB1dC5l
cnJvci5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCIgIHt9Ii5mb3JtYXQo
ZGVjb2RlX2ZvcihsaW5lLCBzdHIpKSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiAge30iLmZv
cm1hdChzdHJpbmdfdXRpbHMuZGVjb2RlKGxpbmUsIHRhcmdldF90eXBlPXN0cikpKQogICAgICAg
ICByZXR1cm4gZmFpbHVyZXMKIAogICAgIGRlZiBfY29tcGFyZV9vdXRwdXQoc2VsZiwgZXhwZWN0
ZWRfZHJpdmVyX291dHB1dCwgZHJpdmVyX291dHB1dCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1
aWxkYm90X3Jlc3VsdHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHNfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMCBAQAogCiBpbXBvcnQgdW5pdHRl
c3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHku
Y29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkudG9vbC5t
b2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscyBpbXBvcnQgdGVzdF9ydW5fcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0CiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgYnVpbGRib3RfcmVzdWx0cwpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFt
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw4IEBAIGltcG9ydCByZQog
aW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0
cmVhbSBpbXBvcnQgTWV0ZXJlZFN0cmVhbQogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTUgKzMwLDExIEBACiAKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUK
IGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0
IE1vY2tIb3N0Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d0ZXN0aW5nCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5IGlt
cG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQg
bWFuYWdlcgorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVz
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cwpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLWltcG9ydCBqc29uCi1pbXBvcnQgbWF0aAogaW1wb3J0IHVuaXR0ZXN0CiAK
IGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lP
CiBmcm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJPdXRwdXQKLWZyb20gd2Vi
a2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0RHJpdmVyCiBmcm9tIHdlYmtpdHB5LnBvcnQudGVz
dCBpbXBvcnQgVGVzdFBvcnQKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRl
c3QgaW1wb3J0IFBlcmZUZXN0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0
ZXN0IGltcG9ydCBQZXJmVGVzdE1ldHJpYwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdy
YXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIGltcG9ydCB1bml0
dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBT
dHJpbmdJTwogZnJvbSB3ZWJraXRweS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0CiBm
cm9tIHdlYmtpdHB5LnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKIGZyb20gd2Via2l0cHkucGVy
Zm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwxMyBAQAogIiIiVW5pdCB0ZXN0cyBm
b3IgcnVuX3BlcmZfdGVzdHMuIiIiCiAKIGltcG9ydCBqc29uCi1pbXBvcnQgcmUKIGltcG9ydCB1
bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Vi
a2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAotZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5j
ZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgREVGQVVMVF9URVNUX1JVTk5FUl9DT1VOVAogZnJvbSB3
ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdHNydW5uZXIgaW1wb3J0IFBlcmZUZXN0
c1J1bm5lcgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lv
biAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBpbXBvcnQgc3lzCiAKIGZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgZmluZF9maWxlcwogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHJlYWRfY2hlY2tz
dW1fZnJvbV9wbmcKQEAgLTUyLDcgKzUzLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmV4ZWN1dGl2ZSBpbQogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBv
cnQgUFVCTElDX1RBQkxFLCBJTlRFUk5BTF9UQUJMRSwgVmVyc2lvbk5hbWVNYXAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLndhdmVkaWZmIGltcG9ydCBXYXZlRGlmZgogZnJvbSB3ZWJraXRweS5jb21t
b24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9mb3IsIGVuY29kZV9pZl9uZWNl
c3NhcnksIGRlY29kZV9mb3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0
X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBv
cnQgaW1wb3J0IGNvbmZpZyBhcyBwb3J0X2NvbmZpZwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9y
dCBkcml2ZXIKQEAgLTMyNiw4ICszMjYsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVm
IGRpZmZfdGV4dChzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfZmls
ZW5hbWUsIGFjdHVhbF9maWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBzdHJpbmcgY29u
dGFpbmluZyB0aGUgZGlmZiBvZiB0aGUgdHdvIHRleHQgc3RyaW5ncwogICAgICAgICBpbiAndW5p
ZmllZCBkaWZmJyBmb3JtYXQuIiIiCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gZGVjb2Rl
X2ZvcihlbmNvZGVfaWZfbmVjZXNzYXJ5KGV4cGVjdGVkX2ZpbGVuYW1lKSwgc3RyKQotICAgICAg
ICBhY3R1YWxfZmlsZW5hbWUgPSBkZWNvZGVfZm9yKGVuY29kZV9pZl9uZWNlc3NhcnkoYWN0dWFs
X2ZpbGVuYW1lKSwgc3RyKQorICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHN0cmluZ191dGls
cy5kZWNvZGUoc3RyaW5nX3V0aWxzLmVuY29kZShleHBlY3RlZF9maWxlbmFtZSksIHRhcmdldF90
eXBlPXN0cikKKyAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShz
dHJpbmdfdXRpbHMuZW5jb2RlKGFjdHVhbF9maWxlbmFtZSksIHRhcmdldF90eXBlPXN0cikKICAg
ICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGV4cGVjdGVkX3RleHQuc3BsaXRsaW5l
cyhUcnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXh0
LnNwbGl0bGluZXMoVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9maWxlbmFtZSwKQEAgLTQ4OCw3ICs0ODgsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgICAgICAgICBiYXNlbGluZV9wYXRoID0gc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0
X25hbWUsICcud2ViYXJjaGl2ZScsIGRldmljZV90eXBlPWRldmljZV90eXBlKQogICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGJhc2VsaW5lX3BhdGgpOgogICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHRleHQgPSBkZWNvZGVfZm9yKHNlbGYuX2Zp
bGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShiYXNlbGluZV9wYXRoKSwgc3RyKQorICAgICAgICB0
ZXh0ID0gc3RyaW5nX3V0aWxzLmRlY29kZShzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2Zp
bGUoYmFzZWxpbmVfcGF0aCksIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgcmV0dXJuIHRleHQu
cmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKICAgICBkZWYgX2dldF9yZWZ0ZXN0X2xpc3Qoc2VsZiwg
dGVzdF9uYW1lKToKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgaWYgYXJnczoKICAgICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoYXJn
cykKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3Jp
cHRfY29tbWFuZCwgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSwgZGVjb2RlX291dHB1dD1kZWNvZGVf
b3V0cHV0LCBlbnY9ZW52KQotICAgICAgICBfbG9nLmRlYnVnKCdPdXRwdXQgb2YgJXM6XG4lcycg
JSAocnVuX3NjcmlwdF9jb21tYW5kLCBlbmNvZGVfZm9yKG91dHB1dCwgc3RyKSBpZiBkZWNvZGVf
b3V0cHV0IGVsc2Ugb3V0cHV0KSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxu
JXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgc3RyaW5nX3V0aWxzLmVuY29kZShvdXRwdXQsIHRh
cmdldF90eXBlPXN0cikgaWYgZGVjb2RlX291dHB1dCBlbHNlIG91dHB1dCkpCiAgICAgICAgIHJl
dHVybiBvdXRwdXQKIAogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiAr
MzQsMTIgQEAgaW1wb3J0IHNobGV4CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IG9z
CisKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKLWZyb20gb3MucGF0aCBpbXBvcnQgbm9ybXBhdGgKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnByb2ZpbGVyIGltcG9ydCBQcm9maWxlckZhY3RvcnkKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwg
ZGVjb2RlX2ZvcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTg3
LDExICs4NywxMSBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAgICAgICAgIHRl
c3RfdGltZT0wLCBtZWFzdXJlbWVudHM9Tm9uZSwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycsIGNy
YXNoZWRfcHJvY2Vzc19uYW1lPSc/PycsCiAgICAgICAgICAgICBjcmFzaGVkX3BpZD1Ob25lLCBj
cmFzaF9sb2c9Tm9uZSwgcGlkPU5vbmUpOgogICAgICAgICAjIEZJWE1FOiBBcmdzIGNvdWxkIGJl
IHJlbmFtZWQgdG8gYmV0dGVyIGNsYXJpZnkgd2hhdCB0aGV5IGRvLgotICAgICAgICBzZWxmLnRl
eHQgPSBkZWNvZGVfZm9yKHRleHQsIHN0cikgaWYgdGV4dCBlbHNlIE5vbmUKKyAgICAgICAgc2Vs
Zi50ZXh0ID0gc3RyaW5nX3V0aWxzLmRlY29kZSh0ZXh0LCB0YXJnZXRfdHlwZT1zdHIpIGlmIHRl
eHQgZWxzZSBOb25lCiAgICAgICAgIHNlbGYuaW1hZ2UgPSBpbWFnZSAgIyBNYXkgYmUgZW1wdHkt
c3RyaW5nIGlmIHRoZSB0ZXN0IGNyYXNoZXMuCiAgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IGlt
YWdlX2hhc2gKICAgICAgICAgc2VsZi5pbWFnZV9kaWZmID0gTm9uZSAgIyBpbWFnZV9kaWZmIGdl
dHMgZmlsbGVkIGluIGFmdGVyIGNvbnN0cnVjdGlvbi4KLSAgICAgICAgc2VsZi5hdWRpbyA9IGVu
Y29kZV9pZl9uZWNlc3NhcnkoYXVkaW8pIGlmIGF1ZGlvIGVsc2UgTm9uZSAgIyBCaW5hcnkgZm9y
bWF0IGlzIHBvcnQtZGVwZW5kZW50LgorICAgICAgICBzZWxmLmF1ZGlvID0gc3RyaW5nX3V0aWxz
LmVuY29kZShhdWRpbykgaWYgYXVkaW8gZWxzZSBOb25lICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9y
dC1kZXBlbmRlbnQuCiAgICAgICAgIHNlbGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxmLmNy
YXNoZWRfcHJvY2Vzc19uYW1lID0gY3Jhc2hlZF9wcm9jZXNzX25hbWUKICAgICAgICAgc2VsZi5j
cmFzaGVkX3BpZCA9IGNyYXNoZWRfcGlkCkBAIC0yMTUsNyArMjE1LDcgQEAgY2xhc3MgRHJpdmVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAg
ICAgICAgIHRleHQsIGF1ZGlvID0gc2VsZi5fcmVhZF9maXJzdF9ibG9jayhkZWFkbGluZSwgZHJp
dmVyX2lucHV0LnRlc3RfbmFtZSkgICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVyIHRleHQgb3IgYXVk
aW8KICAgICAgICAgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoID0gc2VsZi5fcmVhZF9vcHRpb25h
bF9pbWFnZV9ibG9jayhkZWFkbGluZSwgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgICMgVGhlIHNl
Y29uZCAob3B0aW9uYWwpIGJsb2NrIGlzIGltYWdlIGRhdGEuCi0gICAgICAgIHRleHQgPSBkZWNv
ZGVfZm9yKHRleHQsIHN0cikKKyAgICAgICAgdGV4dCA9IHN0cmluZ191dGlscy5kZWNvZGUodGV4
dCwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAgICAgIGNyYXNoZWQgPSBzZWxmLmhhc19jcmFzaGVk
KCkKICAgICAgICAgdGltZWRfb3V0ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0CkBA
IC0yMjksOSArMjI5LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICAjIElu
IHRoZSB0aW1lb3V0IGNhc2UsIHdlIGtpbGwgdGhlIGh1bmcgcHJvY2VzcyBhcyB3ZWxsLgogICAg
ICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdG9wKHNlbGYuX3BvcnQu
ZHJpdmVyX3N0b3BfdGltZW91dCgpIGlmIHN0b3Bfd2hlbl9kb25lIGVsc2UgMC4wKQogICAgICAg
ICAgICAgaWYgb3V0OgotICAgICAgICAgICAgICAgIHRleHQgKz0gZGVjb2RlX2ZvcihvdXQsIHN0
cikKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHN0cmluZ191dGlscy5kZWNvZGUob3V0LCB0YXJn
ZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBpZiBlcnI6Ci0gICAgICAgICAgICAgICAgc2VsZi5l
cnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2RlX2ZvcihlcnIsIHN0cikKKyAgICAgICAgICAgICAgICBz
ZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVyciwgdGFyZ2V0X3R5
cGU9c3RyKQogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCiAKICAgICAg
ICAgY3Jhc2hfbG9nID0gTm9uZQpAQCAtMjg0LDggKzI4NCw4IEBAIGNsYXNzIERyaXZlcihvYmpl
Y3QpOgogICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgogICAgICAgICAg
ICAgbSA9IHJlLm1hdGNoKGInXihbXjpdKyk6IChbMC05XSspJCcsIGxpbmUpCiAgICAgICAgICAg
ICBpZiBtOgotICAgICAgICAgICAgICAgIHByb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobS5ncm91
cCgxKSwgc3RyKQotICAgICAgICAgICAgICAgIHByb2Nlc3NfaWQgPSBkZWNvZGVfZm9yKG0uZ3Jv
dXAoMiksIHN0cikKKyAgICAgICAgICAgICAgICBwcm9jZXNzX25hbWUgPSBzdHJpbmdfdXRpbHMu
ZGVjb2RlKG0uZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikKKyAgICAgICAgICAgICAgICBwcm9j
ZXNzX2lkID0gc3RyaW5nX3V0aWxzLmRlY29kZShtLmdyb3VwKDIpLCB0YXJnZXRfdHlwZT1zdHIp
CiAgICAgICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc2VzW3Byb2Nlc3NfbmFtZV0uYXBwZW5kKHBy
b2Nlc3NfaWQpCiAKICAgICAgICAgcmV0dXJuIGNoaWxkX3Byb2Nlc3NlcwpAQCAtNTQ5LDcgKzU0
OSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgIGRlZiBfY2hlY2tfZm9yX2RyaXZlcl90
aW1lb3V0KHNlbGYsIG91dF9saW5lKToKICAgICAgICAgaWYgb3V0X2xpbmUuc3RhcnRzd2l0aChi
IiNQSUQgVU5SRVNQT05TSVZFIC0gIik6CiAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGIn
I1BJRCBVTlJFU1BPTlNJVkUgLSAoXFMrKScsIG91dF9saW5lKQotICAgICAgICAgICAgY2hpbGRf
cHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBl
bHNlICdXZWJQcm9jZXNzJworICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gc3RyaW5n
X3V0aWxzLmRlY29kZShtYXRjaC5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSBpZiBtYXRjaCBl
bHNlICdXZWJQcm9jZXNzJwogICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxk
KyknLCBvdXRfbGluZSkKICAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfcGlkID0gaW50KG1hdGNo
Lmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAgICAgICAgIGVycl9saW5lID0gJ1dh
aXQgb24gbm90aWZ5RG9uZSB0aW1lZCBvdXQsIHByb2Nlc3MgJyArIGNoaWxkX3Byb2Nlc3NfbmFt
ZSArICcgcGlkID0gJyArIHN0cihjaGlsZF9wcm9jZXNzX3BpZCkKQEAgLTU3MiwyMSArNTcyLDIx
IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAg
ICAgZWxpZiBlcnJvcl9saW5lLnN0YXJ0c3dpdGgoYiIjQ1JBU0hFRCAtICIpOgogICAgICAgICAg
ICAgbWF0Y2ggPSByZS5tYXRjaChiJyNDUkFTSEVEIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAg
ICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBkZWNvZGVfZm9yKG1hdGNoLmdy
b3VwKDEpLCBzdHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBzZWxm
Ll9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUobWF0Y2guZ3JvdXAo
MSksIHRhcmdldF90eXBlPXN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKICAgICAgICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgZXJyb3JfbGluZSkKICAgICAgICAg
ICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNl
IE5vbmUKICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIGNyYXNoLCBwaWQgPSAlcycgJSAoc2Vs
Zi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUsIHN0cihzZWxmLl9jcmFzaGVkX3BpZCkpKQogICAgICAg
ICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBlcnJvcl9saW5lLnN0YXJ0c3dpdGgoYiIj
UFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSAiKToKICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2go
YicjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSAoXFMrKScsIGVycm9yX2xpbmUpCi0gICAgICAgICAg
ICBjaGlsZF9wcm9jZXNzX25hbWUgPSBkZWNvZGVfZm9yKG1hdGNoLmdyb3VwKDEpLCBzdHIpIGlm
IG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBjaGlsZF9wcm9jZXNzX25hbWUg
PSBzdHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1zdHIpIGlm
IG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCiAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChi
J3BpZCAoXGQrKScsIGVycm9yX2xpbmUpCiAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzX3BpZCA9
IGludChtYXRjaC5ncm91cCgxKSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAgICAgICAgICAgICBfbG9n
LmRlYnVnKCclcyBpcyB1bnJlc3BvbnNpdmUsIHBpZCA9ICVzJyAlIChjaGlsZF9wcm9jZXNzX25h
bWUsIHN0cihjaGlsZF9wcm9jZXNzX3BpZCkpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3Rp
bWVkX291dCA9IFRydWUKICAgICAgICAgICAgIGlmIGNoaWxkX3Byb2Nlc3NfcGlkOgogICAgICAg
ICAgICAgICAgIHNlbGYuX3BvcnQuc2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBj
aGlsZF9wcm9jZXNzX3BpZCwgc2VsZi5fdGFyZ2V0X2hvc3QpCi0gICAgICAgICAgICBzZWxmLmVy
cm9yX2Zyb21fdGVzdCArPSBkZWNvZGVfZm9yKGVycm9yX2xpbmUsIHN0cikKKyAgICAgICAgICAg
IHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IHN0cmluZ191dGlscy5kZWNvZGUoZXJyb3JfbGluZSwg
dGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mud3JpdGUo
JyNTQU1QTEUgRklOSVNIRURcbicsIFRydWUpICAjIE11c3QgYmUgYWJsZSB0byBpZ25vcmUgYSBi
cm9rZW4gcGlwZSBoZXJlLCB0YXJnZXQgcHJvY2VzcyBtYXkgYWxyZWFkeSBiZSBjbG9zZWQuCiAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5oYXNfY3Jhc2hlZCgp
CkBAIC02NDAsNyArNjQwLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICBkZWYgX3Jl
YWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhl
YWRlcl9maWx0ZXI9Tm9uZSk6CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4
dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgotICAgICAgICAgICAg
dmFsdWUgPSBkZWNvZGVfZm9yKGxpbmUuc3BsaXQoKVsxXSwgc3RyKQorICAgICAgICAgICAgdmFs
dWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGxpbmUuc3BsaXQoKVsxXSwgdGFyZ2V0X3R5cGU9c3Ry
KQogICAgICAgICAgICAgaWYgaGVhZGVyX2ZpbHRlcjoKICAgICAgICAgICAgICAgICB2YWx1ZSA9
IGhlYWRlcl9maWx0ZXIodmFsdWUpCiAgICAgICAgICAgICBzZXRhdHRyKGJsb2NrLCBoZWFkZXJf
YXR0ciwgdmFsdWUpCkBAIC02NjEsNyArNjYxLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAK
ICAgICAgICAgIyBOb3RlLCB3ZSdyZSBub3QgcmVhZGluZyBFeHBlY3RlZEhhc2g6IGhlcmUsIGJ1
dCB3ZSBjb3VsZC4KICAgICAgICAgIyBJZiB0aGUgbGluZSB3YXNuJ3QgYSBoZWFkZXIsIHdlIGp1
c3QgYXBwZW5kIGl0IHRvIHRoZSBjb250ZW50LgotICAgICAgICBibG9jay5jb250ZW50ID0gZW5j
b2RlX2lmX25lY2Vzc2FyeShibG9jay5jb250ZW50KSArIGxpbmUKKyAgICAgICAgYmxvY2suY29u
dGVudCA9IHN0cmluZ191dGlscy5lbmNvZGUoYmxvY2suY29udGVudCkgKyBsaW5lCiAKICAgICBk
ZWYgX3N0cmlwX2VvZihzZWxmLCBsaW5lKToKICAgICAgICAgaWYgbGluZSBhbmQgbGluZS5lbmRz
d2l0aChiIiNFT0ZcbiIpOgpAQCAtNzA2LDcgKzcwNiw3IEBAIGNsYXNzIERyaXZlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgICMgRklYTUU6IFVubGlrZSBIVFRQLCBEUlQgZHVtcHMgdGhlIGNv
bnRlbnQgcmlnaHQgYWZ0ZXIgcHJpbnRpbmcgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCiAgICAg
ICAgICAgICAgICAgIyBEb24ndCB3YWl0IHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBoZWFkZXJzLCBq
dXN0IHJlYWQgdGhlIGJpbmFyeSBibG9iIHJpZ2h0IG5vdy4KICAgICAgICAgICAgICAgICBpZiBj
b250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVyX2NoZWNrICE9IGJsb2NrLl9jb250ZW50X2xlbmd0
aDoKLSAgICAgICAgICAgICAgICAgICAgYmxvY2suY29udGVudCA9IGVuY29kZV9pZl9uZWNlc3Nh
cnkoc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250
ZW50X2xlbmd0aCkpCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzdHJpbmdf
dXRpbHMuZW5jb2RlKHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBi
bG9jay5fY29udGVudF9sZW5ndGgpKQogCiAgICAgICAgICAgICBpZiBlcnJfbGluZToKICAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9jaGVja19mb3JfZHJpdmVyX2NyYXNoX29yX3VucmVzcG9uc2l2
ZW5lc3MoZXJyX2xpbmUpOgpAQCAtNzI0LDkgKzcyNCw5IEBAIGNsYXNzIERyaXZlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgcmVtb3Zl
ZCBvbmNlIDxyZGFyOi8vcHJvYmxlbS8xODcwMTQ0Nz4gaXMgZml4ZWQuCiAgICAgICAgICAgICAg
ICAgICAgIGRlYWRsaW5lICs9IDEwICogNjAgKiAxMDAwCiAgICAgICAgICAgICAgICAgaWYgYXNh
bl92aW9sYXRpb25fZGV0ZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoX3Jl
cG9ydF9mcm9tX2RyaXZlciArPSBkZWNvZGVfZm9yKGVycl9saW5lLCBzdHIpCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9mcm9tX2RyaXZlciArPSBzdHJpbmdfdXRpbHMu
ZGVjb2RlKGVycl9saW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2RlX2Zvcihl
cnJfbGluZSwgc3RyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCAr
PSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVycl9saW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICAg
ICAgaWYgYXNhbl92aW9sYXRpb25fZGV0ZWN0ZWQgYW5kIG5vdCBzZWxmLl9jcmFzaGVkX3Byb2Nl
c3NfbmFtZToKICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MucHJvY2Vzc19uYW1lKCkKQEAgLTc1OSw3ICs3NTksNyBAQCBjbGFzcyBD
b250ZW50QmxvY2sob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0g
YmFzZTY0LmI2NGRlY29kZShzZWxmLmNvbnRlbnQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBkZWNvZGVfZm9y
KHNlbGYuY29udGVudCwgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50
ID0gc3RyaW5nX3V0aWxzLmRlY29kZShzZWxmLmNvbnRlbnQsIHRhcmdldF90eXBlPXN0cikKICAg
ICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2Vs
Zi5kZWNvZGVkX2NvbnRlbnQgPSBOb25lCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9pbWFnZV9kaWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9pbWFnZV9kaWZmLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNyBA
QCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5
LnBvcnQgaW1wb3J0IHNlcnZlcl9wcm9jZXNzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIGRlY29kZV9mb3IsIGVuY29kZV9pZl9uZWNl
c3NhcnkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBCeXRlc0lPLCBzdHJpbmdfdXRpbHMKIAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC01OSw5ICs1OCw5IEBAIGNs
YXNzIEltYWdlRGlmZmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnQodG9s
ZXJhbmNlKQogICAgICAgICAgICAgIyBOb3RlIHRoYXQgYWx0aG91Z2ggd2UgYXJlIGhhbmRlZCAn
b2xkJywgJ25ldycsIEltYWdlRGlmZiB3YW50cyAnbmV3JywgJ29sZCcuCiAgICAgICAgICAgICBi
dWZmZXIgPSBCeXRlc0lPKCkKLSAgICAgICAgICAgIGJ1ZmZlci53cml0ZShlbmNvZGVfaWZfbmVj
ZXNzYXJ5KCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihhY3R1YWxfY29udGVudHMp
KSkpCisgICAgICAgICAgICBidWZmZXIud3JpdGUoc3RyaW5nX3V0aWxzLmVuY29kZSgnQ29udGVu
dC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oYWN0dWFsX2NvbnRlbnRzKSkpKQogICAgICAgICAg
ICAgYnVmZmVyLndyaXRlKGFjdHVhbF9jb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci53cml0
ZShlbmNvZGVfaWZfbmVjZXNzYXJ5KCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihl
eHBlY3RlZF9jb250ZW50cykpKSkKKyAgICAgICAgICAgIGJ1ZmZlci53cml0ZShzdHJpbmdfdXRp
bHMuZW5jb2RlKCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihleHBlY3RlZF9jb250
ZW50cykpKSkKICAgICAgICAgICAgIGJ1ZmZlci53cml0ZShleHBlY3RlZF9jb250ZW50cykKICAg
ICAgICAgICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUoYnVmZmVyLmdldHZhbHVlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fcmVhZCgpCkBAIC05MiwxMiArOTEsMTIgQEAgY2xhc3MgSW1hZ2VE
aWZmZXIob2JqZWN0KToKIAogICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoYidDb250
ZW50LUxlbmd0aCcpOgogICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChiJ0NvbnRlbnQtTGVu
Z3RoOiAoXGQrKScsIG91dHB1dCkKLSAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGlu
dChkZWNvZGVfZm9yKG0uZ3JvdXAoMSksIHN0cikpCisgICAgICAgICAgICAgICAgY29udGVudF9s
ZW5ndGggPSBpbnQoc3RyaW5nX3V0aWxzLmRlY29kZShtLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1z
dHIpKQogICAgICAgICAgICAgICAgIG91dHB1dF9pbWFnZSA9IHNlbGYuX3Byb2Nlc3MucmVhZF9z
dGRvdXQoZGVhZGxpbmUsIGNvbnRlbnRfbGVuZ3RoKQogICAgICAgICAgICAgICAgIG91dHB1dCA9
IHNlbGYuX3Byb2Nlc3MucmVhZF9zdGRvdXRfbGluZShkZWFkbGluZSkKICAgICAgICAgICAgICAg
ICBicmVhawogCi0gICAgICAgIHN0ZGVyciA9IGRlY29kZV9mb3Ioc2VsZi5fcHJvY2Vzcy5wb3Bf
YWxsX2J1ZmZlcmVkX3N0ZGVycigpLCBzdHIpCisgICAgICAgIHN0ZGVyciA9IHN0cmluZ191dGls
cy5kZWNvZGUoc2VsZi5fcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpLCB0YXJnZXRf
dHlwZT1zdHIpCiAgICAgICAgIGVycl9zdHIgPSAnJwogICAgICAgICBpZiBzdGRlcnI6CiAgICAg
ICAgICAgICBlcnJfc3RyICs9ICJJbWFnZURpZmYgcHJvZHVjZWQgc3RkZXJyIG91dHB1dDpcbiIg
KyBzdGRlcnIKQEAgLTExMSw3ICsxMTAsNyBAQCBjbGFzcyBJbWFnZURpZmZlcihvYmplY3QpOgog
ICAgICAgICAgICAgbSA9IHJlLm1hdGNoKGInZGlmZjogKC4rKSUgKHBhc3NlZHxmYWlsZWQpJywg
b3V0cHV0KQogICAgICAgICAgICAgaWYgbS5ncm91cCgyKSA9PSBiJ3Bhc3NlZCc6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIChOb25lLCAwLCBOb25lKQotICAgICAgICAgICAgZGlmZl9wZXJjZW50
ID0gZmxvYXQoZGVjb2RlX2ZvcihtLmdyb3VwKDEpLCBzdHIpKQorICAgICAgICAgICAgZGlmZl9w
ZXJjZW50ID0gZmxvYXQoc3RyaW5nX3V0aWxzLmRlY29kZShtLmdyb3VwKDEpLCB0YXJnZXRfdHlw
ZT1zdHIpKQogCiAgICAgICAgIHJldHVybiAob3V0cHV0X2ltYWdlLCBkaWZmX3BlcmNlbnQsIGVy
cl9zdHIgb3IgTm9uZSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVh
a2RldGVjdG9yLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbGVha2RldGVjdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw5IEBACiBp
bXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJp
bmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
U2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKQEAgLTc5LDcgKzgwLDcgQEAgY2xhc3MgTGVha0RldGVjdG9yKG9iamVjdCk6CiAg
ICAgZGVmIF9wYXJzZV9sZWFrc19vdXRwdXQoc2VsZiwgbGVha3Nfb3V0cHV0KToKICAgICAgICAg
aWYgbm90IGxlYWtzX291dHB1dDoKICAgICAgICAgICAgIHJldHVybiAwLCAwLCAwCi0gICAgICAg
IGxlYWtzX291dHB1dCA9IGVuY29kZV9pZl9uZWNlc3NhcnkobGVha3Nfb3V0cHV0KQorICAgICAg
ICBsZWFrc19vdXRwdXQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGxlYWtzX291dHB1dCkKICAgICAg
ICAgXywgY291bnQsIGJ5dGVzID0gcmUuc2VhcmNoKGInUHJvY2VzcyAoP1A8cGlkPlxcZCspOiAo
P1A8Y291bnQ+XFxkKykgbGVha3M/IGZvciAoP1A8Ynl0ZXM+XFxkKykgdG90YWwnLCBsZWFrc19v
dXRwdXQpLmdyb3VwcygpCiAgICAgICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKGInKD9Q
PGV4Y2x1ZGVkPlxcZCspIGxlYWtzPyBleGNsdWRlZCcsIGxlYWtzX291dHB1dCkKICAgICAgICAg
ZXhjbHVkZWQgPSBleGNsdWRlZF9tYXRjaC5ncm91cCgnZXhjbHVkZWQnKSBpZiBleGNsdWRlZF9t
YXRjaCBlbHNlIDAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0
b3JfdmFsZ3JpbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2xlYWtkZXRlY3Rvcl92YWxncmluZC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZC5weQkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTEgKzMxLDEwIEBAIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0
CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQotaW1wb3J0IHN1YnBy
b2Nlc3MKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBwYXJzZVN0cmluZwogZnJvbSB4bWwu
cGFyc2Vycy5leHBhdCBpbXBvcnQgRXhwYXRFcnJvcgogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9m
b3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC0xOTgsNyArMTk3LDcgQEAgY2xhc3MgVmFsZ3Jp
bmRFcnJvcjoKICAgICAgICAgIyBUaGlzIGlzIGEgZGV2aWNlLWluZGVwZW5kZW50IGhhc2ggaWRl
bnRpZnlpbmcgdGhlIHN1cHByZXNzaW9uLgogICAgICAgICAjIEJ5IHByaW50aW5nIG91dCB0aGlz
IGhhc2ggd2UgY2FuIGZpbmQgZHVwbGljYXRlIHJlcG9ydHMgYmV0d2VlbiB0ZXN0cyBhbmQKICAg
ICAgICAgIyBkaWZmZXJlbnQgc2hhcmRzIHJ1bm5pbmcgb24gbXVsdGlwbGUgYnVpbGRib3RzCi0g
ICAgICAgIHJldHVybiBpbnQoaGFzaGxpYi5tZDUoZW5jb2RlX2lmX25lY2Vzc2FyeShzZWxmLnVu
aXF1ZV9zdHJpbmcoKSkpLmhleGRpZ2VzdCgpWzoxNl0sIDE2KQorICAgICAgICByZXR1cm4gaW50
KGhhc2hsaWIubWQ1KHN0cmluZ191dGlscy5lbmNvZGUoc2VsZi51bmlxdWVfc3RyaW5nKCkpKS5o
ZXhkaWdlc3QoKVs6MTZdLCAxNikKIAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAg
cmV0dXJuIGhhc2goc2VsZi51bmlxdWVfc3RyaW5nKCkpCkBAIC0yMjQsNyArMjIzLDcgQEAgY2xh
c3MgTGVha0RldGVjdG9yVmFsZ3JpbmQob2JqZWN0KToKICAgICAgICAgICAgIHBhcnNlZF9zdHJp
bmcgPSBwYXJzZVN0cmluZyhsZWFrc19vdXRwdXQpCiAgICAgICAgIGV4Y2VwdCBFeHBhdEVycm9y
IGFzIGU6CiAgICAgICAgICAgICBwYXJzZV9mYWlsZWQgPSBUcnVlCi0gICAgICAgICAgICBfbG9n
LmVycm9yKCJjb3VsZCBub3QgcGFyc2UgJXM6ICVzIiAlIChkZWNvZGVfZm9yKGxlYWtzX291dHB1
dCwgc3RyKSwgZSkpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJjb3VsZCBub3QgcGFyc2UgJXM6
ICVzIiAlIChzdHJpbmdfdXRpbHMuZGVjb2RlKGxlYWtzX291dHB1dCwgdGFyZ2V0X3R5cGU9c3Ry
KSwgZSkpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBjdXJfcmVwb3J0X2Vycm9ycyA9
IHNldCgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3Zh
bGdyaW5kX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxMyBAQAogIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVt
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0
Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBkZWNvZGVfZm9yCiBmcm9tIHdlYmtpdHB5LnBvcnQubGVha2RldGVjdG9yX3ZhbGdyaW5kIGlt
cG9ydCBMZWFrRGV0ZWN0b3JWYWxncmluZAogCiAKQEAgLTgwOCw3ICs4MDgsNyBAQCBTdXBwcmVz
c2lvbnMgdXNlZDoKIAogZGVmIG1vY2tfcnVuX2NwcGZpbHRfY29tbWFuZChhcmdzKToKICAgICBp
ZiBhcmdzWzBdID09ICdjKytmaWx0JzoKLSAgICAgICAgcmV0dXJuIHZhbGdyaW5kX291dHB1dF9j
cHBmaWx0X21hcFtkZWNvZGVfZm9yKGFyZ3NbMl0sIHN0cildCisgICAgICAgIHJldHVybiB2YWxn
cmluZF9vdXRwdXRfY3BwZmlsdF9tYXBbc3RyaW5nX3V0aWxzLmRlY29kZShhcmdzWzJdLCB0YXJn
ZXRfdHlwZT1zdHIpXQogICAgIHJldHVybiAiIgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5CShyZXZpc2lvbiAyNjQ3
MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDE1IEBACiAjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCi1pbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBv
cnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGlt
ZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3Nh
cnkKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRl
cgogCiAKQEAgLTExNCw3ICsxMTMsNyBAQCBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmpl
Y3QpOgogCiAgICAgICAgIHByb2MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oY21kLCBzdGRpbj1O
b25lLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAg
ICAgICBjcmFzaF9sb2csIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQotICAgICAgICBlcnJv
cnMgPSBkZWNvZGVfaWZfbmVjZXNzYXJ5KHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3Jz
PSdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgZXJyb3JzID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5l
cygpCiAgICAgICAgIHJldHVybiBjcmFzaF9sb2csIGVycm9ycwogCiAgICAgZGVmIGdlbmVyYXRl
X2NyYXNoX2xvZyhzZWxmLCBzdGRvdXQsIHN0ZGVycik6CkBAIC0xNDksNyArMTQ4LDcgQEAgY2xh
c3MgR0RCQ3Jhc2hMb2dHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgZWxpZiBjb3JlZHVtcGN0
bDoKICAgICAgICAgICAgIGNyYXNoX2xvZywgZXJyb3JzID0gc2VsZi5fZ2V0X3RyYWNlX2Zyb21f
c3lzdGVtZChjb3JlZHVtcGN0bCwgcGlkX3JlcHJlc2VudGF0aW9uKQogCi0gICAgICAgIHN0ZGVy
cl9saW5lcyA9IGVycm9ycyArIGRlY29kZV9pZl9uZWNlc3Nhcnkoc3RyKHN0ZGVyciBvciAnPGVt
cHR5PicpLCBlcnJvcnM9J2lnbm9yZScpLnNwbGl0bGluZXMoKQorICAgICAgICBzdGRlcnJfbGlu
ZXMgPSBlcnJvcnMgKyBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0cihzdGRlcnIgb3IgJzxlbXB0eT4n
KSwgZXJyb3JzPSdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKICAgICAgICAgZXJyb3JzX3N0ciA9ICdc
bicuam9pbigoJ1NUREVSUjogJyArIHN0ZGVycl9saW5lKSBmb3Igc3RkZXJyX2xpbmUgaW4gc3Rk
ZXJyX2xpbmVzKQogICAgICAgICBjcHBmaWx0X3Byb2MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4o
CiAgICAgICAgICAgICBbJ2MrK2ZpbHQnXSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9
c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OCwx
MSArNDgsMTIgQEAgc2NyaXB0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcgogaWYg
c2NyaXB0X2RpciBub3QgaW4gc3lzLnBhdGg6CiAgICAgc3lzLnBhdGguYXBwZW5kKHNjcmlwdF9k
aXIpCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
ZGVjb2RlX2ZvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0
IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlcklucHV0
LCBEcml2ZXJPdXRwdXQsIERyaXZlclByb3h5CiBmcm9tIHdlYmtpdHB5LnBvcnQuZmFjdG9yeSBp
bXBvcnQgUG9ydEZhY3RvcnkKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGls
cworCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIApAQCAtMjMxLDcgKzIz
Miw3IEBAIGNsYXNzIE1vY2tEUlQob2JqZWN0KToKICAgICAgICAgICAgIGlmIG91dHB1dC5pbWFn
ZV9oYXNoICE9IHRlc3RfaW5wdXQuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgICAgICBzZWxmLl9z
dGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcG5nXG4nKQogICAgICAgICAgICAgICAg
IHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1MZW5ndGg6ICVzXG4nICUgbGVuKG91dHB1dC5p
bWFnZSkpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGRlY29kZV9mb3Iob3V0
cHV0LmltYWdlLCBzdHIpKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShzdHJp
bmdfdXRpbHMuZGVjb2RlKG91dHB1dC5pbWFnZSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAg
c2VsZi5fc3Rkb3V0LndyaXRlKCcjRU9GXG4nKQogICAgICAgICBzZWxmLl9zdGRvdXQuZmx1c2go
KQogICAgICAgICBzZWxmLl9zdGRlcnIud3JpdGUoJyNFT0ZcbicpCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMSBAQAogCiAiIiJVbml0IHRlc3RzIGZv
ciBNb2NrRFJULiIiIgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5z
eXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnBv
cnQgaW1wb3J0IG1vY2tfZHJ0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNh
c2UKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgdGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkocmV2aXNpb24gMjY0NzE2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw4ICszNSw3IEBAIGltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0
aW1lCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlw
dEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IGVuY29kZV9pZl9uZWNlc3NhcnkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRp
bHMKIAogIyBOb3RlIHRoYXQgYWx0aG91Z2ggd2luMzIgcHl0aG9uIGRvZXMgcHJvdmlkZSBhbiBp
bXBsZW1lbnRhdGlvbiBvZgogIyB0aGUgd2luMzIgc2VsZWN0IEFQSSwgaXQgb25seSB3b3JrcyBv
biBzb2NrZXRzLCBhbmQgbm90IG9uIHRoZSBuYW1lZCBwaXBlcwpAQCAtMTg1LDcgKzE4NCw3IEBA
IGNsYXNzIFNlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6
CiAgICAgICAgICAgICBzZWxmLl9zdGFydCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuX3Byb2Muc3RkaW4ud3JpdGUoZW5jb2RlX2lmX25lY2Vzc2FyeShieXRlcykpCisgICAgICAg
ICAgICBzZWxmLl9wcm9jLnN0ZGluLndyaXRlKHN0cmluZ191dGlscy5lbmNvZGUoYnl0ZXMpKQog
ICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi5mbHVzaCgpCiAgICAgICAgIGV4Y2VwdCAoSU9F
cnJvciwgVmFsdWVFcnJvcikgYXMgZToKICAgICAgICAgICAgIHNlbGYuc3RvcCgwLjApCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9j
ay5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Nl
cnZlcl9wcm9jZXNzX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAog
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5Citmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIAogY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mo
b2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1Ob25l
LCBjbWQ9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9Tm9u
ZSwgY3Jhc2hlZD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSwgY3Jhc2hfbWVzc2FnZT1Ob25lKToK
ICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmxpbmVzID0gW2Vu
Y29kZV9pZl9uZWNlc3NhcnkobGluZSkgZm9yIGxpbmUgaW4gKGxpbmVzIG9yIFtdKV0KKyAgICAg
ICAgc2VsZi5saW5lcyA9IFtzdHJpbmdfdXRpbHMuZW5jb2RlKGxpbmUpIGZvciBsaW5lIGluIChs
aW5lcyBvciBbXSldCiAgICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKICAgICAgICAgc2Vs
Zi53cml0ZXMgPSBbXQogICAgICAgICBzZWxmLmNtZCA9IGNtZApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3Rlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC90ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTIgQEAKIAog
aW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBm
cm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBU
ZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBp
bXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGlt
cG9ydCBQVUJMSUNfVEFCTEUsIFZlcnNpb25OYW1lTWFwCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3Nh
cnkKIAogCiAjIFRoaXMgc2V0cyBiYXNpYyBleHBlY3RhdGlvbnMgZm9yIGEgdGVzdC4gRWFjaCBp
bmRpdmlkdWFsIGV4cGVjdGF0aW9uCkBAIC00NDIsOCArNDQzLDggQEAgY2xhc3MgVGVzdFBvcnQo
UG9ydCk6CiAgICAgICAgIHJldHVybiAnUmVsZWFzZScKIAogICAgIGRlZiBkaWZmX2ltYWdlKHNl
bGYsIGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMsIHRvbGVyYW5jZT1Ob25lKToK
LSAgICAgICAgZXhwZWN0ZWRfY29udGVudHMgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGV4cGVjdGVk
X2NvbnRlbnRzKQotICAgICAgICBhY3R1YWxfY29udGVudHMgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5
KGFjdHVhbF9jb250ZW50cykKKyAgICAgICAgZXhwZWN0ZWRfY29udGVudHMgPSBzdHJpbmdfdXRp
bHMuZW5jb2RlKGV4cGVjdGVkX2NvbnRlbnRzKQorICAgICAgICBhY3R1YWxfY29udGVudHMgPSBz
dHJpbmdfdXRpbHMuZW5jb2RlKGFjdHVhbF9jb250ZW50cykKICAgICAgICAgZGlmZmVkID0gYWN0
dWFsX2NvbnRlbnRzICE9IGV4cGVjdGVkX2NvbnRlbnRzCiAgICAgICAgIGlmIG5vdCBhY3R1YWxf
Y29udGVudHMgYW5kIG5vdCBleHBlY3RlZF9jb250ZW50czoKICAgICAgICAgICAgIHJldHVybiAo
Tm9uZSwgMCwgTm9uZSkKQEAgLTQ1Myw4ICs0NTQsOCBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToK
ICAgICAgICAgICAgIGFzc2VydCB0b2xlcmFuY2UgPT0gMAogICAgICAgICBpZiBkaWZmZWQ6CiAg
ICAgICAgICAgICByZXR1cm4gKCI8IHt9XG4tLS1cbj4ge31cbiIuZm9ybWF0KAotICAgICAgICAg
ICAgICAgIGRlY29kZV9mb3IoZXhwZWN0ZWRfY29udGVudHMsIHN0ciksCi0gICAgICAgICAgICAg
ICAgZGVjb2RlX2ZvcihhY3R1YWxfY29udGVudHMsIHN0ciksCisgICAgICAgICAgICAgICAgc3Ry
aW5nX3V0aWxzLmRlY29kZShleHBlY3RlZF9jb250ZW50cywgdGFyZ2V0X3R5cGU9c3RyKSwKKyAg
ICAgICAgICAgICAgICBzdHJpbmdfdXRpbHMuZGVjb2RlKGFjdHVhbF9jb250ZW50cywgdGFyZ2V0
X3R5cGU9c3RyKSwKICAgICAgICAgICAgICksIDEsIE5vbmUpCiAgICAgICAgIHJldHVybiAoTm9u
ZSwgMCwgTm9uZSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXN1bHRzL3VwbG9h
ZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Jlc3Vs
dHMvdXBsb2FkX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Jlc3VsdHMvdXBsb2FkX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw5ICsyOSwxMCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBCeXRlc0lPCisKIGZyb20gd2Via2l0cHkucmVzdWx0
cy51cGxvYWQgaW1wb3J0IFVwbG9hZAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBt
b2NrCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5
dGVzSU8KIAogaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKICAgICBiYXNlc3RyaW5nID0g
c3RyCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHkJ
KHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hy
ZWFkZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMiBAQAogaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCByZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisK
IGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFy
c2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRp
dmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lz
dGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBT
Q01EZXRlY3RvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBkZWNvZGVfZm9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpA
QCAtNTYsNyArNTcsNyBAQCBjbGFzcyBQYXRjaFJlYWRlcihvYmplY3QpOgogICAgIGRlZiBjaGVj
ayhzZWxmLCBwYXRjaF9zdHJpbmcsIGZzPU5vbmUpOgogICAgICAgICAiIiJDaGVjayBzdHlsZSBp
biB0aGUgZ2l2ZW4gcGF0Y2guIiIiCiAgICAgICAgIGZzID0gZnMgb3IgRmlsZVN5c3RlbSgpCi0g
ICAgICAgIHBhdGNoX3N0cmluZyA9IGRlY29kZV9mb3IocGF0Y2hfc3RyaW5nLCBzdHIpCisgICAg
ICAgIHBhdGNoX3N0cmluZyA9IHN0cmluZ191dGlscy5kZWNvZGUocGF0Y2hfc3RyaW5nLCB0YXJn
ZXRfdHlwZT1zdHIpCiAgICAgICAgIHBhdGNoX2ZpbGVzID0gRGlmZlBhcnNlcihwYXRjaF9zdHJp
bmcuc3BsaXRsaW5lcygpKS5maWxlcwogCiAgICAgICAgICMgSWYgdGhlIHVzZXIgdXNlcyBnaXQs
IGNoZWNraW5nIHN1YnZlcnNpb24gY29uZmlnIGZpbGUgb25seSBvbmNlIGlzIGVub3VnaC4KSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CShyZXZp
c2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cC5weQkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDEyIEBAIGltcG9ydCBvcwogaW1wb3J0
IG9zLnBhdGgKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwotaW1wb3J0IHN5cwogaW1wb3J0IHVu
aWNvZGVkYXRhCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Vi
a2l0cHkuc3R5bGUuY2hlY2tlcnMuY29tbW9uIGltcG9ydCBtYXRjaCwgc2VhcmNoLCBzdWIsIHN1
Ym4KIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCB1bmljb2RlCiAKICMg
VGhlIGtleSB0byB1c2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRvIGZha2UgbG9hZGluZyBhIGhlYWRl
ciBmaWxlLgogSU5DTFVERV9JT19JTkpFQ1RJT05fS0VZID0gJ2luY2x1ZGVfaGVhZGVyX2lvJwpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw5IEBAIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKIGltcG9y
dCB1bml0dGVzdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5CisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJp
bmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQgY3BwIGFzIGNw
cF9zdHlsZQogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNr
ZXIKIGZyb20gd2Via2l0cHkuc3R5bGUuZmlsdGVyIGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9u
CkBAIC0yNDY1LDcgKzI0NjcsNyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFz
ZSk6CiAgICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2ludmFsaWRfdXRm
OCk6CiAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFz
c2VydFRydWUpCiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywg
J2NwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9pZl9uZWNl
c3NhcnkocmF3X2J5dGVzLCBlbmNvZGluZz0ndXRmOCcsIGVycm9ycz0ncmVwbGFjZScpLnNwbGl0
KCdcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdXRpbHMu
ZGVjb2RlKHJhd19ieXRlcywgZW5jb2Rpbmc9J3V0ZjgnLCBlcnJvcnM9J3JlcGxhY2UnKS5zcGxp
dCgnXG4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yKQogICAgICAgICAgICAgIyBUaGUgd2FybmluZyBhcHBlYXJzIG9ubHkgb25jZS4KICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3B5dGhvbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDkgQEAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlU2NvcGUKIGZyb20gd2Via2l0cHkuY29t
bW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5LmF1dG9pbnN0YWxsZWQgaW1wb3J0IHB5Y29kZXN0eWxlCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3QvbWFpbi5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90ZXN0L21haW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNiBAQCBp
bXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZwotZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnRlc3QuZmluZGVyIGlt
cG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVzdC5wcmludGVyIGltcG9ydCBQcmludGVyCiBm
cm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBSdW5uZXIsIHVuaXRfdGVzdF9uYW1lCiBm
cm9tIHdlYmtpdHB5LnJlc3VsdHMudXBsb2FkIGltcG9ydCBVcGxvYWQKIGZyb20gd2Via2l0cHku
cmVzdWx0cy5vcHRpb25zIGltcG9ydCB1cGxvYWRfb3B0aW9ucwogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgU3RyaW5nSU8KKwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiBfaG9zdCA9IEhvc3QoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5f
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21h
aW5fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBA
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3QvcHJpbnRlci5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90ZXN0L3ByaW50ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEw
IEBACiAKIGltcG9ydCBsb2dnaW5nCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJ
TworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Ci1m
cm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lP
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0cmVhbSBpbXBvcnQg
TWV0ZXJlZFN0cmVhbQogZnJvbSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6
ZQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXJfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9y
dW5uZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDggQEAgaW1wb3J0
IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgog
ZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3Qvc2tpcF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3Qvc2tpcF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3NraXBfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDcgKzIzLDggQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QK
IAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJp
bmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHku
dGVzdC5za2lwIGltcG9ydCBza2lwX2lmCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9pcmNfY29tbWFuZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxMiArMzAsMTIgQEAgaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHJhbmRvbQogaW1w
b3J0IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0
cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgaXJjIGFzIGNvbmZpZ19pcmMKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNvbmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNv
bW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC53
ZWIgaW1wb3J0IFdlYgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgdW5pY29kZQogZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBv
cnQgVGVybWluYXRlUXVldWUKIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBqb2lu
X3dpdGhfc2VwYXJhdG9ycwogZnJvbSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJh
bGl6ZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fy
bmluZ3N5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwyMCArMjksMTcgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBs
b2dnaW5nCi1pbXBvcnQgb3MKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiBpbXBv
cnQgc3lzCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBD
b21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERl
cHJlY2F0ZWRQb3J0Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgot
ZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVf
Zm9yCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmVhcmx5d2FybmluZ3N5c3RlbXRhc2sgaW1wb3J0
IEVhcmx5V2FybmluZ1N5c3RlbVRhc2ssIEVhcmx5V2FybmluZ1N5c3RlbVRhc2tEZWxlZ2F0ZQog
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlciBpbXBvcnQgTGF5
b3V0VGVzdFJlc3VsdHNSZWFkZXIKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuanNjdGVzdHJlc3Vs
dHNyZWFkZXIgaW1wb3J0IEpTQ1Rlc3RSZXN1bHRzUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wu
Ym90LnBhdGNoYW5hbHlzaXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNoSXNO
b3RWYWxpZCwgUGF0Y2hJc05vdEFwcGxpY2FibGUKLWZyb20gd2Via2l0cHkudG9vbC5ib3QucXVl
dWVlbmdpbmUgaW1wb3J0IFF1ZXVlRW5naW5lCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMu
cXVldWVzIGltcG9ydCBBYnN0cmFjdFJldmlld1F1ZXVlCiAKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKQEAgLTE1Niw5ICsxNTMsOSBAQCBjbGFzcyBBYnN0cmFjdEVhcmx5V2Fy
bmluZ1N5c3RlbShBYnN0cmFjCiAgICAgICAgIGNsYXNzZXMgPSBbXQogICAgICAgICBmb3IgbmFt
ZSwgY29uZmlnIGluIGV3c2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApOgotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBlbmNvZGVfZm9yKG5h
bWUsIHN0cikudHJhbnNsYXRlKCcgLScpCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IHN0
cmluZ191dGlscy5lbmNvZGUobmFtZSwgdGFyZ2V0X3R5cGU9c3RyKS50cmFuc2xhdGUoJyAtJykK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IGVuY29kZV9m
b3IobmFtZSwgc3RyKS50cmFuc2xhdGUoTm9uZSwgJyAtJykKKyAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkID0gc3RyaW5nX3V0aWxzLmVuY29kZShuYW1lLCB0YXJnZXRfdHlwZT1zdHIpLnRyYW5z
bGF0ZShOb25lLCAnIC0nKQogCiAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlKHRyYW5z
bGF0ZWQsIChjbHMsKSwgewogICAgICAgICAgICAgICAgICduYW1lJzogY29uZmlnLmdldCgnbmFt
ZScsIGNvbmZpZ1sncG9ydCddICsgJy1ld3MnKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQkod29ya2luZyBjb3B5
KQpAQCAtMjcsMjcgKzI3LDE5IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1p
bXBvcnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgcmUKIGltcG9y
dCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gb3B0cGFyc2UgaW1w
b3J0IG1ha2Vfb3B0aW9uCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBv
cnQgRGVwcmVjYXRlZFBvcnQKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBv
cnQgQXR0YWNobWVudAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgQnl0ZXNJTwogZnJvbSB3ZWJraXRweS50b29sLmJvdC5ib3RpbmZvIGltcG9ydCBC
b3RJbmZvCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LmZsYWt5dGVzdHJlcG9ydGVyIGltcG9ydCBG
bGFreVRlc3RSZXBvcnRlcgotZnJvbSB3ZWJraXRweS50b29sLmJvdC5sYXlvdXR0ZXN0cmVzdWx0
c3JlYWRlciBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIKLWZyb20gd2Via2l0cHkudG9v
bC5ib3QucGF0Y2hhbmFseXNpc3Rhc2sgaW1wb3J0IFVuYWJsZVRvQXBwbHlQYXRjaCwgUGF0Y2hJ
c05vdFZhbGlkCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBRdWV1
ZUVuZ2luZSwgUXVldWVFbmdpbmVEZWxlZ2F0ZQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRz
LnN0ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyCi1mcm9tIHdlYmtp
dHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZCwgVHJ5QWdhaW4KK2Zyb20g
d2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVz
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMiArMjcsMTEgQEAKICMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwotCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5zY20gaW1wb3J0IENoZWNrb3V0TmVlZHNVcGRhdGUKLWZyb20gd2Via2l0cHku
Y29tbW9uLmNoZWNrb3V0LnNjbS5zY21fbW9jayBpbXBvcnQgTW9ja1NDTQotZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cwot
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRhY2htZW50CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJp
bmdJTwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3Vs
dHMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJl
cwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0
cHkudG9vbC5jb21tYW5kcy5jb21tYW5kdGVzdCBpbXBvcnQgQ29tbWFuZHNUZXN0CiBmcm9tIHdl
YmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVzIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wu
Y29tbWFuZHMucXVldWVzdGVzdCBpbXBvcnQgUXVldWVzVGVzdAotZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQgU3RlcFNlcXVlbmNlCi1mcm9tIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBNb2NrT3B0aW9ucworZnJvbSB3ZWJraXRw
eS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVG9vbAogCiAKIGNsYXNzIFRlc3RRdWV1ZShBYnN0
cmFjdFBhdGNoUXVldWUpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2hhc2xhbmRlZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvaGFzbGFuZGVkLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvaGFzbGFuZGVkLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCAr
MjcsMTMgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzeXMKIGlt
cG9ydCByZQogaW1wb3J0IHRlbXBmaWxlCiAKLWZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0
cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGltcG9y
dCBkaWZmX3BhcnNlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5
IGltcG9ydCBTdHJpbmdJTwogCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMgaW1wb3J0IGNvbmZp
cm1kaWZmCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVy
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMjksMTAgKzI5LDExIEBAIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRl
c3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5j
b21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtp
dF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCB1bmljb2RlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
QmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogZnJvbSB3ZWJraXRweS53M2MudGVz
dF9jb252ZXJ0ZXIgaW1wb3J0IF9XM0NUZXN0Q29udmVydGVyCiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQkocmV2aXNpb24gMjY0NzE2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTAgKzI3LDExIEBACiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKLWltcG9ydCB0aW1lCiBpbXBvcnQganNvbgogaW1wb3J0IHN5cwogCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBv
cnQgSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxs
YQpAQCAtMzksNyArNDAsNiBAQCBmcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBX
UFRHCiBmcm9tIHdlYmtpdHB5LnczYy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKIGZyb20g
d2Via2l0cHkudzNjLmNvbW1vbiBpbXBvcnQgV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSwg
V1BUX0dIX1VSTCwgV1BUUGF0aHMKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9y
dCBtZW1vaXplZAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCiAKIGlmIHN5cy52ZXJzaW9uX2lu
Zm8gPiAoMywgMCk6CiAgICAgZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgpAQCAt
MTYwLDcgKzE2MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAg
ICAgICAgIHJldHVybiBsaW5lLnNwbGl0KGInICcpWy0xXQogCiAgICAgZGVmIF9pc19pZ25vcmVk
X2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICBmaWxlbmFtZSA9IGRlY29kZV9mb3IoZmls
ZW5hbWUsIHN0cikKKyAgICAgICAgZmlsZW5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGZpbGVu
YW1lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIGZvciBzdWZmaXggaW4gRVhDTFVERURfRklM
RV9TVUZGSVhFUzoKICAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKHN1ZmZpeCk6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE4NSwxMCArMTg1LDEwIEBAIGNsYXNzIFdl
YlBsYXRmb3JtVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgIF8sIHBhdGNoX2ZpbGUgPSBz
ZWxmLl9maWxlc3lzdGVtLm9wZW5fYmluYXJ5X3RlbXBmaWxlKCd3cHRfZXhwb3J0X3BhdGNoJykK
ICAgICAgICAgcGF0Y2hfZGF0YSA9IHNlbGYuX3dwdF9wYXRjaAogICAgICAgICBpZiBiJ2RpZmYn
IG5vdCBpbiBwYXRjaF9kYXRhOgotICAgICAgICAgICAgX2xvZy5pbmZvKCdObyBjaGFuZ2VzIHRv
IHVwc3RyZWFtLCBwYXRjaCBkYXRhIGlzOiAie30iJy5mb3JtYXQoZGVjb2RlX2ZvcihwYXRjaF9k
YXRhLCBzdHIpKSkKKyAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVh
bSwgcGF0Y2ggZGF0YSBpczogInt9IicuZm9ybWF0KHN0cmluZ191dGlscy5kZWNvZGUocGF0Y2hf
ZGF0YSwgdGFyZ2V0X3R5cGU9c3RyKSkpCiAgICAgICAgICAgICByZXR1cm4gYicnCiAgICAgICAg
ICMgRklYTUU6IFdlIGNhbiBwcm9iYWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUgZ2l0IHBhcmFt
ZXRlciB0byBub3QgZG8gdGhhdCByZXBsYWNlbWVudC4KLSAgICAgICAgcGF0Y2hfZGF0YSA9IHBh
dGNoX2RhdGEucmVwbGFjZShlbmNvZGVfaWZfbmVjZXNzYXJ5KFdFQktJVF9XUFRfRElSKSArIGIn
LycsIGInJykKKyAgICAgICAgcGF0Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShzdHJpbmdf
dXRpbHMuZW5jb2RlKFdFQktJVF9XUFRfRElSKSArIGInLycsIGInJykKIAogICAgICAgICAjIEZJ
WE1FOiBTdXBwb3J0IHN0cmlwcGluZyBvZiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciAtLT4gY29t
bWVudHMuCiAgICAgICAgIHNlbGYuaGFzX3dlYmtpdF90ZXN0X3J1bm5lcl9zcGVjaWZpY19jaGFu
Z2VzID0gYid3ZWJraXQtdGVzdC1ydW5uZXInIGluIHBhdGNoX2RhdGEKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3dwdF9naXRodWIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1Yi5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0X2dpdGh1Yi5weQkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTEgKzMxLDEyIEBAIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBp
bXBvcnQgc3lzCisKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubWVt
b2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LnczYy5jb21tb24gaW1wb3J0IFdQ
VF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUsIEVYUE9SVF9QUl9MQUJFTAotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5
LCBkZWNvZGVfZm9yCiAKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CiAgICAgZnJvbSB1
cmxsaWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgpAQCAtNjgsNyArNjksNyBAQCBjbGFzcyBXUFRH
aXRIdWIob2JqZWN0KToKIAogICAgIGRlZiBhdXRoX3Rva2VuKHNlbGYpOgogICAgICAgICBhc3Nl
cnQgc2VsZi5oYXNfY3JlZGVudGlhbHMoKQotICAgICAgICByZXR1cm4gZGVjb2RlX2ZvcihiYXNl
NjQuYjY0ZW5jb2RlKGVuY29kZV9pZl9uZWNlc3NhcnkoJ3t9Ont9Jy5mb3JtYXQoc2VsZi51c2Vy
LCBzZWxmLnRva2VuKSkpLCBzdHIpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2Rl
KGJhc2U2NC5iNjRlbmNvZGUoc3RyaW5nX3V0aWxzLmVuY29kZSgne306e30nLmZvcm1hdChzZWxm
LnVzZXIsIHNlbGYudG9rZW4pKSksIHRhcmdldF90eXBlPXN0cikKIAogICAgIGRlZiByZXF1ZXN0
KHNlbGYsIHBhdGgsIG1ldGhvZCwgYm9keT1Ob25lKToKICAgICAgICAgIiIiU2VuZHMgYSByZXF1
ZXN0IHRvIEdpdEh1YiBBUEkgYW5kIGRlc2VyaWFsaXplcyB0aGUgcmVzcG9uc2UuCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dwdF9naXRodWJfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dwdF9naXRo
dWJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEwIEBACiBpbXBvcnQg
YmFzZTY0CiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmlu
Z191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29k
ZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKLWZyb20gd2Via2l0cHkudzNjLndwdF9naXRodWIg
aW1wb3J0IFdQVEdpdEh1YiwgTWVyZ2VFcnJvcgorZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1
YiBpbXBvcnQgV1BUR2l0SHViCiAKIAogY2xhc3MgV1BUR2l0SHViVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CkBAIC00Niw0ICs0Nyw0IEBAIGNsYXNzIFdQVEdpdEh1YlRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X2F1dGhfdG9rZW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCiAgICAgICAgICAgICBzZWxmLndwdF9naXRodWIuYXV0aF90b2tlbigpLAotICAg
ICAgICAgICAgZGVjb2RlX2ZvcihiYXNlNjQuZW5jb2Rlc3RyaW5nKGVuY29kZV9pZl9uZWNlc3Nh
cnkoJ3J1dGFiYWdhOmRlY2FmYmFkJykpLCBzdHIpLnN0cmlwKCkpCisgICAgICAgICAgICBzdHJp
bmdfdXRpbHMuZGVjb2RlKGJhc2U2NC5lbmNvZGVzdHJpbmcoc3RyaW5nX3V0aWxzLmVuY29kZSgn
cnV0YWJhZ2E6ZGVjYWZiYWQnKSksIHRhcmdldF90eXBlPXN0cikuc3RyaXAoKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZp
Y2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyICsy
MywxMSBAQAogaW1wb3J0IGpzb24KIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgVmVyc2lvbgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywg
VmVyc2lvbgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1w
b3J0IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3Rl
bV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogZnJv
bSB3ZWJraXRweS54Y29kZS5kZXZpY2VfdHlwZSBpbXBvcnQgRGV2aWNlVHlwZQogZnJvbSB3ZWJr
aXRweS54Y29kZS5zaW11bGF0ZWRfZGV2aWNlIGltcG9ydCBEZXZpY2VSZXF1ZXN0LCBTaW11bGF0
ZWREZXZpY2VNYW5hZ2VyLCBTaW11bGF0ZWREZXZpY2UKIApAQCAtNjUxLDcgKzY1MCw3IEBAIGNs
YXNzIFNpbXVsYXRlZERldmljZVRlc3QodW5pdHRlc3QuVGVzdEMKICAgICAgICAgIyBhcyBkZXRl
cm1pbmVkIGZyb20gdGhlIC5qc29uIG91dHB1dC4KICAgICAgICAgZGV2aWNlX3BsaXN0ID0gZGV2
aWNlLmZpbGVzeXN0ZW0uZXhwYW5kdXNlcihkZXZpY2UuZmlsZXN5c3RlbS5qb2luKFNpbXVsYXRl
ZERldmljZU1hbmFnZXIuc2ltdWxhdG9yX2RldmljZV9wYXRoLCBkZXZpY2UudWRpZCwgJ2Rldmlj
ZS5wbGlzdCcpKQogICAgICAgICBpbmRleF9wb3NpdGlvbiA9IGRldmljZS5maWxlc3lzdGVtLmZp
bGVzW2RldmljZV9wbGlzdF0uaW5kZXgoYic8L2ludGVnZXI+JykgLSAxCi0gICAgICAgIGRldmlj
ZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF0gPSBkZXZpY2UuZmlsZXN5c3RlbS5maWxl
c1tkZXZpY2VfcGxpc3RdWzppbmRleF9wb3NpdGlvbl0gKyBlbmNvZGVfaWZfbmVjZXNzYXJ5KHN0
cihzdGF0ZSkpICsgZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XVtpbmRleF9w
b3NpdGlvbiArIDE6XQorICAgICAgICBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxp
c3RdID0gZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XVs6aW5kZXhfcG9zaXRp
b25dICsgc3RyaW5nX3V0aWxzLmVuY29kZShzdHIoc3RhdGUpKSArIGRldmljZS5maWxlc3lzdGVt
LmZpbGVzW2RldmljZV9wbGlzdF1baW5kZXhfcG9zaXRpb24gKyAxOl0KIAogICAgIGRlZiB0ZXN0
X3N3YXBwaW5nX2RldmljZXMoc2VsZik6CiAgICAgICAgIFNpbXVsYXRlZERldmljZVRlc3QucmVz
ZXRfc2ltdWxhdGVkX2RldmljZV9tYW5hZ2VyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404944</attachid>
            <date>2020-07-22 11:58:49 -0700</date>
            <delta_ts>2020-07-27 14:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200722115849.patch</filename>
            <type>text/plain</type>
            <size>103753</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwNyBAQAorMjAyMC0wNy0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscyAoUGFydCAyKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHdlYmtp
dGNvcmVweS5zdHJpbmdfdXRpbHMgaW5zdGVhZCBvZiB1bmljb2RlX2NvbXBhdGliaWxpdHkgZm9y
IHVuaWNvZGUgY29udmVyc2lvbnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2FwaV90
ZXN0cy9ydW5uZXIucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5n
X3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weTogUmVw
bGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJl
bW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9jaGFuZ2Vsb2cucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgg
c3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2NoYW5nZWxvZ191bml0dGVzdC5weTogUmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vZ2l0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywKKyAgICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHk6IFJlcGxhY2UgdW5pY29kZV9j
b21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9j
b21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAgICAgICByZW1vdmUgdW51c2VkIGlt
cG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2
bi5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHk6IFJl
cGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAgICAgICBy
ZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmls
aXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2VkIGltcG9ydHMuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5
OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZXdzc2VydmVy
LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5OiBSZXBsYWNl
IHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5OiBEaXR0by4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nX3Vu
aXR0ZXN0LnB5OiBEaXR0bworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9hYnN0cmFjdGV4ZWN1dGl2ZS5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2Nr
LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0
cmluZ191dGlscywKKyAgICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5OiBSZXBsYWNlIHVuaWNvZGVf
Y29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAgICAgICAgcmVtb3ZlIHVudXNlZCBp
bXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRj
YXB0dXJlLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGls
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0dGVlX3Vu
aXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXZl
ZGlmZi5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMs
IHJlbW92ZQorICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6IFJlcGxh
Y2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCByZW1v
dmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkgd2l0aAorICAgICAgICBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3Qu
cHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L2J1aWxkYm90X3Jlc3VsdHNfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmls
aXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2VkIGltcG9ydHMuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJl
YW1fdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAg
ICAgc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0
eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRl
c3QucHk6IFJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHk6IERp
dHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRo
CisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJp
bGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGls
cywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9pbWFnZV9kaWZmLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
bGVha2RldGVjdG9yLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3Zh
bGdyaW5kLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGls
cywgcmVtb3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5pdHRlc3QucHk6IERpdHRvLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5OiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnQucHk6IFJlcGxhY2Ug
dW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQorICAgICAgICB1bnVzZWQgaW1w
b3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19t
b2NrLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9yZXN1bHRzL3VwbG9hZF91bml0dGVzdC5weTogRGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6IFJlcGxhY2Ug
dW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAg
dW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9jcHBfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3Ry
aW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcHl0
aG9uLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVh
ZGVyLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0
dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50ZXIucHk6IERpdHRvLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXJfdW5pdHRlc3QucHk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9za2lwX3VuaXR0ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5OiBSZXBs
YWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisgICAg
ICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6IFJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5
OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvaGFzbGFuZGVk
LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVt
b3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJp
bGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2V4cG9ydGVyLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywgcmVtb3ZlIHVudXNlZAorICAgICAgICBpbXBvcnRzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdzNjL3dwdF9naXRodWIucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmls
aXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3dw
dF9naXRodWJfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGgg
c3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5OiBSZXBs
YWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKwogMjAyMC0wNy0y
MiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtp
dGNvcmVweV0gQWRkIHN0cmluZ191dGlscyAoUGFydCAxKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9hcGlfdGVzdHMvcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvYXBpX3Rlc3RzL3J1bm5lci5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
NCwxMSArMjQsMTIgQEAgaW1wb3J0IG9zCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRpbWUKIAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbiBpbXBvcnQgbWVzc2FnZV9wb29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5pdGVyYXRpb25f
Y29tcGF0aWJpbGl0eSBpbXBvcnQgaXRlcml0ZW1zCiBmcm9tIHdlYmtpdHB5LnBvcnQuc2VydmVy
X3Byb2Nlc3MgaW1wb3J0IFNlcnZlclByb2Nlc3MsIF9sb2cgYXMgc2VydmVyX3Byb2Nlc3NfbG9n
Z2VyCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9kZXZpY2UgaW1wb3J0IFNpbXVsYXRl
ZERldmljZU1hbmFnZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgZGVjb2RlX2ZvcgogCiAKIGNsYXNzIFJ1bm5lcihvYmplY3QpOgpAQCAtMTc5LDEx
ICsxODAsMTEgQEAgY2xhc3MgX1dvcmtlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBi
cmVhawogCiAgICAgICAgICAgICAgICAgaWYgc3RkZXJyX2xpbmU6Ci0gICAgICAgICAgICAgICAg
ICAgIHN0ZGVycl9saW5lID0gZGVjb2RlX2ZvcihzdGRlcnJfbGluZSwgc3RyKQorICAgICAgICAg
ICAgICAgICAgICBzdGRlcnJfbGluZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RkZXJyX2xpbmUs
IHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyX2J1ZmZlciArPSBz
dGRlcnJfbGluZQogICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3QoJ2xvZycsIG91dHB1dD1z
dGRlcnJfbGluZVs6LTFdKQogICAgICAgICAgICAgICAgIGlmIHN0ZG91dF9saW5lOgotICAgICAg
ICAgICAgICAgICAgICBzdGRvdXRfbGluZSA9IGRlY29kZV9mb3Ioc3Rkb3V0X2xpbmUsIHN0cikK
KyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0X2xpbmUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0
ZG91dF9saW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICAgICAgICAgIGlmICcqKlBB
U1MqKicgaW4gc3Rkb3V0X2xpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBS
dW5uZXIuU1RBVFVTX1BBU1NFRAogICAgICAgICAgICAgICAgICAgICBlbGlmICcqKkZBSUwqKicg
aW4gc3Rkb3V0X2xpbmU6CkBAIC0yMDIsOCArMjAzLDggQEAgY2xhc3MgX1dvcmtlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgIHN0YXR1cyA9IFJ1bm5lci5TVEFUVVNfRkFJTEVECiAKICAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgIHJlbWFpbmluZ19zdGRlcnIgPSBkZWNvZGVfZm9yKHNl
cnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCksIHN0cikKLSAgICAgICAgICAg
IHJlbWFpbmluZ19zdGRvdXQgPSBkZWNvZGVfZm9yKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVm
ZmVyZWRfc3Rkb3V0KCksIHN0cikKKyAgICAgICAgICAgIHJlbWFpbmluZ19zdGRlcnIgPSBzdHJp
bmdfdXRpbHMuZGVjb2RlKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCks
IHRhcmdldF90eXBlPXN0cikKKyAgICAgICAgICAgIHJlbWFpbmluZ19zdGRvdXQgPSBzdHJpbmdf
dXRpbHMuZGVjb2RlKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3Rkb3V0KCksIHRh
cmdldF90eXBlPXN0cikKICAgICAgICAgICAgIHNlbGYucG9zdCgnbG9nJywgb3V0cHV0PXJlbWFp
bmluZ19zdGRlcnIgKyByZW1haW5pbmdfc3Rkb3V0KQogICAgICAgICAgICAgb3V0cHV0X2J1ZmZl
ciA9IHN0ZGVycl9idWZmZXIgKyBzdGRvdXRfYnVmZmVyICsgcmVtYWluaW5nX3N0ZGVyciArIHJl
bWFpbmluZ19zdGRvdXQKICAgICAgICAgICAgIHNlcnZlcl9wcm9jZXNzLnN0b3AoKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQkocmV2aXNpb24gMjY0NzE2KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMiArMjcsMTMgQEAgaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IG9zLnBh
dGgKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQg
dGVtcGZpbGUKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2Nt
X3N5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2Ny
aXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBv
cnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiAKIGNsYXNzIEJpbmRpbmdzVGVzdHM6CkBAIC03Nyw3
ICs3OCw3IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAgICAobmFtZSwgZXh0ZW5z
aW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKICAgICAgICAgICAgIGlmIGV4dGVu
c2lvbiAhPSAnLmlkbCc6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG9z
LndyaXRlKGlkbF9maWxlc19saXN0WzBdLCBlbmNvZGVfaWZfbmVjZXNzYXJ5KG9zLnBhdGguam9p
bihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpICsgIlxuIikpCisgICAgICAgICAgICBvcy53
cml0ZShpZGxfZmlsZXNfbGlzdFswXSwgc3RyaW5nX3V0aWxzLmVuY29kZShvcy5wYXRoLmpvaW4o
aW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9maWxlKSArICJcbiIpKQogICAgICAgICBvcy5jbG9zZShp
ZGxfZmlsZXNfbGlzdFswXSkKIAogICAgICAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2gucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2gucHkJKHJldmlzaW9u
IDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMCBAQCBpbXBvcnQgZXJybm8KIGltcG9ydCBs
b2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQorCitmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBh
dGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC01MCw4ICs1Miw4IEBAIGNsYXNzIFByZXR0eVBhdGNoKG9i
amVjdCk6CiAgICAgZGVmIHByZXR0eV9kaWZmX2ZpbGUoc2VsZiwgZGlmZik6CiAgICAgICAgICMg
RGlmZnMgY2FuIGNvbnRhaW4gbXVsdGlwbGUgdGV4dCBmaWxlcyBvZiBkaWZmZXJlbnQgZW5jb2Rp
bmdzCiAgICAgICAgICMgc28gd2UgYWx3YXlzIGRlYWwgd2l0aCB0aGVtIGFzIGJ5dGUgYXJyYXlz
LCBub3QgdW5pY29kZSBzdHJpbmdzLgotICAgICAgICBkaWZmID0gZW5jb2RlX2lmX25lY2Vzc2Fy
eShkaWZmKQotICAgICAgICBwcmV0dHlfZGlmZiA9IGVuY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5w
cmV0dHlfZGlmZihkaWZmKSkKKyAgICAgICAgZGlmZiA9IHN0cmluZ191dGlscy5lbmNvZGUoZGlm
ZikKKyAgICAgICAgcHJldHR5X2RpZmYgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKHNlbGYucHJldHR5
X2RpZmYoZGlmZikpCiAgICAgICAgIGRpZmZfZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5
RmlsZShzdWZmaXg9Ii5odG1sIikKICAgICAgICAgZGlmZl9maWxlLndyaXRlKHByZXR0eV9kaWZm
KQogICAgICAgICBkaWZmX2ZpbGUuZmx1c2goKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5CShyZXZpc2lv
biAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3Vt
X2Zyb21fcG5nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1w
b3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBzdHJpbmdfdXRpbHMKIAogZGVmIHJlYWRfY2hlY2tzdW0oZmlsZWhhbmRsZSk6CiAgICAg
IyBXZSBleHBlY3QgdGhlIGNvbW1lbnQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmls
ZS4KLSAgICBkYXRhID0gZW5jb2RlX2lmX25lY2Vzc2FyeShmaWxlaGFuZGxlLnJlYWQoMjA0OCkp
CisgICAgZGF0YSA9IHN0cmluZ191dGlscy5lbmNvZGUoZmlsZWhhbmRsZS5yZWFkKDIwNDgpKQog
ICAgIGNvbW1lbnRfa2V5ID0gYid0RVh0Y2hlY2tzdW1ceDAwJwogICAgIGNvbW1lbnRfcG9zID0g
ZGF0YS5maW5kKGNvbW1lbnRfa2V5KQogICAgIGlmIGNvbW1lbnRfcG9zID09IC0xOgogICAgICAg
ICByZXR1cm4KIAogICAgIGNoZWNrc3VtX3BvcyA9IGNvbW1lbnRfcG9zICsgbGVuKGNvbW1lbnRf
a2V5KQotICAgIHJldHVybiBkZWNvZGVfZm9yKGRhdGFbY2hlY2tzdW1fcG9zOmNoZWNrc3VtX3Bv
cyArIDMyXSwgc3RyKQorICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKGRhdGFbY2hlY2tz
dW1fcG9zOmNoZWNrc3VtX3BvcyArIDMyXSwgdGFyZ2V0X3R5cGU9c3RyKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNr
c3VtX2Zyb21fcG5nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiwxMCBAQAogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgdW5p
dHRlc3QKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0
cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiAKIAogY2xhc3MgUmVh
ZENoZWNrc3VtRnJvbVBuZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMSwxMSArMjEsOSBAQAogIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IHN0cnVjdAotaW1wb3J0IHN5cwotaW1w
b3J0IHRlbXBmaWxlCiBpbXBvcnQgd2F2ZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIAogCiBjbGFzcyBXYXZlRGlmZihvYmplY3QpOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2No
YW5nZWxvZy5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiwx
MCBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgdGV4dHdyYXAKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPLCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTywgdW5pY29kZQog
aW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBhcyBjb25maWdfdXJscwogCiBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDYgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmls
ZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24u
dW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCAqCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkJKHJldmlzaW9uIDI2
NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAKIGltcG9ydCBzeXMKIAotaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVk
dWNlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRweS5j
b21tb24uY29uZmlnIGltcG9ydCB1cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5j
aGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZywgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nCkBA
IC0zNyw3ICszNiw5IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNvbW1pdGluZm8K
IGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZQog
ZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworCitpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgorICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1
Y2UKIAogCiAjIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgV2ViS2l0LXNwZWNpZmljIHBhcnRz
IG9mIHRoZSBjaGVja291dCAobGlrZSBDaGFuZ2VMb2dzKS4KSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIg
KzI2LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgY29kZWNz
CiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0
ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuY2hlY2tvdXQgaW1wb3J0IENoZWNrb3V0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IENvbW1pdE1lc3NhZ2UsIFNDTURl
dGVjdG9yCkBAIC00Miw3ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxl
c3lzdGVtIGkKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1w
b3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
X21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKIApAQCAtMzQ0LDcgKzM0Miw3IEBA
IGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAjIHNv
IHdlIGVuY29kZSBvdXIgdW5pY29kZSBDaGFuZ2VMb2cgZG93biB0byBhIHV0Zi04IHN0cmVhbS4K
ICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyB1dGYtOCBkZWNvZGluZyBzaG91bGQgaWdub3Jl
IGludmFsaWQgY29kZXBvaW50cy4KICAgICAgICAgICAgIGludmFsaWRfdXRmOCA9IGInXDI1NScK
LSAgICAgICAgICAgIHJldHVybiBlbmNvZGVfaWZfbmVjZXNzYXJ5KF9jaGFuZ2Vsb2cxKSArIGlu
dmFsaWRfdXRmOAorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoX2NoYW5n
ZWxvZzEpICsgaW52YWxpZF91dGY4CiAgICAgICAgIGNoZWNrb3V0ID0gc2VsZi5fbWFrZV9jaGVj
a291dCgpCiAgICAgICAgIGNoZWNrb3V0Ll9zY20uY29udGVudHNfYXRfcmV2aXNpb24gPSBtb2Nr
X2NvbnRlbnRzX2F0X3JldmlzaW9uCiAgICAgICAgIGVudHJ5ID0gY2hlY2tvdXQuX2xhdGVzdF9l
bnRyeV9mb3JfY2hhbmdlbG9nX2F0X3JldmlzaW9uKCJmb28iLCAiYmFyIikKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Rp
ZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKIAot
aW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5kaWZmX3BhcnNlciBhcyBkaWZmX3BhcnNl
cgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuZGlmZl9wYXJzZXIgYXMgZGlmZl9wYXJzZXIKIGZyb20gd2Via2l0
cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfdGVzdF9kYXRhIGltcG9ydCBESUZGX1RFU1RfREFUQQog
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL2dpdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMTYgKzI5LDE2
IEBACiAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwogaW1wb3J0
IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJr
aXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiAKIGZyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5jb21taXRtZXNzYWdlIGltcG9ydCBDb21taXRN
ZXNzYWdlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtIGltcG9ydCBBdXRo
ZW50aWNhdGlvbkVycm9yLCBTQ00sIGNvbW1pdF9lcnJvcl9oYW5kbGVyCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5zY20uc3ZuIGltcG9ydCBTVk5SZXBvc2l0b3J5Ci1mcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IsIGVuY29k
ZV9pZl9uZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBA
IC0zNDgsNyArMzQ4LDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAgICAg
IGlmIG5vdCByZXZpc2lvbjoKICAgICAgICAgICAgIHJldHVybiBkaWZmCiAKLSAgICAgICAgcmV0
dXJuIGVuY29kZV9pZl9uZWNlc3NhcnkoIlN1YnZlcnNpb24gUmV2aXNpb246ICIpICsgZW5jb2Rl
X2lmX25lY2Vzc2FyeShyZXZpc2lvbikgKyBlbmNvZGVfaWZfbmVjZXNzYXJ5KCdcbicpICsgZW5j
b2RlX2lmX25lY2Vzc2FyeShkaWZmKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29k
ZSgiU3VidmVyc2lvbiBSZXZpc2lvbjogIikgKyBzdHJpbmdfdXRpbHMuZW5jb2RlKHJldmlzaW9u
KSArIHN0cmluZ191dGlscy5lbmNvZGUoJ1xuJykgKyBzdHJpbmdfdXRpbHMuZW5jb2RlKGRpZmYp
CiAKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgY2hhbmdlZF9m
aWxlcz1Ob25lLCBnaXRfaW5kZXg9RmFsc2UpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBh
cnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQkocmV2aXNp
b24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3NjbS5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTAgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29k
ZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRp
dmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBp
bXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmls
aXR5IGltcG9ydCB1bmljb2RlCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
IApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw5ICs1Niw4IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBp
bXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmdp
dCBpbXBvcnQgR2l0LCBBbWJpZ3VvdXNDb21taXRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KLWZyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IFNDTSwgQ2hlY2tvdXROZWVkc1Vw
ZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhlbnRpY2F0aW9uRXJyb3IKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IENoZWNrb3V0TmVlZHNVcGRhdGUs
IGNvbW1pdF9lcnJvcl9oYW5kbGVyLCBBdXRoZW50aWNhdGlvbkVycm9yCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5zY20uc3ZuIGltcG9ydCBTVk4KLWZyb20gd2Via2l0cHkuY29tbW9u
LnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25lY2Vzc2FyeQogCiAKICMg
V2UgY2FjaGUgdGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdh
aW4gZm9yIGVhY2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20v
c3ZuLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMTMgQEAg
aW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKLWZyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBWZXJzaW9uCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbiwg
c3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1w
b3J0IEF1dGhlbnRpY2F0aW9uRXJyb3IsIFNDTSwgY29tbWl0X2Vycm9yX2hhbmRsZXIKIGZyb20g
d2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxzIGltcG9ydCBzdm5fc2VydmVyX2hvc3QsIHN2bl9z
ZXJ2ZXJfcmVhbG0KIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXpl
ZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
LCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQg
V2ViS2l0RmluZGVyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCkBAIC00MTYsNCArNDE1LDQgQEAgY2xhc3MgU1ZOKFNDTSwgU1ZOUmVwb3NpdG9y
eSk6CiAKICAgICBkZWYgcHJvcGdldChzZWxmLCBwbmFtZSwgcGF0aCk6CiAgICAgICAgIGRpciwg
YmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKLSAgICAgICAgcmV0dXJuIGVuY29kZV9pZl9uZWNl
c3Nhcnkoc2VsZi5fcnVuX3N2bihbJ3BnZXQnLCBwbmFtZSwgYmFzZV0sIGN3ZD1kaXIpLnJzdHJp
cCgiXG4iKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoc2VsZi5fcnVuX3N2
bihbJ3BnZXQnLCBwbmFtZSwgYmFzZV0sIGN3ZD1kaXIpLnJzdHJpcCgiXG4iKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5
CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25m
aWcvY29tbWl0dGVycy5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBAIGltcG9y
dCBmbm1hdGNoCiBpbXBvcnQganNvbgogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgc3RyaW5nX3V0aWxzLCB1bmljb2RlCisKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1
Y2UKIGZyb20gd2Via2l0cHkuY29tbW9uLmVkaXRkaXN0YW5jZSBpbXBvcnQgZWRpdF9kaXN0YW5j
ZQotZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfZm9yLCB1
bmljb2RlCiAKIAogY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKQEAgLTczLDcgKzczLDcgQEAg
Y2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuZW1haWxzWzBd
CiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGVuY29kZV9mb3IodSci
e30iIDx7fT4nLmZvcm1hdCh1bmljb2RlKHNlbGYuZnVsbF9uYW1lKSwgdW5pY29kZShzZWxmLmVt
YWlsc1swXSkpLCBzdHIpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHUnInt9
IiA8e30+Jy5mb3JtYXQodW5pY29kZShzZWxmLmZ1bGxfbmFtZSksIHVuaWNvZGUoc2VsZi5lbWFp
bHNbMF0pKSwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgog
ICAgICAgICByZXR1cm4gdScie30iIDx7fT4nLmZvcm1hdCh1bmljb2RlKHNlbGYuZnVsbF9uYW1l
KSwgdW5pY29kZShzZWxmLmVtYWlsc1swXSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvZXdzc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9ld3NzZXJ2ZXIucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9ld3NzZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDkgKzIwLDEwIEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZy51cmxzIGltcG9ydCBld3NzZXJ2ZXJfZGVmYXVsdF9ob3N0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBOZXR3b3JrVHJhbnNhY3Rp
b24KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5p
Y29kZQogCiBpbXBvcnQgbG9nZ2luZwogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvd2ViX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L3dlYl9tb2NrLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvd2ViX21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwogCiBpbXBvcnQgc3lzCiBpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1
Z3ppbGxhL2J1Z3ppbGxhLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw5ICszOSw4IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIKIAog
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUgICMgdXNlZCBpbiB0aW1lc3RhbXAoKQorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBzdHJpbmdfdXRpbHMsIHVu
aWNvZGUKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBCeXRlc0lPLCBTdHJpbmdJTywgdW5pY29kZSwgZGVjb2RlX2ZvcgotZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0LmJ1Z3ppbGxhLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYS5idWcgaW1wb3J0IEJ1ZwogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jb25maWcgaW1wb3J0IGNvbW1pdHRlcnMKQEAgLTI5NSw3ICsyOTQsNyBAQCBjbGFz
cyBCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToKICAgICBkZWYgaXNfaW52YWxpZF9idWd6aWxsYV9l
bWFpbChzZWxmLCBzZWFyY2hfc3RyaW5nKToKICAgICAgICAgcmV2aWV3X3F1ZXVlX3VybCA9ICJy
ZXF1ZXN0LmNnaT9hY3Rpb249cXVldWUmcmVxdWVzdGVyPSVzJnByb2R1Y3Q9JnR5cGU9cmV2aWV3
JnJlcXVlc3RlZT0mY29tcG9uZW50PSZncm91cD1yZXF1ZXN0ZWUiICUgdXJsbGliLnF1b3RlKHNl
YXJjaF9zdHJpbmcpCiAgICAgICAgIHJlc3VsdHNfcGFnZSA9IHNlbGYuX2xvYWRfcXVlcnkocmV2
aWV3X3F1ZXVlX3VybCkKLSAgICAgICAgcmV0dXJuIGJvb2wocmUuc2VhcmNoKCdkaWQgbm90IG1h
dGNoIGFueXRoaW5nJywgZGVjb2RlX2ZvcihyZXN1bHRzX3BhZ2UucmVhZCgpLCBzdHIpKSkKKyAg
ICAgICAgcmV0dXJuIGJvb2wocmUuc2VhcmNoKCdkaWQgbm90IG1hdGNoIGFueXRoaW5nJywgc3Ry
aW5nX3V0aWxzLmRlY29kZShyZXN1bHRzX3BhZ2UucmVhZCgpLCB0YXJnZXRfdHlwZT1zdHIpKSkK
IAogCiBjbGFzcyBDb21taXRRdWV1ZUZsYWcob2JqZWN0KToKQEAgLTU2NSw3ICs1NjQsNyBAQCBj
bGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICAgICAgIyBJZiB0aGUgcmVzdWx0aW5nIHBh
Z2UgaGFzIGEgdGl0bGUsIGFuZCBpdCBjb250YWlucyB0aGUgd29yZAogICAgICAgICAgICAgIyAi
aW52YWxpZCIgYXNzdW1lIGl0J3MgdGhlIGxvZ2luIGZhaWx1cmUgcGFnZS4KICAgICAgICAgICAg
IGlmIG1hdGNoIGFuZCByZS5zZWFyY2goYidJbnZhbGlkJywgbWF0Y2guZ3JvdXAoMSksIHJlLklH
Tk9SRUNBU0UpOgotICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJCdWd6aWxsYSBsb2dp
biBmYWlsZWQ6IHt9Ii5mb3JtYXQoZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSkKKyAg
ICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiQnVnemlsbGEgbG9naW4gZmFpbGVkOiB7fSIu
Zm9ybWF0KHN0cmluZ191dGlscy5kZWNvZGUobWF0Y2guZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0
cikpCiAgICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24gb25seSBpZiB0aGlzIHdh
cyB0aGUgbGFzdCBhdHRlbXB0CiAgICAgICAgICAgICAgICAgaWYgYXR0ZW1wdHMgPCA1OgogICAg
ICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yTWVzc2FnZSkKQEAgLTY0MCw3ICs2Mzks
NyBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRl
ZiBfcGFyc2VfYXR0YWNobWVudF9pZF9mcm9tX2FkZF9wYXRjaF90b19idWdfcmVzcG9uc2UocmVz
cG9uc2VfaHRtbCk6Ci0gICAgICAgIHJlc3BvbnNlX2h0bWwgPSBkZWNvZGVfZm9yKHJlc3BvbnNl
X2h0bWwsIHN0cikKKyAgICAgICAgcmVzcG9uc2VfaHRtbCA9IHN0cmluZ191dGlscy5kZWNvZGUo
cmVzcG9uc2VfaHRtbCwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICBtYXRjaCA9IHJlLnNlYXJj
aCgnPHRpdGxlPkF0dGFjaG1lbnQgKD9QPGF0dGFjaG1lbnRfaWQ+XGQrKSBhZGRlZCB0byBCdWcg
XGQrPC90aXRsZT4nLCByZXNwb25zZV9odG1sKQogICAgICAgICBpZiBtYXRjaDoKICAgICAgICAg
ICAgIHJldHVybiBtYXRjaC5ncm91cCgnYXR0YWNobWVudF9pZCcpCkBAIC02ODQsNyArNjgzLDcg
QEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKIAogICAgICMgRklYTUU6IFRoZXJlIGhhcyB0byBi
ZSBhIG1vcmUgY29uY2lzZSB3YXkgdG8gd3JpdGUgdGhpcyBtZXRob2QuCiAgICAgZGVmIF9jaGVj
a19jcmVhdGVfYnVnX3Jlc3BvbnNlKHNlbGYsIHJlc3BvbnNlX2h0bWwpOgotICAgICAgICByZXNw
b25zZV9odG1sID0gZGVjb2RlX2ZvcihyZXNwb25zZV9odG1sLCBzdHIpCisgICAgICAgIHJlc3Bv
bnNlX2h0bWwgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHJlc3BvbnNlX2h0bWwsIHRhcmdldF90eXBl
PXN0cikKICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJzx0aXRsZT5CdWcgKD9QPGJ1Z19pZD5c
ZCspIFN1Ym1pdHRlZFtePF0qPC90aXRsZT4nLCByZXNwb25zZV9odG1sKQogICAgICAgICBpZiBt
YXRjaDoKICAgICAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgnYnVnX2lkJykKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTUgKzI3LDE1IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9y
dCBkYXRldGltZQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0
IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBSZXZp
ZXdlciwgQ29tbWl0dGVyLCBDb250cmlidXRvciwgQ29tbWl0dGVyTGlzdAogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LndlYl9tb2NrIGltcG9ydCBNb2NrQnJvd3NlcgogZnJvbSB3ZWJraXRweS5j
b21tb24ubmV0LmJ1Z3ppbGxhLmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYSwgQnVnemlsbGFRdWVy
aWVzLCBDb21taXRRdWV1ZUZsYWcsIEVkaXRVc2Vyc1BhcnNlcgogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVpbGRib3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5
CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVpbGRib3QvYnVpbGRib3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBpbXBvcnQganNvbgotaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgcmUK
IGltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0
cmluZ191dGlscywgdW5pY29kZQogCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxz
IGFzIGNvbmZpZ191cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVt
b2l6ZWQKQEAgLTQwLDcgKzQwLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRl
c3RyZXN1bAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lm5ldHdvcmt0cmFuc2FjdGlvbiBpbXBv
cnQgTmV0d29ya1RyYW5zYWN0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQucmVncmVzc2lv
bndpbmRvdyBpbXBvcnQgUmVncmVzc2lvbldpbmRvdwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmxvZ3V0aWxzIGltcG9ydCBnZXRfbG9nZ2VyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IsIHVuaWNvZGUKIGZyb20gd2Via2l0
cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3NlcgogZnJv
bSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAK
IApAQCAtNTIsNyArNTEsNiBAQCBlbHNlOgogICAgIGZyb20gdXJsbGliMiBpbXBvcnQgSFRUUEVy
cm9yLCBxdW90ZSwgVVJMRXJyb3IsIHVybG9wZW4KIAogCi0KIF9sb2cgPSBnZXRfbG9nZ2VyKF9f
ZmlsZV9fKQogCiAKQEAgLTMxOSw4ICszMTcsOCBAQCBjbGFzcyBCdWlsZEJvdChvYmplY3QpOgog
ICAgICAgICAgICAgIyBGSVhNRTogV2UgdHJlYXQgc2xhdmUgbG9zdCBhcyBncmVlbiBldmVuIHRo
b3VnaCBpdCBpcyBub3QgdG8KICAgICAgICAgICAgICMgd29yayBhcm91bmQgdGhlIFF0cyBib3Qg
YmVpbmcgb24gYSBicm9rZW4gaW50ZXJuZXQgY29ubmVjdGlvbi4KICAgICAgICAgICAgICMgVGhl
IHJlYWwgZml4IGlzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA5
OQotICAgICAgICAgICAgYnVpbGRlclsnaXNfZ3JlZW4nXSA9IG5vdCByZS5zZWFyY2goJ2ZhaWwn
LCBkZWNvZGVfZm9yKGNlbGwucmVuZGVyQ29udGVudHMoKSwgc3RyKSkgb3IgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbChyZS5zZWFyY2goJ2xvc3QnLCBkZWNvZGVfZm9y
KGNlbGwucmVuZGVyQ29udGVudHMoKSwgc3RyKSkpCisgICAgICAgICAgICBidWlsZGVyWydpc19n
cmVlbiddID0gbm90IHJlLnNlYXJjaCgnZmFpbCcsIHN0cmluZ191dGlscy5kZWNvZGUoY2VsbC5y
ZW5kZXJDb250ZW50cygpLCB0YXJnZXRfdHlwZT1zdHIpKSBvciBcCisgICAgICAgICAgICAgICAg
Ym9vbChyZS5zZWFyY2goJ2xvc3QnLCBzdHJpbmdfdXRpbHMuZGVjb2RlKGNlbGwucmVuZGVyQ29u
dGVudHMoKSwgdGFyZ2V0X3R5cGU9c3RyKSkpCiAKICAgICAgICAgICAgIHN0YXR1c19saW5rX3Jl
Z2V4cCA9IHIiYnVpbGRlcnMvKD9QPGJ1aWxkZXJfbmFtZT4uKikvYnVpbGRzLyg/UDxidWlsZF9u
dW1iZXI+XGQrKSIKICAgICAgICAgICAgIGxpbmtfbWF0Y2ggPSByZS5tYXRjaChzdGF0dXNfbGlu
a19yZWdleHAsIHN0YXR1c19saW5rWydocmVmJ10pCkBAIC0zMzYsNyArMzM0LDcgQEAgY2xhc3Mg
QnVpbGRCb3Qob2JqZWN0KToKIAogICAgIGRlZiBfcGFyc2VfY3VycmVudF9idWlsZF9jZWxsKHNl
bGYsIGJ1aWxkZXIsIGNlbGwpOgogICAgICAgICAjIENvbnZlcnQgcmVuZGVyZWQgY29udGVudHMg
dG8gbmF0aXZlIHN0cmluZwotICAgICAgICByZW5kZXJlZCA9IGRlY29kZV9mb3IoY2VsbC5yZW5k
ZXJDb250ZW50cygpLCBzdHIpCisgICAgICAgIHJlbmRlcmVkID0gc3RyaW5nX3V0aWxzLmRlY29k
ZShjZWxsLnJlbmRlckNvbnRlbnRzKCksIHRhcmdldF90eXBlPXN0cikKIAogICAgICAgICAjIEJl
YXV0aWZ1bFNvdXAgYW5kIGJzNCByZW5kZXIgZGlmZmVyZW50bHkKICAgICAgICAgaWYgJzxici8+
JyBpbiByZW5kZXJlZDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9hYnN0cmFjdGV4ZWN1dGl2ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vYWJzdHJhY3RleGVjdXRpdmUucHkJKHJldmlzaW9uIDI2NDcxNikK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9hYnN0cmFjdGV4ZWN1dGl2
ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOSBAQAogaW1wb3J0IHN5cwogaW1wb3J0
IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgdW5pY29kZQor
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3Rl
bQotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQogCiBj
bGFzcyBBYnN0cmFjdEV4ZWN1dGl2ZShvYmplY3QpOgogCkBAIC0xMDEsMTMgKzEwMiwxMyBAQCBj
bGFzcyBBYnN0cmFjdEV4ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYg
X3N0cmluZ2lmeV9hcmdzKHNlbGYsIGFyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKHVuaWNvZGVf
Y29tcGF0aWJpbGl0eS51bmljb2RlLCBhcmdzKQorICAgICAgICByZXR1cm4gbWFwKHVuaWNvZGUs
IGFyZ3MpCiAKICAgICBkZWYgY29tbWFuZF9mb3JfcHJpbnRpbmcoc2VsZiwgYXJncyk6CiAgICAg
ICAgICIiIlJldHVybnMgYSBwcmludC1yZWFkeSBzdHJpbmcgcmVwcmVzZW50aW5nIGNvbW1hbmQg
YXJncy4KICAgICAgICAgVGhlIHN0cmluZyBzaG91bGQgYmUgY29weS9wYXN0ZSByZWFkeSBmb3Ig
ZXhlY3V0aW9uIGluIGEgc2hlbGwuIiIiCiAgICAgICAgIGFyZ3MgPSBzZWxmLl9zdHJpbmdpZnlf
YXJncyhhcmdzKQotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9p
Zl9uZWNlc3NhcnkodW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoJyAn
LmpvaW4oYXJncyksICd1bmljb2RlX2VzY2FwZScpKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0
aWxzLmRlY29kZShzdHJpbmdfdXRpbHMuZW5jb2RlKCcgJy5qb2luKGFyZ3MpLCBlbmNvZGluZz0n
dW5pY29kZV9lc2NhcGUnKSkKIAogICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCBjd2Q9
Tm9uZSwgZW52PU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5v
bmUsIGlnbm9yZV9lcnJvcnM9RmFsc2UsCiAgICAgICAgIHJldHVybl9leGl0X2NvZGU9RmFsc2Us
IHJldHVybl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1dD1UcnVlKToKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQkocmV2aXNp
b24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNo
bG9ncy5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBpbXBvcnQgZGF0ZXRpbWUK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0
IHVuaWNvZGVfY29tcGF0aWJpbGl0eQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscwogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgZm9yIHBhdGggaW4gcmV2
ZXJzZWQoc29ydGVkKGxvZ3MpKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBp
ZiBub3QgbmV3ZXJfdGhhbiBvciBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ubXRpbWUocGF0aCkgPiBu
ZXdlcl90aGFuOgotICAgICAgICAgICAgICAgICAgICBsb2dfZmlsZSA9IHVuaWNvZGVfY29tcGF0
aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5yZWFkX2Jp
bmFyeV9maWxlKHBhdGgpLCAnYXNjaWknLCAnaWdub3JlJykKKyAgICAgICAgICAgICAgICAgICAg
bG9nX2ZpbGUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5yZWFk
X2JpbmFyeV9maWxlKHBhdGgpLCBlbmNvZGluZz0nYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpCiAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5HTE9CQUxfUElEX1JFR0VYLnNlYXJjaChs
b2dfZmlsZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBpbnQobWF0Y2guZ3JvdXAoJ3BpZCcpKSA9PSBwaWQ6CkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3Nf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDExICsyMywxMiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dz
IGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVt
X21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
c3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkuY29t
bW9uIGltcG9ydCB1bmljb2RlX2NvbXBhdGliaWxpdHkKIAogIyBOZWVkZWQgdG8gc3VwcG9ydCBX
aW5kb3dzIHBvcnQgdGVzdHMKIGZyb20gd2Via2l0cHkucG9ydC53aW4gaW1wb3J0IFdpblBvcnQK
QEAgLTI5OSw3ICszMDAsNyBAQCBjbGFzcyBDcmFzaExvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5maWxlc1snL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0
aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzIyX3F1YWR6ZW4uY3Jhc2gn
XSA9IHNlbGYub3RoZXJfcHJvY2Vzc19tb2NrX2NyYXNoX3JlcG9ydAogICAgICAgICBzZWxmLmZp
bGVzWycvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRl
clRyZWVfMjAxMS0wNi0xMy0xNTA3MjNfcXVhZHplbi5jcmFzaCddID0gc2VsZi5taXNmb3JtYXR0
ZWRfbW9ja19jcmFzaF9yZXBvcnQKIAotICAgICAgICBzZWxmLmZpbGVzID0ge2tleTogdW5pY29k
ZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkodmFsdWUpIGZvciBrZXksIHZhbHVl
IGluIHNlbGYuZmlsZXMuaXRlbXMoKX0KKyAgICAgICAgc2VsZi5maWxlcyA9IHtrZXk6IHN0cmlu
Z191dGlscy5lbmNvZGUodmFsdWUpIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZmlsZXMuaXRlbXMo
KX0KIAogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShzZWxmLmZpbGVz
KQogICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKE1vY2tTeXN0ZW1Ib3N0KGZpbGVzeXN0
ZW09c2VsZi5maWxlc3lzdGVtKSwgQ3Jhc2hMb2dzVGVzdC5EQVJXSU5fTU9DS19DUkFTSF9ESVJF
Q1RPUlkpCkBAIC0zMTcsNyArMzE4LDcgQEAgY2xhc3MgQ3Jhc2hMb2dzVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbF9sb2dzKSwgOCkKIAog
ICAgICAgICBmb3IgdGVzdCwgY3Jhc2hfbG9nIGluIGFsbF9sb2dzLml0ZW1zKCk6Ci0gICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoY3Jhc2hfbG9nIGluIFt1bmljb2RlX2NvbXBhdGliaWxpdHku
ZGVjb2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSkgZm9yIHZhbHVlIGluIHNlbGYuZmlsZXMudmFsdWVz
KCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyYXNoX2xvZyBpbiBbc3RyaW5nX3V0
aWxzLmRlY29kZSh2YWx1ZSkgZm9yIHZhbHVlIGluIHNlbGYuZmlsZXMudmFsdWVzKCldKQogICAg
ICAgICAgICAgaWYgdGVzdC5zcGxpdCgnLScpWzBdICE9ICdTYW5kYm94JzoKICAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUodGVzdCA9PSAiVW5rbm93biIgb3IgaW50KHRlc3Quc3BsaXQo
Ii0iKVsxXSkgaW4gcmFuZ2UoMjg1MjcsIDI4NTMxKSkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CShyZXZpc2lvbiAyNjQ3
MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1w
b3J0IHN5cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lP
LCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmFi
c3RyYWN0ZXhlY3V0aXZlIGltcG9ydCBBYnN0cmFjdEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dHRlZSBpbXBvcnQgVGVlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQpAQCAtNzEsNyArNzIsNyBAQCBjbGFzcyBTY3JpcHRFcnJvcihFeGNlcHRpb24p
OgogICAgICAgICAgICAgICAgIHJldHVybiB1IiVzXG5cbkxhc3QgJXMgY2hhcmFjdGVycyBvZiBv
dXRwdXQ6XG4lcyIgJSBcCiAgICAgICAgICAgICAgICAgICAgIChzZWxmLCBvdXRwdXRfbGltaXQs
IHNlbGYub3V0cHV0Wy1vdXRwdXRfbGltaXQ6XSkKICAgICAgICAgICAgIHJldHVybiB1IiVzXG5c
biVzIiAlIChzZWxmLCBzZWxmLm91dHB1dCkKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGF0
aWJpbGl0eS51bmljb2RlKHNlbGYpCisgICAgICAgIHJldHVybiB1bmljb2RlKHNlbGYpCiAKICAg
ICBkZWYgY29tbWFuZF9uYW1lKHNlbGYpOgogICAgICAgICBjb21tYW5kX3BhdGggPSBzZWxmLnNj
cmlwdF9hcmdzCkBAIC0xMjcsNyArMTI4LDcgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhl
Y3V0aXZlKToKICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgaW1wcm92ZWQgbm90
IHRvIGZsYXR0ZW4gb3V0cHV0IHRvIHN0ZG91dC4KICAgICAgICAgICAgIHdoaWxlIGNoaWxkX3By
b2Nlc3MucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgb3V0cHV0X2xpbmUgPSBjaGls
ZF9wcm9jZXNzLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgdGVlZF9vdXRwdXQu
d3JpdGUodW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9mb3Iob3V0cHV0X2xpbmUsIHN0cikp
CisgICAgICAgICAgICAgICAgdGVlZF9vdXRwdXQud3JpdGUoc3RyaW5nX3V0aWxzLmRlY29kZShv
dXRwdXRfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZF9w
cm9jZXNzLnBvbGwoKQogCiAgICAgIyBGSVhNRTogUmVtb3ZlIHRoaXMgZGVwcmVjYXRlZCBtZXRo
b2QgYW5kIG1vdmUgY2FsbGVycyB0byBydW5fY29tbWFuZC4KQEAgLTEzNyw3ICsxMzgsNyBAQCBj
bGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICMgYnV0IHN0aWxsIGhhdmUg
dGhlIG91dHB1dCB0byBzdHVmZiBpbnRvIGEgbG9nIGZpbGUuCiAgICAgZGVmIHJ1bl9hbmRfdGhy
b3dfaWZfZmFpbChzZWxmLCBhcmdzLCBxdWlldD1GYWxzZSwgZGVjb2RlX291dHB1dD1UcnVlLCAq
Kmt3YXJncyk6CiAgICAgICAgICMgQ2FjaGUgdGhlIGNoaWxkJ3Mgb3V0cHV0IGxvY2FsbHkgc28g
aXQgY2FuIGJlIHVzZWQgZm9yIGVycm9yIHJlcG9ydHMuCi0gICAgICAgIGNoaWxkX291dF9maWxl
ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LlN0cmluZ0lPKCkKKyAgICAgICAgY2hpbGRfb3V0X2Zp
bGUgPSBTdHJpbmdJTygpCiAgICAgICAgIHRlZV9zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIGlmIHF1aWV0OgpAQCAtMTUzLDkgKzE1NCw5IEBAIGNsYXNzIEV4
ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgIGNoaWxkX291dF9maWxlLmNsb3Nl
KCkKIAogICAgICAgICBpZiBkZWNvZGVfb3V0cHV0OgotICAgICAgICAgICAgY2hpbGRfb3V0cHV0
ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29kZV9pZl9uZWNlc3NhcnkoY2hpbGRfb3V0cHV0
LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgICAgICBjaGlsZF9vdXRw
dXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGNoaWxkX291dHB1dCwgZW5jb2Rpbmc9c2VsZi5fY2hp
bGRfcHJvY2Vzc19lbmNvZGluZygpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2hpbGRf
b3V0cHV0ID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoY2hpbGRf
b3V0cHV0LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCisgICAgICAgICAgICBjaGls
ZF9vdXRwdXQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGNoaWxkX291dHB1dCwgZW5jb2Rpbmc9c2Vs
Zi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQogCiAgICAgICAgIGlmIGV4aXRfY29kZToKICAg
ICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKHNjcmlwdF9hcmdzPWFyZ3MsCkBAIC0zMDYsNyAr
MzA3LDcgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAgICAg
ICAgICAgICAgICAgICMgSW4gc29tZSBjYXNlcyB0aGUgbGluZSBjYW4gY29udGFpbiBvbmUgb3Ig
bW9yZQogICAgICAgICAgICAgICAgICAgICAgICAgIyBsZWFkaW5nIHdoaXRlLXNwYWNlcywgc28g
c3RyaXAgaXQgYmVmb3JlIHNwbGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBwcm9j
ZXNzX25hbWUgPSBsaW5lLnN0cmlwKCkuc3BsaXQoYicgJywgMSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIHByb2Nlc3NfbmFtZV9maWx0ZXIodW5pY29kZV9jb21wYXRpYmlsaXR5LmRlY29k
ZV9mb3IocHJvY2Vzc19uYW1lLCBzdHIpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBy
b2Nlc3NfbmFtZV9maWx0ZXIoc3RyaW5nX3V0aWxzLmRlY29kZShwcm9jZXNzX25hbWUsIHRhcmdl
dF90eXBlPXN0cikpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdfcGlkcy5h
cHBlbmQoaW50KHBpZCkpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFz
IGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCkBAIC0zNzQsNyArMzc1LDcgQEAgY2xh
c3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAgIyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTI4CiAgICAgICAgICMgZm9yIGFuIGV4
YW1wbGUgb2YgYSByZWdyZXNpb24gY2F1c2VkIGJ5IHBhc3NpbmcgYSB1bmljb2RlIHN0cmluZyBk
aXJlY3RseS4KICAgICAgICAgIyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gZW5jb2RlIGRpZmZlcmVu
dGx5IG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMuCi0gICAgICAgIGlucHV0ID0gdW5pY29kZV9jb21w
YXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoaW5wdXQsIHNlbGYuX2NoaWxkX3Byb2Nlc3Nf
ZW5jb2RpbmcoKSkKKyAgICAgICAgaW5wdXQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGlucHV0LCBl
bmNvZGluZz1zZWxmLl9jaGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCiAgICAgICAgIHJldHVybiAo
c2VsZi5QSVBFLCBpbnB1dCkKIAogICAgICMgRklYTUU6IHJ1bl9hbmRfdGhyb3dfaWZfZmFpbCBz
aG91bGQgYmUgbWVyZ2VkIGludG8gdGhpcyBtZXRob2QuCkBAIC00MDcsMTEgKzQwOCwxMSBAQCBj
bGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAgICAgaWYgbm90IHN0
cmluZ190b19jb21tdW5pY2F0ZToKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNv
bW11bmljYXRlKClbMF0KICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0cHV0
ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSh1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25l
Y2Vzc2FyeShzdHJpbmdfdG9fY29tbXVuaWNhdGUsICd1dGYtOCcpKVswXQorICAgICAgICAgICAg
ICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoc3RyaW5nX3V0aWxzLmVuY29kZShzdHJp
bmdfdG9fY29tbXVuaWNhdGUsIGVuY29kaW5nPSd1dGYtOCcpKVswXQogCiAgICAgICAgICAgICAj
IHJ1bl9jb21tYW5kIGF1dG9tYXRpY2FsbHkgZGVjb2RlcyB0byB1bmljb2RlKCkgYW5kIGNvbnZl
cnRzIENSTEYgdG8gTEYgdW5sZXNzIGV4cGxpY2l0bHkgdG9sZCBub3QgdG8uCiAgICAgICAgICAg
ICBpZiBkZWNvZGVfb3V0cHV0OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IHVuaWNvZGVfY29t
cGF0aWJpbGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KG91dHB1dCwgc2VsZi5fY2hpbGRfcHJvY2Vz
c19lbmNvZGluZygpKS5yZXBsYWNlKCdcclxuJywgJ1xuJykKKyAgICAgICAgICAgICAgICBvdXRw
dXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG91dHB1dCwgZW5jb2Rpbmc9c2VsZi5fY2hpbGRfcHJv
Y2Vzc19lbmNvZGluZygpKS5yZXBsYWNlKCdcclxuJywgJ1xuJykKIAogICAgICAgICAgICAgIyB3
YWl0KCkgaXMgbm90IHRocmVhZHNhZmUgYW5kIGNhbiB0aHJvdyBPU0Vycm9yIGR1ZSB0bzoKICAg
ICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MzE3MTcKQEAgLTQ2NCwx
MSArNDY1LDExIEBAIGNsYXNzIEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgZGVm
IF9lbmNvZGVfYXJndW1lbnRfaWZfbmVlZGVkKHNlbGYsIGFyZ3VtZW50KToKICAgICAgICAgaWYg
bm90IHNlbGYuX3Nob3VsZF9lbmNvZGVfY2hpbGRfcHJvY2Vzc19hcmd1bWVudHMoKToKICAgICAg
ICAgICAgIHJldHVybiBhcmd1bWVudAotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXRpYmls
aXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoYXJndW1lbnQsIHNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5j
b2RpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUoYXJndW1lbnQsIGVu
Y29kaW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKIAogICAgIGRlZiBfc3RyaW5n
aWZ5X2FyZ3Moc2VsZiwgYXJncyk6CiAgICAgICAgICMgUG9wZW4gd2lsbCB0aHJvdyBhbiBleGNl
cHRpb24gaWYgYXJncyBhcmUgbm9uLXN0cmluZ3MgKGxpa2UgaW50KCkpCi0gICAgICAgIHN0cmlu
Z19hcmdzID0gbWFwKHVuaWNvZGVfY29tcGF0aWJpbGl0eS51bmljb2RlLCBhcmdzKQorICAgICAg
ICBzdHJpbmdfYXJncyA9IG1hcCh1bmljb2RlLCBhcmdzKQogICAgICAgICAjIFRoZSBXaW5kb3dz
IGltcGxlbWVudGF0aW9uIG9mIFBvcGVuIGNhbm5vdCBoYW5kbGUgdW5pY29kZSBzdHJpbmdzLiA6
KAogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX2VuY29kZV9hcmd1bWVudF9pZl9uZWVkZWQsIHN0
cmluZ19hcmdzKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZXhlY3V0aXZlX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDggQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIAot
ZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRlc0lP
LCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgQnl0ZXNJTywgc3RyaW5nX3V0aWxzLCB1bmljb2RlCisKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTM4LDggKzM5LDggQEAgX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogY2xhc3MgTW9ja1Byb2Nlc3Mob2JqZWN0KToKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3Rkb3V0PSdNT0NLIFNURE9VVFxuJywgc3RkZXJyPScnKToKICAg
ICAgICAgc2VsZi5waWQgPSA0MgotICAgICAgICBzZWxmLnN0ZG91dCA9IEJ5dGVzSU8oZW5jb2Rl
X2lmX25lY2Vzc2FyeShzdGRvdXQpKQotICAgICAgICBzZWxmLnN0ZGVyciA9IEJ5dGVzSU8oZW5j
b2RlX2lmX25lY2Vzc2FyeShzdGRlcnIpKQorICAgICAgICBzZWxmLnN0ZG91dCA9IEJ5dGVzSU8o
c3RyaW5nX3V0aWxzLmVuY29kZShzdGRvdXQpKQorICAgICAgICBzZWxmLnN0ZGVyciA9IEJ5dGVz
SU8oc3RyaW5nX3V0aWxzLmVuY29kZShzdGRlcnIpKQogICAgICAgICBzZWxmLnN0ZGluID0gQnl0
ZXNJTygpCiAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IDAKICAgICAgICAgc2VsZi5faXNfcnVu
bmluZyA9IEZhbHNlCkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgTW9ja0V4ZWN1dGl2ZShvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIGVudl9zdHJpbmcgPSAiLCBlbnY9eyIgKyBlbnZfc3RyaW5n
ICsgIn0iCiAgICAgICAgICAgICBpbnB1dF9zdHJpbmcgPSAiIgogICAgICAgICAgICAgaWYgaW5w
dXQ6Ci0gICAgICAgICAgICAgICAgaW5wdXRfc3RyaW5nID0gIiwgaW5wdXQ9JXMiICUgZGVjb2Rl
X2ZvcihpbnB1dCwgc3RyKQorICAgICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIsIGlucHV0
PSVzIiAlIHN0cmluZ191dGlscy5kZWNvZGUoaW5wdXQsIHRhcmdldF90eXBlPXN0cikKICAgICAg
ICAgICAgIF9sb2cuaW5mbygiTU9DSyBydW5fY29tbWFuZDogJXMsIGN3ZD0lcyVzJXMiICUgKGFy
Z3MsIGN3ZCwgZW52X3N0cmluZywgaW5wdXRfc3RyaW5nKSkKICAgICAgICAgb3V0cHV0ID0gIk1P
Q0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MiCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQko
cmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2V4ZWN1dGl2ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgb3MKLWltcG9ydCBlcnJubwogaW1wb3J0IHNpZ25hbAog
aW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKQEAgLTQ2LDcgKzQ1LDggQEAgaWYgdGhpcmRf
cGFydHlfcHkgbm90IGluIHN5cy5wYXRoOgogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3
ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQorCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIAogY2xhc3MgU2NyaXB0RXJyb3JUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEzOSwxMSArMTM5LDExIEBAIGNsYXNzIEV4ZWN1dGl2ZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgZW5jb2RpbmcgPSAnbWJjcycKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kaW5nID0gJ3V0Zi04JwotICAgICAgICBlbmNv
ZGVkX3RvciA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KHVuaWNv
ZGVfdG9yX2lucHV0LCBlbmNvZGluZykKKyAgICAgICAgZW5jb2RlZF90b3IgPSBzdHJpbmdfdXRp
bHMuZW5jb2RlKHVuaWNvZGVfdG9yX2lucHV0LCBlbmNvZGluZz1lbmNvZGluZykKICAgICAgICAg
IyBPbiBXaW5kb3dzLCB3ZSBleHBlY3QgdGhlIHVuaWNvZGUtPm1iY3MtPnVuaWNvZGUgcm91bmR0
cmlwIHRvIGJlCiAgICAgICAgICMgbG9zc3kuIE9uIG90aGVyIHBsYXRmb3Jtcywgd2UgZXhwZWN0
IGEgbG9zc2xlc3Mgcm91bmR0cmlwLgogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgnd2luJyk6Ci0gICAgICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSB1bmljb2RlX2NvbXBh
dGliaWxpdHkuZGVjb2RlX2lmX25lY2Vzc2FyeShlbmNvZGVkX3RvciwgZW5jb2RpbmcpCisgICAg
ICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVuY29kZWRf
dG9yLCBlbmNvZGluZz1lbmNvZGluZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHVuaWNv
ZGVfdG9yX291dHB1dCA9IHVuaWNvZGVfdG9yX2lucHV0CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CShyZXZpc2lvbiAy
NjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3Rl
bS5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQg
dGVtcGZpbGUKIGltcG9ydCB0aW1lCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25lY2Vzc2FyeSwgZW5jb2RlX2ZvcgorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogCiAKIGNsYXNzIEZpbGVTeXN0ZW0ob2Jq
ZWN0KToKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAKICAg
ICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgogICAgICAgICB3
aXRoIG9wZW4ocGF0aCwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoZW5jb2RlX2Zv
cihjb250ZW50cywgYnl0ZXMpKQorICAgICAgICAgICAgZi53cml0ZShzdHJpbmdfdXRpbHMuZW5j
b2RlKGNvbnRlbnRzLCB0YXJnZXRfdHlwZT1ieXRlcykpCiAKICAgICBkZWYgb3Blbl90ZXh0X2Zp
bGVfZm9yX3JlYWRpbmcoc2VsZiwgcGF0aCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAgIyBO
b3RlOiBUaGVyZSBhcHBlYXJzIHRvIGJlIGFuIGlzc3VlIHdpdGggdGhlIHJldHVybmVkIGZpbGUg
b2JqZWN0cwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKIAog
ICAgICAgICBUaGUgZmlsZSBpcyB3cml0dGVuIGVuY29kZWQgYXMgVVRGLTggd2l0aCBubyBCT00u
IiIiCiAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmLTgnLCBlcnJvcnM9
ZXJyb3JzKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShkZWNvZGVfaWZfbmVjZXNzYXJ5KGNv
bnRlbnRzLCBlcnJvcnM9ZXJyb3JzKSkKKyAgICAgICAgICAgIGYud3JpdGUoc3RyaW5nX3V0aWxz
LmRlY29kZShjb250ZW50cywgZXJyb3JzPWVycm9ycykpCiAKICAgICBkZWYgc2hhMShzZWxmLCBw
YXRoKToKICAgICAgICAgY29udGVudHMgPSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2su
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVzeXN0ZW1fbW9jay5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTAgKzMwLDggQEAgaW1wb3J0IGVycm5vCiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IG9zCiBp
bXBvcnQgcmUKLWltcG9ydCBzeXMKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHVuaWNv
ZGVfY29tcGF0aWJpbGl0eQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRo
Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVW5pY29kZUlPLCBzdHJpbmdfdXRpbHMKIAogY2xh
c3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBzZXAgPSAnLycKQEAgLTQ4LDcgKzQ2LDcg
QEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICB2YWx1ZSBv
ZiBOb25lIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmlsZSBzaG91bGQKICAgICAgICAg
ICAgICAgICBub3QgZXhpc3QuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLmZpbGVzID0ge25h
bWU6IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNzYXJ5KGNvbnRlbnRzKSBm
b3IgbmFtZSwgY29udGVudHMgaW4gKGZpbGVzIG9yIHt9KS5pdGVtcygpfQorICAgICAgICBzZWxm
LmZpbGVzID0ge25hbWU6IHN0cmluZ191dGlscy5lbmNvZGUoY29udGVudHMpIGZvciBuYW1lLCBj
b250ZW50cyBpbiAoZmlsZXMgb3Ige30pLml0ZW1zKCl9CiAgICAgICAgIHNlbGYud3JpdHRlbl9m
aWxlcyA9IHt9CiAgICAgICAgIHNlbGYubGFzdF90bXBkaXIgPSBOb25lCiAgICAgICAgIHNlbGYu
Y3VycmVudF90bXBubyA9IDAKQEAgLTMyOSw4ICszMjcsOCBAQCBjbGFzcyBNb2NrRmlsZVN5c3Rl
bShvYmplY3QpOgogICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50
cyk6CiAgICAgICAgICMgRklYTUU6IHNob3VsZCB0aGlzIGFzc2VydCBpZiBkaXJuYW1lKHBhdGgp
IGRvZXNuJ3QgZXhpc3Q/CiAgICAgICAgIHNlbGYubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5k
aXJuYW1lKHBhdGgpKQotICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gdW5pY29kZV9jb21wYXRp
YmlsaXR5LmVuY29kZV9mb3IoY29udGVudHMsIGJ5dGVzKQotICAgICAgICBzZWxmLndyaXR0ZW5f
ZmlsZXNbcGF0aF0gPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2Zvcihjb250ZW50cywg
Ynl0ZXMpCisgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGNv
bnRlbnRzKQorICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXNbcGF0aF0gPSBzdHJpbmdfdXRpbHMu
ZW5jb2RlKGNvbnRlbnRzKQogCiAgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNl
bGYsIHBhdGgsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgIGlmIHNlbGYuZmlsZXMuZ2V0KHBh
dGgpIGlzIE5vbmU6CkBAIC0zNDQsNyArMzQyLDcgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2Jq
ZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKS5kZWNvZGUo
J3V0Zi04JywgZXJyb3JzPWVycm9ycykKIAogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwg
cGF0aCwgY29udGVudHMsIGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBzZWxmLndy
aXRlX2JpbmFyeV9maWxlKHBhdGgsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVj
ZXNzYXJ5KGNvbnRlbnRzLCAndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKSkKKyAgICAgICAgcmV0dXJu
IHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUocGF0aCwgc3RyaW5nX3V0aWxzLmVuY29kZShjb250ZW50
cywgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPWVycm9ycykpCiAKICAgICBkZWYgc2hhMShzZWxm
LCBwYXRoKToKICAgICAgICAgY29udGVudHMgPSBzZWxmLnJlYWRfYmluYXJ5X2ZpbGUocGF0aCkK
QEAgLTQ1MywxMyArNDUxLDEzIEBAIGNsYXNzIFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdChvYmpl
Y3QpOgogICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKIAogICAgIGRlZiB3cml0ZShzZWxmLCBz
dHJpbmcpOgotICAgICAgICBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0gKz0gdW5pY29kZV9jb21w
YXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nhcnkoc3RyaW5nLCAndXRmLTgnKQorICAgICAgICBz
ZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0gKz0gc3RyaW5nX3V0aWxzLmVuY29kZShzdHJpbmcsIGVu
Y29kaW5nPSd1dGYtOCcpCiAgICAgICAgIHNlbGYuZnMud3JpdHRlbl9maWxlc1tzZWxmLnBhdGhd
ID0gc2VsZi5mcy5maWxlc1tzZWxmLnBhdGhdCiAKIAogY2xhc3MgV3JpdGFibGVUZXh0RmlsZU9i
amVjdChXcml0YWJsZUJpbmFyeUZpbGVPYmplY3QpOgogICAgIGRlZiB3cml0ZShzZWxmLCBzdHIp
OgotICAgICAgICBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qud3JpdGUoc2VsZiwgdW5pY29kZV9j
b21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nhcnkoc3RyLCAndXRmLTgnKSkKKyAgICAgICAg
V3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0LndyaXRlKHNlbGYsIHN0cmluZ191dGlscy5lbmNvZGUo
c3RyLCBlbmNvZGluZz0ndXRmLTgnKSkKIAogCiBjbGFzcyBSZWFkYWJsZUJpbmFyeUZpbGVPYmpl
Y3Qob2JqZWN0KToKQEAgLTQ5Miw3ICs0OTAsNyBAQCBjbGFzcyBSZWFkYWJsZUJpbmFyeUZpbGVP
YmplY3Qob2JqZWN0KToKIAogY2xhc3MgUmVhZGFibGVUZXh0RmlsZU9iamVjdChSZWFkYWJsZUJp
bmFyeUZpbGVPYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgcGF0aCwgZGF0YSk6
Ci0gICAgICAgIHN1cGVyKFJlYWRhYmxlVGV4dEZpbGVPYmplY3QsIHNlbGYpLl9faW5pdF9fKGZz
LCBwYXRoLCB1bmljb2RlX2NvbXBhdGliaWxpdHkuVW5pY29kZUlPKHVuaWNvZGVfY29tcGF0aWJp
bGl0eS5kZWNvZGVfZm9yKGRhdGEsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS51bmljb2RlKSkpCisg
ICAgICAgIHN1cGVyKFJlYWRhYmxlVGV4dEZpbGVPYmplY3QsIHNlbGYpLl9faW5pdF9fKGZzLCBw
YXRoLCBVbmljb2RlSU8oc3RyaW5nX3V0aWxzLmRlY29kZShkYXRhKSkpCiAKICAgICBkZWYgY2xv
c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuZGF0YS5jbG9zZSgpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQkocmV2
aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291
dHB1dGNhcHR1cmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgaW1wb3J0IGxv
Z2dpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgU3RyaW5nSU8KIAogCiBjbGFzcyBPdXRwdXRDYXB0dXJlKG9iamVjdCk6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0dGVlX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9v
dXRwdXR0ZWVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXR0ZWVfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDggKzI4LDkgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5vdXRwdXR0ZWUgaW1wb3J0IFRlZSwgT3V0cHV0VGVlCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
Lm91dHB1dHRlZSBpbXBvcnQgVGVlCiAKIAogY2xhc3MgU2ltcGxlVGVlVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50
X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDggKzI5LDkgQEAKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBh
dGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgbGludF90ZXN0X2V4cGVjdGF0aW9ucwogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQgKzMyLDEzIEBAIGltcG9ydCBqc29uCiBpbXBv
cnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVy
ZSwgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9nc191bml0dGVzdCBp
bXBvcnQgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4KIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0
IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1w
b3J0IFN0cmluZ0lPCi0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Vi
a2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5fcmVz
dWx0cyBpbXBvcnQgSU5URVJSVVBURURfRVhJVF9TVEFUVVMKIGZyb20gd2Via2l0cHkucG9ydCBp
bXBvcnQgdGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5w
eQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw5ICsyOSw4IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKLWltcG9ydCB0aW1lCiAK
LWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2Rl
X2ZvcgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IHRlc3RfcmVzdWx0X3dyaXRlcgogZnJv
bSB3ZWJraXRweS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVySW5wdXQsIERyaXZlck91dHB1dAog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cwpAQCAtMjE1LDcgKzIxNCw3IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXIob2JqZWN0KToKICAg
ICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmVycm9yOgogICAgICAgICAgICAgX2xvZy5kZWJ1Zygi
JXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczoiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCB0ZXN0bmFt
ZSkpCiAgICAgICAgIGZvciBsaW5lIGluIGRyaXZlcl9vdXRwdXQuZXJyb3Iuc3BsaXRsaW5lcygp
OgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICB7fSIuZm9ybWF0KGRlY29kZV9mb3IobGluZSwg
c3RyKSkpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCIgIHt9Ii5mb3JtYXQoc3RyaW5nX3V0aWxz
LmRlY29kZShsaW5lLCB0YXJnZXRfdHlwZT1zdHIpKSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVz
CiAKICAgICBkZWYgX2NvbXBhcmVfb3V0cHV0KHNlbGYsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQs
IGRyaXZlcl9vdXRwdXQpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvYnVpbGRib3RfcmVzdWx0c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMyArMjgsMTAgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sg
aW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1v
Y2tPcHRpb25zCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVz
dF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X3J1bl9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBv
cnQgdGVzdF9ydW5fcmVzdWx0c191bml0dGVzdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
dmlld3MgaW1wb3J0IGJ1aWxkYm90X3Jlc3VsdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRf
c3RyZWFtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOCBAQCBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9y
dCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVy
ZWRTdHJlYW0KIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9wcmludGluZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weQkocmV2aXNpb24g
MjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJp
bnRpbmdfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxMSBAQAogCiBp
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QK
IAotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgbG9ndGVzdGluZwotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBTdHJpbmdJTwotZnJvbSB3ZWJraXRweSBpbXBvcnQgcG9ydAotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1hbmFnZXIKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTUgKzI2LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBv
cnQganNvbgotaW1wb3J0IG1hdGgKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5w
b3J0LmRyaXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0Ci1mcm9tIHdlYmtpdHB5LnBvcnQudGVzdCBp
bXBvcnQgVGVzdERyaXZlcgogZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0
CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVz
dAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRl
c3RNZXRyaWMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMv
cGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3Jh
dGlvbnRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Vi
a2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5wb3J0
LnRlc3QgaW1wb3J0IFRlc3RQb3J0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBl
cmZ0ZXN0IGltcG9ydCBQZXJmVGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxNCArMjksMTMgQEAKICIiIlVuaXQgdGVzdHMgZm9yIHJ1bl9wZXJmX3Rlc3Rz
LiIiIgogCiBpbXBvcnQganNvbgotaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3Rf
bW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRj
YXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnBvcnQudGVzdCBp
bXBvcnQgVGVzdFBvcnQKLWZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3Qg
aW1wb3J0IERFRkFVTFRfVEVTVF9SVU5ORVJfQ09VTlQKIGZyb20gd2Via2l0cHkucGVyZm9ybWFu
Y2VfdGVzdHMucGVyZnRlc3RzcnVubmVyIGltcG9ydCBQZXJmVGVzdHNSdW5uZXIKIAogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAgaW1wb3J0IHN5cwogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGlj
dAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBzdHJpbmdfdXRpbHMKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRfZmlsZXMK
IGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3VtX2Zyb21fcG5nCkBAIC01
Miw3ICs1Myw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFBVQkxJQ19UQUJMRSwg
SU5URVJOQUxfVEFCTEUsIFZlcnNpb25OYW1lTWFwCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53YXZl
ZGlmZiBpbXBvcnQgV2F2ZURpZmYKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIg
aW1wb3J0IFdlYktpdEZpbmRlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBlbmNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9y
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGlt
cG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBjb25maWcg
YXMgcG9ydF9jb25maWcKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZHJpdmVyCkBAIC0zMjYs
OCArMzI2LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBkaWZmX3RleHQoc2VsZiwg
ZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmls
ZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRpZmYg
b2YgdGhlIHR3byB0ZXh0IHN0cmluZ3MKICAgICAgICAgaW4gJ3VuaWZpZWQgZGlmZicgZm9ybWF0
LiIiIgotICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IGRlY29kZV9mb3IoZW5jb2RlX2lmX25l
Y2Vzc2FyeShleHBlY3RlZF9maWxlbmFtZSksIHN0cikKLSAgICAgICAgYWN0dWFsX2ZpbGVuYW1l
ID0gZGVjb2RlX2ZvcihlbmNvZGVfaWZfbmVjZXNzYXJ5KGFjdHVhbF9maWxlbmFtZSksIHN0cikK
KyAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0cmluZ191
dGlscy5lbmNvZGUoZXhwZWN0ZWRfZmlsZW5hbWUpLCB0YXJnZXRfdHlwZT1zdHIpCisgICAgICAg
IGFjdHVhbF9maWxlbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RyaW5nX3V0aWxzLmVuY29k
ZShhY3R1YWxfZmlsZW5hbWUpLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIGRpZmYgPSBkaWZm
bGliLnVuaWZpZWRfZGlmZihleHBlY3RlZF90ZXh0LnNwbGl0bGluZXMoVHJ1ZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfdGV4dC5zcGxpdGxpbmVzKFRydWUp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUs
CkBAIC00ODgsNyArNDg4LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgYmFz
ZWxpbmVfcGF0aCA9IHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUodGVzdF9uYW1lLCAnLndlYmFyY2hp
dmUnLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9m
aWxlc3lzdGVtLmV4aXN0cyhiYXNlbGluZV9wYXRoKToKICAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICB0ZXh0ID0gZGVjb2RlX2ZvcihzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmlu
YXJ5X2ZpbGUoYmFzZWxpbmVfcGF0aCksIHN0cikKKyAgICAgICAgdGV4dCA9IHN0cmluZ191dGls
cy5kZWNvZGUoc2VsZi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGJhc2VsaW5lX3BhdGgp
LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoIlxyXG4iLCAi
XG4iKQogCiAgICAgZGVmIF9nZXRfcmVmdGVzdF9saXN0KHNlbGYsIHRlc3RfbmFtZSk6CkBAIC0x
NDkyLDcgKzE0OTIsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGlmIGFyZ3M6CiAg
ICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCiAgICAgICAgIG91dHB1
dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1z
ZWxmLndlYmtpdF9iYXNlKCksIGRlY29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikK
LSAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29t
bWFuZCwgZW5jb2RlX2ZvcihvdXRwdXQsIHN0cikgaWYgZGVjb2RlX291dHB1dCBlbHNlIG91dHB1
dCkpCisgICAgICAgIF9sb2cuZGVidWcoJ091dHB1dCBvZiAlczpcbiVzJyAlIChydW5fc2NyaXB0
X2NvbW1hbmQsIHN0cmluZ191dGlscy5lbmNvZGUob3V0cHV0LCB0YXJnZXRfdHlwZT1zdHIpIGlm
IGRlY29kZV9vdXRwdXQgZWxzZSBvdXRwdXQpKQogICAgICAgICByZXR1cm4gb3V0cHV0CiAKICAg
ICBkZWYgX2J1aWxkX2RyaXZlcihzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9kcml2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlci5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIGltcG9ydCBz
aGxleAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcworCiBmcm9tIGNvbGxlY3Rp
b25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191
dGlscwogCi1mcm9tIG9zLnBhdGggaW1wb3J0IG5vcm1wYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wcm9maWxl
ciBpbXBvcnQgUHJvZmlsZXJGYWN0b3J5Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKIAogCiBf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC04NywxMSArODcsMTEgQEAgY2xh
c3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X3RpbWU9MCwgbWVhc3Vy
ZW1lbnRzPU5vbmUsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFt
ZT0nPz8nLAogICAgICAgICAgICAgY3Jhc2hlZF9waWQ9Tm9uZSwgY3Jhc2hfbG9nPU5vbmUsIHBp
ZD1Ob25lKToKICAgICAgICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSByZW5hbWVkIHRvIGJldHRl
ciBjbGFyaWZ5IHdoYXQgdGhleSBkby4KLSAgICAgICAgc2VsZi50ZXh0ID0gZGVjb2RlX2Zvcih0
ZXh0LCBzdHIpIGlmIHRleHQgZWxzZSBOb25lCisgICAgICAgIHNlbGYudGV4dCA9IHN0cmluZ191
dGlscy5kZWNvZGUodGV4dCwgdGFyZ2V0X3R5cGU9c3RyKSBpZiB0ZXh0IGVsc2UgTm9uZQogICAg
ICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0aGUgdGVz
dCBjcmFzaGVzLgogICAgICAgICBzZWxmLmltYWdlX2hhc2ggPSBpbWFnZV9oYXNoCiAgICAgICAg
IHNlbGYuaW1hZ2VfZGlmZiA9IE5vbmUgICMgaW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBhZnRl
ciBjb25zdHJ1Y3Rpb24uCi0gICAgICAgIHNlbGYuYXVkaW8gPSBlbmNvZGVfaWZfbmVjZXNzYXJ5
KGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRlcGVu
ZGVudC4KKyAgICAgICAgc2VsZi5hdWRpbyA9IHN0cmluZ191dGlscy5lbmNvZGUoYXVkaW8pIGlm
IGF1ZGlvIGVsc2UgTm9uZSAgIyBCaW5hcnkgZm9ybWF0IGlzIHBvcnQtZGVwZW5kZW50LgogICAg
ICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKICAgICAgICAgc2VsZi5jcmFzaGVkX3Byb2Nlc3NfbmFt
ZSA9IGNyYXNoZWRfcHJvY2Vzc19uYW1lCiAgICAgICAgIHNlbGYuY3Jhc2hlZF9waWQgPSBjcmFz
aGVkX3BpZApAQCAtMjE1LDcgKzIxNSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAg
ICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogICAgICAgICB0ZXh0LCBhdWRp
byA9IHNlbGYuX3JlYWRfZmlyc3RfYmxvY2soZGVhZGxpbmUsIGRyaXZlcl9pbnB1dC50ZXN0X25h
bWUpICAjIEZpcnN0IGJsb2NrIGlzIGVpdGhlciB0ZXh0IG9yIGF1ZGlvCiAgICAgICAgIGltYWdl
LCBhY3R1YWxfaW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2soZGVh
ZGxpbmUsIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpICAjIFRoZSBzZWNvbmQgKG9wdGlvbmFsKSBi
bG9jayBpcyBpbWFnZSBkYXRhLgotICAgICAgICB0ZXh0ID0gZGVjb2RlX2Zvcih0ZXh0LCBzdHIp
CisgICAgICAgIHRleHQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHRleHQsIHRhcmdldF90eXBlPXN0
cikKIAogICAgICAgICBjcmFzaGVkID0gc2VsZi5oYXNfY3Jhc2hlZCgpCiAgICAgICAgIHRpbWVk
X291dCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dApAQCAtMjI5LDkgKzIyOSw5IEBA
IGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgIyBJbiB0aGUgdGltZW91dCBjYXNl
LCB3ZSBraWxsIHRoZSBodW5nIHByb2Nlc3MgYXMgd2VsbC4KICAgICAgICAgICAgIG91dCwgZXJy
ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RvcChzZWxmLl9wb3J0LmRyaXZlcl9zdG9wX3RpbWVv
dXQoKSBpZiBzdG9wX3doZW5fZG9uZSBlbHNlIDAuMCkKICAgICAgICAgICAgIGlmIG91dDoKLSAg
ICAgICAgICAgICAgICB0ZXh0ICs9IGRlY29kZV9mb3Iob3V0LCBzdHIpCisgICAgICAgICAgICAg
ICAgdGV4dCArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG91dCwgdGFyZ2V0X3R5cGU9c3RyKQogICAg
ICAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9
IGRlY29kZV9mb3IoZXJyLCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rl
c3QgKz0gc3RyaW5nX3V0aWxzLmRlY29kZShlcnIsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAg
ICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQogCiAgICAgICAgIGNyYXNoX2xvZyA9IE5v
bmUKQEAgLTI4NCw4ICsyODQsOCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgZm9y
IGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKICAgICAgICAgICAgIG0gPSByZS5tYXRjaChi
J14oW146XSspOiAoWzAtOV0rKSQnLCBsaW5lKQogICAgICAgICAgICAgaWYgbToKLSAgICAgICAg
ICAgICAgICBwcm9jZXNzX25hbWUgPSBkZWNvZGVfZm9yKG0uZ3JvdXAoMSksIHN0cikKLSAgICAg
ICAgICAgICAgICBwcm9jZXNzX2lkID0gZGVjb2RlX2ZvcihtLmdyb3VwKDIpLCBzdHIpCisgICAg
ICAgICAgICAgICAgcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShtLmdyb3VwKDEp
LCB0YXJnZXRfdHlwZT1zdHIpCisgICAgICAgICAgICAgICAgcHJvY2Vzc19pZCA9IHN0cmluZ191
dGlscy5kZWNvZGUobS5ncm91cCgyKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgICAg
IGNoaWxkX3Byb2Nlc3Nlc1twcm9jZXNzX25hbWVdLmFwcGVuZChwcm9jZXNzX2lkKQogCiAgICAg
ICAgIHJldHVybiBjaGlsZF9wcm9jZXNzZXMKQEAgLTU0OSw3ICs1NDksNyBAQCBjbGFzcyBEcml2
ZXIob2JqZWN0KToKICAgICBkZWYgX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dChzZWxmLCBvdXRf
bGluZSk6CiAgICAgICAgIGlmIG91dF9saW5lLnN0YXJ0c3dpdGgoYiIjUElEIFVOUkVTUE9OU0lW
RSAtICIpOgogICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChiJyNQSUQgVU5SRVNQT05TSVZF
IC0gKFxTKyknLCBvdXRfbGluZSkKLSAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9IGRl
Y29kZV9mb3IobWF0Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycK
KyAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUobWF0
Y2guZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycK
ICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgb3V0X2xpbmUpCiAg
ICAgICAgICAgICBjaGlsZF9wcm9jZXNzX3BpZCA9IGludChtYXRjaC5ncm91cCgxKSkgaWYgbWF0
Y2ggZWxzZSBOb25lCiAgICAgICAgICAgICBlcnJfbGluZSA9ICdXYWl0IG9uIG5vdGlmeURvbmUg
dGltZWQgb3V0LCBwcm9jZXNzICcgKyBjaGlsZF9wcm9jZXNzX25hbWUgKyAnIHBpZCA9ICcgKyBz
dHIoY2hpbGRfcHJvY2Vzc19waWQpCkBAIC01NzIsMjEgKzU3MiwyMSBAQCBjbGFzcyBEcml2ZXIo
b2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsaWYgZXJyb3JfbGlu
ZS5zdGFydHN3aXRoKGIiI0NSQVNIRUQgLSAiKToKICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0
Y2goYicjQ1JBU0hFRCAtIChcUyspJywgZXJyb3JfbGluZSkKLSAgICAgICAgICAgIHNlbGYuX2Ny
YXNoZWRfcHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBt
YXRjaCBlbHNlICdXZWJQcm9jZXNzJworICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNz
X25hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1z
dHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCiAgICAgICAgICAgICBtYXRjaCA9IHJlLnNl
YXJjaChiJ3BpZCAoXGQrKScsIGVycm9yX2xpbmUpCiAgICAgICAgICAgICBzZWxmLl9jcmFzaGVk
X3BpZCA9IGludChtYXRjaC5ncm91cCgxKSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCclcyBjcmFzaCwgcGlkID0gJXMnICUgKHNlbGYuX2NyYXNoZWRfcHJvY2Vz
c19uYW1lLCBzdHIoc2VsZi5fY3Jhc2hlZF9waWQpKSkKICAgICAgICAgICAgIHJldHVybiBUcnVl
CiAgICAgICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKGIiI1BST0NFU1MgVU5SRVNQT05T
SVZFIC0gIik6CiAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI1BST0NFU1MgVU5SRVNQ
T05TSVZFIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19u
YW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQ
cm9jZXNzJworICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShtYXRjaC5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQ
cm9jZXNzJwogICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBlcnJv
cl9saW5lKQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19waWQgPSBpbnQobWF0Y2guZ3JvdXAo
MSkpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgaXMgdW5y
ZXNwb25zaXZlLCBwaWQgPSAlcycgJSAoY2hpbGRfcHJvY2Vzc19uYW1lLCBzdHIoY2hpbGRfcHJv
Y2Vzc19waWQpKSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVlCiAg
ICAgICAgICAgICBpZiBjaGlsZF9wcm9jZXNzX3BpZDoKICAgICAgICAgICAgICAgICBzZWxmLl9w
b3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19waWQs
IHNlbGYuX3RhcmdldF9ob3N0KQotICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0g
ZGVjb2RlX2ZvcihlcnJvcl9saW5lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21f
dGVzdCArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVycm9yX2xpbmUsIHRhcmdldF90eXBlPXN0cikK
ICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKCcjU0FNUExFIEZJTklTSEVE
XG4nLCBUcnVlKSAgIyBNdXN0IGJlIGFibGUgdG8gaWdub3JlIGEgYnJva2VuIHBpcGUgaGVyZSwg
dGFyZ2V0IHByb2Nlc3MgbWF5IGFscmVhZHkgYmUgY2xvc2VkLgogICAgICAgICAgICAgcmV0dXJu
IFRydWUKICAgICAgICAgcmV0dXJuIHNlbGYuaGFzX2NyYXNoZWQoKQpAQCAtNjQwLDcgKzY0MCw3
IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgZGVmIF9yZWFkX2hlYWRlcihzZWxmLCBi
bG9jaywgbGluZSwgaGVhZGVyX3RleHQsIGhlYWRlcl9hdHRyLCBoZWFkZXJfZmlsdGVyPU5vbmUp
OgogICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoaGVhZGVyX3RleHQpIGFuZCBnZXRhdHRyKGJs
b2NrLCBoZWFkZXJfYXR0cikgaXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gZGVjb2RlX2Zv
cihsaW5lLnNwbGl0KClbMV0sIHN0cikKKyAgICAgICAgICAgIHZhbHVlID0gc3RyaW5nX3V0aWxz
LmRlY29kZShsaW5lLnNwbGl0KClbMV0sIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAgIGlm
IGhlYWRlcl9maWx0ZXI6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBoZWFkZXJfZmlsdGVyKHZh
bHVlKQogICAgICAgICAgICAgc2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIsIHZhbHVlKQpAQCAt
NjYxLDcgKzY2MSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgICAgICMgTm90ZSwg
d2UncmUgbm90IHJlYWRpbmcgRXhwZWN0ZWRIYXNoOiBoZXJlLCBidXQgd2UgY291bGQuCiAgICAg
ICAgICMgSWYgdGhlIGxpbmUgd2Fzbid0IGEgaGVhZGVyLCB3ZSBqdXN0IGFwcGVuZCBpdCB0byB0
aGUgY29udGVudC4KLSAgICAgICAgYmxvY2suY29udGVudCA9IGVuY29kZV9pZl9uZWNlc3Nhcnko
YmxvY2suY29udGVudCkgKyBsaW5lCisgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzdHJpbmdfdXRp
bHMuZW5jb2RlKGJsb2NrLmNvbnRlbnQpICsgbGluZQogCiAgICAgZGVmIF9zdHJpcF9lb2Yoc2Vs
ZiwgbGluZSk6CiAgICAgICAgIGlmIGxpbmUgYW5kIGxpbmUuZW5kc3dpdGgoYiIjRU9GXG4iKToK
QEAgLTcwNiw3ICs3MDYsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBVbmxpa2UgSFRUUCwgRFJUIGR1bXBzIHRoZSBjb250ZW50IHJpZ2h0IGFmdGVy
IHByaW50aW5nIGEgQ29udGVudC1MZW5ndGggaGVhZGVyLgogICAgICAgICAgICAgICAgICMgRG9u
J3Qgd2FpdCB1bnRpbCB3ZSdyZSBkb25lIHdpdGggaGVhZGVycywganVzdCByZWFkIHRoZSBiaW5h
cnkgYmxvYiByaWdodCBub3cuCiAgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGhfYmVm
b3JlX2hlYWRlcl9jaGVjayAhPSBibG9jay5fY29udGVudF9sZW5ndGg6Ci0gICAgICAgICAgICAg
ICAgICAgIGJsb2NrLmNvbnRlbnQgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KHNlbGYuX3NlcnZlcl9w
cm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBibG9jay5fY29udGVudF9sZW5ndGgpKQorICAg
ICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gc3RyaW5nX3V0aWxzLmVuY29kZShzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRfbGVu
Z3RoKSkKIAogICAgICAgICAgICAgaWYgZXJyX2xpbmU6CiAgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaF9vcl91bnJlc3BvbnNpdmVuZXNzKGVycl9saW5lKToK
QEAgLTcyNCw5ICs3MjQsOSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIHJlbW92ZWQgb25jZSA8cmRhcjovL3By
b2JsZW0vMTg3MDE0NDc+IGlzIGZpeGVkLgogICAgICAgICAgICAgICAgICAgICBkZWFkbGluZSAr
PSAxMCAqIDYwICogMTAwMAogICAgICAgICAgICAgICAgIGlmIGFzYW5fdmlvbGF0aW9uX2RldGVj
dGVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jcmFzaF9yZXBvcnRfZnJvbV9kcml2ZXIg
Kz0gZGVjb2RlX2ZvcihlcnJfbGluZSwgc3RyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9j
cmFzaF9yZXBvcnRfZnJvbV9kcml2ZXIgKz0gc3RyaW5nX3V0aWxzLmRlY29kZShlcnJfbGluZSwg
dGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGRlY29kZV9mb3IoZXJyX2xpbmUsIHN0cikKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gc3RyaW5nX3V0aWxzLmRl
Y29kZShlcnJfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAgICAgIGlmIGFzYW5fdmlvbGF0
aW9uX2RldGVjdGVkIGFuZCBub3Qgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6CiAgICAgICAg
ICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBy
b2Nlc3NfbmFtZSgpCkBAIC03NTksNyArNzU5LDcgQEAgY2xhc3MgQ29udGVudEJsb2NrKG9iamVj
dCk6CiAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNvZGUo
c2VsZi5jb250ZW50KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gZGVjb2RlX2ZvcihzZWxmLmNvbnRlbnQsIHN0
cikKKyAgICAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IHN0cmluZ191dGlscy5k
ZWNvZGUoc2VsZi5jb250ZW50LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICBleGNlcHQg
VW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50
ID0gTm9uZQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5w
eQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdl
X2RpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDcgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCByZQogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBzZXJ2
ZXJfcHJvY2VzcwotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBCeXRlc0lPLCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5Citmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgc3RyaW5nX3V0aWxzCiAKIAogX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTksOSArNTgsOSBAQCBjbGFzcyBJbWFnZURpZmZlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KHRvbGVyYW5jZSkKICAgICAgICAg
ICAgICMgTm90ZSB0aGF0IGFsdGhvdWdoIHdlIGFyZSBoYW5kZWQgJ29sZCcsICduZXcnLCBJbWFn
ZURpZmYgd2FudHMgJ25ldycsICdvbGQnLgogICAgICAgICAgICAgYnVmZmVyID0gQnl0ZXNJTygp
Ci0gICAgICAgICAgICBidWZmZXIud3JpdGUoZW5jb2RlX2lmX25lY2Vzc2FyeSgnQ29udGVudC1M
ZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oYWN0dWFsX2NvbnRlbnRzKSkpKQorICAgICAgICAgICAg
YnVmZmVyLndyaXRlKHN0cmluZ191dGlscy5lbmNvZGUoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5m
b3JtYXQobGVuKGFjdHVhbF9jb250ZW50cykpKSkKICAgICAgICAgICAgIGJ1ZmZlci53cml0ZShh
Y3R1YWxfY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXIud3JpdGUoZW5jb2RlX2lmX25lY2Vz
c2FyeSgnQ29udGVudC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oZXhwZWN0ZWRfY29udGVudHMp
KSkpCisgICAgICAgICAgICBidWZmZXIud3JpdGUoc3RyaW5nX3V0aWxzLmVuY29kZSgnQ29udGVu
dC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oZXhwZWN0ZWRfY29udGVudHMpKSkpCiAgICAgICAg
ICAgICBidWZmZXIud3JpdGUoZXhwZWN0ZWRfY29udGVudHMpCiAgICAgICAgICAgICBzZWxmLl9w
cm9jZXNzLndyaXRlKGJ1ZmZlci5nZXR2YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3JlYWQoKQpAQCAtOTIsMTIgKzkxLDEyIEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6CiAK
ICAgICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKGInQ29udGVudC1MZW5ndGgnKToKICAg
ICAgICAgICAgICAgICBtID0gcmUubWF0Y2goYidDb250ZW50LUxlbmd0aDogKFxkKyknLCBvdXRw
dXQpCi0gICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoZGVjb2RlX2ZvcihtLmdy
b3VwKDEpLCBzdHIpKQorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHN0cmlu
Z191dGlscy5kZWNvZGUobS5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAgICAg
ICAgICBvdXRwdXRfaW1hZ2UgPSBzZWxmLl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBj
b250ZW50X2xlbmd0aCkKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9wcm9jZXNzLnJl
YWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAg
ICBzdGRlcnIgPSBkZWNvZGVfZm9yKHNlbGYuX3Byb2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRl
cnIoKSwgc3RyKQorICAgICAgICBzdGRlcnIgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlbGYuX3By
b2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAg
ICBlcnJfc3RyID0gJycKICAgICAgICAgaWYgc3RkZXJyOgogICAgICAgICAgICAgZXJyX3N0ciAr
PSAiSW1hZ2VEaWZmIHByb2R1Y2VkIHN0ZGVyciBvdXRwdXQ6XG4iICsgc3RkZXJyCkBAIC0xMTEs
NyArMTEwLDcgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgICAgIG0gPSBy
ZS5tYXRjaChiJ2RpZmY6ICguKyklIChwYXNzZWR8ZmFpbGVkKScsIG91dHB1dCkKICAgICAgICAg
ICAgIGlmIG0uZ3JvdXAoMikgPT0gYidwYXNzZWQnOgogICAgICAgICAgICAgICAgIHJldHVybiAo
Tm9uZSwgMCwgTm9uZSkKLSAgICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KGRlY29kZV9m
b3IobS5ncm91cCgxKSwgc3RyKSkKKyAgICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KHN0
cmluZ191dGlscy5kZWNvZGUobS5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSkKIAogICAgICAg
ICByZXR1cm4gKG91dHB1dF9pbWFnZSwgZGlmZl9wZXJjZW50LCBlcnJfc3RyIG9yIE5vbmUpCiAK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weQkocmV2
aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rv
ci5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOSBAQAogaW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCByZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9u
ZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC03OSw3
ICs4MCw3IEBAIGNsYXNzIExlYWtEZXRlY3RvcihvYmplY3QpOgogICAgIGRlZiBfcGFyc2VfbGVh
a3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCk6CiAgICAgICAgIGlmIG5vdCBsZWFrc19vdXRw
dXQ6CiAgICAgICAgICAgICByZXR1cm4gMCwgMCwgMAotICAgICAgICBsZWFrc19vdXRwdXQgPSBl
bmNvZGVfaWZfbmVjZXNzYXJ5KGxlYWtzX291dHB1dCkKKyAgICAgICAgbGVha3Nfb3V0cHV0ID0g
c3RyaW5nX3V0aWxzLmVuY29kZShsZWFrc19vdXRwdXQpCiAgICAgICAgIF8sIGNvdW50LCBieXRl
cyA9IHJlLnNlYXJjaChiJ1Byb2Nlc3MgKD9QPHBpZD5cXGQrKTogKD9QPGNvdW50PlxcZCspIGxl
YWtzPyBmb3IgKD9QPGJ5dGVzPlxcZCspIHRvdGFsJywgbGVha3Nfb3V0cHV0KS5ncm91cHMoKQog
ICAgICAgICBleGNsdWRlZF9tYXRjaCA9IHJlLnNlYXJjaChiJyg/UDxleGNsdWRlZD5cXGQrKSBs
ZWFrcz8gZXhjbHVkZWQnLCBsZWFrc19vdXRwdXQpCiAgICAgICAgIGV4Y2x1ZGVkID0gZXhjbHVk
ZWRfbWF0Y2guZ3JvdXAoJ2V4Y2x1ZGVkJykgaWYgZXhjbHVkZWRfbWF0Y2ggZWxzZSAwCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFs
Z3JpbmQucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwx
MCBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogaW1wb3J0IGhhc2hsaWIK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKLWltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHhtbC5k
b20ubWluaWRvbSBpbXBvcnQgcGFyc2VTdHJpbmcKIGZyb20geG1sLnBhcnNlcnMuZXhwYXQgaW1w
b3J0IEV4cGF0RXJyb3IKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmls
aXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIApAQCAtMTk4LDcgKzE5Nyw3IEBAIGNsYXNzIFZhbGdyaW5kRXJyb3I6CiAgICAgICAg
ICMgVGhpcyBpcyBhIGRldmljZS1pbmRlcGVuZGVudCBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzdXBw
cmVzc2lvbi4KICAgICAgICAgIyBCeSBwcmludGluZyBvdXQgdGhpcyBoYXNoIHdlIGNhbiBmaW5k
IGR1cGxpY2F0ZSByZXBvcnRzIGJldHdlZW4gdGVzdHMgYW5kCiAgICAgICAgICMgZGlmZmVyZW50
IHNoYXJkcyBydW5uaW5nIG9uIG11bHRpcGxlIGJ1aWxkYm90cwotICAgICAgICByZXR1cm4gaW50
KGhhc2hsaWIubWQ1KGVuY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi51bmlxdWVfc3RyaW5nKCkpKS5o
ZXhkaWdlc3QoKVs6MTZdLCAxNikKKyAgICAgICAgcmV0dXJuIGludChoYXNobGliLm1kNShzdHJp
bmdfdXRpbHMuZW5jb2RlKHNlbGYudW5pcXVlX3N0cmluZygpKSkuaGV4ZGlnZXN0KClbOjE2XSwg
MTYpCiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNoKHNlbGYu
dW5pcXVlX3N0cmluZygpKQpAQCAtMjI0LDcgKzIyMyw3IEBAIGNsYXNzIExlYWtEZXRlY3RvclZh
bGdyaW5kKG9iamVjdCk6CiAgICAgICAgICAgICBwYXJzZWRfc3RyaW5nID0gcGFyc2VTdHJpbmco
bGVha3Nfb3V0cHV0KQogICAgICAgICBleGNlcHQgRXhwYXRFcnJvciBhcyBlOgogICAgICAgICAg
ICAgcGFyc2VfZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAgX2xvZy5lcnJvcigiY291bGQgbm90
IHBhcnNlICVzOiAlcyIgJSAoZGVjb2RlX2ZvcihsZWFrc19vdXRwdXQsIHN0ciksIGUpKQorICAg
ICAgICAgICAgX2xvZy5lcnJvcigiY291bGQgbm90IHBhcnNlICVzOiAlcyIgJSAoc3RyaW5nX3V0
aWxzLmRlY29kZShsZWFrc19vdXRwdXQsIHRhcmdldF90eXBlPXN0ciksIGUpKQogICAgICAgICAg
ICAgcmV0dXJuCiAKICAgICAgICAgY3VyX3JlcG9ydF9lcnJvcnMgPSBzZXQoKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9y
X3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxMyArMjMsMTMgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvcgogZnJv
bSB3ZWJraXRweS5wb3J0LmxlYWtkZXRlY3Rvcl92YWxncmluZCBpbXBvcnQgTGVha0RldGVjdG9y
VmFsZ3JpbmQKIAogCkBAIC04MDgsNyArODA4LDcgQEAgU3VwcHJlc3Npb25zIHVzZWQ6CiAKIGRl
ZiBtb2NrX3J1bl9jcHBmaWx0X2NvbW1hbmQoYXJncyk6CiAgICAgaWYgYXJnc1swXSA9PSAnYysr
ZmlsdCc6Ci0gICAgICAgIHJldHVybiB2YWxncmluZF9vdXRwdXRfY3BwZmlsdF9tYXBbZGVjb2Rl
X2ZvcihhcmdzWzJdLCBzdHIpXQorICAgICAgICByZXR1cm4gdmFsZ3JpbmRfb3V0cHV0X2NwcGZp
bHRfbWFwW3N0cmluZ191dGlscy5kZWNvZGUoYXJnc1syXSwgdGFyZ2V0X3R5cGU9c3RyKV0KICAg
ICByZXR1cm4gIiIKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhf
Z2V0X2NyYXNoX2xvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDE2ICsyNywxNSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1w
b3J0IGRhdGV0aW1lCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHNodXRpbAogaW1wb3J0
IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIAogCkBAIC0xMTQsNyAr
MTEzLDcgQEAgY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0b3Iob2JqZWN0KToKIAogICAgICAgICBw
cm9jID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKGNtZCwgc3RkaW49Tm9uZSwgc3Rkb3V0PXN1YnBy
b2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgY3Jhc2hfbG9nLCBz
dGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKCkKLSAgICAgICAgZXJyb3JzID0gZGVjb2RlX2lmX25l
Y2Vzc2FyeShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRs
aW5lcygpCisgICAgICAgIGVycm9ycyA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RyKHN0ZGVyciBv
ciAnPGVtcHR5PicpLCBlcnJvcnM9J2lnbm9yZScpLnNwbGl0bGluZXMoKQogICAgICAgICByZXR1
cm4gY3Jhc2hfbG9nLCBlcnJvcnMKIAogICAgIGRlZiBnZW5lcmF0ZV9jcmFzaF9sb2coc2VsZiwg
c3Rkb3V0LCBzdGRlcnIpOgpAQCAtMTQ5LDcgKzE0OCw3IEBAIGNsYXNzIEdEQkNyYXNoTG9nR2Vu
ZXJhdG9yKG9iamVjdCk6CiAgICAgICAgIGVsaWYgY29yZWR1bXBjdGw6CiAgICAgICAgICAgICBj
cmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF90cmFjZV9mcm9tX3N5c3RlbWQoY29yZWR1bXBj
dGwsIHBpZF9yZXByZXNlbnRhdGlvbikKIAotICAgICAgICBzdGRlcnJfbGluZXMgPSBlcnJvcnMg
KyBkZWNvZGVfaWZfbmVjZXNzYXJ5KHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3JzPSdp
Z25vcmUnKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgc3Ry
aW5nX3V0aWxzLmRlY29kZShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3Jl
Jykuc3BsaXRsaW5lcygpCiAgICAgICAgIGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERFUlI6
ICcgKyBzdGRlcnJfbGluZSkgZm9yIHN0ZGVycl9saW5lIGluIHN0ZGVycl9saW5lcykKICAgICAg
ICAgY3BwZmlsdF9wcm9jID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKAogICAgICAgICAgICAgWydj
KytmaWx0J10sIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9tb2NrX2RydC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
bW9ja19kcnQucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9tb2NrX2RydC5weQkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDEyIEBAIHNjcmlw
dF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXIKIGlmIHNjcmlwdF9kaXIgbm90IGlu
IHN5cy5wYXRoOgogICAgIHN5cy5wYXRoLmFwcGVuZChzY3JpcHRfZGlyKQogCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9t
IHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJJbnB1dCwgRHJpdmVyT3V0cHV0LCBE
cml2ZXJQcm94eQogZnJvbSB3ZWJraXRweS5wb3J0LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5
CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTIzMSw3ICsyMzIsNyBAQCBjbGFzcyBNb2Nr
RFJUKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBvdXRwdXQuaW1hZ2VfaGFzaCAhPSB0ZXN0X2lu
cHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250
ZW50LVR5cGU6IGltYWdlL3BuZ1xuJykKICAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3Jp
dGUoJ0NvbnRlbnQtTGVuZ3RoOiAlc1xuJyAlIGxlbihvdXRwdXQuaW1hZ2UpKQotICAgICAgICAg
ICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShkZWNvZGVfZm9yKG91dHB1dC5pbWFnZSwgc3RyKSkK
KyAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoc3RyaW5nX3V0aWxzLmRlY29kZShv
dXRwdXQuaW1hZ2UsIHRhcmdldF90eXBlPXN0cikpCiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0
ZSgnI0VPRlxuJykKICAgICAgICAgc2VsZi5fc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc2VsZi5f
c3RkZXJyLndyaXRlKCcjRU9GXG4nKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L21vY2tfZHJ0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxMSArMjgsMTEgQEAKIAogIiIiVW5pdCB0ZXN0cyBmb3IgTW9ja0RSVC4iIiIKIAot
aW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBT
dHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGlt
cG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBtb2NrX2Ry
dAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiBmcm9tIHdlYmtpdHB5
LnBvcnQgaW1wb3J0IHRlc3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2
ZXJfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
c2VydmVyX3Byb2Nlc3MucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUs
NyBAQCBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNz
YXJ5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKICMgTm90ZSB0aGF0
IGFsdGhvdWdoIHdpbjMyIHB5dGhvbiBkb2VzIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YK
ICMgdGhlIHdpbjMyIHNlbGVjdCBBUEksIGl0IG9ubHkgd29ya3Mgb24gc29ja2V0cywgYW5kIG5v
dCBvbiB0aGUgbmFtZWQgcGlwZXMKQEAgLTE4NSw3ICsxODQsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9j
ZXNzKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jOgogICAgICAgICAgICAgc2Vs
Zi5fc3RhcnQoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLndy
aXRlKGVuY29kZV9pZl9uZWNlc3NhcnkoYnl0ZXMpKQorICAgICAgICAgICAgc2VsZi5fcHJvYy5z
dGRpbi53cml0ZShzdHJpbmdfdXRpbHMuZW5jb2RlKGJ5dGVzKSkKICAgICAgICAgICAgIHNlbGYu
X3Byb2Muc3RkaW4uZmx1c2goKQogICAgICAgICBleGNlcHQgKElPRXJyb3IsIFZhbHVlRXJyb3Ip
IGFzIGU6CiAgICAgICAgICAgICBzZWxmLnN0b3AoMC4wKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHJldmlzaW9uIDI2
NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2Nr
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0
cmluZ191dGlscwogCiAKIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqPU5vbmUsIG5hbWU9Tm9uZSwgY21kPU5vbmUsIGVudj1O
b25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIGxpbmVzPU5vbmUsIGNyYXNoZWQ9RmFsc2Us
IHRhcmdldF9ob3N0PU5vbmUsIGNyYXNoX21lc3NhZ2U9Tm9uZSk6CiAgICAgICAgIHNlbGYudGlt
ZWRfb3V0ID0gRmFsc2UKLSAgICAgICAgc2VsZi5saW5lcyA9IFtlbmNvZGVfaWZfbmVjZXNzYXJ5
KGxpbmUpIGZvciBsaW5lIGluIChsaW5lcyBvciBbXSldCisgICAgICAgIHNlbGYubGluZXMgPSBb
c3RyaW5nX3V0aWxzLmVuY29kZShsaW5lKSBmb3IgbGluZSBpbiAobGluZXMgb3IgW10pXQogICAg
ICAgICBzZWxmLmNyYXNoZWQgPSBjcmFzaGVkCiAgICAgICAgIHNlbGYud3JpdGVzID0gW10KICAg
ICAgICAgc2VsZi5jbWQgPSBjbWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5
CShyZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDEyIEBACiAKIGltcG9ydCB0aW1lCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJraXRweS5wb3J0
IGltcG9ydCBQb3J0LCBEcml2ZXIsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24K
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwog
ZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgUFVCTElDX1RBQkxF
LCBWZXJzaW9uTmFtZU1hcAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmls
aXR5IGltcG9ydCBkZWNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIAogIyBUaGlzIHNl
dHMgYmFzaWMgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QuIEVhY2ggaW5kaXZpZHVhbCBleHBlY3Rh
dGlvbgpAQCAtNDQyLDggKzQ0Myw4IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAgICBy
ZXR1cm4gJ1JlbGVhc2UnCiAKICAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250
ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2U9Tm9uZSk6Ci0gICAgICAgIGV4cGVjdGVk
X2NvbnRlbnRzID0gZW5jb2RlX2lmX25lY2Vzc2FyeShleHBlY3RlZF9jb250ZW50cykKLSAgICAg
ICAgYWN0dWFsX2NvbnRlbnRzID0gZW5jb2RlX2lmX25lY2Vzc2FyeShhY3R1YWxfY29udGVudHMp
CisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gc3RyaW5nX3V0aWxzLmVuY29kZShleHBlY3Rl
ZF9jb250ZW50cykKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gc3RyaW5nX3V0aWxzLmVuY29k
ZShhY3R1YWxfY29udGVudHMpCiAgICAgICAgIGRpZmZlZCA9IGFjdHVhbF9jb250ZW50cyAhPSBl
eHBlY3RlZF9jb250ZW50cwogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIGFuZCBub3Qg
ZXhwZWN0ZWRfY29udGVudHM6CiAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCkBA
IC00NTMsOCArNDU0LDggQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICAgICBhc3Nl
cnQgdG9sZXJhbmNlID09IDAKICAgICAgICAgaWYgZGlmZmVkOgogICAgICAgICAgICAgcmV0dXJu
ICgiPCB7fVxuLS0tXG4+IHt9XG4iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBkZWNvZGVfZm9y
KGV4cGVjdGVkX2NvbnRlbnRzLCBzdHIpLAotICAgICAgICAgICAgICAgIGRlY29kZV9mb3IoYWN0
dWFsX2NvbnRlbnRzLCBzdHIpLAorICAgICAgICAgICAgICAgIHN0cmluZ191dGlscy5kZWNvZGUo
ZXhwZWN0ZWRfY29udGVudHMsIHRhcmdldF90eXBlPXN0ciksCisgICAgICAgICAgICAgICAgc3Ry
aW5nX3V0aWxzLmRlY29kZShhY3R1YWxfY29udGVudHMsIHRhcmdldF90eXBlPXN0ciksCiAgICAg
ICAgICAgICApLCAxLCBOb25lKQogICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCiAKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXN1bHRzL3VwbG9hZF91bml0dGVz
dC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXN1bHRz
L3VwbG9hZF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTAgQEAgaW1w
b3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgQnl0ZXNJTworCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMudXBsb2FkIGltcG9ydCBV
cGxvYWQKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBpbXBvcnQgbW9jawotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRlc0lPCiAKIGlmIHN5cy52
ZXJzaW9uX2luZm8gPiAoMywgMCk6CiAgICAgYmFzZXN0cmluZyA9IHN0cgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5CShyZXZpc2lvbiAyNjQ3MTYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwxMSArMzEsMTIgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5kaWZmX3BhcnNlciBpbXBvcnQgRGlmZlBhcnNlcgogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2Zvcgog
CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTU2LDcgKzU3LDcgQEAg
Y2xhc3MgUGF0Y2hSZWFkZXIob2JqZWN0KToKICAgICBkZWYgY2hlY2soc2VsZiwgcGF0Y2hfc3Ry
aW5nLCBmcz1Ob25lKToKICAgICAgICAgIiIiQ2hlY2sgc3R5bGUgaW4gdGhlIGdpdmVuIHBhdGNo
LiIiIgogICAgICAgICBmcyA9IGZzIG9yIEZpbGVTeXN0ZW0oKQotICAgICAgICBwYXRjaF9zdHJp
bmcgPSBkZWNvZGVfZm9yKHBhdGNoX3N0cmluZywgc3RyKQorICAgICAgICBwYXRjaF9zdHJpbmcg
PSBzdHJpbmdfdXRpbHMuZGVjb2RlKHBhdGNoX3N0cmluZywgdGFyZ2V0X3R5cGU9c3RyKQogICAg
ICAgICBwYXRjaF9maWxlcyA9IERpZmZQYXJzZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMoKSku
ZmlsZXMKIAogICAgICAgICAjIElmIHRoZSB1c2VyIHVzZXMgZ2l0LCBjaGVja2luZyBzdWJ2ZXJz
aW9uIGNvbmZpZyBmaWxlIG9ubHkgb25jZSBpcyBlbm91Z2guCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkocmV2aXNpb24gMjY0NzE2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDEyICs0MywxMiBAQCBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQg
cmUKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBzeXMKIGltcG9ydCB1bmljb2RlZGF0YQogCitmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LnN0eWxlLmNoZWNr
ZXJzLmNvbW1vbiBpbXBvcnQgbWF0Y2gsIHNlYXJjaCwgc3ViLCBzdWJuCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQogCiAjIFRoZSBrZXkgdG8gdXNlIHRv
IHByb3ZpZGUgYSBjbGFzcyB0byBmYWtlIGxvYWRpbmcgYSBoZWFkZXIgZmlsZS4KIElOQ0xVREVf
SU9fSU5KRUNUSU9OX0tFWSA9ICdpbmNsdWRlX2hlYWRlcl9pbycKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsOSBAQCBpbXBvcnQg
b3MucGF0aAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25l
Y2Vzc2FyeQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20g
d2Via2l0cHkuc3R5bGUuY2hlY2tlcnMgaW1wb3J0IGNwcCBhcyBjcHBfc3R5bGUKIGZyb20gd2Vi
a2l0cHkuc3R5bGUuY2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyCiBmcm9tIHdlYmtpdHB5
LnN0eWxlLmZpbHRlciBpbXBvcnQgRmlsdGVyQ29uZmlndXJhdGlvbgpAQCAtMjQ2NSw3ICsyNDY3
LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBkZWYg
ZG9fdGVzdChzZWxmLCByYXdfYnl0ZXMsIGhhc19pbnZhbGlkX3V0ZjgpOgogICAgICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRUcnVlKQogICAgICAg
ICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfaWZfbmVjZXNzYXJ5KHJhd19ieXRlcywg
ZW5jb2Rpbmc9J3V0ZjgnLCBlcnJvcnM9J3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29kZShyYXdfYnl0ZXMs
IGVuY29kaW5nPSd1dGY4JywgZXJyb3JzPSdyZXBsYWNlJykuc3BsaXQoJ1xuJyksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgICAg
ICMgVGhlIHdhcm5pbmcgYXBwZWFycyBvbmx5IG9uY2UuCiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRo
b24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9weXRob24ucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvcHl0aG9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw5IEBA
CiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmlu
Z0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxl
U3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZVNjb3BlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVy
IGltcG9ydCBXZWJLaXRGaW5kZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFs
bGVkIGltcG9ydCBweWNvZGVzdHlsZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4u
cHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNiArMzcsMTYgQEAgaW1wb3J0IHRyYWNlYmFjawog
aW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBp
bXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmls
ZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBv
cnQgSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9t
IHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0
LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogZnJvbSB3ZWJraXRweS5yZXN1
bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMub3B0aW9ucyBp
bXBvcnQgdXBsb2FkX29wdGlvbnMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lP
CisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogX2hvc3QgPSBIb3N0KCkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOCBAQCBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBv
cnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBp
bXBvcnQgT3V0cHV0Q2FwdHVyZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3By
aW50ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50
ZXIucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9w
cmludGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw5ICsyMywxMCBAQAogCiBpbXBvcnQgbG9n
Z2luZwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KIGZy
b20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKIApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5lcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQg
cmUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBh
dGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5n
SU8KKwogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJv
bSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0cHkudGVz
dC5ydW5uZXIgaW1wb3J0IFJ1bm5lcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L3NraXBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0L3NraXBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGVzdC9za2lwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw4IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBvcnQg
c2tpcF9pZgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2Nv
bW1hbmQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9p
cmNfY29tbWFuZC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9pcmNfY29tbWFuZC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEy
IEBAIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcg
aW1wb3J0IGlyYyBhcyBjb25maWdfaXJjCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1w
b3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBD
b21taXR0ZXJMaXN0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQud2ViIGltcG9ydCBXZWIKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IHVuaWNvZGUK
IGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFRlcm1pbmF0ZVF1ZXVl
CiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgam9pbl93aXRoX3NlcGFyYXRvcnMK
IGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fy
bmluZ3N5c3RlbS5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkod29ya2luZyBjb3B5KQpAQCAt
MjksMjAgKzI5LDE3IEBACiAKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9z
CiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgogaW1wb3J0IHN5cwogCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAotZnJv
bSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBEZXByZWNhdGVkUG9ydAorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvcgogZnJvbSB3ZWJraXRw
eS50b29sLmJvdC5lYXJseXdhcm5pbmdzeXN0ZW10YXNrIGltcG9ydCBFYXJseVdhcm5pbmdTeXN0
ZW1UYXNrLCBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9v
bC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzUmVh
ZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmpzY3Rlc3RyZXN1bHRzcmVhZGVyIGltcG9ydCBK
U0NUZXN0UmVzdWx0c1JlYWRlcgogZnJvbSB3ZWJraXRweS50b29sLmJvdC5wYXRjaGFuYWx5c2lz
dGFzayBpbXBvcnQgVW5hYmxlVG9BcHBseVBhdGNoLCBQYXRjaElzTm90VmFsaWQsIFBhdGNoSXNO
b3RBcHBsaWNhYmxlCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBR
dWV1ZUVuZ2luZQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgQWJz
dHJhY3RSZXZpZXdRdWV1ZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBA
IC0xNTYsOSArMTUzLDkgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJh
YwogICAgICAgICBjbGFzc2VzID0gW10KICAgICAgICAgZm9yIG5hbWUsIGNvbmZpZyBpbiBld3Nl
cy5pdGVtcygpOgogICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAg
ICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gZW5jb2RlX2ZvcihuYW1lLCBzdHIpLnRyYW5zbGF0
ZSgnIC0nKQorICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBzdHJpbmdfdXRpbHMuZW5jb2Rl
KG5hbWUsIHRhcmdldF90eXBlPXN0cikudHJhbnNsYXRlKCcgLScpCiAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBlbmNvZGVfZm9yKG5hbWUsIHN0cikudHJh
bnNsYXRlKE5vbmUsICcgLScpCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IHN0cmluZ191
dGlscy5lbmNvZGUobmFtZSwgdGFyZ2V0X3R5cGU9c3RyKS50cmFuc2xhdGUoTm9uZSwgJyAtJykK
IAogICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQodHlwZSh0cmFuc2xhdGVkLCAoY2xzLCksIHsK
ICAgICAgICAgICAgICAgICAnbmFtZSc6IGNvbmZpZy5nZXQoJ25hbWUnLCBjb25maWdbJ3BvcnQn
XSArICctZXdzJyksCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXMucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNywx
OSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGNvZGVjcwogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGlt
ZQogaW1wb3J0IHRyYWNlYmFjawogCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQb3J0
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8K
IGZyb20gd2Via2l0cHkudG9vbC5ib3QuYm90aW5mbyBpbXBvcnQgQm90SW5mbwotZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5mbGFreXRlc3RyZXBvcnRlciBpbXBvcnQgRmxha3lUZXN0UmVwb3J0ZXIK
LWZyb20gd2Via2l0cHkudG9vbC5ib3QubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IExh
eW91dFRlc3RSZXN1bHRzUmVhZGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoYW5hbHlz
aXN0YXNrIGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNoSXNOb3RWYWxpZAogZnJvbSB3
ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgUXVldWVFbmdpbmUsIFF1ZXVlRW5n
aW5lRGVsZWdhdGUKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVwc2VxdWVuY2UgaW1w
b3J0IFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcgotZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29t
bWFuZHRvb2wgaW1wb3J0IENvbW1hbmQsIFRyeUFnYWluCitmcm9tIHdlYmtpdHB5LnRvb2wubXVs
dGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCi1pbXBvcnQgb3MKLQotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGlt
cG9ydCBDaGVja291dE5lZWRzVXBkYXRlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5z
Y20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5sYXlv
dXR0ZXN0cmVzdWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKLWZyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KLWZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHku
dGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMu
Y29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLnF1ZXVlcyBpbXBvcnQgKgotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlc3Rl
c3QgaW1wb3J0IFF1ZXVlc1Rlc3QKLWZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5zdGVwc2Vx
dWVuY2UgaW1wb3J0IFN0ZXBTZXF1ZW5jZQotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGlt
cG9ydCBNb2NrVG9vbCwgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBp
bXBvcnQgTW9ja1Rvb2wKIAogCiBjbGFzcyBUZXN0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlKToK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5w
eQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2hhc2xhbmRlZC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDEzIEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB0
ZW1wZmlsZQogCi1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVwIGltcG9ydCBB
YnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVy
cm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgZGlmZl9wYXJzZXIKLWZy
b20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8K
IAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzIGltcG9ydCBjb25maXJtZGlmZgogCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0
dGVzdC5weQkocmV2aXNpb24gMjY0NzE2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwx
MSBAQCBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0
IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBX
ZWJLaXRGaW5kZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgdW5pY29kZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1w
b3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9y
dCBfVzNDVGVzdENvbnZlcnRlcgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2V4cG9ydGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfZXhwb3J0ZXIucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywx
MSBAQAogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQg
dGltZQogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0IGlt
cG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKQEAgLTM5LDcgKzQwLDYg
QEAgZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BURwogZnJvbSB3ZWJraXRw
eS53M2Mud3B0X2xpbnRlciBpbXBvcnQgV1BUTGludGVyCiBmcm9tIHdlYmtpdHB5LnczYy5jb21t
b24gaW1wb3J0IFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBPX05BTUUsIFdQVF9HSF9VUkwsIFdQVFBh
dGhzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25l
Y2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogICAg
IGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQRXJyb3IKQEAgLTE2MCw3ICsxNjAsNyBAQCBj
bGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gbGlu
ZS5zcGxpdChiJyAnKVstMV0KIAogICAgIGRlZiBfaXNfaWdub3JlZF9maWxlKHNlbGYsIGZpbGVu
YW1lKToKLSAgICAgICAgZmlsZW5hbWUgPSBkZWNvZGVfZm9yKGZpbGVuYW1lLCBzdHIpCisgICAg
ICAgIGZpbGVuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShmaWxlbmFtZSwgdGFyZ2V0X3R5cGU9
c3RyKQogICAgICAgICBmb3Igc3VmZml4IGluIEVYQ0xVREVEX0ZJTEVfU1VGRklYRVM6CiAgICAg
ICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aChzdWZmaXgpOgogICAgICAgICAgICAgICAgIHJl
dHVybiBUcnVlCkBAIC0xODUsMTAgKzE4NSwxMCBAQCBjbGFzcyBXZWJQbGF0Zm9ybVRlc3RFeHBv
cnRlcihvYmplY3QpOgogICAgICAgICBfLCBwYXRjaF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5v
cGVuX2JpbmFyeV90ZW1wZmlsZSgnd3B0X2V4cG9ydF9wYXRjaCcpCiAgICAgICAgIHBhdGNoX2Rh
dGEgPSBzZWxmLl93cHRfcGF0Y2gKICAgICAgICAgaWYgYidkaWZmJyBub3QgaW4gcGF0Y2hfZGF0
YToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0Y2gg
ZGF0YSBpczogInt9IicuZm9ybWF0KGRlY29kZV9mb3IocGF0Y2hfZGF0YSwgc3RyKSkpCisgICAg
ICAgICAgICBfbG9nLmluZm8oJ05vIGNoYW5nZXMgdG8gdXBzdHJlYW0sIHBhdGNoIGRhdGEgaXM6
ICJ7fSInLmZvcm1hdChzdHJpbmdfdXRpbHMuZGVjb2RlKHBhdGNoX2RhdGEsIHRhcmdldF90eXBl
PXN0cikpKQogICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAjIEZJWE1FOiBXZSBjYW4g
cHJvYmFibHkgdHJ5IHRvIHVzZSAtLXJlbGF0aXZlIGdpdCBwYXJhbWV0ZXIgdG8gbm90IGRvIHRo
YXQgcmVwbGFjZW1lbnQuCi0gICAgICAgIHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2Uo
ZW5jb2RlX2lmX25lY2Vzc2FyeShXRUJLSVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCisgICAgICAg
IHBhdGNoX2RhdGEgPSBwYXRjaF9kYXRhLnJlcGxhY2Uoc3RyaW5nX3V0aWxzLmVuY29kZShXRUJL
SVRfV1BUX0RJUikgKyBiJy8nLCBiJycpCiAKICAgICAgICAgIyBGSVhNRTogU3VwcG9ydCBzdHJp
cHBpbmcgb2YgPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgLS0+IGNvbW1lbnRzLgogICAgICAgICBz
ZWxmLmhhc193ZWJraXRfdGVzdF9ydW5uZXJfc3BlY2lmaWNfY2hhbmdlcyA9IGInd2Via2l0LXRl
c3QtcnVubmVyJyBpbiBwYXRjaF9kYXRhCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy93cHRfZ2l0aHViLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3dwdF9naXRodWIucHkJKHJldmlzaW9uIDI2NDcxNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3dwdF9naXRodWIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMiBAQCBp
bXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHN5cworCiBmcm9t
IGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
c3RyaW5nX3V0aWxzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1v
aXplZAogZnJvbSB3ZWJraXRweS53M2MuY29tbW9uIGltcG9ydCBXUFRfR0hfT1JHLCBXUFRfR0hf
UkVQT19OQU1FLCBFWFBPUlRfUFJfTEFCRUwKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiBp
ZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgogICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9y
dCBIVFRQRXJyb3IKQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgV1BUR2l0SHViKG9iamVjdCk6CiAK
ICAgICBkZWYgYXV0aF90b2tlbihzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuaGFzX2NyZWRl
bnRpYWxzKCkKLSAgICAgICAgcmV0dXJuIGRlY29kZV9mb3IoYmFzZTY0LmI2NGVuY29kZShlbmNv
ZGVfaWZfbmVjZXNzYXJ5KCd7fTp7fScuZm9ybWF0KHNlbGYudXNlciwgc2VsZi50b2tlbikpKSwg
c3RyKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmRlY29kZShiYXNlNjQuYjY0ZW5jb2Rl
KHN0cmluZ191dGlscy5lbmNvZGUoJ3t9Ont9Jy5mb3JtYXQoc2VsZi51c2VyLCBzZWxmLnRva2Vu
KSkpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICBkZWYgcmVxdWVzdChzZWxmLCBwYXRoLCBtZXRo
b2QsIGJvZHk9Tm9uZSk6CiAgICAgICAgICIiIlNlbmRzIGEgcmVxdWVzdCB0byBHaXRIdWIgQVBJ
IGFuZCBkZXNlcmlhbGl6ZXMgdGhlIHJlc3BvbnNlLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93M2Mvd3B0X2dpdGh1Yl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ3MTYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IHVu
aXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3
ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBk
ZWNvZGVfZm9yCi1mcm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRHaXRIdWIs
IE1lcmdlRXJyb3IKK2Zyb20gd2Via2l0cHkudzNjLndwdF9naXRodWIgaW1wb3J0IFdQVEdpdEh1
YgogCiAKIGNsYXNzIFdQVEdpdEh1YlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDYsNCAr
NDcsNCBAQCBjbGFzcyBXUFRHaXRIdWJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
dGVzdF9hdXRoX3Rva2VuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAg
ICAgICAgc2VsZi53cHRfZ2l0aHViLmF1dGhfdG9rZW4oKSwKLSAgICAgICAgICAgIGRlY29kZV9m
b3IoYmFzZTY0LmVuY29kZXN0cmluZyhlbmNvZGVfaWZfbmVjZXNzYXJ5KCdydXRhYmFnYTpkZWNh
ZmJhZCcpKSwgc3RyKS5zdHJpcCgpKQorICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29kZShi
YXNlNjQuZW5jb2Rlc3RyaW5nKHN0cmluZ191dGlscy5lbmNvZGUoJ3J1dGFiYWdhOmRlY2FmYmFk
JykpLCB0YXJnZXRfdHlwZT1zdHIpLnN0cmlwKCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNjQ3MTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRl
ZF9kZXZpY2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMiArMjMsMTEgQEAKIGltcG9ydCBq
c29uCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24K
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMsIFZlcnNpb24KIAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZl
MgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9j
a0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sg
aW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBh
dGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKIGZyb20gd2Via2l0cHkueGNvZGUu
ZGV2aWNlX3R5cGUgaW1wb3J0IERldmljZVR5cGUKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxh
dGVkX2RldmljZSBpbXBvcnQgRGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlciwg
U2ltdWxhdGVkRGV2aWNlCiAKQEAgLTY1MSw3ICs2NTAsNyBAQCBjbGFzcyBTaW11bGF0ZWREZXZp
Y2VUZXN0KHVuaXR0ZXN0LlRlc3RDCiAgICAgICAgICMgYXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSAu
anNvbiBvdXRwdXQuCiAgICAgICAgIGRldmljZV9wbGlzdCA9IGRldmljZS5maWxlc3lzdGVtLmV4
cGFuZHVzZXIoZGV2aWNlLmZpbGVzeXN0ZW0uam9pbihTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLnNp
bXVsYXRvcl9kZXZpY2VfcGF0aCwgZGV2aWNlLnVkaWQsICdkZXZpY2UucGxpc3QnKSkKICAgICAg
ICAgaW5kZXhfcG9zaXRpb24gPSBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxpc3Rd
LmluZGV4KGInPC9pbnRlZ2VyPicpIC0gMQotICAgICAgICBkZXZpY2UuZmlsZXN5c3RlbS5maWxl
c1tkZXZpY2VfcGxpc3RdID0gZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XVs6
aW5kZXhfcG9zaXRpb25dICsgZW5jb2RlX2lmX25lY2Vzc2FyeShzdHIoc3RhdGUpKSArIGRldmlj
ZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1baW5kZXhfcG9zaXRpb24gKyAxOl0KKyAg
ICAgICAgZGV2aWNlLmZpbGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XSA9IGRldmljZS5maWxl
c3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1bOmluZGV4X3Bvc2l0aW9uXSArIHN0cmluZ191dGls
cy5lbmNvZGUoc3RyKHN0YXRlKSkgKyBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxp
c3RdW2luZGV4X3Bvc2l0aW9uICsgMTpdCiAKICAgICBkZWYgdGVzdF9zd2FwcGluZ19kZXZpY2Vz
KHNlbGYpOgogICAgICAgICBTaW11bGF0ZWREZXZpY2VUZXN0LnJlc2V0X3NpbXVsYXRlZF9kZXZp
Y2VfbWFuYWdlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405312</attachid>
            <date>2020-07-27 14:25:25 -0700</date>
            <delta_ts>2020-07-27 15:35:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214405-20200727142524.patch</filename>
            <type>text/plain</type>
            <size>103977</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwNyBAQAorMjAyMC0wNy0yNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscyAoUGFydCAyKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGV3ZWkgWmh1LgorCisgICAgICAgIFVzZSB3ZWJraXRjb3Jl
cHkuc3RyaW5nX3V0aWxzIGluc3RlYWQgb2YgdW5pY29kZV9jb21wYXRpYmlsaXR5IGZvciB1bmlj
b2RlIGNvbnZlcnNpb25zLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMv
cnVubmVyLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGls
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHk6IFJlcGxhY2Ug
dW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLAorICAgICAgICByZW1vdmUg
dW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFu
Z2Vsb2dfdW5pdHRlc3QucHk6IE1ha2UgaW1wb3J0cyBleHBsaWNpdC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weTogUmVwbGFjZSB1bmljb2Rl
X2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29k
ZV9jb21wYXRpYmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2Vk
IGltcG9ydHMKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZm
X3BhcnNlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBz
dHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL2dpdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0
aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0
aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAgICAgICAgcmVtb3ZlIHVudXNlZCBpbXBvcnRz
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHk6
IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5OiBSZXBsYWNl
IHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywKKyAgICAgICAgcmVtb3Zl
IHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS9idWd6aWxsYS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBz
dHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3c3NlcnZlci5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3dlYl9tb2NrLnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcmV0dHlwYXRjaC5weTogUmVwbGFjZSB1bmlj
b2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZy5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVz
dC5weTogRGl0dG8KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYWJz
dHJhY3RleGVjdXRpdmUucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9jcmFzaGxvZ3MucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHk6IERpdHRvLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weTog
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2
ZV91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdf
dXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weTogUmVwbGFjZSB1bmljb2RlX2Nv
bXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBh
dGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsCisgICAgICAgIHJlbW92ZSB1bnVzZWQgaW1wb3J0
cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVy
ZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dHRlZV91bml0dGVz
dC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1v
dmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiBSZXBsYWNlIHVu
aWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVu
dXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xp
bnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGgKKyAgICAgICAgc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWls
ZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoCisgICAgICAgIHN0cmluZ191dGlscywgcmVtb3ZlIHVudXNlZCBpbXBvcnRzLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3Vu
aXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgIHN0
cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9wcmludGluZ191bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0
aAorICAgICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5
OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aAorICAg
ICAgICBzdHJpbmdfdXRpbHMsIHJlbW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZl
ci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZSB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1h
Z2VfZGlmZi5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtk
ZXRlY3Rvci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmlu
ZC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJl
bW92ZQorICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weTogRGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0LnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRp
YmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUKKyAgICAgICAgdW51c2VkIGltcG9ydHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5w
eTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcmVzdWx0cy91cGxvYWRfdW5pdHRlc3QucHk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OiBSZXBsYWNlIHVuaWNv
ZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNl
ZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmluZ191
dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wYXRjaHJlYWRlci5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6IFJlcGxh
Y2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLCByZW1vdmUgdW51c2Vk
IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3Qu
cHk6IFJlcGxhY2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9wcmludGVyLnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3Qvc2tpcF91bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQorICAgICAgICB1
bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OiBSZW1vdmUgdW51c2VkIGltcG9ydHMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weTog
UmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMsIHJlbW92ZQor
ICAgICAgICB1bnVzZWQgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkg
d2l0aCBzdHJpbmdfdXRpbHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9l
eHBvcnRlci5weTogUmVwbGFjZSB1bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRp
bHMsIHJlbW92ZSB1bnVzZWQKKyAgICAgICAgaW1wb3J0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3czYy93cHRfZ2l0aHViLnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3
aXRoIHN0cmluZ191dGlscy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy93cHRfZ2l0
aHViX3VuaXR0ZXN0LnB5OiBSZXBsYWNlIHVuaWNvZGVfY29tcGF0aWJpbGl0eSB3aXRoIHN0cmlu
Z191dGlscywgcmVtb3ZlCisgICAgICAgIHVudXNlZCBpbXBvcnRzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weTogUmVwbGFjZSB1
bmljb2RlX2NvbXBhdGliaWxpdHkgd2l0aCBzdHJpbmdfdXRpbHMuCisKIDIwMjAtMDctMjcgIEFh
a2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIGV3cyBlbWFpbCBu
b3RpZmljYXRpb24gc2hvdWxkIGluY2x1ZGUgYm90IG5hbWUgYW5kIGxpbmsgdG8gcmVzdWx0cyBk
YXRhYmFzZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvcnVubmVyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bm5lci5w
eQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMv
cnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMTIgQEAgaW1wb3J0IG9zCiBp
bXBvcnQgbG9nZ2luZwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0
cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgbWVzc2FnZV9wb29sCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5pdGVyYXRpb25fY29tcGF0aWJpbGl0eSBpbXBvcnQgaXRlcml0
ZW1zCiBmcm9tIHdlYmtpdHB5LnBvcnQuc2VydmVyX3Byb2Nlc3MgaW1wb3J0IFNlcnZlclByb2Nl
c3MsIF9sb2cgYXMgc2VydmVyX3Byb2Nlc3NfbG9nZ2VyCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNp
bXVsYXRlZF9kZXZpY2UgaW1wb3J0IFNpbXVsYXRlZERldmljZU1hbmFnZXIKLWZyb20gd2Via2l0
cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvcgogCiAKIGNs
YXNzIFJ1bm5lcihvYmplY3QpOgpAQCAtMTc5LDExICsxODAsMTEgQEAgY2xhc3MgX1dvcmtlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgICAgICAgaWYg
c3RkZXJyX2xpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0ZGVycl9saW5lID0gZGVjb2RlX2Zv
cihzdGRlcnJfbGluZSwgc3RyKQorICAgICAgICAgICAgICAgICAgICBzdGRlcnJfbGluZSA9IHN0
cmluZ191dGlscy5kZWNvZGUoc3RkZXJyX2xpbmUsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAg
ICAgICAgICAgICAgc3RkZXJyX2J1ZmZlciArPSBzdGRlcnJfbGluZQogICAgICAgICAgICAgICAg
ICAgICBzZWxmLnBvc3QoJ2xvZycsIG91dHB1dD1zdGRlcnJfbGluZVs6LTFdKQogICAgICAgICAg
ICAgICAgIGlmIHN0ZG91dF9saW5lOgotICAgICAgICAgICAgICAgICAgICBzdGRvdXRfbGluZSA9
IGRlY29kZV9mb3Ioc3Rkb3V0X2xpbmUsIHN0cikKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0
X2xpbmUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHN0ZG91dF9saW5lLCB0YXJnZXRfdHlwZT1zdHIp
CiAgICAgICAgICAgICAgICAgICAgIGlmICcqKlBBU1MqKicgaW4gc3Rkb3V0X2xpbmU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBSdW5uZXIuU1RBVFVTX1BBU1NFRAogICAgICAg
ICAgICAgICAgICAgICBlbGlmICcqKkZBSUwqKicgaW4gc3Rkb3V0X2xpbmU6CkBAIC0yMDIsOCAr
MjAzLDggQEAgY2xhc3MgX1dvcmtlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHN0YXR1cyA9
IFJ1bm5lci5TVEFUVVNfRkFJTEVECiAKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHJl
bWFpbmluZ19zdGRlcnIgPSBkZWNvZGVfZm9yKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVy
ZWRfc3RkZXJyKCksIHN0cikKLSAgICAgICAgICAgIHJlbWFpbmluZ19zdGRvdXQgPSBkZWNvZGVf
Zm9yKHNlcnZlcl9wcm9jZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3Rkb3V0KCksIHN0cikKKyAgICAg
ICAgICAgIHJlbWFpbmluZ19zdGRlcnIgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlcnZlcl9wcm9j
ZXNzLnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCksIHRhcmdldF90eXBlPXN0cikKKyAgICAgICAg
ICAgIHJlbWFpbmluZ19zdGRvdXQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKHNlcnZlcl9wcm9jZXNz
LnBvcF9hbGxfYnVmZmVyZWRfc3Rkb3V0KCksIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAg
IHNlbGYucG9zdCgnbG9nJywgb3V0cHV0PXJlbWFpbmluZ19zdGRlcnIgKyByZW1haW5pbmdfc3Rk
b3V0KQogICAgICAgICAgICAgb3V0cHV0X2J1ZmZlciA9IHN0ZGVycl9idWZmZXIgKyBzdGRvdXRf
YnVmZmVyICsgcmVtYWluaW5nX3N0ZGVyciArIHJlbWFpbmluZ19zdGRvdXQKICAgICAgICAgICAg
IHNlcnZlcl9wcm9jZXNzLnN0b3AoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5k
aW5ncy9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGlu
Z3MvbWFpbi5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
aW5kaW5ncy9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTMgQEAgaW1wb3J0
IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBz
dWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKKworZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5z
Y20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiAK
IGNsYXNzIEJpbmRpbmdzVGVzdHM6CkBAIC03Nyw3ICs3OCw3IEBAIGNsYXNzIEJpbmRpbmdzVGVz
dHM6CiAgICAgICAgICAgICAobmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5w
dXRfZmlsZSkKICAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmlkbCc6CiAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIG9zLndyaXRlKGlkbF9maWxlc19saXN0WzBdLCBl
bmNvZGVfaWZfbmVjZXNzYXJ5KG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2Zp
bGUpICsgIlxuIikpCisgICAgICAgICAgICBvcy53cml0ZShpZGxfZmlsZXNfbGlzdFswXSwgc3Ry
aW5nX3V0aWxzLmVuY29kZShvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBpbnB1dF9maWxl
KSArICJcbiIpKQogICAgICAgICBvcy5jbG9zZShpZGxfZmlsZXNfbGlzdFswXSkKIAogICAgICAg
ICBjbWQgPSBbJ3BlcmwnLCAnLXcnLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vcHJldHR5cGF0Y2gucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vcHJldHR5cGF0Y2gucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICsz
MCwxMCBAQCBpbXBvcnQgZXJybm8KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCB0
ZW1wZmlsZQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9u
ZWNlc3NhcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC01MCw4
ICs1Miw4IEBAIGNsYXNzIFByZXR0eVBhdGNoKG9iamVjdCk6CiAgICAgZGVmIHByZXR0eV9kaWZm
X2ZpbGUoc2VsZiwgZGlmZik6CiAgICAgICAgICMgRGlmZnMgY2FuIGNvbnRhaW4gbXVsdGlwbGUg
dGV4dCBmaWxlcyBvZiBkaWZmZXJlbnQgZW5jb2RpbmdzCiAgICAgICAgICMgc28gd2UgYWx3YXlz
IGRlYWwgd2l0aCB0aGVtIGFzIGJ5dGUgYXJyYXlzLCBub3QgdW5pY29kZSBzdHJpbmdzLgotICAg
ICAgICBkaWZmID0gZW5jb2RlX2lmX25lY2Vzc2FyeShkaWZmKQotICAgICAgICBwcmV0dHlfZGlm
ZiA9IGVuY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5wcmV0dHlfZGlmZihkaWZmKSkKKyAgICAgICAg
ZGlmZiA9IHN0cmluZ191dGlscy5lbmNvZGUoZGlmZikKKyAgICAgICAgcHJldHR5X2RpZmYgPSBz
dHJpbmdfdXRpbHMuZW5jb2RlKHNlbGYucHJldHR5X2RpZmYoZGlmZikpCiAgICAgICAgIGRpZmZf
ZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShzdWZmaXg9Ii5odG1sIikKICAgICAg
ICAgZGlmZl9maWxlLndyaXRlKHByZXR0eV9kaWZmKQogICAgICAgICBkaWZmX2ZpbGUuZmx1c2go
KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVhZF9jaGVja3N1bV9mcm9t
X3BuZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFk
X2NoZWNrc3VtX2Zyb21fcG5nLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNSArMjcsMTUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRl
Y29kZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogZGVmIHJl
YWRfY2hlY2tzdW0oZmlsZWhhbmRsZSk6CiAgICAgIyBXZSBleHBlY3QgdGhlIGNvbW1lbnQgdG8g
YmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KLSAgICBkYXRhID0gZW5jb2RlX2lmX25l
Y2Vzc2FyeShmaWxlaGFuZGxlLnJlYWQoMjA0OCkpCisgICAgZGF0YSA9IHN0cmluZ191dGlscy5l
bmNvZGUoZmlsZWhhbmRsZS5yZWFkKDIwNDgpKQogICAgIGNvbW1lbnRfa2V5ID0gYid0RVh0Y2hl
Y2tzdW1ceDAwJwogICAgIGNvbW1lbnRfcG9zID0gZGF0YS5maW5kKGNvbW1lbnRfa2V5KQogICAg
IGlmIGNvbW1lbnRfcG9zID09IC0xOgogICAgICAgICByZXR1cm4KIAogICAgIGNoZWNrc3VtX3Bv
cyA9IGNvbW1lbnRfcG9zICsgbGVuKGNvbW1lbnRfa2V5KQotICAgIHJldHVybiBkZWNvZGVfZm9y
KGRhdGFbY2hlY2tzdW1fcG9zOmNoZWNrc3VtX3BvcyArIDMyXSwgc3RyKQorICAgIHJldHVybiBz
dHJpbmdfdXRpbHMuZGVjb2RlKGRhdGFbY2hlY2tzdW1fcG9zOmNoZWNrc3VtX3BvcyArIDMyXSwg
dGFyZ2V0X3R5cGU9c3RyKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcmVh
ZF9jaGVja3N1bV9mcm9tX3BuZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2NoZWNrc3VtX2Zyb21fcG5nX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9yZWFkX2No
ZWNrc3VtX2Zyb21fcG5nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiwx
MCBAQAogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNr
c3VtX2Zyb21fcG5nCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IFN0cmluZ0lPCiAKIAogY2xhc3MgUmVhZENoZWNrc3VtRnJvbVBuZ1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRp
ZmYucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F2ZWRp
ZmYucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3dhdmVkaWZmLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMSArMjEsOSBAQAogIyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
aW1wb3J0IHN0cnVjdAotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgd2F2ZQog
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVz
SU8sIFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8K
IAogCiBjbGFzcyBXYXZlRGlmZihvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQkocmV2aXNpb24gMjY0OTQz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiwxMCBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0
IHJlCiBpbXBvcnQgdGV4dHdyYXAKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lP
LCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9y
dCBDb21taXR0ZXJMaXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBp
bXBvcnQgRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmls
aXR5IGltcG9ydCBTdHJpbmdJTywgdW5pY29kZQogaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jb25m
aWcudXJscyBhcyBjb25maWdfdXJscwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vs
b2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCBTdHJpbmdJTwotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9y
dCAqCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5n
ZUxvZywgQ2hhbmdlTG9nRW50cnksIENvbW1pdHRlckxpc3QsIHBhcnNlX2J1Z19pZF9mcm9tX2No
YW5nZWxvZworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKIAogY2xhc3MgQ2hh
bmdlTG9nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkocmV2aXNpb24gMjY0OTQz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDcgQEAKIAogaW1wb3J0IHN5cwogCi1pZiBzeXMu
dmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwogCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jb25maWcgaW1wb3J0IHVybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5n
ZWxvZyBpbXBvcnQgQ2hhbmdlTG9nLCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2cKQEAgLTM3
LDcgKzM2LDkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY29tbWl0aW5mbwogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDb21taXRNZXNzYWdlCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCisKK2lmIHN5cy52
ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQog
CiAKICMgVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBXZWJLaXQtc3BlY2lmaWMgcGFydHMgb2Yg
dGhlIGNoZWNrb3V0IChsaWtlIENoYW5nZUxvZ3MpLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYs
MTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBjb2RlY3MKIGlt
cG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QK
IAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHku
Y29tbW9uLmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZSwgU0NNRGV0ZWN0
b3IKQEAgLTQyLDcgKzQxLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW0gaQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQg
TW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIAogCkBAIC0zNDQsNyArMzQyLDcgQEAgY2xh
c3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICMgc28gd2Ug
ZW5jb2RlIG91ciB1bmljb2RlIENoYW5nZUxvZyBkb3duIHRvIGEgdXRmLTggc3RyZWFtLgogICAg
ICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIHV0Zi04IGRlY29kaW5nIHNob3VsZCBpZ25vcmUgaW52
YWxpZCBjb2RlcG9pbnRzLgogICAgICAgICAgICAgaW52YWxpZF91dGY4ID0gYidcMjU1JwotICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZV9pZl9uZWNlc3NhcnkoX2NoYW5nZWxvZzEpICsgaW52YWxp
ZF91dGY4CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29kZShfY2hhbmdlbG9n
MSkgKyBpbnZhbGlkX3V0ZjgKICAgICAgICAgY2hlY2tvdXQgPSBzZWxmLl9tYWtlX2NoZWNrb3V0
KCkKICAgICAgICAgY2hlY2tvdXQuX3NjbS5jb250ZW50c19hdF9yZXZpc2lvbiA9IG1vY2tfY29u
dGVudHNfYXRfcmV2aXNpb24KICAgICAgICAgZW50cnkgPSBjaGVja291dC5fbGF0ZXN0X2VudHJ5
X2Zvcl9jaGFuZ2Vsb2dfYXRfcmV2aXNpb24oImZvbyIsICJiYXIiKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9w
YXJzZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw5ICsyOSw5IEBACiBpbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogCi1pbXBv
cnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmRpZmZfcGFyc2VyIGFzIGRpZmZfcGFyc2VyCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAotZnJvbSB3ZWJraXRweS5jb21tb24u
dW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworaW1wb3J0IHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5kaWZmX3BhcnNlciBhcyBkaWZmX3BhcnNlcgogZnJvbSB3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuZGlmZl90ZXN0X2RhdGEgaW1wb3J0IERJRkZfVEVTVF9EQVRBCiAKIApJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20v
Z2l0LnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNiArMjksMTYgQEAK
IAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCiBpbXBvcnQgcmUK
IAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmNvbW1pdG1lc3NhZ2UgaW1wb3J0IENvbW1pdE1lc3Nh
Z2UKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IEF1dGhlbnRp
Y2F0aW9uRXJyb3IsIFNDTSwgY29tbWl0X2Vycm9yX2hhbmRsZXIKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LnNjbS5zdm4gaW1wb3J0IFNWTlJlcG9zaXRvcnkKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvciwgZW5jb2RlX2lm
X25lY2Vzc2FyeQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTM0
OCw3ICszNDgsNyBAQCBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICAgICAgaWYg
bm90IHJldmlzaW9uOgogICAgICAgICAgICAgcmV0dXJuIGRpZmYKIAotICAgICAgICByZXR1cm4g
ZW5jb2RlX2lmX25lY2Vzc2FyeSgiU3VidmVyc2lvbiBSZXZpc2lvbjogIikgKyBlbmNvZGVfaWZf
bmVjZXNzYXJ5KHJldmlzaW9uKSArIGVuY29kZV9pZl9uZWNlc3NhcnkoJ1xuJykgKyBlbmNvZGVf
aWZfbmVjZXNzYXJ5KGRpZmYpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKCJT
dWJ2ZXJzaW9uIFJldmlzaW9uOiAiKSArIHN0cmluZ191dGlscy5lbmNvZGUocmV2aXNpb24pICsg
c3RyaW5nX3V0aWxzLmVuY29kZSgnXG4nKSArIHN0cmluZ191dGlscy5lbmNvZGUoZGlmZikKIAog
ICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBjaGFuZ2VkX2ZpbGVz
PU5vbmUsIGdpdF9pbmRleD1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBieXRlIGFycmF5
IChzdHIoKSkgcmVwcmVzZW50aW5nIHRoZSBwYXRjaCBmaWxlLgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5CShyZXZpc2lvbiAy
NjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMCBAQCBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwg
U2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9y
dCBGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IHVuaWNvZGUKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDkgKzU2LDggQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9y
dCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0IGlt
cG9ydCBHaXQsIEFtYmlndW91c0NvbW1pdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQotZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQgU0NNLCBDaGVja291dE5lZWRzVXBkYXRl
LCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJvcgorZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQgQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29t
bWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhlbnRpY2F0aW9uRXJyb3IKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LnNjbS5zdm4gaW1wb3J0IFNWTgotZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5CiAKIAogIyBXZSBj
YWNoZSB0aGUgbW9jayBTVk4gcmVwbyBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBm
b3IgZWFjaCBjYWxsIHRvIGFuIFNWTlRlc3Qgb3IgR2l0VGVzdCB0ZXN0XyBtZXRob2QuCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4u
cHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwxMyBAQCBpbXBv
cnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFZlcnNpb24KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uLCBzdHJp
bmdfdXRpbHMKIAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQg
QXV0aGVudGljYXRpb25FcnJvciwgU0NNLCBjb21taXRfZXJyb3JfaGFuZGxlcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uY29uZmlnLnVybHMgaW1wb3J0IHN2bl9zZXJ2ZXJfaG9zdCwgc3ZuX3NlcnZl
cl9yZWFsbQogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJL
aXRGaW5kZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBv
cnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKQEAgLTQxNiw0ICs0MTUsNCBAQCBjbGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0b3J5KToK
IAogICAgIGRlZiBwcm9wZ2V0KHNlbGYsIHBuYW1lLCBwYXRoKToKICAgICAgICAgZGlyLCBiYXNl
ID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgICAgICByZXR1cm4gZW5jb2RlX2lmX25lY2Vzc2Fy
eShzZWxmLl9ydW5fc3ZuKFsncGdldCcsIHBuYW1lLCBiYXNlXSwgY3dkPWRpcikucnN0cmlwKCJc
biIpKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29kZShzZWxmLl9ydW5fc3ZuKFsn
cGdldCcsIHBuYW1lLCBiYXNlXSwgY3dkPWRpcikucnN0cmlwKCJcbiIpKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHkJKHJl
dmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9j
b21taXR0ZXJzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAgaW1wb3J0IGZu
bWF0Y2gKIGltcG9ydCBqc29uCiBpbXBvcnQgc3lzCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKKwogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uZWRpdGRpc3RhbmNlIGltcG9ydCBlZGl0X2Rpc3RhbmNlCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9mb3IsIHVuaWNv
ZGUKIAogCiBjbGFzcyBDb250cmlidXRvcihvYmplY3QpOgpAQCAtNzMsNyArNzMsNyBAQCBjbGFz
cyBDb250cmlidXRvcihvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5lbWFpbHNbMF0KIAog
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gZW5jb2RlX2Zvcih1JyJ7fSIg
PHt9PicuZm9ybWF0KHVuaWNvZGUoc2VsZi5mdWxsX25hbWUpLCB1bmljb2RlKHNlbGYuZW1haWxz
WzBdKSksIHN0cikKKyAgICAgICAgcmV0dXJuIHN0cmluZ191dGlscy5lbmNvZGUodScie30iIDx7
fT4nLmZvcm1hdCh1bmljb2RlKHNlbGYuZnVsbF9uYW1lKSwgdW5pY29kZShzZWxmLmVtYWlsc1sw
XSkpLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICBkZWYgX191bmljb2RlX18oc2VsZik6CiAgICAg
ICAgIHJldHVybiB1JyJ7fSIgPHt9PicuZm9ybWF0KHVuaWNvZGUoc2VsZi5mdWxsX25hbWUpLCB1
bmljb2RlKHNlbGYuZW1haWxzWzBdKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9ld3NzZXJ2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2V3c3NlcnZlci5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2V3c3NlcnZlci5weQkod29ya2luZyBjb3B5KQpAQCAt
MjAsOSArMjAsMTAgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24u
Y29uZmlnLnVybHMgaW1wb3J0IGV3c3NlcnZlcl9kZWZhdWx0X2hvc3QKIGZyb20gd2Via2l0cHku
Y29tbW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rpb24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgot
ZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCB1bmljb2Rl
CiAKIGltcG9ydCBsb2dnaW5nCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC93ZWJfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvd2ViX21vY2sucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC93ZWJfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IFN0cmluZ0lPCiAKIGltcG9ydCBzeXMKIGlmIHN5cy52ZXJzaW9uX2luZm8g
PiAoMywgMCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemls
bGEvYnVnemlsbGEucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDkgKzM5LDggQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVybGxpYgogCiBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSAgIyB1c2VkIGluIHRpbWVzdGFtcCgpCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8sIHN0cmluZ191dGlscywgdW5pY29k
ZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5
dGVzSU8sIFN0cmluZ0lPLCB1bmljb2RlLCBkZWNvZGVfZm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuYnVnemlsbGEuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmJ1Z3ppbGxhLmJ1ZyBpbXBvcnQgQnVnCiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZyBpbXBvcnQgY29tbWl0dGVycwpAQCAtMjk1LDcgKzI5NCw3IEBAIGNsYXNzIEJ1
Z3ppbGxhUXVlcmllcyhvYmplY3QpOgogICAgIGRlZiBpc19pbnZhbGlkX2J1Z3ppbGxhX2VtYWls
KHNlbGYsIHNlYXJjaF9zdHJpbmcpOgogICAgICAgICByZXZpZXdfcXVldWVfdXJsID0gInJlcXVl
c3QuY2dpP2FjdGlvbj1xdWV1ZSZyZXF1ZXN0ZXI9JXMmcHJvZHVjdD0mdHlwZT1yZXZpZXcmcmVx
dWVzdGVlPSZjb21wb25lbnQ9Jmdyb3VwPXJlcXVlc3RlZSIgJSB1cmxsaWIucXVvdGUoc2VhcmNo
X3N0cmluZykKICAgICAgICAgcmVzdWx0c19wYWdlID0gc2VsZi5fbG9hZF9xdWVyeShyZXZpZXdf
cXVldWVfdXJsKQotICAgICAgICByZXR1cm4gYm9vbChyZS5zZWFyY2goJ2RpZCBub3QgbWF0Y2gg
YW55dGhpbmcnLCBkZWNvZGVfZm9yKHJlc3VsdHNfcGFnZS5yZWFkKCksIHN0cikpKQorICAgICAg
ICByZXR1cm4gYm9vbChyZS5zZWFyY2goJ2RpZCBub3QgbWF0Y2ggYW55dGhpbmcnLCBzdHJpbmdf
dXRpbHMuZGVjb2RlKHJlc3VsdHNfcGFnZS5yZWFkKCksIHRhcmdldF90eXBlPXN0cikpKQogCiAK
IGNsYXNzIENvbW1pdFF1ZXVlRmxhZyhvYmplY3QpOgpAQCAtNTY1LDcgKzU2NCw3IEBAIGNsYXNz
IEJ1Z3ppbGxhKG9iamVjdCk6CiAgICAgICAgICAgICAjIElmIHRoZSByZXN1bHRpbmcgcGFnZSBo
YXMgYSB0aXRsZSwgYW5kIGl0IGNvbnRhaW5zIHRoZSB3b3JkCiAgICAgICAgICAgICAjICJpbnZh
bGlkIiBhc3N1bWUgaXQncyB0aGUgbG9naW4gZmFpbHVyZSBwYWdlLgogICAgICAgICAgICAgaWYg
bWF0Y2ggYW5kIHJlLnNlYXJjaChiJ0ludmFsaWQnLCBtYXRjaC5ncm91cCgxKSwgcmUuSUdOT1JF
Q0FTRSk6Ci0gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkJ1Z3ppbGxhIGxvZ2luIGZh
aWxlZDoge30iLmZvcm1hdChkZWNvZGVfZm9yKG1hdGNoLmdyb3VwKDEpLCBzdHIpKQorICAgICAg
ICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJCdWd6aWxsYSBsb2dpbiBmYWlsZWQ6IHt9Ii5mb3Jt
YXQoc3RyaW5nX3V0aWxzLmRlY29kZShtYXRjaC5ncm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSkK
ICAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbmx5IGlmIHRoaXMgd2FzIHRo
ZSBsYXN0IGF0dGVtcHQKICAgICAgICAgICAgICAgICBpZiBhdHRlbXB0cyA8IDU6CiAgICAgICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3JNZXNzYWdlKQpAQCAtNjQwLDcgKzYzOSw3IEBA
IGNsYXNzIEJ1Z3ppbGxhKG9iamVjdCk6CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9w
YXJzZV9hdHRhY2htZW50X2lkX2Zyb21fYWRkX3BhdGNoX3RvX2J1Z19yZXNwb25zZShyZXNwb25z
ZV9odG1sKToKLSAgICAgICAgcmVzcG9uc2VfaHRtbCA9IGRlY29kZV9mb3IocmVzcG9uc2VfaHRt
bCwgc3RyKQorICAgICAgICByZXNwb25zZV9odG1sID0gc3RyaW5nX3V0aWxzLmRlY29kZShyZXNw
b25zZV9odG1sLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCc8
dGl0bGU+QXR0YWNobWVudCAoP1A8YXR0YWNobWVudF9pZD5cZCspIGFkZGVkIHRvIEJ1ZyBcZCs8
L3RpdGxlPicsIHJlc3BvbnNlX2h0bWwpCiAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAg
cmV0dXJuIG1hdGNoLmdyb3VwKCdhdHRhY2htZW50X2lkJykKQEAgLTY4NCw3ICs2ODMsNyBAQCBj
bGFzcyBCdWd6aWxsYShvYmplY3QpOgogCiAgICAgIyBGSVhNRTogVGhlcmUgaGFzIHRvIGJlIGEg
bW9yZSBjb25jaXNlIHdheSB0byB3cml0ZSB0aGlzIG1ldGhvZC4KICAgICBkZWYgX2NoZWNrX2Ny
ZWF0ZV9idWdfcmVzcG9uc2Uoc2VsZiwgcmVzcG9uc2VfaHRtbCk6Ci0gICAgICAgIHJlc3BvbnNl
X2h0bWwgPSBkZWNvZGVfZm9yKHJlc3BvbnNlX2h0bWwsIHN0cikKKyAgICAgICAgcmVzcG9uc2Vf
aHRtbCA9IHN0cmluZ191dGlscy5kZWNvZGUocmVzcG9uc2VfaHRtbCwgdGFyZ2V0X3R5cGU9c3Ry
KQogICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgnPHRpdGxlPkJ1ZyAoP1A8YnVnX2lkPlxkKykg
U3VibWl0dGVkW148XSo8L3RpdGxlPicsIHJlc3BvbnNlX2h0bWwpCiAgICAgICAgIGlmIG1hdGNo
OgogICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdidWdfaWQnKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxs
YS9idWd6aWxsYV91bml0dGVzdC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxNSArMjcsMTUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGRh
dGV0aW1lCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgdXJs
cwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IFJldmlld2Vy
LCBDb21taXR0ZXIsIENvbnRyaWJ1dG9yLCBDb21taXR0ZXJMaXN0CiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQud2ViX21vY2sgaW1wb3J0IE1vY2tCcm93c2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuYnVnemlsbGEuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhLCBCdWd6aWxsYVF1ZXJpZXMs
IENvbW1pdFF1ZXVlRmxhZywgRWRpdFVzZXJzUGFyc2VyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVpbGRib3QucHkJKHJl
dmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWls
ZGJvdC9idWlsZGJvdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEwIEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGltcG9ydCBqc29uCi1pbXBvcnQgb3BlcmF0b3IKIGltcG9ydCByZQogaW1w
b3J0IHN5cwotaW1wb3J0IHVybGxpYgorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5n
X3V0aWxzLCB1bmljb2RlCiAKIGltcG9ydCB3ZWJraXRweS5jb21tb24uY29uZmlnLnVybHMgYXMg
Y29uZmlnX3VybHMKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXpl
ZApAQCAtNDAsNyArNDAsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJl
c3VsCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubmV0d29ya3RyYW5zYWN0aW9uIGltcG9ydCBO
ZXR3b3JrVHJhbnNhY3Rpb24KIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5yZWdyZXNzaW9ud2lu
ZG93IGltcG9ydCBSZWdyZXNzaW9uV2luZG93CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
bG9ndXRpbHMgaW1wb3J0IGdldF9sb2dnZXIKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvciwgdW5pY29kZQogZnJvbSB3ZWJraXRweS50
aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGltcG9ydCBCcm93c2VyCiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCkBA
IC01Miw3ICs1MSw2IEBAIGVsc2U6CiAgICAgZnJvbSB1cmxsaWIyIGltcG9ydCBIVFRQRXJyb3Is
IHF1b3RlLCBVUkxFcnJvciwgdXJsb3BlbgogCiAKLQogX2xvZyA9IGdldF9sb2dnZXIoX19maWxl
X18pCiAKIApAQCAtMzE5LDggKzMxNyw4IEBAIGNsYXNzIEJ1aWxkQm90KG9iamVjdCk6CiAgICAg
ICAgICAgICAjIEZJWE1FOiBXZSB0cmVhdCBzbGF2ZSBsb3N0IGFzIGdyZWVuIGV2ZW4gdGhvdWdo
IGl0IGlzIG5vdCB0bwogICAgICAgICAgICAgIyB3b3JrIGFyb3VuZCB0aGUgUXRzIGJvdCBiZWlu
ZyBvbiBhIGJyb2tlbiBpbnRlcm5ldCBjb25uZWN0aW9uLgogICAgICAgICAgICAgIyBUaGUgcmVh
bCBmaXggaXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDk5Ci0g
ICAgICAgICAgICBidWlsZGVyWydpc19ncmVlbiddID0gbm90IHJlLnNlYXJjaCgnZmFpbCcsIGRl
Y29kZV9mb3IoY2VsbC5yZW5kZXJDb250ZW50cygpLCBzdHIpKSBvciBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sKHJlLnNlYXJjaCgnbG9zdCcsIGRlY29kZV9mb3IoY2Vs
bC5yZW5kZXJDb250ZW50cygpLCBzdHIpKSkKKyAgICAgICAgICAgIGJ1aWxkZXJbJ2lzX2dyZWVu
J10gPSBub3QgcmUuc2VhcmNoKCdmYWlsJywgc3RyaW5nX3V0aWxzLmRlY29kZShjZWxsLnJlbmRl
ckNvbnRlbnRzKCksIHRhcmdldF90eXBlPXN0cikpIG9yIFwKKyAgICAgICAgICAgICAgICBib29s
KHJlLnNlYXJjaCgnbG9zdCcsIHN0cmluZ191dGlscy5kZWNvZGUoY2VsbC5yZW5kZXJDb250ZW50
cygpLCB0YXJnZXRfdHlwZT1zdHIpKSkKIAogICAgICAgICAgICAgc3RhdHVzX2xpbmtfcmVnZXhw
ID0gciJidWlsZGVycy8oP1A8YnVpbGRlcl9uYW1lPi4qKS9idWlsZHMvKD9QPGJ1aWxkX251bWJl
cj5cZCspIgogICAgICAgICAgICAgbGlua19tYXRjaCA9IHJlLm1hdGNoKHN0YXR1c19saW5rX3Jl
Z2V4cCwgc3RhdHVzX2xpbmtbJ2hyZWYnXSkKQEAgLTMzNiw3ICszMzQsNyBAQCBjbGFzcyBCdWls
ZEJvdChvYmplY3QpOgogCiAgICAgZGVmIF9wYXJzZV9jdXJyZW50X2J1aWxkX2NlbGwoc2VsZiwg
YnVpbGRlciwgY2VsbCk6CiAgICAgICAgICMgQ29udmVydCByZW5kZXJlZCBjb250ZW50cyB0byBu
YXRpdmUgc3RyaW5nCi0gICAgICAgIHJlbmRlcmVkID0gZGVjb2RlX2ZvcihjZWxsLnJlbmRlckNv
bnRlbnRzKCksIHN0cikKKyAgICAgICAgcmVuZGVyZWQgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGNl
bGwucmVuZGVyQ29udGVudHMoKSwgdGFyZ2V0X3R5cGU9c3RyKQogCiAgICAgICAgICMgQmVhdXRp
ZnVsU291cCBhbmQgYnM0IHJlbmRlciBkaWZmZXJlbnRseQogICAgICAgICBpZiAnPGJyLz4nIGlu
IHJlbmRlcmVkOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Fi
c3RyYWN0ZXhlY3V0aXZlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9hYnN0cmFjdGV4ZWN1dGl2ZS5weQkocmV2aXNpb24gMjY0OTQzKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Fic3RyYWN0ZXhlY3V0aXZlLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw5IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGlt
ZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzLCB1bmljb2RlCisKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5CiAKIGNsYXNz
IEFic3RyYWN0RXhlY3V0aXZlKG9iamVjdCk6CiAKQEAgLTEwMSwxMyArMTAyLDEzIEBAIGNsYXNz
IEFic3RyYWN0RXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBfc3Ry
aW5naWZ5X2FyZ3Moc2VsZiwgYXJncyk6Ci0gICAgICAgIHJldHVybiBtYXAodW5pY29kZV9jb21w
YXRpYmlsaXR5LnVuaWNvZGUsIGFyZ3MpCisgICAgICAgIHJldHVybiBtYXAodW5pY29kZSwgYXJn
cykKIAogICAgIGRlZiBjb21tYW5kX2Zvcl9wcmludGluZyhzZWxmLCBhcmdzKToKICAgICAgICAg
IiIiUmV0dXJucyBhIHByaW50LXJlYWR5IHN0cmluZyByZXByZXNlbnRpbmcgY29tbWFuZCBhcmdz
LgogICAgICAgICBUaGUgc3RyaW5nIHNob3VsZCBiZSBjb3B5L3Bhc3RlIHJlYWR5IGZvciBleGVj
dXRpb24gaW4gYSBzaGVsbC4iIiIKICAgICAgICAgYXJncyA9IHNlbGYuX3N0cmluZ2lmeV9hcmdz
KGFyZ3MpCi0gICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lmX25l
Y2Vzc2FyeSh1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeSgnICcuam9p
bihhcmdzKSwgJ3VuaWNvZGVfZXNjYXBlJykpCisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMu
ZGVjb2RlKHN0cmluZ191dGlscy5lbmNvZGUoJyAnLmpvaW4oYXJncyksIGVuY29kaW5nPSd1bmlj
b2RlX2VzY2FwZScpKQogCiAgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGN3ZD1Ob25l
LCBlbnY9Tm9uZSwgaW5wdXQ9Tm9uZSwgc3Rkb3V0PU5vbmUsIGVycm9yX2hhbmRsZXI9Tm9uZSwg
aWdub3JlX2Vycm9ycz1GYWxzZSwKICAgICAgICAgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwgcmV0
dXJuX3N0ZGVycj1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUpOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CShyZXZpc2lvbiAy
NjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dz
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIGltcG9ydCBkYXRldGltZQogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCByZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5p
Y29kZV9jb21wYXRpYmlsaXR5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxz
CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtMTExLDcgKzExMSw3
IEBAIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgICAgICBmb3IgcGF0aCBpbiByZXZlcnNl
ZChzb3J0ZWQobG9ncykpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIG5v
dCBuZXdlcl90aGFuIG9yIHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5tdGltZShwYXRoKSA+IG5ld2Vy
X3RoYW46Ci0gICAgICAgICAgICAgICAgICAgIGxvZ19maWxlID0gdW5pY29kZV9jb21wYXRpYmls
aXR5LmRlY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5faG9zdC5maWxlc3lzdGVtLnJlYWRfYmluYXJ5
X2ZpbGUocGF0aCksICdhc2NpaScsICdpZ25vcmUnKQorICAgICAgICAgICAgICAgICAgICBsb2df
ZmlsZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc2VsZi5faG9zdC5maWxlc3lzdGVtLnJlYWRfYmlu
YXJ5X2ZpbGUocGF0aCksIGVuY29kaW5nPSdhc2NpaScsIGVycm9ycz0naWdub3JlJykKICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkdMT0JBTF9QSURfUkVHRVguc2VhcmNoKGxvZ19m
aWxlKQogICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIGludChtYXRjaC5ncm91cCgncGlkJykpID09IHBpZDoKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0
dGVzdC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEg
KzIzLDEyIEBACiAKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
c3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1w
b3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lz
dGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24g
aW1wb3J0IHVuaWNvZGVfY29tcGF0aWJpbGl0eQogCiAjIE5lZWRlZCB0byBzdXBwb3J0IFdpbmRv
d3MgcG9ydCB0ZXN0cwogZnJvbSB3ZWJraXRweS5wb3J0LndpbiBpbXBvcnQgV2luUG9ydApAQCAt
Mjk5LDcgKzMwMCw3IEBAIGNsYXNzIENyYXNoTG9nc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmZpbGVzWycvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1Jl
cG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MjJfcXVhZHplbi5jcmFzaCddID0g
c2VsZi5vdGhlcl9wcm9jZXNzX21vY2tfY3Jhc2hfcmVwb3J0CiAgICAgICAgIHNlbGYuZmlsZXNb
Jy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVyVHJl
ZV8yMDExLTA2LTEzLTE1MDcyM19xdWFkemVuLmNyYXNoJ10gPSBzZWxmLm1pc2Zvcm1hdHRlZF9t
b2NrX2NyYXNoX3JlcG9ydAogCi0gICAgICAgIHNlbGYuZmlsZXMgPSB7a2V5OiB1bmljb2RlX2Nv
bXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeSh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4g
c2VsZi5maWxlcy5pdGVtcygpfQorICAgICAgICBzZWxmLmZpbGVzID0ge2tleTogc3RyaW5nX3V0
aWxzLmVuY29kZSh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5maWxlcy5pdGVtcygpfQog
CiAgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHNlbGYuZmlsZXMpCiAg
ICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFzaExvZ3MoTW9ja1N5c3RlbUhvc3QoZmlsZXN5c3RlbT1z
ZWxmLmZpbGVzeXN0ZW0pLCBDcmFzaExvZ3NUZXN0LkRBUldJTl9NT0NLX0NSQVNIX0RJUkVDVE9S
WSkKQEAgLTMxNyw3ICszMTgsNyBAQCBjbGFzcyBDcmFzaExvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsX2xvZ3MpLCA4KQogCiAgICAg
ICAgIGZvciB0ZXN0LCBjcmFzaF9sb2cgaW4gYWxsX2xvZ3MuaXRlbXMoKToKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShjcmFzaF9sb2cgaW4gW3VuaWNvZGVfY29tcGF0aWJpbGl0eS5kZWNv
ZGVfaWZfbmVjZXNzYXJ5KHZhbHVlKSBmb3IgdmFsdWUgaW4gc2VsZi5maWxlcy52YWx1ZXMoKV0p
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY3Jhc2hfbG9nIGluIFtzdHJpbmdfdXRpbHMu
ZGVjb2RlKHZhbHVlKSBmb3IgdmFsdWUgaW4gc2VsZi5maWxlcy52YWx1ZXMoKV0pCiAgICAgICAg
ICAgICBpZiB0ZXN0LnNwbGl0KCctJylbMF0gIT0gJ1NhbmRib3gnOgogICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0ID09ICJVbmtub3duIiBvciBpbnQodGVzdC5zcGxpdCgiLSIp
WzFdKSBpbiByYW5nZSgyODUyNywgMjg1MzEpKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkJKHJldmlzaW9uIDI2NDk0MykK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
c3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8sIHN0
cmluZ191dGlscywgdW5pY29kZQorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uYWJzdHJh
Y3RleGVjdXRpdmUgaW1wb3J0IEFic3RyYWN0RXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ub3V0cHV0dGVlIGltcG9ydCBUZWUKLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9y
dCB1bmljb2RlX2NvbXBhdGliaWxpdHkKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCkBAIC03MSw3ICs3Miw3IEBAIGNsYXNzIFNjcmlwdEVycm9yKEV4Y2VwdGlvbik6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHUiJXNcblxuTGFzdCAlcyBjaGFyYWN0ZXJzIG9mIG91dHB1
dDpcbiVzIiAlIFwKICAgICAgICAgICAgICAgICAgICAgKHNlbGYsIG91dHB1dF9saW1pdCwgc2Vs
Zi5vdXRwdXRbLW91dHB1dF9saW1pdDpdKQogICAgICAgICAgICAgcmV0dXJuIHUiJXNcblxuJXMi
ICUgKHNlbGYsIHNlbGYub3V0cHV0KQotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXRpYmls
aXR5LnVuaWNvZGUoc2VsZikKKyAgICAgICAgcmV0dXJuIHVuaWNvZGUoc2VsZikKIAogICAgIGRl
ZiBjb21tYW5kX25hbWUoc2VsZik6CiAgICAgICAgIGNvbW1hbmRfcGF0aCA9IHNlbGYuc2NyaXB0
X2FyZ3MKQEAgLTEyNyw3ICsxMjgsNyBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRp
dmUpOgogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSBpbXByb3ZlZCBub3QgdG8g
ZmxhdHRlbiBvdXRwdXQgdG8gc3Rkb3V0LgogICAgICAgICAgICAgd2hpbGUgY2hpbGRfcHJvY2Vz
cy5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICBvdXRwdXRfbGluZSA9IGNoaWxkX3By
b2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICB0ZWVkX291dHB1dC53cml0
ZSh1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2ZvcihvdXRwdXRfbGluZSwgc3RyKSkKKyAg
ICAgICAgICAgICAgICB0ZWVkX291dHB1dC53cml0ZShzdHJpbmdfdXRpbHMuZGVjb2RlKG91dHB1
dF9saW5lLCB0YXJnZXRfdHlwZT1zdHIpKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkX3Byb2Nl
c3MucG9sbCgpCiAKICAgICAjIEZJWE1FOiBSZW1vdmUgdGhpcyBkZXByZWNhdGVkIG1ldGhvZCBh
bmQgbW92ZSBjYWxsZXJzIHRvIHJ1bl9jb21tYW5kLgpAQCAtMTM3LDcgKzEzOCw3IEBAIGNsYXNz
IEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgIyBidXQgc3RpbGwgaGF2ZSB0aGUg
b3V0cHV0IHRvIHN0dWZmIGludG8gYSBsb2cgZmlsZS4KICAgICBkZWYgcnVuX2FuZF90aHJvd19p
Zl9mYWlsKHNlbGYsIGFyZ3MsIHF1aWV0PUZhbHNlLCBkZWNvZGVfb3V0cHV0PVRydWUsICoqa3dh
cmdzKToKICAgICAgICAgIyBDYWNoZSB0aGUgY2hpbGQncyBvdXRwdXQgbG9jYWxseSBzbyBpdCBj
YW4gYmUgdXNlZCBmb3IgZXJyb3IgcmVwb3J0cy4KLSAgICAgICAgY2hpbGRfb3V0X2ZpbGUgPSB1
bmljb2RlX2NvbXBhdGliaWxpdHkuU3RyaW5nSU8oKQorICAgICAgICBjaGlsZF9vdXRfZmlsZSA9
IFN0cmluZ0lPKCkKICAgICAgICAgdGVlX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgaWYgcXVpZXQ6CkBAIC0xNTMsOSArMTU0LDkgQEAgY2xhc3MgRXhlY3V0
aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICAgICAgY2hpbGRfb3V0X2ZpbGUuY2xvc2UoKQog
CiAgICAgICAgIGlmIGRlY29kZV9vdXRwdXQ6Ci0gICAgICAgICAgICBjaGlsZF9vdXRwdXQgPSB1
bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2lmX25lY2Vzc2FyeShjaGlsZF9vdXRwdXQsIHNl
bGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkX291dHB1dCA9
IHN0cmluZ191dGlscy5kZWNvZGUoY2hpbGRfb3V0cHV0LCBlbmNvZGluZz1zZWxmLl9jaGlsZF9w
cm9jZXNzX2VuY29kaW5nKCkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjaGlsZF9vdXRw
dXQgPSB1bmljb2RlX2NvbXBhdGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShjaGlsZF9vdXRw
dXQsIHNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkX291
dHB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUoY2hpbGRfb3V0cHV0LCBlbmNvZGluZz1zZWxmLl9j
aGlsZF9wcm9jZXNzX2VuY29kaW5nKCkpCiAKICAgICAgICAgaWYgZXhpdF9jb2RlOgogICAgICAg
ICAgICAgcmFpc2UgU2NyaXB0RXJyb3Ioc2NyaXB0X2FyZ3M9YXJncywKQEAgLTMwNiw3ICszMDcs
NyBAQCBjbGFzcyBFeGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAgICAgICAg
ICAgICAgICAgIyBJbiBzb21lIGNhc2VzIHRoZSBsaW5lIGNhbiBjb250YWluIG9uZSBvciBtb3Jl
CiAgICAgICAgICAgICAgICAgICAgICAgICAjIGxlYWRpbmcgd2hpdGUtc3BhY2VzLCBzbyBzdHJp
cCBpdCBiZWZvcmUgc3BsaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHByb2Nlc3Nf
bmFtZSA9IGxpbmUuc3RyaXAoKS5zcGxpdChiJyAnLCAxKQotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgcHJvY2Vzc19uYW1lX2ZpbHRlcih1bmljb2RlX2NvbXBhdGliaWxpdHkuZGVjb2RlX2Zv
cihwcm9jZXNzX25hbWUsIHN0cikpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJvY2Vz
c19uYW1lX2ZpbHRlcihzdHJpbmdfdXRpbHMuZGVjb2RlKHByb2Nlc3NfbmFtZSwgdGFyZ2V0X3R5
cGU9c3RyKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ19waWRzLmFwcGVu
ZChpbnQocGlkKSkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKQEAgLTM3NCw3ICszNzUsNyBAQCBjbGFzcyBF
eGVjdXRpdmUoQWJzdHJhY3RFeGVjdXRpdmUpOgogICAgICAgICAjIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MjgKICAgICAgICAgIyBmb3IgYW4gZXhhbXBs
ZSBvZiBhIHJlZ3Jlc2lvbiBjYXVzZWQgYnkgcGFzc2luZyBhIHVuaWNvZGUgc3RyaW5nIGRpcmVj
dGx5LgogICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBlbmNvZGUgZGlmZmVyZW50bHkg
b24gZGlmZmVyZW50IHBsYXRmb3Jtcy4KLSAgICAgICAgaW5wdXQgPSB1bmljb2RlX2NvbXBhdGli
aWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShpbnB1dCwgc2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNv
ZGluZygpKQorICAgICAgICBpbnB1dCA9IHN0cmluZ191dGlscy5lbmNvZGUoaW5wdXQsIGVuY29k
aW5nPXNlbGYuX2NoaWxkX3Byb2Nlc3NfZW5jb2RpbmcoKSkKICAgICAgICAgcmV0dXJuIChzZWxm
LlBJUEUsIGlucHV0KQogCiAgICAgIyBGSVhNRTogcnVuX2FuZF90aHJvd19pZl9mYWlsIHNob3Vs
ZCBiZSBtZXJnZWQgaW50byB0aGlzIG1ldGhvZC4KQEAgLTQwNywxMSArNDA4LDExIEBAIGNsYXNz
IEV4ZWN1dGl2ZShBYnN0cmFjdEV4ZWN1dGl2ZSk6CiAgICAgICAgICAgICBpZiBub3Qgc3RyaW5n
X3RvX2NvbW11bmljYXRlOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29tbXVu
aWNhdGUoKVswXQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBw
cm9jZXNzLmNvbW11bmljYXRlKHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfaWZfbmVjZXNz
YXJ5KHN0cmluZ190b19jb21tdW5pY2F0ZSwgJ3V0Zi04JykpWzBdCisgICAgICAgICAgICAgICAg
b3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShzdHJpbmdfdXRpbHMuZW5jb2RlKHN0cmluZ190
b19jb21tdW5pY2F0ZSwgZW5jb2Rpbmc9J3V0Zi04JykpWzBdCiAKICAgICAgICAgICAgICMgcnVu
X2NvbW1hbmQgYXV0b21hdGljYWxseSBkZWNvZGVzIHRvIHVuaWNvZGUoKSBhbmQgY29udmVydHMg
Q1JMRiB0byBMRiB1bmxlc3MgZXhwbGljaXRseSB0b2xkIG5vdCB0by4KICAgICAgICAgICAgIGlm
IGRlY29kZV9vdXRwdXQ6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gdW5pY29kZV9jb21wYXRp
YmlsaXR5LmRlY29kZV9pZl9uZWNlc3Nhcnkob3V0cHV0LCBzZWxmLl9jaGlsZF9wcm9jZXNzX2Vu
Y29kaW5nKCkpLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKQorICAgICAgICAgICAgICAgIG91dHB1dCA9
IHN0cmluZ191dGlscy5kZWNvZGUob3V0cHV0LCBlbmNvZGluZz1zZWxmLl9jaGlsZF9wcm9jZXNz
X2VuY29kaW5nKCkpLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKQogCiAgICAgICAgICAgICAjIHdhaXQo
KSBpcyBub3QgdGhyZWFkc2FmZSBhbmQgY2FuIHRocm93IE9TRXJyb3IgZHVlIHRvOgogICAgICAg
ICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTczMTcxNwpAQCAtNDY0LDExICs0
NjUsMTEgQEAgY2xhc3MgRXhlY3V0aXZlKEFic3RyYWN0RXhlY3V0aXZlKToKICAgICBkZWYgX2Vu
Y29kZV9hcmd1bWVudF9pZl9uZWVkZWQoc2VsZiwgYXJndW1lbnQpOgogICAgICAgICBpZiBub3Qg
c2VsZi5fc2hvdWxkX2VuY29kZV9jaGlsZF9wcm9jZXNzX2FyZ3VtZW50cygpOgogICAgICAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50Ci0gICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhdGliaWxpdHku
ZW5jb2RlX2lmX25lY2Vzc2FyeShhcmd1bWVudCwgc2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGlu
ZygpKQorICAgICAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29kZShhcmd1bWVudCwgZW5jb2Rp
bmc9c2VsZi5fY2hpbGRfcHJvY2Vzc19lbmNvZGluZygpKQogCiAgICAgZGVmIF9zdHJpbmdpZnlf
YXJncyhzZWxmLCBhcmdzKToKICAgICAgICAgIyBQb3BlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlv
biBpZiBhcmdzIGFyZSBub24tc3RyaW5ncyAobGlrZSBpbnQoKSkKLSAgICAgICAgc3RyaW5nX2Fy
Z3MgPSBtYXAodW5pY29kZV9jb21wYXRpYmlsaXR5LnVuaWNvZGUsIGFyZ3MpCisgICAgICAgIHN0
cmluZ19hcmdzID0gbWFwKHVuaWNvZGUsIGFyZ3MpCiAgICAgICAgICMgVGhlIFdpbmRvd3MgaW1w
bGVtZW50YXRpb24gb2YgUG9wZW4gY2Fubm90IGhhbmRsZSB1bmljb2RlIHN0cmluZ3MuIDooCiAg
ICAgICAgIHJldHVybiBtYXAoc2VsZi5fZW5jb2RlX2FyZ3VtZW50X2lmX25lZWRlZCwgc3RyaW5n
X2FyZ3MpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVj
dXRpdmVfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksOCBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIGRl
Y29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3NhcnksIHVuaWNvZGUKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBCeXRlc0lPLCBzdHJpbmdfdXRpbHMsIHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtMzgsOCArMzksOCBAQCBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBNb2NrUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBzdGRvdXQ9J01PQ0sgU1RET1VUXG4nLCBzdGRlcnI9JycpOgogICAgICAg
ICBzZWxmLnBpZCA9IDQyCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gQnl0ZXNJTyhlbmNvZGVfaWZf
bmVjZXNzYXJ5KHN0ZG91dCkpCi0gICAgICAgIHNlbGYuc3RkZXJyID0gQnl0ZXNJTyhlbmNvZGVf
aWZfbmVjZXNzYXJ5KHN0ZGVycikpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gQnl0ZXNJTyhzdHJp
bmdfdXRpbHMuZW5jb2RlKHN0ZG91dCkpCisgICAgICAgIHNlbGYuc3RkZXJyID0gQnl0ZXNJTyhz
dHJpbmdfdXRpbHMuZW5jb2RlKHN0ZGVycikpCiAgICAgICAgIHNlbGYuc3RkaW4gPSBCeXRlc0lP
KCkKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gMAogICAgICAgICBzZWxmLl9pc19ydW5uaW5n
ID0gRmFsc2UKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgZW52X3N0cmluZyA9ICIsIGVudj17IiArIGVudl9zdHJpbmcgKyAi
fSIKICAgICAgICAgICAgIGlucHV0X3N0cmluZyA9ICIiCiAgICAgICAgICAgICBpZiBpbnB1dDoK
LSAgICAgICAgICAgICAgICBpbnB1dF9zdHJpbmcgPSAiLCBpbnB1dD0lcyIgJSBkZWNvZGVfZm9y
KGlucHV0LCBzdHIpCisgICAgICAgICAgICAgICAgaW5wdXRfc3RyaW5nID0gIiwgaW5wdXQ9JXMi
ICUgc3RyaW5nX3V0aWxzLmRlY29kZShpbnB1dCwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAg
ICAgX2xvZy5pbmZvKCJNT0NLIHJ1bl9jb21tYW5kOiAlcywgY3dkPSVzJXMlcyIgJSAoYXJncywg
Y3dkLCBlbnZfc3RyaW5nLCBpbnB1dF9zdHJpbmcpKQogICAgICAgICBvdXRwdXQgPSAiTU9DSyBv
dXRwdXQgb2YgY2hpbGQgcHJvY2VzcyIKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGltcG9ydCBvcwotaW1wb3J0IGVycm5vCiBpbXBvcnQgc2lnbmFsCiBpbXBv
cnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwpAQCAtNDYsNyArNDUsOCBAQCBpZiB0aGlyZF9wYXJ0
eV9weSBub3QgaW4gc3lzLnBhdGg6CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9jb21wYXRpYmlsaXR5CisKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogCiBjbGFzcyBTY3JpcHRFcnJvclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgpAQCAtMTM5LDExICsxMzksMTEgQEAgY2xhc3MgRXhlY3V0aXZlVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBlbmNvZGluZyA9ICdtYmNzJwogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnCi0gICAgICAgIGVuY29kZWRf
dG9yID0gdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkodW5pY29kZV90
b3JfaW5wdXQsIGVuY29kaW5nKQorICAgICAgICBlbmNvZGVkX3RvciA9IHN0cmluZ191dGlscy5l
bmNvZGUodW5pY29kZV90b3JfaW5wdXQsIGVuY29kaW5nPWVuY29kaW5nKQogICAgICAgICAjIE9u
IFdpbmRvd3MsIHdlIGV4cGVjdCB0aGUgdW5pY29kZS0+bWJjcy0+dW5pY29kZSByb3VuZHRyaXAg
dG8gYmUKICAgICAgICAgIyBsb3NzeS4gT24gb3RoZXIgcGxhdGZvcm1zLCB3ZSBleHBlY3QgYSBs
b3NzbGVzcyByb3VuZHRyaXAuCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKToKLSAgICAgICAgICAgIHVuaWNvZGVfdG9yX291dHB1dCA9IHVuaWNvZGVfY29tcGF0aWJp
bGl0eS5kZWNvZGVfaWZfbmVjZXNzYXJ5KGVuY29kZWRfdG9yLCBlbmNvZGluZykKKyAgICAgICAg
ICAgIHVuaWNvZGVfdG9yX291dHB1dCA9IHN0cmluZ191dGlscy5kZWNvZGUoZW5jb2RlZF90b3Is
IGVuY29kaW5nPWVuY29kaW5nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdW5pY29kZV90
b3Jfb3V0cHV0ID0gdW5pY29kZV90b3JfaW5wdXQKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkJKHJldmlzaW9uIDI2NDk0
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1w
ZmlsZQogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5LCBlbmNvZGVfZm9yCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKIAogY2xhc3MgRmlsZVN5c3RlbShvYmplY3Qp
OgpAQCAtMjI3LDcgKzIyNyw3IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKIAogICAgIGRl
ZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CiAgICAgICAgIHdpdGgg
b3BlbihwYXRoLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShlbmNvZGVfZm9yKGNv
bnRlbnRzLCBieXRlcykpCisgICAgICAgICAgICBmLndyaXRlKHN0cmluZ191dGlscy5lbmNvZGUo
Y29udGVudHMsIHRhcmdldF90eXBlPWJ5dGVzKSkKIAogICAgIGRlZiBvcGVuX3RleHRfZmlsZV9m
b3JfcmVhZGluZyhzZWxmLCBwYXRoLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgICAjIE5vdGU6
IFRoZXJlIGFwcGVhcnMgdG8gYmUgYW4gaXNzdWUgd2l0aCB0aGUgcmV0dXJuZWQgZmlsZSBvYmpl
Y3RzCkBAIC0yNTcsNyArMjU3LDcgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAg
ICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIK
ICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGYtOCcsIGVycm9ycz1lcnJv
cnMpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGRlY29kZV9pZl9uZWNlc3NhcnkoY29udGVu
dHMsIGVycm9ycz1lcnJvcnMpKQorICAgICAgICAgICAgZi53cml0ZShzdHJpbmdfdXRpbHMuZGVj
b2RlKGNvbnRlbnRzLCBlcnJvcnM9ZXJyb3JzKSkKIAogICAgIGRlZiBzaGExKHNlbGYsIHBhdGgp
OgogICAgICAgICBjb250ZW50cyA9IHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbV9tb2NrLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
MCArMzAsOCBAQCBpbXBvcnQgZXJybm8KIGltcG9ydCBoYXNobGliCiBpbXBvcnQgb3MKIGltcG9y
dCByZQotaW1wb3J0IHN5cwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgdW5pY29kZV9j
b21wYXRpYmlsaXR5Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBhdGgKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBVbmljb2RlSU8sIHN0cmluZ191dGlscwogCiBjbGFzcyBN
b2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgIHNlcCA9ICcvJwpAQCAtNDgsNyArNDYsNyBAQCBj
bGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICAgICAgICAgIHZhbHVlIG9mIE5v
bmUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIHNob3VsZAogICAgICAgICAgICAg
ICAgIG5vdCBleGlzdC4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZmlsZXMgPSB7bmFtZTog
dW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3NhcnkoY29udGVudHMpIGZvciBu
YW1lLCBjb250ZW50cyBpbiAoZmlsZXMgb3Ige30pLml0ZW1zKCl9CisgICAgICAgIHNlbGYuZmls
ZXMgPSB7bmFtZTogc3RyaW5nX3V0aWxzLmVuY29kZShjb250ZW50cykgZm9yIG5hbWUsIGNvbnRl
bnRzIGluIChmaWxlcyBvciB7fSkuaXRlbXMoKX0KICAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVz
ID0ge30KICAgICAgICAgc2VsZi5sYXN0X3RtcGRpciA9IE5vbmUKICAgICAgICAgc2VsZi5jdXJy
ZW50X3RtcG5vID0gMApAQCAtMzI5LDggKzMyNyw4IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgZGVmIHdyaXRlX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToK
ICAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYXNzZXJ0IGlmIGRpcm5hbWUocGF0aCkgZG9l
c24ndCBleGlzdD8KICAgICAgICAgc2VsZi5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLmRpcm5h
bWUocGF0aCkpCi0gICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSB1bmljb2RlX2NvbXBhdGliaWxp
dHkuZW5jb2RlX2Zvcihjb250ZW50cywgYnl0ZXMpCi0gICAgICAgIHNlbGYud3JpdHRlbl9maWxl
c1twYXRoXSA9IHVuaWNvZGVfY29tcGF0aWJpbGl0eS5lbmNvZGVfZm9yKGNvbnRlbnRzLCBieXRl
cykKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IHN0cmluZ191dGlscy5lbmNvZGUoY29udGVu
dHMpCisgICAgICAgIHNlbGYud3JpdHRlbl9maWxlc1twYXRoXSA9IHN0cmluZ191dGlscy5lbmNv
ZGUoY29udGVudHMpCiAKICAgICBkZWYgb3Blbl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcoc2VsZiwg
cGF0aCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAgaWYgc2VsZi5maWxlcy5nZXQocGF0aCkg
aXMgTm9uZToKQEAgLTM0NCw3ICszNDIsNyBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3Qp
OgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpLmRlY29kZSgndXRm
LTgnLCBlcnJvcnM9ZXJyb3JzKQogCiAgICAgZGVmIHdyaXRlX3RleHRfZmlsZShzZWxmLCBwYXRo
LCBjb250ZW50cywgZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVf
YmluYXJ5X2ZpbGUocGF0aCwgdW5pY29kZV9jb21wYXRpYmlsaXR5LmVuY29kZV9pZl9uZWNlc3Nh
cnkoY29udGVudHMsICd1dGYtOCcsIGVycm9ycz1lcnJvcnMpKQorICAgICAgICByZXR1cm4gc2Vs
Zi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBzdHJpbmdfdXRpbHMuZW5jb2RlKGNvbnRlbnRzLCBl
bmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKSkKIAogICAgIGRlZiBzaGExKHNlbGYsIHBh
dGgpOgogICAgICAgICBjb250ZW50cyA9IHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKQpAQCAt
NDUzLDEzICs0NTEsMTMgQEAgY2xhc3MgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6
CiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cmlu
Zyk6Ci0gICAgICAgIHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXSArPSB1bmljb2RlX2NvbXBhdGli
aWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShzdHJpbmcsICd1dGYtOCcpCisgICAgICAgIHNlbGYu
ZnMuZmlsZXNbc2VsZi5wYXRoXSArPSBzdHJpbmdfdXRpbHMuZW5jb2RlKHN0cmluZywgZW5jb2Rp
bmc9J3V0Zi04JykKICAgICAgICAgc2VsZi5mcy53cml0dGVuX2ZpbGVzW3NlbGYucGF0aF0gPSBz
ZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0KIAogCiBjbGFzcyBXcml0YWJsZVRleHRGaWxlT2JqZWN0
KFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdCk6CiAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6Ci0g
ICAgICAgIFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdC53cml0ZShzZWxmLCB1bmljb2RlX2NvbXBh
dGliaWxpdHkuZW5jb2RlX2lmX25lY2Vzc2FyeShzdHIsICd1dGYtOCcpKQorICAgICAgICBXcml0
YWJsZUJpbmFyeUZpbGVPYmplY3Qud3JpdGUoc2VsZiwgc3RyaW5nX3V0aWxzLmVuY29kZShzdHIs
IGVuY29kaW5nPSd1dGYtOCcpKQogCiAKIGNsYXNzIFJlYWRhYmxlQmluYXJ5RmlsZU9iamVjdChv
YmplY3QpOgpAQCAtNDkyLDcgKzQ5MCw3IEBAIGNsYXNzIFJlYWRhYmxlQmluYXJ5RmlsZU9iamVj
dChvYmplY3QpOgogCiBjbGFzcyBSZWFkYWJsZVRleHRGaWxlT2JqZWN0KFJlYWRhYmxlQmluYXJ5
RmlsZU9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBkYXRhKToKLSAg
ICAgICAgc3VwZXIoUmVhZGFibGVUZXh0RmlsZU9iamVjdCwgc2VsZikuX19pbml0X18oZnMsIHBh
dGgsIHVuaWNvZGVfY29tcGF0aWJpbGl0eS5Vbmljb2RlSU8odW5pY29kZV9jb21wYXRpYmlsaXR5
LmRlY29kZV9mb3IoZGF0YSwgdW5pY29kZV9jb21wYXRpYmlsaXR5LnVuaWNvZGUpKSkKKyAgICAg
ICAgc3VwZXIoUmVhZGFibGVUZXh0RmlsZU9iamVjdCwgc2VsZikuX19pbml0X18oZnMsIHBhdGgs
IFVuaWNvZGVJTyhzdHJpbmdfdXRpbHMuZGVjb2RlKGRhdGEpKSkKIAogICAgIGRlZiBjbG9zZShz
ZWxmKToKICAgICAgICAgc2VsZi5kYXRhLmNsb3NlKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CShyZXZpc2lv
biAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0
Y2FwdHVyZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBpbXBvcnQgbG9nZ2lu
ZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVu
aWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBTdHJpbmdJTwogCiAKIGNsYXNzIE91dHB1dENhcHR1cmUob2JqZWN0KToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXR0ZWVfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1
dHRlZV91bml0dGVzdC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL291dHB1dHRlZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsOSBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dHRlZSBpbXBvcnQgVGVlLCBPdXRwdXRUZWUKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0
cHV0dGVlIGltcG9ydCBUZWUKIAogCiBjbGFzcyBTaW1wbGVUZWVUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnRfdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQko
cmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjks
OCArMjksOSBAQAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9j
ayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBs
aW50X3Rlc3RfZXhwZWN0YXRpb25zCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTMgQEAgaW1wb3J0IGpzb24KIGltcG9ydCBz
eXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBh
dGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5n
SU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlLCBw
YXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzX3VuaXR0ZXN0IGltcG9y
dCBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2RhcndpbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhv
c3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9j
a0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQg
U3RyaW5nSU8KLQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRf
dGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRz
IGltcG9ydCBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9y
dCB0ZXN0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CShy
ZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkg
KzI5LDggQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQotaW1wb3J0IHRpbWUKIAotZnJv
bSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9y
Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgdGVzdF9yZXN1bHRfd3JpdGVyCiBmcm9tIHdl
YmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXJJbnB1dCwgRHJpdmVyT3V0cHV0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCkBA
IC0yMTUsNyArMjE0LDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAg
ICBlbGlmIGRyaXZlcl9vdXRwdXQuZXJyb3I6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAl
cyBvdXRwdXQgc3RkZXJyIGxpbmVzOiIgJSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3RuYW1lKSkK
ICAgICAgICAgZm9yIGxpbmUgaW4gZHJpdmVyX291dHB1dC5lcnJvci5zcGxpdGxpbmVzKCk6Ci0g
ICAgICAgICAgICBfbG9nLmRlYnVnKCIgIHt9Ii5mb3JtYXQoZGVjb2RlX2ZvcihsaW5lLCBzdHIp
KSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiAge30iLmZvcm1hdChzdHJpbmdfdXRpbHMuZGVj
b2RlKGxpbmUsIHRhcmdldF90eXBlPXN0cikpKQogICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAog
ICAgIGRlZiBfY29tcGFyZV9vdXRwdXQoc2VsZiwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCwgZHJp
dmVyX291dHB1dCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9idWlsZGJvdF9yZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHNfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDEzICsyOCwxMCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBv
cnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09w
dGlvbnMKLQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4
cGVjdGF0aW9ucwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0
X2ZhaWx1cmVzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3Rf
cnVuX3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVz
dF9ydW5fcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X3J1bl9yZXN1bHRzX3VuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3
cyBpbXBvcnQgYnVpbGRib3RfcmVzdWx0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJl
YW1fdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw4IEBAIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHVu
aXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBv
cnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0cmVhbSBpbXBvcnQgTWV0ZXJlZFN0
cmVhbQogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L3ByaW50aW5nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ5
NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGlu
Z191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDExIEBACiAKIGltcG9y
dCBvcHRwYXJzZQogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBsb2d0ZXN0aW5nCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5IGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdlcgorZnJvbSB3ZWJraXRw
eS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bl
cmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxNSArMjYsMTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBq
c29uCi1pbXBvcnQgbWF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnBvcnQu
ZHJpdmVyIGltcG9ydCBEcml2ZXJPdXRwdXQKLWZyb20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9y
dCBUZXN0RHJpdmVyCiBmcm9tIHdlYmtpdHB5LnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKIGZy
b20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0CiBm
cm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdE1l
dHJpYwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9u
dGVzdC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRw
eS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LnBvcnQudGVz
dCBpbXBvcnQgVGVzdFBvcnQKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRl
c3QgaW1wb3J0IFBlcmZUZXN0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0
dGVzdC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDE0ICsyOSwxMyBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgcnVuX3BlcmZfdGVzdHMuIiIi
CiAKIGltcG9ydCBqc29uCi1pbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2Nr
IGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9y
dCBUZXN0UG9ydAotZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBv
cnQgREVGQVVMVF9URVNUX1JVTk5FUl9DT1VOVAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90
ZXN0cy5wZXJmdGVzdHNydW5uZXIgaW1wb3J0IFBlcmZUZXN0c1J1bm5lcgogCiAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
NyBAQCBpbXBvcnQgc3lzCiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBm
cm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0
cmluZ191dGlscwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwogZnJv
bSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKQEAgLTUyLDcg
KzUzLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbQogZnJvbSB3
ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgUFVCTElDX1RBQkxFLCBJTlRF
Uk5BTF9UQUJMRSwgVmVyc2lvbk5hbWVNYXAKIGZyb20gd2Via2l0cHkuY29tbW9uLndhdmVkaWZm
IGltcG9ydCBXYXZlRGlmZgogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBv
cnQgV2ViS2l0RmluZGVyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IGVuY29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0
IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZyBhcyBw
b3J0X2NvbmZpZwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBkcml2ZXIKQEAgLTMyNiw4ICsz
MjYsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIGRpZmZfdGV4dChzZWxmLCBleHBl
Y3RlZF90ZXh0LCBhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfZmlsZW5hbWUsIGFjdHVhbF9maWxlbmFt
ZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgZGlmZiBvZiB0
aGUgdHdvIHRleHQgc3RyaW5ncwogICAgICAgICBpbiAndW5pZmllZCBkaWZmJyBmb3JtYXQuIiIi
Ci0gICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gZGVjb2RlX2ZvcihlbmNvZGVfaWZfbmVjZXNz
YXJ5KGV4cGVjdGVkX2ZpbGVuYW1lKSwgc3RyKQotICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBk
ZWNvZGVfZm9yKGVuY29kZV9pZl9uZWNlc3NhcnkoYWN0dWFsX2ZpbGVuYW1lKSwgc3RyKQorICAg
ICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHN0cmluZ191dGlscy5kZWNvZGUoc3RyaW5nX3V0aWxz
LmVuY29kZShleHBlY3RlZF9maWxlbmFtZSksIHRhcmdldF90eXBlPXN0cikKKyAgICAgICAgYWN0
dWFsX2ZpbGVuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShzdHJpbmdfdXRpbHMuZW5jb2RlKGFj
dHVhbF9maWxlbmFtZSksIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgZGlmZiA9IGRpZmZsaWIu
dW5pZmllZF9kaWZmKGV4cGVjdGVkX3RleHQuc3BsaXRsaW5lcyhUcnVlKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXh0LnNwbGl0bGluZXMoVHJ1ZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFtZSwKQEAg
LTQ4OCw3ICs0ODgsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICBiYXNlbGlu
ZV9wYXRoID0gc2VsZi5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUsICcud2ViYXJjaGl2ZScs
IGRldmljZV90eXBlPWRldmljZV90eXBlKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVz
eXN0ZW0uZXhpc3RzKGJhc2VsaW5lX3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25l
Ci0gICAgICAgIHRleHQgPSBkZWNvZGVfZm9yKHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlf
ZmlsZShiYXNlbGluZV9wYXRoKSwgc3RyKQorICAgICAgICB0ZXh0ID0gc3RyaW5nX3V0aWxzLmRl
Y29kZShzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoYmFzZWxpbmVfcGF0aCksIHRh
cmdldF90eXBlPXN0cikKICAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgiXHJcbiIsICJcbiIp
CiAKICAgICBkZWYgX2dldF9yZWZ0ZXN0X2xpc3Qoc2VsZiwgdGVzdF9uYW1lKToKQEAgLTE0OTIs
NyArMTQ5Miw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgaWYgYXJnczoKICAgICAg
ICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoYXJncykKICAgICAgICAgb3V0cHV0ID0g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYu
d2Via2l0X2Jhc2UoKSwgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0LCBlbnY9ZW52KQotICAg
ICAgICBfbG9nLmRlYnVnKCdPdXRwdXQgb2YgJXM6XG4lcycgJSAocnVuX3NjcmlwdF9jb21tYW5k
LCBlbmNvZGVfZm9yKG91dHB1dCwgc3RyKSBpZiBkZWNvZGVfb3V0cHV0IGVsc2Ugb3V0cHV0KSkK
KyAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29t
bWFuZCwgc3RyaW5nX3V0aWxzLmVuY29kZShvdXRwdXQsIHRhcmdldF90eXBlPXN0cikgaWYgZGVj
b2RlX291dHB1dCBlbHNlIG91dHB1dCkpCiAgICAgICAgIHJldHVybiBvdXRwdXQKIAogICAgIGRl
ZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJp
dmVyLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTIgQEAgaW1wb3J0IHNobGV4
CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IG9zCisKIGZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxz
CiAKLWZyb20gb3MucGF0aCBpbXBvcnQgbm9ybXBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnByb2ZpbGVyIGlt
cG9ydCBQcm9maWxlckZhY3RvcnkKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0
aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTg3LDExICs4NywxMSBAQCBjbGFzcyBE
cml2ZXJPdXRwdXQob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfdGltZT0wLCBtZWFzdXJlbWVu
dHM9Tm9uZSwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPSc/
PycsCiAgICAgICAgICAgICBjcmFzaGVkX3BpZD1Ob25lLCBjcmFzaF9sb2c9Tm9uZSwgcGlkPU5v
bmUpOgogICAgICAgICAjIEZJWE1FOiBBcmdzIGNvdWxkIGJlIHJlbmFtZWQgdG8gYmV0dGVyIGNs
YXJpZnkgd2hhdCB0aGV5IGRvLgotICAgICAgICBzZWxmLnRleHQgPSBkZWNvZGVfZm9yKHRleHQs
IHN0cikgaWYgdGV4dCBlbHNlIE5vbmUKKyAgICAgICAgc2VsZi50ZXh0ID0gc3RyaW5nX3V0aWxz
LmRlY29kZSh0ZXh0LCB0YXJnZXRfdHlwZT1zdHIpIGlmIHRleHQgZWxzZSBOb25lCiAgICAgICAg
IHNlbGYuaW1hZ2UgPSBpbWFnZSAgIyBNYXkgYmUgZW1wdHktc3RyaW5nIGlmIHRoZSB0ZXN0IGNy
YXNoZXMuCiAgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKICAgICAgICAgc2Vs
Zi5pbWFnZV9kaWZmID0gTm9uZSAgIyBpbWFnZV9kaWZmIGdldHMgZmlsbGVkIGluIGFmdGVyIGNv
bnN0cnVjdGlvbi4KLSAgICAgICAgc2VsZi5hdWRpbyA9IGVuY29kZV9pZl9uZWNlc3NhcnkoYXVk
aW8pIGlmIGF1ZGlvIGVsc2UgTm9uZSAgIyBCaW5hcnkgZm9ybWF0IGlzIHBvcnQtZGVwZW5kZW50
LgorICAgICAgICBzZWxmLmF1ZGlvID0gc3RyaW5nX3V0aWxzLmVuY29kZShhdWRpbykgaWYgYXVk
aW8gZWxzZSBOb25lICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRlbnQuCiAgICAgICAg
IHNlbGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxmLmNyYXNoZWRfcHJvY2Vzc19uYW1lID0g
Y3Jhc2hlZF9wcm9jZXNzX25hbWUKICAgICAgICAgc2VsZi5jcmFzaGVkX3BpZCA9IGNyYXNoZWRf
cGlkCkBAIC0yMTUsNyArMjE1LDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHNl
bGYuX3NlcnZlcl9wcm9jZXNzLndyaXRlKGNvbW1hbmQpCiAgICAgICAgIHRleHQsIGF1ZGlvID0g
c2VsZi5fcmVhZF9maXJzdF9ibG9jayhkZWFkbGluZSwgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkg
ICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVyIHRleHQgb3IgYXVkaW8KICAgICAgICAgaW1hZ2UsIGFj
dHVhbF9pbWFnZV9oYXNoID0gc2VsZi5fcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhkZWFkbGlu
ZSwgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSkgICMgVGhlIHNlY29uZCAob3B0aW9uYWwpIGJsb2Nr
IGlzIGltYWdlIGRhdGEuCi0gICAgICAgIHRleHQgPSBkZWNvZGVfZm9yKHRleHQsIHN0cikKKyAg
ICAgICAgdGV4dCA9IHN0cmluZ191dGlscy5kZWNvZGUodGV4dCwgdGFyZ2V0X3R5cGU9c3RyKQog
CiAgICAgICAgIGNyYXNoZWQgPSBzZWxmLmhhc19jcmFzaGVkKCkKICAgICAgICAgdGltZWRfb3V0
ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0CkBAIC0yMjksOSArMjI5LDkgQEAgY2xh
c3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICAjIEluIHRoZSB0aW1lb3V0IGNhc2UsIHdl
IGtpbGwgdGhlIGh1bmcgcHJvY2VzcyBhcyB3ZWxsLgogICAgICAgICAgICAgb3V0LCBlcnIgPSBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdG9wKHNlbGYuX3BvcnQuZHJpdmVyX3N0b3BfdGltZW91dCgp
IGlmIHN0b3Bfd2hlbl9kb25lIGVsc2UgMC4wKQogICAgICAgICAgICAgaWYgb3V0OgotICAgICAg
ICAgICAgICAgIHRleHQgKz0gZGVjb2RlX2ZvcihvdXQsIHN0cikKKyAgICAgICAgICAgICAgICB0
ZXh0ICs9IHN0cmluZ191dGlscy5kZWNvZGUob3V0LCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAg
ICAgICBpZiBlcnI6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVj
b2RlX2ZvcihlcnIsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCAr
PSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVyciwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAg
c2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCiAKICAgICAgICAgY3Jhc2hfbG9nID0gTm9uZQpA
QCAtMjg0LDggKzI4NCw4IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBmb3IgbGlu
ZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKGInXihb
XjpdKyk6IChbMC05XSspJCcsIGxpbmUpCiAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAg
ICAgIHByb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobS5ncm91cCgxKSwgc3RyKQotICAgICAgICAg
ICAgICAgIHByb2Nlc3NfaWQgPSBkZWNvZGVfZm9yKG0uZ3JvdXAoMiksIHN0cikKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzX25hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKG0uZ3JvdXAoMSksIHRh
cmdldF90eXBlPXN0cikKKyAgICAgICAgICAgICAgICBwcm9jZXNzX2lkID0gc3RyaW5nX3V0aWxz
LmRlY29kZShtLmdyb3VwKDIpLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICAgICAgY2hp
bGRfcHJvY2Vzc2VzW3Byb2Nlc3NfbmFtZV0uYXBwZW5kKHByb2Nlc3NfaWQpCiAKICAgICAgICAg
cmV0dXJuIGNoaWxkX3Byb2Nlc3NlcwpAQCAtNTQ5LDcgKzU0OSw3IEBAIGNsYXNzIERyaXZlcihv
YmplY3QpOgogICAgIGRlZiBfY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KHNlbGYsIG91dF9saW5l
KToKICAgICAgICAgaWYgb3V0X2xpbmUuc3RhcnRzd2l0aChiIiNQSUQgVU5SRVNQT05TSVZFIC0g
Iik6CiAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI1BJRCBVTlJFU1BPTlNJVkUgLSAo
XFMrKScsIG91dF9saW5lKQotICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gZGVjb2Rl
X2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJworICAg
ICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShtYXRjaC5n
cm91cCgxKSwgdGFyZ2V0X3R5cGU9c3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJwogICAg
ICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBvdXRfbGluZSkKICAgICAg
ICAgICAgIGNoaWxkX3Byb2Nlc3NfcGlkID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBl
bHNlIE5vbmUKICAgICAgICAgICAgIGVycl9saW5lID0gJ1dhaXQgb24gbm90aWZ5RG9uZSB0aW1l
ZCBvdXQsIHByb2Nlc3MgJyArIGNoaWxkX3Byb2Nlc3NfbmFtZSArICcgcGlkID0gJyArIHN0cihj
aGlsZF9wcm9jZXNzX3BpZCkKQEAgLTU3MiwyMSArNTcyLDIxIEBAIGNsYXNzIERyaXZlcihvYmpl
Y3QpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBlcnJvcl9saW5lLnN0
YXJ0c3dpdGgoYiIjQ1JBU0hFRCAtICIpOgogICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChi
JyNDUkFTSEVEIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBkZWNvZGVfZm9yKG1hdGNoLmdyb3VwKDEpLCBzdHIpIGlmIG1hdGNo
IGVsc2UgJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFt
ZSA9IHN0cmluZ191dGlscy5kZWNvZGUobWF0Y2guZ3JvdXAoMSksIHRhcmdldF90eXBlPXN0cikg
aWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNo
KGIncGlkIChcZCspJywgZXJyb3JfbGluZSkKICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlk
ID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAgICAgICAgIF9s
b2cuZGVidWcoJyVzIGNyYXNoLCBwaWQgPSAlcycgJSAoc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25h
bWUsIHN0cihzZWxmLl9jcmFzaGVkX3BpZCkpKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAg
ICAgICAgZWxpZiBlcnJvcl9saW5lLnN0YXJ0c3dpdGgoYiIjUFJPQ0VTUyBVTlJFU1BPTlNJVkUg
LSAiKToKICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goYicjUFJPQ0VTUyBVTlJFU1BPTlNJ
VkUgLSAoXFMrKScsIGVycm9yX2xpbmUpCi0gICAgICAgICAgICBjaGlsZF9wcm9jZXNzX25hbWUg
PSBkZWNvZGVfZm9yKG1hdGNoLmdyb3VwKDEpLCBzdHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nl
c3MnCisgICAgICAgICAgICBjaGlsZF9wcm9jZXNzX25hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2Rl
KG1hdGNoLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1zdHIpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nl
c3MnCiAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChiJ3BpZCAoXGQrKScsIGVycm9yX2xp
bmUpCiAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzX3BpZCA9IGludChtYXRjaC5ncm91cCgxKSkg
aWYgbWF0Y2ggZWxzZSBOb25lCiAgICAgICAgICAgICBfbG9nLmRlYnVnKCclcyBpcyB1bnJlc3Bv
bnNpdmUsIHBpZCA9ICVzJyAlIChjaGlsZF9wcm9jZXNzX25hbWUsIHN0cihjaGlsZF9wcm9jZXNz
X3BpZCkpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RpbWVkX291dCA9IFRydWUKICAgICAg
ICAgICAgIGlmIGNoaWxkX3Byb2Nlc3NfcGlkOgogICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQu
c2FtcGxlX3Byb2Nlc3MoY2hpbGRfcHJvY2Vzc19uYW1lLCBjaGlsZF9wcm9jZXNzX3BpZCwgc2Vs
Zi5fdGFyZ2V0X2hvc3QpCi0gICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBkZWNv
ZGVfZm9yKGVycm9yX2xpbmUsIHN0cikKKyAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0
ICs9IHN0cmluZ191dGlscy5kZWNvZGUoZXJyb3JfbGluZSwgdGFyZ2V0X3R5cGU9c3RyKQogICAg
ICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mud3JpdGUoJyNTQU1QTEUgRklOSVNIRURcbics
IFRydWUpICAjIE11c3QgYmUgYWJsZSB0byBpZ25vcmUgYSBicm9rZW4gcGlwZSBoZXJlLCB0YXJn
ZXQgcHJvY2VzcyBtYXkgYWxyZWFkeSBiZSBjbG9zZWQuCiAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQogICAgICAgICByZXR1cm4gc2VsZi5oYXNfY3Jhc2hlZCgpCkBAIC02NDAsNyArNjQwLDcgQEAg
Y2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJsb2Nr
LCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6CiAg
ICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxvY2ss
IGhlYWRlcl9hdHRyKSBpcyBOb25lOgotICAgICAgICAgICAgdmFsdWUgPSBkZWNvZGVfZm9yKGxp
bmUuc3BsaXQoKVsxXSwgc3RyKQorICAgICAgICAgICAgdmFsdWUgPSBzdHJpbmdfdXRpbHMuZGVj
b2RlKGxpbmUuc3BsaXQoKVsxXSwgdGFyZ2V0X3R5cGU9c3RyKQogICAgICAgICAgICAgaWYgaGVh
ZGVyX2ZpbHRlcjoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhlYWRlcl9maWx0ZXIodmFsdWUp
CiAgICAgICAgICAgICBzZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0ciwgdmFsdWUpCkBAIC02NjEs
NyArNjYxLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgIyBOb3RlLCB3ZSdy
ZSBub3QgcmVhZGluZyBFeHBlY3RlZEhhc2g6IGhlcmUsIGJ1dCB3ZSBjb3VsZC4KICAgICAgICAg
IyBJZiB0aGUgbGluZSB3YXNuJ3QgYSBoZWFkZXIsIHdlIGp1c3QgYXBwZW5kIGl0IHRvIHRoZSBj
b250ZW50LgotICAgICAgICBibG9jay5jb250ZW50ID0gZW5jb2RlX2lmX25lY2Vzc2FyeShibG9j
ay5jb250ZW50KSArIGxpbmUKKyAgICAgICAgYmxvY2suY29udGVudCA9IHN0cmluZ191dGlscy5l
bmNvZGUoYmxvY2suY29udGVudCkgKyBsaW5lCiAKICAgICBkZWYgX3N0cmlwX2VvZihzZWxmLCBs
aW5lKToKICAgICAgICAgaWYgbGluZSBhbmQgbGluZS5lbmRzd2l0aChiIiNFT0ZcbiIpOgpAQCAt
NzA2LDcgKzcwNiw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICMg
RklYTUU6IFVubGlrZSBIVFRQLCBEUlQgZHVtcHMgdGhlIGNvbnRlbnQgcmlnaHQgYWZ0ZXIgcHJp
bnRpbmcgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCiAgICAgICAgICAgICAgICAgIyBEb24ndCB3
YWl0IHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBoZWFkZXJzLCBqdXN0IHJlYWQgdGhlIGJpbmFyeSBi
bG9iIHJpZ2h0IG5vdy4KICAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aF9iZWZvcmVf
aGVhZGVyX2NoZWNrICE9IGJsb2NrLl9jb250ZW50X2xlbmd0aDoKLSAgICAgICAgICAgICAgICAg
ICAgYmxvY2suY29udGVudCA9IGVuY29kZV9pZl9uZWNlc3Nhcnkoc2VsZi5fc2VydmVyX3Byb2Nl
c3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50X2xlbmd0aCkpCisgICAgICAg
ICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKHNlbGYuX3Nl
cnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBibG9jay5fY29udGVudF9sZW5ndGgp
KQogCiAgICAgICAgICAgICBpZiBlcnJfbGluZToKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9j
aGVja19mb3JfZHJpdmVyX2NyYXNoX29yX3VucmVzcG9uc2l2ZW5lc3MoZXJyX2xpbmUpOgpAQCAt
NzI0LDkgKzcyNCw5IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgcmVtb3ZlZCBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8xODcwMTQ0Nz4gaXMgZml4ZWQuCiAgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lICs9IDEw
ICogNjAgKiAxMDAwCiAgICAgICAgICAgICAgICAgaWYgYXNhbl92aW9sYXRpb25fZGV0ZWN0ZWQ6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9mcm9tX2RyaXZlciArPSBk
ZWNvZGVfZm9yKGVycl9saW5lLCBzdHIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNo
X3JlcG9ydF9mcm9tX2RyaXZlciArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGVycl9saW5lLCB0YXJn
ZXRfdHlwZT1zdHIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2RlX2ZvcihlcnJfbGluZSwgc3RyKQorICAgICAg
ICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzdHJpbmdfdXRpbHMuZGVjb2Rl
KGVycl9saW5lLCB0YXJnZXRfdHlwZT1zdHIpCiAKICAgICAgICAgaWYgYXNhbl92aW9sYXRpb25f
ZGV0ZWN0ZWQgYW5kIG5vdCBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZToKICAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucHJvY2Vz
c19uYW1lKCkKQEAgLTc1OSw3ICs3NTksNyBAQCBjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gYmFzZTY0LmI2NGRlY29kZShzZWxm
LmNvbnRlbnQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBkZWNvZGVfZm9yKHNlbGYuY29udGVudCwgc3RyKQor
ICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gc3RyaW5nX3V0aWxzLmRlY29k
ZShzZWxmLmNvbnRlbnQsIHRhcmdldF90eXBlPXN0cikKICAgICAgICAgICAgIGV4Y2VwdCBVbmlj
b2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBO
b25lCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5CShy
ZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlm
Zi5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IHJlCiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHNlcnZlcl9w
cm9jZXNzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0
IEJ5dGVzSU8sIGRlY29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3NhcnkKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBCeXRlc0lPLCBzdHJpbmdfdXRpbHMKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCkBAIC01OSw5ICs1OCw5IEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnQodG9sZXJhbmNlKQogICAgICAgICAgICAg
IyBOb3RlIHRoYXQgYWx0aG91Z2ggd2UgYXJlIGhhbmRlZCAnb2xkJywgJ25ldycsIEltYWdlRGlm
ZiB3YW50cyAnbmV3JywgJ29sZCcuCiAgICAgICAgICAgICBidWZmZXIgPSBCeXRlc0lPKCkKLSAg
ICAgICAgICAgIGJ1ZmZlci53cml0ZShlbmNvZGVfaWZfbmVjZXNzYXJ5KCdDb250ZW50LUxlbmd0
aDoge31cbicuZm9ybWF0KGxlbihhY3R1YWxfY29udGVudHMpKSkpCisgICAgICAgICAgICBidWZm
ZXIud3JpdGUoc3RyaW5nX3V0aWxzLmVuY29kZSgnQ29udGVudC1MZW5ndGg6IHt9XG4nLmZvcm1h
dChsZW4oYWN0dWFsX2NvbnRlbnRzKSkpKQogICAgICAgICAgICAgYnVmZmVyLndyaXRlKGFjdHVh
bF9jb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci53cml0ZShlbmNvZGVfaWZfbmVjZXNzYXJ5
KCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihleHBlY3RlZF9jb250ZW50cykpKSkK
KyAgICAgICAgICAgIGJ1ZmZlci53cml0ZShzdHJpbmdfdXRpbHMuZW5jb2RlKCdDb250ZW50LUxl
bmd0aDoge31cbicuZm9ybWF0KGxlbihleHBlY3RlZF9jb250ZW50cykpKSkKICAgICAgICAgICAg
IGJ1ZmZlci53cml0ZShleHBlY3RlZF9jb250ZW50cykKICAgICAgICAgICAgIHNlbGYuX3Byb2Nl
c3Mud3JpdGUoYnVmZmVyLmdldHZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVh
ZCgpCkBAIC05MiwxMiArOTEsMTIgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKIAogICAg
ICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoYidDb250ZW50LUxlbmd0aCcpOgogICAgICAg
ICAgICAgICAgIG0gPSByZS5tYXRjaChiJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIG91dHB1dCkK
LSAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChkZWNvZGVfZm9yKG0uZ3JvdXAo
MSksIHN0cikpCisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBpbnQoc3RyaW5nX3V0
aWxzLmRlY29kZShtLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1zdHIpKQogICAgICAgICAgICAgICAg
IG91dHB1dF9pbWFnZSA9IHNlbGYuX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGNvbnRl
bnRfbGVuZ3RoKQogICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3Byb2Nlc3MucmVhZF9z
dGRvdXRfbGluZShkZWFkbGluZSkKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIHN0
ZGVyciA9IGRlY29kZV9mb3Ioc2VsZi5fcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigp
LCBzdHIpCisgICAgICAgIHN0ZGVyciA9IHN0cmluZ191dGlscy5kZWNvZGUoc2VsZi5fcHJvY2Vz
cy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAgIGVy
cl9zdHIgPSAnJwogICAgICAgICBpZiBzdGRlcnI6CiAgICAgICAgICAgICBlcnJfc3RyICs9ICJJ
bWFnZURpZmYgcHJvZHVjZWQgc3RkZXJyIG91dHB1dDpcbiIgKyBzdGRlcnIKQEAgLTExMSw3ICsx
MTAsNyBAQCBjbGFzcyBJbWFnZURpZmZlcihvYmplY3QpOgogICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKGInZGlmZjogKC4rKSUgKHBhc3NlZHxmYWlsZWQpJywgb3V0cHV0KQogICAgICAgICAgICAg
aWYgbS5ncm91cCgyKSA9PSBiJ3Bhc3NlZCc6CiAgICAgICAgICAgICAgICAgcmV0dXJuIChOb25l
LCAwLCBOb25lKQotICAgICAgICAgICAgZGlmZl9wZXJjZW50ID0gZmxvYXQoZGVjb2RlX2Zvciht
Lmdyb3VwKDEpLCBzdHIpKQorICAgICAgICAgICAgZGlmZl9wZXJjZW50ID0gZmxvYXQoc3RyaW5n
X3V0aWxzLmRlY29kZShtLmdyb3VwKDEpLCB0YXJnZXRfdHlwZT1zdHIpKQogCiAgICAgICAgIHJl
dHVybiAob3V0cHV0X2ltYWdlLCBkaWZmX3BlcmNlbnQsIGVycl9zdHIgb3IgTm9uZSkKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yLnB5CShyZXZpc2lv
biAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw5IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0
IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vz
c2FyeQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTc5LDcgKzgw
LDcgQEAgY2xhc3MgTGVha0RldGVjdG9yKG9iamVjdCk6CiAgICAgZGVmIF9wYXJzZV9sZWFrc19v
dXRwdXQoc2VsZiwgbGVha3Nfb3V0cHV0KToKICAgICAgICAgaWYgbm90IGxlYWtzX291dHB1dDoK
ICAgICAgICAgICAgIHJldHVybiAwLCAwLCAwCi0gICAgICAgIGxlYWtzX291dHB1dCA9IGVuY29k
ZV9pZl9uZWNlc3NhcnkobGVha3Nfb3V0cHV0KQorICAgICAgICBsZWFrc19vdXRwdXQgPSBzdHJp
bmdfdXRpbHMuZW5jb2RlKGxlYWtzX291dHB1dCkKICAgICAgICAgXywgY291bnQsIGJ5dGVzID0g
cmUuc2VhcmNoKGInUHJvY2VzcyAoP1A8cGlkPlxcZCspOiAoP1A8Y291bnQ+XFxkKykgbGVha3M/
IGZvciAoP1A8Ynl0ZXM+XFxkKykgdG90YWwnLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCiAgICAg
ICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKGInKD9QPGV4Y2x1ZGVkPlxcZCspIGxlYWtz
PyBleGNsdWRlZCcsIGxlYWtzX291dHB1dCkKICAgICAgICAgZXhjbHVkZWQgPSBleGNsdWRlZF9t
YXRjaC5ncm91cCgnZXhjbHVkZWQnKSBpZiBleGNsdWRlZF9tYXRjaCBlbHNlIDAKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmlu
ZC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xl
YWtkZXRlY3Rvcl92YWxncmluZC5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEwIEBA
IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiBpbXBvcnQgaGFzaGxpYgogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCByZQotaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20geG1sLmRvbS5t
aW5pZG9tIGltcG9ydCBwYXJzZVN0cmluZwogZnJvbSB4bWwucGFyc2Vycy5leHBhdCBpbXBvcnQg
RXhwYXRFcnJvcgogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCkBAIC0xOTgsNyArMTk3LDcgQEAgY2xhc3MgVmFsZ3JpbmRFcnJvcjoKICAgICAgICAgIyBU
aGlzIGlzIGEgZGV2aWNlLWluZGVwZW5kZW50IGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN1cHByZXNz
aW9uLgogICAgICAgICAjIEJ5IHByaW50aW5nIG91dCB0aGlzIGhhc2ggd2UgY2FuIGZpbmQgZHVw
bGljYXRlIHJlcG9ydHMgYmV0d2VlbiB0ZXN0cyBhbmQKICAgICAgICAgIyBkaWZmZXJlbnQgc2hh
cmRzIHJ1bm5pbmcgb24gbXVsdGlwbGUgYnVpbGRib3RzCi0gICAgICAgIHJldHVybiBpbnQoaGFz
aGxpYi5tZDUoZW5jb2RlX2lmX25lY2Vzc2FyeShzZWxmLnVuaXF1ZV9zdHJpbmcoKSkpLmhleGRp
Z2VzdCgpWzoxNl0sIDE2KQorICAgICAgICByZXR1cm4gaW50KGhhc2hsaWIubWQ1KHN0cmluZ191
dGlscy5lbmNvZGUoc2VsZi51bmlxdWVfc3RyaW5nKCkpKS5oZXhkaWdlc3QoKVs6MTZdLCAxNikK
IAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi51bmlx
dWVfc3RyaW5nKCkpCkBAIC0yMjQsNyArMjIzLDcgQEAgY2xhc3MgTGVha0RldGVjdG9yVmFsZ3Jp
bmQob2JqZWN0KToKICAgICAgICAgICAgIHBhcnNlZF9zdHJpbmcgPSBwYXJzZVN0cmluZyhsZWFr
c19vdXRwdXQpCiAgICAgICAgIGV4Y2VwdCBFeHBhdEVycm9yIGFzIGU6CiAgICAgICAgICAgICBw
YXJzZV9mYWlsZWQgPSBUcnVlCi0gICAgICAgICAgICBfbG9nLmVycm9yKCJjb3VsZCBub3QgcGFy
c2UgJXM6ICVzIiAlIChkZWNvZGVfZm9yKGxlYWtzX291dHB1dCwgc3RyKSwgZSkpCisgICAgICAg
ICAgICBfbG9nLmVycm9yKCJjb3VsZCBub3QgcGFyc2UgJXM6ICVzIiAlIChzdHJpbmdfdXRpbHMu
ZGVjb2RlKGxlYWtzX291dHB1dCwgdGFyZ2V0X3R5cGU9c3RyKSwgZSkpCiAgICAgICAgICAgICBy
ZXR1cm4KIAogICAgICAgICBjdXJfcmVwb3J0X2Vycm9ycyA9IHNldCgpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFs
Z3JpbmRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEzICsyMywxMyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVf
bW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5m
aWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRw
eS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yCiBmcm9tIHdl
YmtpdHB5LnBvcnQubGVha2RldGVjdG9yX3ZhbGdyaW5kIGltcG9ydCBMZWFrRGV0ZWN0b3JWYWxn
cmluZAogCiAKQEAgLTgwOCw3ICs4MDgsNyBAQCBTdXBwcmVzc2lvbnMgdXNlZDoKIAogZGVmIG1v
Y2tfcnVuX2NwcGZpbHRfY29tbWFuZChhcmdzKToKICAgICBpZiBhcmdzWzBdID09ICdjKytmaWx0
JzoKLSAgICAgICAgcmV0dXJuIHZhbGdyaW5kX291dHB1dF9jcHBmaWx0X21hcFtkZWNvZGVfZm9y
KGFyZ3NbMl0sIHN0cildCisgICAgICAgIHJldHVybiB2YWxncmluZF9vdXRwdXRfY3BwZmlsdF9t
YXBbc3RyaW5nX3V0aWxzLmRlY29kZShhcmdzWzJdLCB0YXJnZXRfdHlwZT1zdHIpXQogICAgIHJl
dHVybiAiIgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRf
Y3Jhc2hfbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9s
aW51eF9nZXRfY3Jhc2hfbG9nLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTYgKzI3LDE1IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQg
ZGF0ZXRpbWUKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3Vi
cHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2Nv
bXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3NhcnkKIGZyb20gd2Via2l0cHkuY29t
bW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogCiAKQEAgLTExNCw3ICsxMTMs
NyBAQCBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgogCiAgICAgICAgIHByb2Mg
PSBzZWxmLl9leGVjdXRpdmUucG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRvdXQ9c3VicHJvY2Vz
cy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBjcmFzaF9sb2csIHN0ZGVy
ciA9IHByb2MuY29tbXVuaWNhdGUoKQotICAgICAgICBlcnJvcnMgPSBkZWNvZGVfaWZfbmVjZXNz
YXJ5KHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3JzPSdpZ25vcmUnKS5zcGxpdGxpbmVz
KCkKKyAgICAgICAgZXJyb3JzID0gc3RyaW5nX3V0aWxzLmRlY29kZShzdHIoc3RkZXJyIG9yICc8
ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5lcygpCiAgICAgICAgIHJldHVybiBj
cmFzaF9sb2csIGVycm9ycwogCiAgICAgZGVmIGdlbmVyYXRlX2NyYXNoX2xvZyhzZWxmLCBzdGRv
dXQsIHN0ZGVycik6CkBAIC0xNDksNyArMTQ4LDcgQEAgY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0
b3Iob2JqZWN0KToKICAgICAgICAgZWxpZiBjb3JlZHVtcGN0bDoKICAgICAgICAgICAgIGNyYXNo
X2xvZywgZXJyb3JzID0gc2VsZi5fZ2V0X3RyYWNlX2Zyb21fc3lzdGVtZChjb3JlZHVtcGN0bCwg
cGlkX3JlcHJlc2VudGF0aW9uKQogCi0gICAgICAgIHN0ZGVycl9saW5lcyA9IGVycm9ycyArIGRl
Y29kZV9pZl9uZWNlc3Nhcnkoc3RyKHN0ZGVyciBvciAnPGVtcHR5PicpLCBlcnJvcnM9J2lnbm9y
ZScpLnNwbGl0bGluZXMoKQorICAgICAgICBzdGRlcnJfbGluZXMgPSBlcnJvcnMgKyBzdHJpbmdf
dXRpbHMuZGVjb2RlKHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3JzPSdpZ25vcmUnKS5z
cGxpdGxpbmVzKCkKICAgICAgICAgZXJyb3JzX3N0ciA9ICdcbicuam9pbigoJ1NUREVSUjogJyAr
IHN0ZGVycl9saW5lKSBmb3Igc3RkZXJyX2xpbmUgaW4gc3RkZXJyX2xpbmVzKQogICAgICAgICBj
cHBmaWx0X3Byb2MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oCiAgICAgICAgICAgICBbJ2MrK2Zp
bHQnXSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRl
cnI9c3VicHJvY2Vzcy5QSVBFKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21v
Y2tfZHJ0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2Nr
X2RydC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L21vY2tfZHJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMSArNDgsMTIgQEAgc2NyaXB0X2Rp
ciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcgogaWYgc2NyaXB0X2RpciBub3QgaW4gc3lz
LnBhdGg6CiAgICAgc3lzLnBhdGguYXBwZW5kKHNjcmlwdF9kaXIpCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Vi
a2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlcklucHV0LCBEcml2ZXJPdXRwdXQsIERyaXZl
clByb3h5CiBmcm9tIHdlYmtpdHB5LnBvcnQuZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkKIAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiAKIApAQCAtMjMxLDcgKzIzMiw3IEBAIGNsYXNzIE1vY2tEUlQo
b2JqZWN0KToKICAgICAgICAgICAgIGlmIG91dHB1dC5pbWFnZV9oYXNoICE9IHRlc3RfaW5wdXQu
aW1hZ2VfaGFzaDoKICAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQt
VHlwZTogaW1hZ2UvcG5nXG4nKQogICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgn
Q29udGVudC1MZW5ndGg6ICVzXG4nICUgbGVuKG91dHB1dC5pbWFnZSkpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fc3Rkb3V0LndyaXRlKGRlY29kZV9mb3Iob3V0cHV0LmltYWdlLCBzdHIpKQorICAg
ICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShzdHJpbmdfdXRpbHMuZGVjb2RlKG91dHB1
dC5pbWFnZSwgdGFyZ2V0X3R5cGU9c3RyKSkKICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCcj
RU9GXG4nKQogICAgICAgICBzZWxmLl9zdGRvdXQuZmx1c2goKQogICAgICAgICBzZWxmLl9zdGRl
cnIud3JpdGUoJyNFT0ZcbicpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9j
a19kcnRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDExICsyOCwxMSBAQAogCiAiIiJVbml0IHRlc3RzIGZvciBNb2NrRFJULiIiIgogCi1pbXBv
cnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmlu
Z0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0
IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IG1vY2tfZHJ0CiBm
cm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0cHkucG9y
dCBpbXBvcnQgdGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9w
cm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2
ZXJfcHJvY2Vzcy5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw3IEBA
IGltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIAogIyBOb3RlIHRoYXQgYWx0
aG91Z2ggd2luMzIgcHl0aG9uIGRvZXMgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZgogIyB0
aGUgd2luMzIgc2VsZWN0IEFQSSwgaXQgb25seSB3b3JrcyBvbiBzb2NrZXRzLCBhbmQgbm90IG9u
IHRoZSBuYW1lZCBwaXBlcwpAQCAtMTg1LDcgKzE4NCw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mo
b2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CiAgICAgICAgICAgICBzZWxmLl9z
dGFydCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4ud3JpdGUo
ZW5jb2RlX2lmX25lY2Vzc2FyeShieXRlcykpCisgICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGlu
LndyaXRlKHN0cmluZ191dGlscy5lbmNvZGUoYnl0ZXMpKQogICAgICAgICAgICAgc2VsZi5fcHJv
Yy5zdGRpbi5mbHVzaCgpCiAgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgVmFsdWVFcnJvcikgYXMg
ZToKICAgICAgICAgICAgIHNlbGYuc3RvcCgwLjApCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQkocmV2aXNpb24gMjY0OTQz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5n
X3V0aWxzCiAKIAogY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwgZW52PU5vbmUs
IHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hlZD1GYWxzZSwgdGFy
Z2V0X2hvc3Q9Tm9uZSwgY3Jhc2hfbWVzc2FnZT1Ob25lKToKICAgICAgICAgc2VsZi50aW1lZF9v
dXQgPSBGYWxzZQotICAgICAgICBzZWxmLmxpbmVzID0gW2VuY29kZV9pZl9uZWNlc3NhcnkobGlu
ZSkgZm9yIGxpbmUgaW4gKGxpbmVzIG9yIFtdKV0KKyAgICAgICAgc2VsZi5saW5lcyA9IFtzdHJp
bmdfdXRpbHMuZW5jb2RlKGxpbmUpIGZvciBsaW5lIGluIChsaW5lcyBvciBbXSldCiAgICAgICAg
IHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKICAgICAgICAgc2VsZi53cml0ZXMgPSBbXQogICAgICAg
ICBzZWxmLmNtZCA9IGNtZApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJl
dmlzaW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTIgQEAKIAogaW1wb3J0IHRpbWUKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1w
b3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQVUJMSUNfVEFCTEUsIFZl
cnNpb25OYW1lTWFwCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGRlY29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3NhcnkKIAogCiAjIFRoaXMgc2V0cyBi
YXNpYyBleHBlY3RhdGlvbnMgZm9yIGEgdGVzdC4gRWFjaCBpbmRpdmlkdWFsIGV4cGVjdGF0aW9u
CkBAIC00NDIsOCArNDQzLDggQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgIHJldHVy
biAnUmVsZWFzZScKIAogICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRlbnRz
LCBhY3R1YWxfY29udGVudHMsIHRvbGVyYW5jZT1Ob25lKToKLSAgICAgICAgZXhwZWN0ZWRfY29u
dGVudHMgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGV4cGVjdGVkX2NvbnRlbnRzKQotICAgICAgICBh
Y3R1YWxfY29udGVudHMgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGFjdHVhbF9jb250ZW50cykKKyAg
ICAgICAgZXhwZWN0ZWRfY29udGVudHMgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGV4cGVjdGVkX2Nv
bnRlbnRzKQorICAgICAgICBhY3R1YWxfY29udGVudHMgPSBzdHJpbmdfdXRpbHMuZW5jb2RlKGFj
dHVhbF9jb250ZW50cykKICAgICAgICAgZGlmZmVkID0gYWN0dWFsX2NvbnRlbnRzICE9IGV4cGVj
dGVkX2NvbnRlbnRzCiAgICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMgYW5kIG5vdCBleHBl
Y3RlZF9jb250ZW50czoKICAgICAgICAgICAgIHJldHVybiAoTm9uZSwgMCwgTm9uZSkKQEAgLTQ1
Myw4ICs0NTQsOCBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICAgICAgICAgIGFzc2VydCB0
b2xlcmFuY2UgPT0gMAogICAgICAgICBpZiBkaWZmZWQ6CiAgICAgICAgICAgICByZXR1cm4gKCI8
IHt9XG4tLS1cbj4ge31cbiIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGRlY29kZV9mb3IoZXhw
ZWN0ZWRfY29udGVudHMsIHN0ciksCi0gICAgICAgICAgICAgICAgZGVjb2RlX2ZvcihhY3R1YWxf
Y29udGVudHMsIHN0ciksCisgICAgICAgICAgICAgICAgc3RyaW5nX3V0aWxzLmRlY29kZShleHBl
Y3RlZF9jb250ZW50cywgdGFyZ2V0X3R5cGU9c3RyKSwKKyAgICAgICAgICAgICAgICBzdHJpbmdf
dXRpbHMuZGVjb2RlKGFjdHVhbF9jb250ZW50cywgdGFyZ2V0X3R5cGU9c3RyKSwKICAgICAgICAg
ICAgICksIDEsIE5vbmUpCiAgICAgICAgIHJldHVybiAoTm9uZSwgMCwgTm9uZSkKIApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9yZXN1bHRzL3VwbG9hZF91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Jlc3VsdHMvdXBsb2FkX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Jlc3VsdHMvdXBs
b2FkX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQCBpbXBvcnQg
c3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBCeXRlc0lPCisKIGZyb20gd2Via2l0cHkucmVzdWx0cy51cGxvYWQgaW1wb3J0IFVwbG9h
ZAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBtb2NrCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8KIAogaWYgc3lzLnZlcnNp
b25faW5mbyA+ICgzLCAwKToKICAgICBiYXNlc3RyaW5nID0gc3RyCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL3BhdGNocmVhZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHkJKHJldmlzaW9uIDI2NDk0MykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcGF0Y2hyZWFkZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDExICszMSwxMiBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogCitmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmRpZmZfcGFyc2VyIGltcG9ydCBEaWZmUGFyc2VyCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBTQ01EZXRlY3RvcgotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yCiAKIAog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTYsNyArNTcsNyBAQCBjbGFz
cyBQYXRjaFJlYWRlcihvYmplY3QpOgogICAgIGRlZiBjaGVjayhzZWxmLCBwYXRjaF9zdHJpbmcs
IGZzPU5vbmUpOgogICAgICAgICAiIiJDaGVjayBzdHlsZSBpbiB0aGUgZ2l2ZW4gcGF0Y2guIiIi
CiAgICAgICAgIGZzID0gZnMgb3IgRmlsZVN5c3RlbSgpCi0gICAgICAgIHBhdGNoX3N0cmluZyA9
IGRlY29kZV9mb3IocGF0Y2hfc3RyaW5nLCBzdHIpCisgICAgICAgIHBhdGNoX3N0cmluZyA9IHN0
cmluZ191dGlscy5kZWNvZGUocGF0Y2hfc3RyaW5nLCB0YXJnZXRfdHlwZT1zdHIpCiAgICAgICAg
IHBhdGNoX2ZpbGVzID0gRGlmZlBhcnNlcihwYXRjaF9zdHJpbmcuc3BsaXRsaW5lcygpKS5maWxl
cwogCiAgICAgICAgICMgSWYgdGhlIHVzZXIgdXNlcyBnaXQsIGNoZWNraW5nIHN1YnZlcnNpb24g
Y29uZmlnIGZpbGUgb25seSBvbmNlIGlzIGVub3VnaC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTIgKzQzLDEyIEBAIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCByZQog
aW1wb3J0IHN0cmluZwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaWNvZGVkYXRhCiAKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuc3R5bGUuY2hlY2tlcnMu
Y29tbW9uIGltcG9ydCBtYXRjaCwgc2VhcmNoLCBzdWIsIHN1Ym4KIGZyb20gd2Via2l0cHkuY29t
bW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCB1bmljb2RlCiAKICMgVGhlIGtleSB0byB1c2UgdG8gcHJv
dmlkZSBhIGNsYXNzIHRvIGZha2UgbG9hZGluZyBhIGhlYWRlciBmaWxlLgogSU5DTFVERV9JT19J
TkpFQ1RJT05fS0VZID0gJ2luY2x1ZGVfaGVhZGVyX2lvJwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw5IEBAIGltcG9ydCBvcy5w
YXRoCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfaWZfbmVjZXNz
YXJ5CisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKKwogZnJvbSB3ZWJr
aXRweS5zdHlsZS5jaGVja2VycyBpbXBvcnQgY3BwIGFzIGNwcF9zdHlsZQogZnJvbSB3ZWJraXRw
eS5zdHlsZS5jaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIKIGZyb20gd2Via2l0cHkuc3R5
bGUuZmlsdGVyIGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCkBAIC0yNDY1LDcgKzI0NjcsNyBA
QCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIGRlZiBkb190
ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2ludmFsaWRfdXRmOCk6CiAgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydFRydWUpCiAgICAgICAgICAg
ICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9pZl9uZWNlc3NhcnkocmF3X2J5dGVzLCBlbmNv
ZGluZz0ndXRmOCcsIGVycm9ycz0ncmVwbGFjZScpLnNwbGl0KCdcbicpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdXRpbHMuZGVjb2RlKHJhd19ieXRlcywgZW5j
b2Rpbmc9J3V0ZjgnLCBlcnJvcnM9J3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICAgICAgIyBU
aGUgd2FybmluZyBhcHBlYXJzIG9ubHkgb25jZS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5
dGhvbi5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9weXRob24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDkgQEAKIGlt
cG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8K
KwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0
ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3Ry
aW5nSU8KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlU2NvcGUKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1w
b3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQg
aW1wb3J0IHB5Y29kZXN0eWxlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFp
bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQko
cmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDE2ICszNywxNiBAQCBpbXBvcnQgdHJhY2ViYWNrCiBpbXBv
cnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0aWxzIGltcG9y
dCBjb25maWd1cmVfbG9nZ2luZwotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lz
dGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBI
b3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0
cmluZ0lPCiBmcm9tIHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Vi
a2l0cHkudGVzdC5wcmludGVyIGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucnVu
bmVyIGltcG9ydCBSdW5uZXIsIHVuaXRfdGVzdF9uYW1lCiBmcm9tIHdlYmtpdHB5LnJlc3VsdHMu
dXBsb2FkIGltcG9ydCBVcGxvYWQKIGZyb20gd2Via2l0cHkucmVzdWx0cy5vcHRpb25zIGltcG9y
dCB1cGxvYWRfb3B0aW9ucwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KKwog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiBfaG9zdCA9IEhvc3QoKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRl
ci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5w
eQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50
ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIzLDEwIEBACiAKIGltcG9ydCBsb2dnaW5n
CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0cmVhbSBpbXBvcnQgTWV0ZXJlZFN0cmVhbQogZnJvbSB3
ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQogCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDk0
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXJfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDggQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQog
aW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTwor
CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBmcm9tIHdl
YmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1
bm5lciBpbXBvcnQgUnVubmVyCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qvc2tp
cF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qv
c2tpcF91bml0dGVzdC5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90ZXN0L3NraXBfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDgg
QEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0cHkudGVzdC5za2lwIGltcG9ydCBza2lw
X2lmCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFu
ZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19j
b21tYW5kLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2lyY19jb21tYW5kLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIgQEAg
aW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCB1bmljb2RlCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBv
cnQgaXJjIGFzIGNvbmZpZ19pcmMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQg
dXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1p
dHRlckxpc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC53ZWIgaW1wb3J0IFdlYgogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgdW5pY29kZQogZnJv
bSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgVGVybWluYXRlUXVldWUKIGZy
b20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9ycwogZnJv
bSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5n
c3lzdGVtLnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwy
MCArMjksMTcgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKIGZy
b20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiBpbXBvcnQgc3lzCiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Ci1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5jb25maWcucG9ydHMgaW1wb3J0IERlcHJlY2F0ZWRQb3J0Citmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24u
dW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfZm9yCiBmcm9tIHdlYmtpdHB5LnRv
b2wuYm90LmVhcmx5d2FybmluZ3N5c3RlbXRhc2sgaW1wb3J0IEVhcmx5V2FybmluZ1N5c3RlbVRh
c2ssIEVhcmx5V2FybmluZ1N5c3RlbVRhc2tEZWxlZ2F0ZQogZnJvbSB3ZWJraXRweS50b29sLmJv
dC5sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlciBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIK
IGZyb20gd2Via2l0cHkudG9vbC5ib3QuanNjdGVzdHJlc3VsdHNyZWFkZXIgaW1wb3J0IEpTQ1Rl
c3RSZXN1bHRzUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LnBhdGNoYW5hbHlzaXN0YXNr
IGltcG9ydCBVbmFibGVUb0FwcGx5UGF0Y2gsIFBhdGNoSXNOb3RWYWxpZCwgUGF0Y2hJc05vdEFw
cGxpY2FibGUKLWZyb20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFF1ZXVl
RW5naW5lCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVzIGltcG9ydCBBYnN0cmFj
dFJldmlld1F1ZXVlCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTE1
Niw5ICsxNTMsOSBAQCBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjCiAg
ICAgICAgIGNsYXNzZXMgPSBbXQogICAgICAgICBmb3IgbmFtZSwgY29uZmlnIGluIGV3c2VzLml0
ZW1zKCk6CiAgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAgICAg
ICAgICAgICAgIHRyYW5zbGF0ZWQgPSBlbmNvZGVfZm9yKG5hbWUsIHN0cikudHJhbnNsYXRlKCcg
LScpCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IHN0cmluZ191dGlscy5lbmNvZGUobmFt
ZSwgdGFyZ2V0X3R5cGU9c3RyKS50cmFuc2xhdGUoJyAtJykKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IGVuY29kZV9mb3IobmFtZSwgc3RyKS50cmFuc2xh
dGUoTm9uZSwgJyAtJykKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gc3RyaW5nX3V0aWxz
LmVuY29kZShuYW1lLCB0YXJnZXRfdHlwZT1zdHIpLnRyYW5zbGF0ZShOb25lLCAnIC0nKQogCiAg
ICAgICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlKHRyYW5zbGF0ZWQsIChjbHMsKSwgewogICAg
ICAgICAgICAgICAgICduYW1lJzogY29uZmlnLmdldCgnbmFtZScsIGNvbmZpZ1sncG9ydCddICsg
Jy1ld3MnKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1
ZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3F1ZXVlcy5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3F1ZXVlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDE5IEBA
CiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQg
bG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBp
bXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgRGVwcmVjYXRlZFBvcnQKLWZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTwogZnJv
bSB3ZWJraXRweS50b29sLmJvdC5ib3RpbmZvIGltcG9ydCBCb3RJbmZvCi1mcm9tIHdlYmtpdHB5
LnRvb2wuYm90LmZsYWt5dGVzdHJlcG9ydGVyIGltcG9ydCBGbGFreVRlc3RSZXBvcnRlcgotZnJv
bSB3ZWJraXRweS50b29sLmJvdC5sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlciBpbXBvcnQgTGF5b3V0
VGVzdFJlc3VsdHNSZWFkZXIKLWZyb20gd2Via2l0cHkudG9vbC5ib3QucGF0Y2hhbmFseXNpc3Rh
c2sgaW1wb3J0IFVuYWJsZVRvQXBwbHlQYXRjaCwgUGF0Y2hJc05vdFZhbGlkCiBmcm9tIHdlYmtp
dHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBRdWV1ZUVuZ2luZSwgUXVldWVFbmdpbmVE
ZWxlZ2F0ZQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN0ZXBzZXF1ZW5jZSBpbXBvcnQg
U3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyCi1mcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5k
dG9vbCBpbXBvcnQgQ29tbWFuZCwgVHJ5QWdhaW4KK2Zyb20gd2Via2l0cHkudG9vbC5tdWx0aWNv
bW1hbmR0b29sIGltcG9ydCBDb21tYW5kCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMiArMjcsMTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLWltcG9ydCBvcwotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0
IENoZWNrb3V0TmVlZHNVcGRhdGUKLWZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5z
Y21fbW9jayBpbXBvcnQgTW9ja1NDTQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRl
c3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVzdWx0cwotZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRhY2htZW50CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKLWZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5jb21t
YW5kdGVzdCBpbXBvcnQgQ29tbWFuZHNUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMu
cXVldWVzIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVzdGVzdCBp
bXBvcnQgUXVldWVzVGVzdAotZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN0ZXBzZXF1ZW5j
ZSBpbXBvcnQgU3RlcFNlcXVlbmNlCi1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tUb29sLCBNb2NrT3B0aW9ucworZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrVG9vbAogCiAKIGNsYXNzIFRlc3RRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUpOgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvaGFzbGFuZGVkLnB5CShy
ZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvaGFz
bGFuZGVkLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCArMjcsMTMgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRlbXBm
aWxlCiAKLWZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3Ry
YWN0U3RlcAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPCisKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IK
IGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGltcG9ydCBkaWZmX3BhcnNlcgotZnJvbSB3
ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogCiBm
cm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMgaW1wb3J0IGNvbmZpcm1kaWZmCiAKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjQ5NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2NvbnZlcnRlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDExIEBA
IGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHVuaWNvZGUKKwogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9z
dAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1
dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktp
dEZpbmRlcgotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9y
dCB1bmljb2RlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQg
QmVhdXRpZnVsU291cAogZnJvbSB3ZWJraXRweS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IF9X
M0NUZXN0Q29udmVydGVyCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZXhwb3J0ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlci5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9leHBvcnRlci5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDExIEBA
CiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCB0aW1l
CiBpbXBvcnQganNvbgogaW1wb3J0IHN5cwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgc3Ry
aW5nX3V0aWxzCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0
IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYQpAQCAtMzksNyArNDAsNiBAQCBm
cm9tIHdlYmtpdHB5LnczYy53cHRfZ2l0aHViIGltcG9ydCBXUFRHCiBmcm9tIHdlYmtpdHB5Lncz
Yy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKIGZyb20gd2Via2l0cHkudzNjLmNvbW1vbiBp
bXBvcnQgV1BUX0dIX09SRywgV1BUX0dIX1JFUE9fTkFNRSwgV1BUX0dIX1VSTCwgV1BUUGF0aHMK
IGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJr
aXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNz
YXJ5LCBkZWNvZGVfZm9yCiAKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CiAgICAgZnJv
bSB1cmxsaWIuZXJyb3IgaW1wb3J0IEhUVFBFcnJvcgpAQCAtMTYwLDcgKzE2MCw3IEBAIGNsYXNz
IFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBsaW5lLnNw
bGl0KGInICcpWy0xXQogCiAgICAgZGVmIF9pc19pZ25vcmVkX2ZpbGUoc2VsZiwgZmlsZW5hbWUp
OgotICAgICAgICBmaWxlbmFtZSA9IGRlY29kZV9mb3IoZmlsZW5hbWUsIHN0cikKKyAgICAgICAg
ZmlsZW5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGZpbGVuYW1lLCB0YXJnZXRfdHlwZT1zdHIp
CiAgICAgICAgIGZvciBzdWZmaXggaW4gRVhDTFVERURfRklMRV9TVUZGSVhFUzoKICAgICAgICAg
ICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKHN1ZmZpeCk6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFRydWUKQEAgLTE4NSwxMCArMTg1LDEwIEBAIGNsYXNzIFdlYlBsYXRmb3JtVGVzdEV4cG9ydGVy
KG9iamVjdCk6CiAgICAgICAgIF8sIHBhdGNoX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5f
YmluYXJ5X3RlbXBmaWxlKCd3cHRfZXhwb3J0X3BhdGNoJykKICAgICAgICAgcGF0Y2hfZGF0YSA9
IHNlbGYuX3dwdF9wYXRjaAogICAgICAgICBpZiBiJ2RpZmYnIG5vdCBpbiBwYXRjaF9kYXRhOgot
ICAgICAgICAgICAgX2xvZy5pbmZvKCdObyBjaGFuZ2VzIHRvIHVwc3RyZWFtLCBwYXRjaCBkYXRh
IGlzOiAie30iJy5mb3JtYXQoZGVjb2RlX2ZvcihwYXRjaF9kYXRhLCBzdHIpKSkKKyAgICAgICAg
ICAgIF9sb2cuaW5mbygnTm8gY2hhbmdlcyB0byB1cHN0cmVhbSwgcGF0Y2ggZGF0YSBpczogInt9
IicuZm9ybWF0KHN0cmluZ191dGlscy5kZWNvZGUocGF0Y2hfZGF0YSwgdGFyZ2V0X3R5cGU9c3Ry
KSkpCiAgICAgICAgICAgICByZXR1cm4gYicnCiAgICAgICAgICMgRklYTUU6IFdlIGNhbiBwcm9i
YWJseSB0cnkgdG8gdXNlIC0tcmVsYXRpdmUgZ2l0IHBhcmFtZXRlciB0byBub3QgZG8gdGhhdCBy
ZXBsYWNlbWVudC4KLSAgICAgICAgcGF0Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShlbmNv
ZGVfaWZfbmVjZXNzYXJ5KFdFQktJVF9XUFRfRElSKSArIGInLycsIGInJykKKyAgICAgICAgcGF0
Y2hfZGF0YSA9IHBhdGNoX2RhdGEucmVwbGFjZShzdHJpbmdfdXRpbHMuZW5jb2RlKFdFQktJVF9X
UFRfRElSKSArIGInLycsIGInJykKIAogICAgICAgICAjIEZJWE1FOiBTdXBwb3J0IHN0cmlwcGlu
ZyBvZiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciAtLT4gY29tbWVudHMuCiAgICAgICAgIHNlbGYu
aGFzX3dlYmtpdF90ZXN0X3J1bm5lcl9zcGVjaWZpY19jaGFuZ2VzID0gYid3ZWJraXQtdGVzdC1y
dW5uZXInIGluIHBhdGNoX2RhdGEKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dw
dF9naXRodWIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd3B0
X2dpdGh1Yi5weQkocmV2aXNpb24gMjY0OTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2Mvd3B0X2dpdGh1Yi5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDEyIEBAIGltcG9y
dCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCisKIGZyb20gY29s
bGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJp
bmdfdXRpbHMKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVk
CiBmcm9tIHdlYmtpdHB5LnczYy5jb21tb24gaW1wb3J0IFdQVF9HSF9PUkcsIFdQVF9HSF9SRVBP
X05BTUUsIEVYUE9SVF9QUl9MQUJFTAotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21w
YXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCiAKIGlmIHN5
cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CiAgICAgZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IEhU
VFBFcnJvcgpAQCAtNjgsNyArNjksNyBAQCBjbGFzcyBXUFRHaXRIdWIob2JqZWN0KToKIAogICAg
IGRlZiBhdXRoX3Rva2VuKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5oYXNfY3JlZGVudGlh
bHMoKQotICAgICAgICByZXR1cm4gZGVjb2RlX2ZvcihiYXNlNjQuYjY0ZW5jb2RlKGVuY29kZV9p
Zl9uZWNlc3NhcnkoJ3t9Ont9Jy5mb3JtYXQoc2VsZi51c2VyLCBzZWxmLnRva2VuKSkpLCBzdHIp
CisgICAgICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKGJhc2U2NC5iNjRlbmNvZGUoc3Ry
aW5nX3V0aWxzLmVuY29kZSgne306e30nLmZvcm1hdChzZWxmLnVzZXIsIHNlbGYudG9rZW4pKSks
IHRhcmdldF90eXBlPXN0cikKIAogICAgIGRlZiByZXF1ZXN0KHNlbGYsIHBhdGgsIG1ldGhvZCwg
Ym9keT1Ob25lKToKICAgICAgICAgIiIiU2VuZHMgYSByZXF1ZXN0IHRvIEdpdEh1YiBBUEkgYW5k
IGRlc2VyaWFsaXplcyB0aGUgcmVzcG9uc2UuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy93cHRfZ2l0aHViX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3dwdF9naXRodWJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDk0MykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dwdF9naXRodWJfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDkgKzI5LDEwIEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgdW5pdHRl
c3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29k
ZV9mb3IKLWZyb20gd2Via2l0cHkudzNjLndwdF9naXRodWIgaW1wb3J0IFdQVEdpdEh1YiwgTWVy
Z2VFcnJvcgorZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCiAK
IAogY2xhc3MgV1BUR2l0SHViVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00Niw0ICs0Nyw0
IEBAIGNsYXNzIFdQVEdpdEh1YlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X2F1dGhfdG9rZW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAg
ICBzZWxmLndwdF9naXRodWIuYXV0aF90b2tlbigpLAotICAgICAgICAgICAgZGVjb2RlX2Zvcihi
YXNlNjQuZW5jb2Rlc3RyaW5nKGVuY29kZV9pZl9uZWNlc3NhcnkoJ3J1dGFiYWdhOmRlY2FmYmFk
JykpLCBzdHIpLnN0cmlwKCkpCisgICAgICAgICAgICBzdHJpbmdfdXRpbHMuZGVjb2RlKGJhc2U2
NC5lbmNvZGVzdHJpbmcoc3RyaW5nX3V0aWxzLmVuY29kZSgncnV0YWJhZ2E6ZGVjYWZiYWQnKSks
IHRhcmdldF90eXBlPXN0cikuc3RyaXAoKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
eGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NDk0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2Rl
dmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyICsyMywxMSBAQAogaW1wb3J0IGpzb24K
IGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorZnJv
bSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgVmVyc2lvbgogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBv
cnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQogZnJvbSB3ZWJraXRweS54Y29kZS5kZXZp
Y2VfdHlwZSBpbXBvcnQgRGV2aWNlVHlwZQogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11bGF0ZWRf
ZGV2aWNlIGltcG9ydCBEZXZpY2VSZXF1ZXN0LCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLCBTaW11
bGF0ZWREZXZpY2UKIApAQCAtNjUxLDcgKzY1MCw3IEBAIGNsYXNzIFNpbXVsYXRlZERldmljZVRl
c3QodW5pdHRlc3QuVGVzdEMKICAgICAgICAgIyBhcyBkZXRlcm1pbmVkIGZyb20gdGhlIC5qc29u
IG91dHB1dC4KICAgICAgICAgZGV2aWNlX3BsaXN0ID0gZGV2aWNlLmZpbGVzeXN0ZW0uZXhwYW5k
dXNlcihkZXZpY2UuZmlsZXN5c3RlbS5qb2luKFNpbXVsYXRlZERldmljZU1hbmFnZXIuc2ltdWxh
dG9yX2RldmljZV9wYXRoLCBkZXZpY2UudWRpZCwgJ2RldmljZS5wbGlzdCcpKQogICAgICAgICBp
bmRleF9wb3NpdGlvbiA9IGRldmljZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF0uaW5k
ZXgoYic8L2ludGVnZXI+JykgLSAxCi0gICAgICAgIGRldmljZS5maWxlc3lzdGVtLmZpbGVzW2Rl
dmljZV9wbGlzdF0gPSBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxpc3RdWzppbmRl
eF9wb3NpdGlvbl0gKyBlbmNvZGVfaWZfbmVjZXNzYXJ5KHN0cihzdGF0ZSkpICsgZGV2aWNlLmZp
bGVzeXN0ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XVtpbmRleF9wb3NpdGlvbiArIDE6XQorICAgICAg
ICBkZXZpY2UuZmlsZXN5c3RlbS5maWxlc1tkZXZpY2VfcGxpc3RdID0gZGV2aWNlLmZpbGVzeXN0
ZW0uZmlsZXNbZGV2aWNlX3BsaXN0XVs6aW5kZXhfcG9zaXRpb25dICsgc3RyaW5nX3V0aWxzLmVu
Y29kZShzdHIoc3RhdGUpKSArIGRldmljZS5maWxlc3lzdGVtLmZpbGVzW2RldmljZV9wbGlzdF1b
aW5kZXhfcG9zaXRpb24gKyAxOl0KIAogICAgIGRlZiB0ZXN0X3N3YXBwaW5nX2RldmljZXMoc2Vs
Zik6CiAgICAgICAgIFNpbXVsYXRlZERldmljZVRlc3QucmVzZXRfc2ltdWxhdGVkX2RldmljZV9t
YW5hZ2VyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405318</attachid>
            <date>2020-07-27 15:35:34 -0700</date>
            <delta_ts>2020-07-28 07:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214405-20200727153533.patch</filename>
            <type>text/plain</type>
            <size>3993</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDk0OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA3LTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc3RyaW5nX3V0aWxzIChQYXJ0IDMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0LXBhdGNoOgorICAgICAgICAoRm9yZ2l2aW5nVVRGOFdyaXRlci53cml0ZSk6IFJlcGxh
Y2UgdW5pY29kZV9jb21wYXRpYmlsaXR5IHdpdGggc3RyaW5nX3V0aWxzLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3VuaWNvZGVfY29tcGF0aWJpbGl0eS5weTogUmVtb3ZlZC4K
KwogMjAyMC0wNy0yNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW3dlYmtpdGNvcmVweV0gQWRkIHN0cmluZ191dGlscyAoUGFydCAyKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXQtcGF0Y2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXQtcGF0Y2gJKHJldmlzaW9uIDI2NDk0OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNo
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIGltcG9ydCBzeXMKIGltcG9ydCBjb2Rl
Y3MKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBjb25maWd1
cmVfbG9nZ2luZwotZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBkZWNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCiBmcm9tIHdlYmtpdHB5LnRvb2wubWFp
biBpbXBvcnQgV2ViS2l0UGF0Y2gKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRp
bHMsIHVuaWNvZGUKIAogIyBJZiBvdXIgc3RyIHR5cGUgaXNuJ3QgdW5pY29kZSwgd2UgbmVlZCB0
byBzdGFuZGFyZGl6ZSBvdXRwdXQgZm9ybWF0CiBpZiBzdHIgIT0gdW5pY29kZToKQEAgLTUzLDcg
KzUzLDcgQEAgaWYgc3RyICE9IHVuaWNvZGU6CiAgICAgIyBpbnB1dCB0aGF0IGl0IGNhbiBoYW5k
bGUuCiAgICAgY2xhc3MgRm9yZ2l2aW5nVVRGOFdyaXRlcihjb2RlY3MubG9va3VwKCd1dGYtOCcp
Wy0xXSk6CiAgICAgICAgIGRlZiB3cml0ZShzZWxmLCB2YWx1ZSk6Ci0gICAgICAgICAgICByZXR1
cm4gY29kZWNzLlN0cmVhbVdyaXRlci53cml0ZShzZWxmLCBkZWNvZGVfaWZfbmVjZXNzYXJ5KHZh
bHVlKSkKKyAgICAgICAgICAgIHJldHVybiBjb2RlY3MuU3RyZWFtV3JpdGVyLndyaXRlKHNlbGYs
IHN0cmluZ191dGlscy5kZWNvZGUodmFsdWUsIHRhcmdldF90eXBlPXN0cikpCiAKICAgICAjIEJ5
IGRlZmF1bHQsIHN5cy5zdGRvdXQgYXNzdW1lcyBhc2NpaSBlbmNvZGluZy4gIFNpbmNlIG91ciBt
ZXNzYWdlcyBjYW4KICAgICAjIGNvbnRhaW4gdW5pY29kZSBzdHJpbmdzIChhcyB3aXRoIHNvbWUg
cGVvcGxlcycgbmFtZXMpIHdlIG5lZWQgdG8gYXBwbHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3VuaWNvZGVfY29tcGF0aWJpbGl0eS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi91bmljb2RlX2NvbXBhdGliaWxpdHkucHkJKHJldmlz
aW9uIDI2NDk0OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3VuaWNvZGVfY29t
cGF0aWJpbGl0eS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM4ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgVW5pY29kZUlPLCBTdHJpbmdJTywgQnl0ZXNJTywgdW5pY29kZSwgc3RyaW5nX3V0aWxzCi0K
LWRlZiBlbmNvZGVfaWZfbmVjZXNzYXJ5KHZhbHVlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9
J3N0cmljdCcpOgotICAgIHJldHVybiBzdHJpbmdfdXRpbHMuZW5jb2RlKHZhbHVlLCBlbmNvZGlu
Zz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKLQotCi1kZWYgZW5jb2RlX2Zvcih2YWx1ZSwgdGFy
Z2V0X3R5cGUsICoqa3dhcmdzKToKLSAgICByZXR1cm4gc3RyaW5nX3V0aWxzLmVuY29kZSh2YWx1
ZSwgdGFyZ2V0X3R5cGU9dGFyZ2V0X3R5cGUsICoqa3dhcmdzKQotCi0KLWRlZiBkZWNvZGVfaWZf
bmVjZXNzYXJ5KHZhbHVlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgotICAg
IHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKHZhbHVlLCBlbmNvZGluZz1lbmNvZGluZywgZXJy
b3JzPWVycm9ycykKLQotCi1kZWYgZGVjb2RlX2Zvcih2YWx1ZSwgdGFyZ2V0X3R5cGUpOgotICAg
IHJldHVybiBzdHJpbmdfdXRpbHMuZGVjb2RlKHZhbHVlLCB0YXJnZXRfdHlwZT10YXJnZXRfdHlw
ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>