<?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>214309</bug_id>
          
          <creation_ts>2020-07-14 11:22:33 -0700</creation_ts>
          <short_desc>[webkitcorepy] Spin off general webkitpy tools into a pip module</short_desc>
          <delta_ts>2020-07-15 14:40:17 -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>alancoon</cc>
    
    <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>hysu</cc>
    
    <cc>jlewis3</cc>
    
    <cc>kocsen_chung</cc>
    
    <cc>pnormand</cc>
    
    <cc>repstein</cc>
    
    <cc>ross.kirsling</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>1671446</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-14 11:22:33 -0700</bug_when>
    <thetext>This bug is intended as the start of a discussion on how to better organize our Python tooling so that it&apos;s 1) more re-usable (particularly relevant for services) 2) better tested 3) less coupled to WebKit&apos;s specific development quirks.

Eventually, the intention is to break off many more parts of webkitpy into this, or other, modules until webkitpy only contains code specific to developing WebKit within the WebKit checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671456</commentid>
    <comment_count>1</comment_count>
      <attachid>404258</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-14 11:43:02 -0700</bug_when>
    <thetext>Created attachment 404258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671847</commentid>
    <comment_count>2</comment_count>
      <attachid>404258</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-15 11:46:15 -0700</bug_when>
    <thetext>Comment on attachment 404258
Patch

The consensus I&apos;ve heard so far is that this is the right direction.

Obviously a single class is insufficient for a library, but I think that doing this piece-by-piece will result in cleaner SCM history as well as more thorough code review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671867</commentid>
    <comment_count>3</comment_count>
      <attachid>404258</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-07-15 12:25:25 -0700</bug_when>
    <thetext>Comment on attachment 404258
Patch

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

&gt; Tools/Scripts/webkitpy/port/win.py:-40
&gt; -from webkitpy.common.system.executive import Executive

Do we intentionally remove this? If so, maybe we should mention it in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671870</commentid>
    <comment_count>4</comment_count>
      <attachid>404258</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-15 12:37:14 -0700</bug_when>
    <thetext>Comment on attachment 404258
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:-40
&gt;&gt; -from webkitpy.common.system.executive import Executive
&gt; 
&gt; Do we intentionally remove this? If so, maybe we should mention it in the change log.

This was intentional, I have an IDE configured and removed unused imports. I&apos;ll update changelogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671871</commentid>
    <comment_count>5</comment_count>
      <attachid>404258</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-07-15 12:37:57 -0700</bug_when>
    <thetext>Comment on attachment 404258
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/port/win.py:-40
&gt;&gt;&gt; -from webkitpy.common.system.executive import Executive
&gt;&gt; 
&gt;&gt; Do we intentionally remove this? If so, maybe we should mention it in the change log.
&gt; 
&gt; This was intentional, I have an IDE configured and removed unused imports. I&apos;ll update changelogs.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671878</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-15 12:57:14 -0700</bug_when>
    <thetext>pip? Do you plan to add the such modules into PyPI? And, use them by auto-installing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671918</commentid>
    <comment_count>7</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-15 13:53:21 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #6)
&gt; pip? Do you plan to add the such modules into PyPI? And, use them by
&gt; auto-installing?

We definitely are going to be adding these to a package index, not clear yet if we want to add them to the globally accessible one. (Apple has a private package index which we prefer over the global one, but other organizations developing WebKit may want to install these packages, which would likely push us to add them to the global package index)

As for auto-installing, yes, but not for WebKit development from the WebKit repository. That should remain unchanged because it&apos;s useful to pair WebKit changes with script changes. The use case for auto-installing our own packages that I had in mind is the various Python services we host (which don&apos;t share a ton of code at the moment)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671929</commentid>
    <comment_count>8</comment_count>
      <attachid>404392</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-15 14:11:52 -0700</bug_when>
    <thetext>Created attachment 404392
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671946</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-15 14:39:37 -0700</bug_when>
    <thetext>Committed r264425: &lt;https://trac.webkit.org/changeset/264425&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404392.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671947</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-15 14:40:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/65627721&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404258</attachid>
            <date>2020-07-14 11:43:02 -0700</date>
            <delta_ts>2020-07-15 14:11:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214309-20200714114301.patch</filename>
            <type>text/plain</type>
            <size>54485</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDM1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU2IEBACisyMDIwLTA3LTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBTcGluIG9mZiBnZW5lcmFsIHdlYmtpdHB5IHRv
b2xzIGludG8gYSBwaXAgbW9kdWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTQzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzOiBBZGRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS9NQU5JRkVTVC5pbjogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5tZDogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5OiBBZGRlZC4KKyAgICAgICAgKHJl
YWRtZSk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0czogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9fX2luaXRfXy5w
eTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS90ZXN0cy92ZXJzaW9uX3VuaXR0ZXN0LnB5OiBNb3ZlZCBmcm9tCisgICAgICAgIHdl
YmtpdHB5L2NvbW1vbi92ZXJzaW9uX3VuaXR0ZXN0LnB5LgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdmVyc2lvbi5weTogQWRkZWQuCisgICAg
ICAgIChWZXJzaW9uKTogTW92ZWQgZnJvbSB3ZWJraXRweS9jb21tb24vdmVyc2lvbi5weS4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L19faW5pdF9fLnB5OiBJbmNsdWRlIHdlYmtpdGNvcmVw
eSBvbiBpbXBvcnQgcGF0aC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVc2UgVmVyc2lvbiBmcm9tIHdlYmtpdGNvcmVweS4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5OiBE
aXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1p
bmZvLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
cGxhdGZvcm1pbmZvX21vY2sucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3ZlcnNpb24ucHk6IERpdHRvLgorICAgICAgICAoVmVyc2lvbik6IE1vdmVkIHRvIHdl
YmtpdGNvcmVweS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25h
bWVfbWFwLnB5OiBVc2UgVmVyc2lvbiBmcm9tIHdlYmtpdGNvcmVweS4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25hbWVfbWFwX3VuaXR0ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX3VuaXR0ZXN0LnB5OiBN
b3ZlZCB0byB3ZWJraXRjb3JlcHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Zh
Y3RvcnlfdW5pdHRlc3QucHk6IFVzZSBWZXJzaW9uIGZyb20gd2Via2l0Y29yZXB5LgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZV91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3IucHk6IERpdHRvLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3Rlc3RjYXNlLnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2gucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC93YXRjaF9kZXZpY2UucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC93YXRjaF9zaW11bGF0b3IucHk6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC93YXRjaF9zaW11bGF0b3JfdW5pdHRlc3QucHk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93YXRjaF90ZXN0Y2FzZS5weTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6CisgICAgICAgIChtYWluKTogSW5jbHVk
ZSB3ZWJraXRjb3JlcHkgdGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS94Y29kZS9k
ZXZpY2VfdHlwZV91bml0dGVzdC5weTogVXNlIFZlcnNpb24gZnJvbSB3ZWJraXRjb3JlcHkuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5OiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5p
dHRlc3QucHk6IERpdHRvLgorCiAyMDIwLTA3LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgaU9TIF0gaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLWJhc2ljLWZ1bmN0aW9uYWxp
dHktZGF0YWJhc2UuaHRtbCBpcyBhIHJhcmUgZmxha3kgZmFpbHVyZQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L01BTklGRVNULmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9NQU5JRkVTVC5pbgkobm9uZXhpc3Rl
bnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvTUFOSUZFU1QuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAoraW5jbHVkZSBSRUFETUUubWQKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L1JFQURNRS5tZAkobm9uZXhp
c3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvUkVBRE1FLm1k
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKyMgd2Via2l0Y29yZXB5CisKK1Byb3Zp
ZGVzIGEgbnVtYmVyIG9mIHV0aWxpdGllcyBpbnRlbmRlZCB0byBzdXBwb3J0IGludGVybWVkaWF0
ZSB0byBhZHZhbmNlZCBQeXRob24gcHJvZ3JhbW1pbmcuCisKKworIyMgVXNhZ2UKKworVmVyc2lv
biByZXByZXNlbnRhdGlvbgorYGBgCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgor
dmVyc2lvbiA9IFZlcnNpb24oMSwgMiwgMykKK2BgYApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgdmVyc2lvbgorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1
cAorCisKK2RlZiByZWFkbWUoKToKKyAgICB3aXRoIG9wZW4oJ1JFQURNRS5tZCcpIGFzIGY6Cisg
ICAgICAgIHJldHVybiBmLnJlYWQoKQorCisKK3NldHVwKAorICAgIG5hbWU9J3dlYmtpdGNvcmVw
eScsCisgICAgdmVyc2lvbj1zdHIodmVyc2lvbiksCisgICAgZGVzY3JpcHRpb249J0xpYnJhcnkg
Y29udGFpbmluZyB2YXJpb3VzIFB5dGhvbiBzdXBwb3J0IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4n
LAorICAgIGxvbmdfZGVzY3JpcHRpb249cmVhZG1lKCksCisgICAgY2xhc3NpZmllcnM9WworICAg
ICAgICAnRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJsZScsCisgICAg
ICAgICdJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywKKyAgICAgICAgJ0xpY2Vuc2Ug
OjogT3RoZXIvUHJvcHJpZXRhcnkgTGljZW5zZScsCisgICAgICAgICdPcGVyYXRpbmcgU3lzdGVt
IDo6IE1hY09TJywKKyAgICAgICAgJ05hdHVyYWwgTGFuZ3VhZ2UgOjogRW5nbGlzaCcsCisgICAg
ICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMycsCisgICAgICAgICdUb3Bp
YyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMn
LAorICAgIF0sCisgICAga2V5d29yZHM9J3B5dGhvbiB1bmljb2RlJywKKyAgICB1cmw9J2h0dHBz
Oi8vZ2l0aHViLnBpZS5hcHBsZS5jb20nLAorICAgIGF1dGhvcj0nSm9uYXRoYW4gQmVkYXJkJywK
KyAgICBhdXRob3JfZW1haWw9J2piZWRhcmRAYXBwbGUuY29tJywKKyAgICBsaWNlbnNlPSdNb2Rp
ZmllZCBCU0QnLAorICAgIHBhY2thZ2VzPVsnd2Via2l0Y29yZXB5J10sCisgICAgaW5zdGFsbF9y
ZXF1aXJlcz1bCisgICAgICAgICdtb2NrJywKKyAgICAgICAgJ3JlcXVlc3RzJywKKyAgICBdLAor
ICAgIGluY2x1ZGVfcGFja2FnZV9kYXRhPVRydWUsCisgICAgemlwX3NhZmU9RmFsc2UsCispCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19f
aW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2Zyb20gd2Via2l0Y29yZXB5LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KK3ZlcnNp
b24gPSBWZXJzaW9uKDAsIDAsIDEpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3ZlcnNpb24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS92ZXJzaW9uLnB5CShub25l
eGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvdmVyc2lvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9y
dCByZQorCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgdG90YWxfb3JkZXJpbmcKKworCitjbGFzcyBW
ZXJzaW9uKG9iamVjdCk6CisgICAgTUFUQ0hFU19SRSA9IHJlLmNvbXBpbGUocicoP1A8b3BlcmF0
b3I+PT18IT18Pnw8fD49fDw9KT8oP1A8dmVyc2lvbj5cZCsoXC5cZCspPyhcLlxkKyk/KFwuXCop
PyknKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tX3N0cmluZyhzdHJpbmcpOgor
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzdHJpbmcsIHN0cikgb3IgaXNpbnN0YW5jZShzdHJp
bmcsIHVuaWNvZGUpCisgICAgICAgIHJldHVybiBWZXJzaW9uLmZyb21faXRlcmFibGUoc3RyaW5n
LnNwbGl0KCcuJykpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZyb21faXRlcmFibGUo
dmFsKToKKyAgICAgICAgcmVzdWx0ID0gVmVyc2lvbigpCisgICAgICAgIGZvciBpIGluIHJhbmdl
KGxlbih2YWwpKToKKyAgICAgICAgICAgIHJlc3VsdFtpXSA9IGludCh2YWxbaV0pCisgICAgICAg
IHJldHVybiByZXN1bHQKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbV9uYW1lKG5h
bWUpOgorICAgICAgICBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9y
dCBWZXJzaW9uTmFtZU1hcAorICAgICAgICByZXR1cm4gVmVyc2lvbk5hbWVNYXAubWFwKCkuZnJv
bV9uYW1lKG5hbWUpWzFdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFqb3I9MCwgbWlub3I9
MCwgdGlueT0wLCBtaWNybz0wLCBuYW5vPTApOgorICAgICAgICBzZWxmLm1ham9yID0gaW50KG1h
am9yKQorICAgICAgICBzZWxmLm1pbm9yID0gaW50KG1pbm9yKQorICAgICAgICBzZWxmLnRpbnkg
PSBpbnQodGlueSkKKyAgICAgICAgc2VsZi5taWNybyA9IGludChtaWNybykKKyAgICAgICAgc2Vs
Zi5uYW5vID0gaW50KG5hbm8pCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIDUKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICBpZiBpc2lu
c3RhbmNlKGtleSwgaW50KToKKyAgICAgICAgICAgIGlmIGtleSA9PSAwOgorICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLm1ham9yCisgICAgICAgICAgICBlbGlmIGtleSA9PSAxOgorICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLm1pbm9yCisgICAgICAgICAgICBlbGlmIGtleSA9PSAyOgor
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRpbnkKKyAgICAgICAgICAgIGVsaWYga2V5ID09
IDM6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWljcm8KKyAgICAgICAgICAgIGVsaWYg
a2V5ID09IDQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFubworICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignVmVyc2lvbiBrZXkgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDQnKQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgorICAgICAgICAgICAgaWYgaGFzYXR0
cihzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIGtleSkK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1ZlcnNpb24ga2V5IG11c3QgYmUgbWFqb3Is
IG1pbm9yLCB0aW55LCBtaWNybyBvciBuYW5vJykKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
RXhwZWN0ZWQgdmVyc2lvbiBrZXkgdG8gYmUgc3RyaW5nIG9yIGludGVnZXInKQorCisgICAgZGVm
IF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGtl
eSwgaW50KToKKyAgICAgICAgICAgIGlmIGtleSA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYu
bWFqb3IgPSBpbnQodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWFqb3IKKyAg
ICAgICAgICAgIGVsaWYga2V5ID09IDE6CisgICAgICAgICAgICAgICAgc2VsZi5taW5vciA9IGlu
dCh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5taW5vcgorICAgICAgICAgICAg
ZWxpZiBrZXkgPT0gMjoKKyAgICAgICAgICAgICAgICBzZWxmLnRpbnkgPSBpbnQodmFsdWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGlueQorICAgICAgICAgICAgZWxpZiBrZXkgPT0g
MzoKKyAgICAgICAgICAgICAgICBzZWxmLm1pY3JvID0gaW50KHZhbHVlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLm1pY3JvCisgICAgICAgICAgICBlbGlmIGtleSA9PSA0OgorICAgICAg
ICAgICAgICAgIHNlbGYubmFubyA9IGludCh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c2VsZi5uYW5vCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWZXJzaW9uIGtleSBtdXN0
IGJlIGJldHdlZW4gMCBhbmQgNCcpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShrZXksIHN0cik6
CisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ1ZlcnNpb24ga2V5IG11c3QgYmUgbWFqb3IsIG1pbm9yLCB0aW55LCBtaWNybyBvciBuYW5v
JykKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgdmVyc2lvbiBrZXkgdG8gYmUg
c3RyaW5nIG9yIGludGVnZXInKQorCisgICAgZGVmIG1hdGNoZXMoc2VsZiwgZXhwcmVzc2lvbnMp
OgorICAgICAgICBkb2VzX21hdGNoID0gTm9uZQorICAgICAgICBmb3IgZXhwcmVzc2lvbiBpbiBl
eHByZXNzaW9ucy5zcGxpdCgnLCcpOgorICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLk1BVENIRVNf
UkUuc2VhcmNoKGV4cHJlc3Npb24pCisgICAgICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG9wZXJhdG9yID0gbWF0Y2guZ3JvdXAoJ29w
ZXJhdG9yJykgb3IgJz09JworICAgICAgICAgICAgaWYgb3BlcmF0b3IgaW4gWyc9PScsICchPSdd
OgorICAgICAgICAgICAgICAgIHZlcnNpb25fbWF0Y2ggPSBUcnVlCisgICAgICAgICAgICAgICAg
c3BsaXQgPSBtYXRjaC5ncm91cCgndmVyc2lvbicpLnNwbGl0KCcuJykKKyAgICAgICAgICAgICAg
ICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKHNwbGl0KSk6CisgICAgICAgICAgICAgICAgICAgIGlm
ICcqJyA9PSBzcGxpdFtpbmRleF06CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgICAgICAgICBpZiBzdHIoc2VsZltpbmRleF0pICE9IHNwbGl0W2luZGV4XToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fbWF0Y2ggPSBGYWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAgIGlmIG9wZXJhdG9yID09ICc9
PSc6CisgICAgICAgICAgICAgICAgICAgIGRvZXNfbWF0Y2ggPSAoZG9lc19tYXRjaCBvciBGYWxz
ZSkgfCB2ZXJzaW9uX21hdGNoCisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbl9tYXRjaCBhbmQg
b3BlcmF0b3IgPT0gJyE9JzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdmVyc2lvbiA9IHNlbGYuZnJvbV9z
dHJpbmcobWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKS5yZXBsYWNlKCcqJywgJzAnKSkKKyAgICAgICAg
ICAgIGRvZXNfbWF0Y2ggPSAoZG9lc19tYXRjaCBvciBGYWxzZSkgfCB7CisgICAgICAgICAgICAg
ICAgJz4nOiBsYW1iZGEgYSwgYjogYSA+IGIsCisgICAgICAgICAgICAgICAgJzwnOiBsYW1iZGEg
YSwgYjogYSA8IGIsCisgICAgICAgICAgICAgICAgJz49JzogbGFtYmRhIGEsIGI6IGEgPj0gYiwK
KyAgICAgICAgICAgICAgICAnPD0nOiBsYW1iZGEgYSwgYjogYSA8PSBiLAorICAgICAgICAgICAg
fVtvcGVyYXRvcl0oc2VsZiwgdmVyc2lvbikKKworICAgICAgICByZXR1cm4gVHJ1ZSBpZiBkb2Vz
X21hdGNoIGlzIE5vbmUgZWxzZSBkb2VzX21hdGNoCisKKyAgICAjIDExLjIgaXMgaW4gMTEsIGJ1
dCAxMSBpcyBub3QgaW4gMTEuMgorICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmVyc2lvbik6
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHZlcnNpb24sIFZlcnNpb24pCisgICAgICAgIGRv
ZXNfbWF0Y2ggPSBUcnVlCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbih2ZXJzaW9uKSk6Cisg
ICAgICAgICAgICBpZiBzZWxmW2ldICE9IHZlcnNpb25baV06CisgICAgICAgICAgICAgICAgZG9l
c19tYXRjaCA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3QgZG9lc19tYXRjaCBhbmQgc2VsZltp
XSAhPSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1
ZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZW5fdG9fcHJpbnQgPSAxCisg
ICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzZWxmKSk6CisgICAgICAgICAgICBpZiBzZWxmW2ld
OgorICAgICAgICAgICAgICAgIGxlbl90b19wcmludCA9IGkgKyAxCisgICAgICAgIHJlc3VsdCA9
IHN0cihzZWxmLm1ham9yKQorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW5fdG9fcHJpbnQgLSAx
KToKKyAgICAgICAgICAgIHJlc3VsdCArPSAnLnt9Jy5mb3JtYXQoc2VsZltpICsgMV0pCisgICAg
ICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmVz
dWx0ID0gMAorICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKHNlbGYpKToKKyAgICAgICAg
ICAgIHJlc3VsdCAqPSAxMDAwCisgICAgICAgICAgICByZXN1bHQgKz0gc2VsZltpbmRleF0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgorICAg
ICAgICBpZiBvdGhlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZm9y
IGkgaW4gcmFuZ2UobGVuKHNlbGYpKToKKyAgICAgICAgICAgIGRpZmYgPSBzZWxmW2ldIC0gb3Ro
ZXJbaV0KKyAgICAgICAgICAgIGlmIGRpZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRpZmYK
KyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA9PSAwCisKKyAgICBkZWYgX19uZV9fKHNlbGYs
IG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgIT0gMAorCisgICAg
ZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3Ro
ZXIpIDwgMAorCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9fY21wX18ob3RoZXIpIDw9IDAKKworICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA+IDAKKworICAgIGRlZiBfX2dlX18o
c2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90aGVyKSA+PSAwCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rl
c3RzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0
cy9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACisjIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3ZlcnNpb25fdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS90ZXN0cy92ZXJzaW9uX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdmVyc2lvbl91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1NCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFZlcnNpb24KKworCitjbGFzcyBWZXJzaW9uVGVzdENhc2UodW5pdHRlc3QuVGVz
dENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RyaW5nX2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAg
ICB2ID0gVmVyc2lvbi5mcm9tX3N0cmluZygnMS4yLjMuNC41JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2Lm1ham9yLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWlub3IsIDIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50aW55LCAzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHYubWljcm8sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5uYW5vLCA1KQor
CisgICAgZGVmIHRlc3RfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICB2ID0gVmVyc2lvbi5mcm9t
X2l0ZXJhYmxlKFsxLCAyLCAzLCA0LCA1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1h
am9yLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWlub3IsIDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodi50aW55LCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWlj
cm8sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5uYW5vLCA1KQorCisgICAgZGVmIHRl
c3RfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgdiA9IHYgPSBWZXJzaW9uLmZyb21faXRlcmFi
bGUoKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWFqb3IsIDEpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taW5vciwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh2LnRpbnksIDMpCisKKyAgICBkZWYgdGVzdF9pbnRfY29uc3RydWN0b3Ioc2VsZik6CisgICAg
ICAgIHYgPSBWZXJzaW9uKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5tYWpvciwgMSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pbm9yLCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHYudGlueSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pY3JvLCAwKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubmFubywgMCkKKworICAgIGRlZiB0ZXN0X2xlbihz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oVmVyc2lvbigxLCAyLCAzLCA0LCA1
KSksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFZlcnNpb24oKSksIDUpCisKKyAg
ICBkZWYgdGVzdF9zZXRfYnlfaW50KHNlbGYpOgorICAgICAgICB2ID0gVmVyc2lvbigpCisgICAg
ICAgIHZbMF0gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5tYWpvciwgMSkKKyAgICAg
ICAgdlsxXSA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pbm9yLCAyKQorICAgICAg
ICB2WzJdID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudGlueSwgMykKKyAgICAgICAg
dlszXSA9IDQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pY3JvLCA0KQorICAgICAgICB2
WzRdID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubmFubywgNSkKKworICAgIGRlZiB0
ZXN0X3NldF9ieV9zdHJpbmcoc2VsZik6CisgICAgICAgIHYgPSBWZXJzaW9uKCkKKyAgICAgICAg
dlsnbWFqb3InXSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1ham9yLCAxKQorICAg
ICAgICB2WydtaW5vciddID0gMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWlub3IsIDIp
CisgICAgICAgIHZbJ3RpbnknXSA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRpbnks
IDMpCisgICAgICAgIHZbJ21pY3JvJ10gPSA0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5t
aWNybywgNCkKKyAgICAgICAgdlsnbmFubyddID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHYubmFubywgNSkKKworICAgIGRlZiB0ZXN0X2dldF9ieV9pbnQoc2VsZik6CisgICAgICAgIHYg
PSBWZXJzaW9uKDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlswXSwg
di5tYWpvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2WzFdLCB2Lm1pbm9yKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHZbMl0sIHYudGlueSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh2WzNdLCB2Lm1pY3JvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbNF0sIHYubmFubykK
KworICAgIGRlZiB0ZXN0X2dldF9ieV9zdHJpbmcoc2VsZik6CisgICAgICAgIHYgPSBWZXJzaW9u
KDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsnbWFqb3InXSwgdi5t
YWpvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2WydtaW5vciddLCB2Lm1pbm9yKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHZbJ3RpbnknXSwgdi50aW55KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHZbJ21pY3JvJ10sIHYubWljcm8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dlsnbmFubyddLCB2Lm5hbm8pCisKKyAgICBkZWYgdGVzdF9zdHJpbmcoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFZlcnNpb24oMSwgMiwgMykpLCAnMS4yLjMnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihWZXJzaW9uKDEsIDIsIDApKSwgJzEuMicpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFZlcnNpb24oMSwgMikpLCAnMS4yJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIoVmVyc2lvbigwLCAwLCAzKSksICcwLjAuMycpCisKKyAgICBkZWYg
dGVzdF9jb250YWluZWRfaW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9u
KDExLCAxKSBpbiBWZXJzaW9uKDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24o
MTEsIDEsIDIpIGluIFZlcnNpb24oMTEsIDEpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFZl
cnNpb24oMTEpIGluIFZlcnNpb24oMTEsIDEpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFZl
cnNpb24oMTEpIGluIFZlcnNpb24oMTEsIDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KFZlcnNpb24oMTEsIDEpIGluIFZlcnNpb24oMTEsIDEsIDIpKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoVmVyc2lvbigxMSkgaW4gVmVyc2lvbigxMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShWZXJzaW9uKDExLCAxKSBpbiBWZXJzaW9uKDExLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKFZlcnNpb24oMTEsIDEsIDIpIGluIFZlcnNpb24oMTEsIDEsIDIpKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoVmVyc2lvbigxMSkgaW4gVmVyc2lvbigxMSwgMCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAwKSBpbiBWZXJzaW9uKDExKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKFZlcnNpb24oMTEpIGluIFZlcnNpb24oMTEsIDAsIDApKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoVmVyc2lvbigxMSwgMCwgMCkgaW4gVmVyc2lvbigxMSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAxKSBpbiBWZXJzaW9uKDExLCAxLCAwKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDEsIDApIGluIFZlcnNpb24oMTEsIDEpKQor
CisgICAgZGVmIHRlc3RfY29tcGFyZV92ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChWZXJzaW9uKDEsIDIsIDMpLCBWZXJzaW9uKDEsIDIsIDMpKQorICAgICAgICBzZWxm
LmFzc2VydEdyZWF0ZXIoVmVyc2lvbigxLCAyLCA0KSwgVmVyc2lvbigxLCAyLCAzKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRHcmVhdGVyKFZlcnNpb24oMSwgMywgMiksIFZlcnNpb24oMSwgMiwgMykp
CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihWZXJzaW9uKDIsIDEsIDEpLCBWZXJzaW9uKDEs
IDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFZlcnNpb24oMSwgMiwgMyksIE5v
bmUpCisKKyAgICBkZWYgdGVzdF9tYXRjaGVzKHNlbGYpOgorICAgICAgICB2ZXJzaW9uID0gVmVy
c2lvbigxLCAyLCAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc2lvbi5tYXRjaGVzKCcn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnNpb24ubWF0Y2hlcygnMS4qJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UodmVyc2lvbi5tYXRjaGVzKCcyLionKSkKKworICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHZlcnNpb24ubWF0Y2hlcygnIT0xLionKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHZlcnNpb24ubWF0Y2hlcygnIT0yLionKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dFRydWUodmVyc2lvbi5tYXRjaGVzKCc8PTInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2
ZXJzaW9uLm1hdGNoZXMoJzw9MScpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzaW9u
Lm1hdGNoZXMoJzwxLjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2ZXJzaW9uLm1hdGNo
ZXMoJzwxLjInKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc2lvbi5tYXRjaGVzKCc+
PTEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2ZXJzaW9uLm1hdGNoZXMoJz49MicpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzaW9uLm1hdGNoZXMoJz4xLjInKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZSh2ZXJzaW9uLm1hdGNoZXMoJz4xLjMnKSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMTEsMyArMTEsOSBAQAog
IyBjb2RlIGluIHRoaXMgZmlsZSBzbyB0aGF0IGNhbGxlcnMgY2FuIG9wdC1pbiBhcyB0aGV5IHdh
bnQuICBUaGlzIGFsc28KICMgYWxsb3dzIGRpZmZlcmVudCBjYWxsZXJzIHRvIGNob29zZSBkaWZm
ZXJlbnQgaW5pdGlhbGl6YXRpb24gY29kZSwKICMgYXMgbmVjZXNzYXJ5LgorCitpbXBvcnQgb3MK
K2ltcG9ydCBzeXMKKworbGlicmFyaWVzID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpLCAnbGlicmFyaWVzJykK
K3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4obGlicmFyaWVzLCAnd2Via2l0Y29yZXB5
JykpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHkJKHJldmlz
aW9uIDI2NDM1NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIwLDEyOCArMjAsNCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci1pbXBvcnQgY29sbGVjdGlvbnMKLQotCi1jbGFzcyBWZXJzaW9uKG9iamVjdCk6Ci0KLSAgICBA
c3RhdGljbWV0aG9kCi0gICAgZGVmIGZyb21fc3RyaW5nKHN0cmluZyk6Ci0gICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKHN0cmluZywgc3RyKSBvciBpc2luc3RhbmNlKHN0cmluZywgdW5pY29kZSkK
LSAgICAgICAgcmV0dXJuIFZlcnNpb24uZnJvbV9pdGVyYWJsZShzdHJpbmcuc3BsaXQoJy4nKSkK
LQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZnJvbV9pdGVyYWJsZSh2YWwpOgotICAgICAg
ICByZXN1bHQgPSBWZXJzaW9uKCkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHZhbCkpOgot
ICAgICAgICAgICAgcmVzdWx0W2ldID0gaW50KHZhbFtpXSkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dAotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBmcm9tX25hbWUobmFtZSk6Ci0gICAgICAg
IGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1l
TWFwCi0gICAgICAgIHJldHVybiBWZXJzaW9uTmFtZU1hcC5tYXAoKS5mcm9tX25hbWUobmFtZSlb
MV0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWpvcj0wLCBtaW5vcj0wLCB0aW55PTAsIG1p
Y3JvPTAsIG5hbm89MCk6Ci0gICAgICAgIHNlbGYubWFqb3IgPSBpbnQobWFqb3IpCi0gICAgICAg
IHNlbGYubWlub3IgPSBpbnQobWlub3IpCi0gICAgICAgIHNlbGYudGlueSA9IGludCh0aW55KQot
ICAgICAgICBzZWxmLm1pY3JvID0gaW50KG1pY3JvKQotICAgICAgICBzZWxmLm5hbm8gPSBpbnQo
bmFubykKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gNQotCi0gICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBp
bnQpOgotICAgICAgICAgICAgaWYga2V5ID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYubWFqb3IKLSAgICAgICAgICAgIGVsaWYga2V5ID09IDE6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYubWlub3IKLSAgICAgICAgICAgIGVsaWYga2V5ID09IDI6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYudGlueQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gMzoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5taWNybwotICAgICAgICAgICAgZWxpZiBrZXkgPT0gNDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW5vCi0gICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdWZXJzaW9uIGtleSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNCcpCi0gICAgICAgIGVsaWYg
aXNpbnN0YW5jZShrZXksIHN0cik6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIGtleSk6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwga2V5KQotICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignVmVyc2lvbiBrZXkgbXVzdCBiZSBtYWpvciwgbWlub3IsIHRpbnks
IG1pY3JvIG9yIG5hbm8nKQotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCB2ZXJz
aW9uIGtleSB0byBiZSBzdHJpbmcgb3IgaW50ZWdlcicpCi0KLSAgICBkZWYgX19zZXRpdGVtX18o
c2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBpbnQpOgotICAg
ICAgICAgICAgaWYga2V5ID09IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5tYWpvciA9IGludCh2
YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5tYWpvcgotICAgICAgICAgICAgZWxp
ZiBrZXkgPT0gMToKLSAgICAgICAgICAgICAgICBzZWxmLm1pbm9yID0gaW50KHZhbHVlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLm1pbm9yCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAy
OgotICAgICAgICAgICAgICAgIHNlbGYudGlueSA9IGludCh2YWx1ZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZi50aW55Ci0gICAgICAgICAgICBlbGlmIGtleSA9PSAzOgotICAgICAgICAg
ICAgICAgIHNlbGYubWljcm8gPSBpbnQodmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYubWljcm8KLSAgICAgICAgICAgIGVsaWYga2V5ID09IDQ6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5uYW5vID0gaW50KHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbm8KLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1ZlcnNpb24ga2V5IG11c3QgYmUgYmV0d2VlbiAw
IGFuZCA0JykKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKLSAgICAgICAgICAg
IGlmIGhhc2F0dHIoc2VsZiwga2V5KToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2V0YXR0cihz
ZWxmLCBrZXksIHZhbHVlKQotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVmVyc2lvbiBr
ZXkgbXVzdCBiZSBtYWpvciwgbWlub3IsIHRpbnksIG1pY3JvIG9yIG5hbm8nKQotICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCB2ZXJzaW9uIGtleSB0byBiZSBzdHJpbmcgb3IgaW50
ZWdlcicpCi0KLSAgICAjIDExLjIgaXMgaW4gMTEsIGJ1dCAxMSBpcyBub3QgaW4gMTEuMgotICAg
IGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmVyc2lvbik6Ci0gICAgICAgIGFzc2VydCBpc2luc3Rh
bmNlKHZlcnNpb24sIFZlcnNpb24pCi0gICAgICAgIGRvZXNfbWF0Y2ggPSBUcnVlCi0gICAgICAg
IGZvciBpIGluIHJhbmdlKGxlbih2ZXJzaW9uKSk6Ci0gICAgICAgICAgICBpZiBzZWxmW2ldICE9
IHZlcnNpb25baV06Ci0gICAgICAgICAgICAgICAgZG9lc19tYXRjaCA9IEZhbHNlCi0gICAgICAg
ICAgICBpZiBub3QgZG9lc19tYXRjaCBhbmQgc2VsZltpXSAhPSAwOgotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9fc3RyX18oc2Vs
Zik6Ci0gICAgICAgIGxlbl90b19wcmludCA9IDEKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVu
KHNlbGYpKToKLSAgICAgICAgICAgIGlmIHNlbGZbaV06Ci0gICAgICAgICAgICAgICAgbGVuX3Rv
X3ByaW50ID0gaSArIDEKLSAgICAgICAgcmVzdWx0ID0gc3RyKHNlbGYubWFqb3IpCi0gICAgICAg
IGZvciBpIGluIHJhbmdlKGxlbl90b19wcmludCAtIDEpOgotICAgICAgICAgICAgcmVzdWx0ICs9
ICcue30nLmZvcm1hdChzZWxmW2kgKyAxXSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAg
ZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzdHIoc2VsZikpCi0KLSAg
ICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIG90aGVyIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2VsZikpOgot
ICAgICAgICAgICAgZGlmZiA9IHNlbGZbaV0gLSBvdGhlcltpXQotICAgICAgICAgICAgaWYgZGlm
ZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGlmZgotICAgICAgICByZXR1cm4gMAotCi0gICAg
ZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3Ro
ZXIpID09IDAKLQotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4g
c2VsZi5fX2NtcF9fKG90aGVyKSAhPSAwCi0KLSAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPCAwCi0KLSAgICBkZWYgX19sZV9f
KHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPD0gMAot
Ci0gICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fY21w
X18ob3RoZXIpID4gMAotCi0gICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9fY21wX18ob3RoZXIpID49IDAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBW
ZXJzaW9uCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25hbWVf
bWFwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNp
b25fbmFtZV9tYXAucHkJKHJldmlzaW9uIDI2NDM1NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIy
LDkgQEAKIAogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisK
IGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJr
aXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgogCiAKIFBVQkxJQ19UQUJMRSA9ICdw
dWJsaWMnCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX25hbWVf
bWFwX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3ZlcnNpb25fbmFtZV9tYXBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDM1NykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXBfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDkgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi52
ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVf
bWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcAogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3ZlcnNpb25fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl91bml0dGVzdC5weQkocmV2aXNpb24gMjY0MzU3KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl91bml0dGVzdC5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEzMyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJz
aW9uIGltcG9ydCBWZXJzaW9uCi0KLQotY2xhc3MgVmVyc2lvblRlc3RDYXNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X3N0cmluZ19jb25zdHJ1Y3RvcihzZWxmKToKLSAgICAg
ICAgdiA9IFZlcnNpb24uZnJvbV9zdHJpbmcoJzEuMi4zLjQuNScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodi5tYWpvciwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pbm9yLCAy
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudGlueSwgMykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2Lm1pY3JvLCA0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubmFubywgNSkK
LQotICAgIGRlZiB0ZXN0X2Zyb21fbGlzdChzZWxmKToKLSAgICAgICAgdiA9IFZlcnNpb24uZnJv
bV9pdGVyYWJsZShbMSwgMiwgMywgNCwgNV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5t
YWpvciwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pbm9yLCAyKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHYudGlueSwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1p
Y3JvLCA0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubmFubywgNSkKLQotICAgIGRlZiB0
ZXN0X2Zyb21fdHVwbGUoc2VsZik6Ci0gICAgICAgIHYgPSB2ID0gVmVyc2lvbi5mcm9tX2l0ZXJh
YmxlKCgxLCAyLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1ham9yLCAxKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWlub3IsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodi50aW55LCAzKQotCi0gICAgZGVmIHRlc3RfaW50X2NvbnN0cnVjdG9yKHNlbGYpOgotICAg
ICAgICB2ID0gVmVyc2lvbigxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWFqb3IsIDEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taW5vciwgMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2LnRpbnksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taWNybywgMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm5hbm8sIDApCi0KLSAgICBkZWYgdGVzdF9sZW4o
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFZlcnNpb24oMSwgMiwgMywgNCwg
NSkpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihWZXJzaW9uKCkpLCA1KQotCi0g
ICAgZGVmIHRlc3Rfc2V0X2J5X2ludChzZWxmKToKLSAgICAgICAgdiA9IFZlcnNpb24oKQotICAg
ICAgICB2WzBdID0gMQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWFqb3IsIDEpCi0gICAg
ICAgIHZbMV0gPSAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taW5vciwgMikKLSAgICAg
ICAgdlsyXSA9IDMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRpbnksIDMpCi0gICAgICAg
IHZbM10gPSA0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taWNybywgNCkKLSAgICAgICAg
dls0XSA9IDUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm5hbm8sIDUpCi0KLSAgICBkZWYg
dGVzdF9zZXRfYnlfc3RyaW5nKHNlbGYpOgotICAgICAgICB2ID0gVmVyc2lvbigpCi0gICAgICAg
IHZbJ21ham9yJ10gPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5tYWpvciwgMSkKLSAg
ICAgICAgdlsnbWlub3InXSA9IDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pbm9yLCAy
KQotICAgICAgICB2Wyd0aW55J10gPSAzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50aW55
LCAzKQotICAgICAgICB2WydtaWNybyddID0gNAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYu
bWljcm8sIDQpCi0gICAgICAgIHZbJ25hbm8nXSA9IDUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh2Lm5hbm8sIDUpCi0KLSAgICBkZWYgdGVzdF9nZXRfYnlfaW50KHNlbGYpOgotICAgICAgICB2
ID0gVmVyc2lvbigxLCAyLCAzLCA0LCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbMF0s
IHYubWFqb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsxXSwgdi5taW5vcikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2WzJdLCB2LnRpbnkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodlszXSwgdi5taWNybykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2WzRdLCB2Lm5hbm8p
Ci0KLSAgICBkZWYgdGVzdF9nZXRfYnlfc3RyaW5nKHNlbGYpOgotICAgICAgICB2ID0gVmVyc2lv
bigxLCAyLCAzLCA0LCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbJ21ham9yJ10sIHYu
bWFqb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsnbWlub3InXSwgdi5taW5vcikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wyd0aW55J10sIHYudGlueSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh2WydtaWNybyddLCB2Lm1pY3JvKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHZbJ25hbm8nXSwgdi5uYW5vKQotCi0gICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihWZXJzaW9uKDEsIDIsIDMpKSwgJzEuMi4zJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoVmVyc2lvbigxLCAyLCAwKSksICcxLjInKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihWZXJzaW9uKDEsIDIpKSwgJzEuMicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyKFZlcnNpb24oMCwgMCwgMykpLCAnMC4wLjMnKQotCi0gICAgZGVm
IHRlc3RfY29udGFpbmVkX2luKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lv
bigxMSwgMSkgaW4gVmVyc2lvbigxMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9u
KDExLCAxLCAyKSBpbiBWZXJzaW9uKDExLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShW
ZXJzaW9uKDExKSBpbiBWZXJzaW9uKDExLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShW
ZXJzaW9uKDExKSBpbiBWZXJzaW9uKDExLCAxLCAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShWZXJzaW9uKDExLCAxKSBpbiBWZXJzaW9uKDExLCAxLCAyKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKFZlcnNpb24oMTEpIGluIFZlcnNpb24oMTEpKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoVmVyc2lvbigxMSwgMSkgaW4gVmVyc2lvbigxMSwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShWZXJzaW9uKDExLCAxLCAyKSBpbiBWZXJzaW9uKDExLCAxLCAyKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKFZlcnNpb24oMTEpIGluIFZlcnNpb24oMTEsIDApKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoVmVyc2lvbigxMSwgMCkgaW4gVmVyc2lvbigxMSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShWZXJzaW9uKDExKSBpbiBWZXJzaW9uKDExLCAwLCAwKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDAsIDApIGluIFZlcnNpb24oMTEpKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSwgMSkgaW4gVmVyc2lvbigxMSwgMSwgMCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAxLCAwKSBpbiBWZXJzaW9uKDExLCAxKSkK
LQotICAgIGRlZiB0ZXN0X2NvbXBhcmVfdmVyc2lvbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoVmVyc2lvbigxLCAyLCAzKSwgVmVyc2lvbigxLCAyLCAzKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRHcmVhdGVyKFZlcnNpb24oMSwgMiwgNCksIFZlcnNpb24oMSwgMiwgMykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihWZXJzaW9uKDEsIDMsIDIpLCBWZXJzaW9uKDEsIDIsIDMp
KQotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoVmVyc2lvbigyLCAxLCAxKSwgVmVyc2lvbigx
LCAyLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChWZXJzaW9uKDEsIDIsIDMpLCBO
b25lKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3Nj
bV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQzNTcpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0
dGVzdAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGVja291dCBpbXBv
cnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9y
dCBDb21taXR0ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudCAgIyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IGJlIG5lZWRlZApAQCAtNTIsNyArNTQsNiBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmls
ZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3
ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgogZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuc2NtLmdpdCBpbXBvcnQgR2l0LCBBbWJpZ3VvdXNDb21taXRFcnJvcgogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3Nj
bV9zeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IFND
TSwgQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhlbnRpY2F0
aW9uRXJyb3IKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtL3N2bi5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIg
KzM2LDEzIEBAIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dC5zY20uc2NtIGltcG9ydCBBdXRoZW50aWNhdGlvbkVycm9yLCBTQ00sIGNvbW1pdF9l
cnJvcl9oYW5kbGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcudXJscyBpbXBvcnQgc3Zu
X3NlcnZlcl9ob3N0LCBzdm5fc2VydmVyX3JlYWxtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1v
aXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLndl
YmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgotZnJvbSB3ZWJraXRweS5jb21tb24udmVy
c2lvbiBpbXBvcnQgVmVyc2lvbgogZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5CShyZXZp
c2lvbiAyNjQzNTcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxh
dGZvcm1pbmZvLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw5IEBAIGltcG9ydCByZQog
aW1wb3J0IHN5cwogaW1wb3J0IHBsYXRmb3JtCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBW
ZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAot
ZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgogZnJvbSB3ZWJraXRw
eS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgUFVCTElDX1RBQkxFLCBJTlRFUk5BTF9U
QUJMRSwgVmVyc2lvbk5hbWVNYXAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5w
eQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBA
CiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52
ZXJzaW9uIGltcG9ydCBWZXJzaW9uCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgor
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQVUJMSUNfVEFC
TEUsIElOVEVSTkFMX1RBQkxFLCBWZXJzaW9uTmFtZU1hcAogCiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQz
NTcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTAgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi52
ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiAKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZmFjdG9y
eQogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBndGsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvcy5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvcy5weQkod29ya2luZyBjb3B5KQpAQCAtMjEsMTIgKzIxLDEwIEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdHJhY2ViYWNrCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJraXRweS5jb21tb24udmVy
c2lvbiBpbXBvcnQgVmVyc2lvbgorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwog
ZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVN
YXAsIElOVEVSTkFMX1RBQkxFCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVz
dF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5w
b3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25zCiBmcm9tIHdlYmtpdHB5LnBvcnQuZGV2
aWNlX3BvcnQgaW1wb3J0IERldmljZVBvcnQKIGZyb20gd2Via2l0cHkucG9ydC5zaW11bGF0b3Jf
cHJvY2VzcyBpbXBvcnQgU2ltdWxhdG9yUHJvY2VzcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2lvc19kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2lvc19kZXZpY2UucHkJKHJldmlzaW9uIDI2NDM1NykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsy
MiwxMCBAQAogCiBpbXBvcnQgbG9nZ2luZwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVy
c2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwotZnJv
bSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgogZnJvbSB3ZWJraXRweS5w
b3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25zCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9z
IGltcG9ydCBJT1NQb3J0CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nf
ZGV2aWNlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9pb3NfZGV2aWNlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQzNTcpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMjIsOSArMjIsMTAgQEAKIAogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIsIFNjcmlwdEVycm9yCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29u
ZmlnIGltcG9ydCBjbGVhcl9jYWNoZWRfY29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0
Lmlvc19kZXZpY2UgaW1wb3J0IElPU0RldmljZVBvcnQKIGZyb20gd2Via2l0cHkucG9ydCBpbXBv
cnQgaW9zX3Rlc3RjYXNlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3Np
bXVsYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9z
X3NpbXVsYXRvci5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2lvc19zaW11bGF0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDkgQEAK
IAogaW1wb3J0IGxvZ2dpbmcKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwog
ZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29u
ZmlnIGltcG9ydCBhcHBsZV9hZGRpdGlvbnMsIENvbmZpZwogZnJvbSB3ZWJraXRweS5wb3J0Lmlv
cyBpbXBvcnQgSU9TUG9ydAogZnJvbSB3ZWJraXRweS54Y29kZS5kZXZpY2VfdHlwZSBpbXBvcnQg
RGV2aWNlVHlwZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0
b3JfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDM1NykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yMCwxMSArMjAsMTIgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRw
eS5wb3J0Lmlvc19zaW11bGF0b3IgaW1wb3J0IElPU1NpbXVsYXRvclBvcnQKIGZyb20gd2Via2l0
cHkucG9ydCBpbXBvcnQgaW9zX3Rlc3RjYXNlCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBv
cnRfdGVzdGNhc2UKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGlt
cG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBW
ZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBjbGVhcl9jYWNoZWRfY29u
ZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9u
cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2Nr
RXhlY3V0aXZlMiwgU2NyaXB0RXJyb3IKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pb3NfdGVzdGNhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvc190ZXN0Y2FzZS5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvc190ZXN0Y2FzZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAs
OCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGRhcndpbl90ZXN0Y2FzZQog
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkocmV2aXNpb24gMjY0MzU3KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkod29ya2luZyBjb3B5KQpAQCAt
MzEsOSArMzEsMTAgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1l
bW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1w
b3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0
IFBVQkxJQ19UQUJMRSwgSU5URVJOQUxfVEFCTEUKIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNp
b25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1lTWFwCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29u
ZmlnIGltcG9ydCBhcHBsZV9hZGRpdGlvbnMsIENvbmZpZwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQzNTcpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yNywxMyArMjcsMTQgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkucG9ydC5tYWMgaW1w
b3J0IE1hY1BvcnQKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZGFyd2luX3Rlc3RjYXNlCiBm
cm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtp
dHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUsIE1vY2tFeGVjdXRp
dmUyLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVy
c2lvbgogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lv
bk5hbWVNYXAKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2gucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoLnB5CShyZXZp
c2lvbiAyNjQzNTcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2gucHkJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKIAogaW1wb3J0IGxvZ2dpbmcKIAotZnJvbSB3
ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVy
c2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJz
aW9uTmFtZU1hcCwgSU5URVJOQUxfVEFCTEUKIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1w
b3J0IGFwcGxlX2FkZGl0aW9ucwogZnJvbSB3ZWJraXRweS5wb3J0LmRldmljZV9wb3J0IGltcG9y
dCBEZXZpY2VQb3J0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfZGV2
aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93YXRjaF9k
ZXZpY2UucHkJKHJldmlzaW9uIDI2NDM1NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93YXRjaF9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyLDkgKzIyLDEwIEBACiAKIGlt
cG9ydCBsb2dnaW5nCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20g
d2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGlt
cG9ydCBhcHBsZV9hZGRpdGlvbnMKIGZyb20gd2Via2l0cHkucG9ydC53YXRjaCBpbXBvcnQgV2F0
Y2hQb3J0CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93YXRjaF9zaW11bGF0
b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3Np
bXVsYXRvci5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3dhdGNoX3NpbXVsYXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOSBAQAog
CiBpbXBvcnQgbG9nZ2luZwogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0
cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkucG9ydC5jb25m
aWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucwogZnJvbSB3ZWJraXRweS5wb3J0LndhdGNoIGltcG9y
dCBXYXRjaFBvcnQKIGZyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmlj
ZVR5cGUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93YXRjaF9zaW11bGF0b3Jf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dh
dGNoX3NpbXVsYXRvcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY0MzU3KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3NpbXVsYXRvcl91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMjAsOSArMjAsMTAgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMiwgU2Ny
aXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJz
aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBjbGVhcl9jYWNoZWRfY29uZmln
dXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0LndhdGNoX3NpbXVsYXRvciBpbXBvcnQgV2F0Y2hT
aW11bGF0b3JQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHdhdGNoX3Rlc3RjYXNlCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfdGVzdGNhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3Rlc3RjYXNlLnB5CShy
ZXZpc2lvbiAyNjQzNTcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfdGVz
dGNhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwyNyBAQAotZnJvbSB3ZWJraXRweS5j
b21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBmcm9tIHdl
YmtpdHB5LnBvcnQgaW1wb3J0IGRhcndpbl90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvd2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93
aW4ucHkJKHJldmlzaW9uIDI2NDM1NykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93
aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxMSBAQCBpbXBvcnQgcmUKIGltcG9y
dCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QK
LWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGFic3BhdGhfdG9fdXJpLCBj
eWdwYXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcAog
ZnJvbSB3ZWJraXRweS5wb3J0LmFwcGxlIGltcG9ydCBBcHBsZVBvcnQKIGZyb20gd2Via2l0cHku
cG9ydC5jb25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvd2luX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQzNTcpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMCArMjYsMTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1m
cm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQVUJMSUNfVEFCTEUsIFZlcnNpb25OYW1l
TWFwCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0
cHkucG9ydC53aW4gaW1wb3J0IFdpblBvcnQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9t
YWluLnB5CShyZXZpc2lvbiAyNjQzNTcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qv
bWFpbi5weQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBkZWYgbWFpbigpOgogCiAg
ICAgdGVzdGVyID0gVGVzdGVyKCkKICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93
ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIu
YWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnLCAn
bGlicmFyaWVzJywgJ3dlYmtpdGNvcmVweScpLCAnd2Via2l0Y29yZXB5JykKIAogICAgICMgVGhl
cmUgaXMgbm8gV2ViS2l0MiBvbiBXaW5kb3dzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBXZWJL
aXQyIHVuaXR0ZXN0cyBvbiBpdC4KICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRo
KCd3aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS94Y29kZS9kZXZpY2VfdHlwZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL2RldmljZV90eXBlX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjQzNTcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL2RldmljZV90eXBl
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw4IEBACiAKIGltcG9ydCB1
bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLmRl
dmljZV90eXBlIGltcG9ydCBEZXZpY2VUeXBlCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkocmV2aXNpb24gMjY0MzU3KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTIgQEAgaW1wb3J0IHBsaXN0bGliCiBpbXBvcnQgcmUK
IGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20g
d2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi50aW1lb3V0X2NvbnRleHQgaW1wb3J0IFRpbWVvdXQKLWZyb20gd2Via2l0cHkuY29t
bW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkucG9ydC5kZXZpY2UgaW1w
b3J0IERldmljZQogZnJvbSB3ZWJraXRweS54Y29kZS5kZXZpY2VfdHlwZSBpbXBvcnQgRGV2aWNl
VHlwZQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZp
Y2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29k
ZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjQzNTcpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDE4IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBqc29uCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Citm
cm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9p
Zl9uZWNlc3NhcnkKK2Zyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmlj
ZVR5cGUKK2Zyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2RldmljZSBpbXBvcnQgRGV2aWNl
UmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlciwgU2ltdWxhdGVkRGV2aWNlCisKIHNpbWN0
bF9qc29uX291dHB1dCA9ICIiInsKICAiZGV2aWNldHlwZXMiIDogWwogICAgewpAQCAtNDk1LDE4
ICs1MDcsNiBAQCBzaW1jdGxfanNvbl9vdXRwdXQgPSAiIiJ7CiAgXQogfSIiIgogCi1pbXBvcnQg
anNvbgotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAotZnJv
bSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgotZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5Ci1m
cm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBlIGltcG9ydCBEZXZpY2VUeXBlCi1mcm9tIHdl
YmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9kZXZpY2UgaW1wb3J0IERldmljZVJlcXVlc3QsIFNpbXVs
YXRlZERldmljZU1hbmFnZXIsIFNpbXVsYXRlZERldmljZQotCi0KIGNsYXNzIFNpbXVsYXRlZERl
dmljZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHN0YXRpY21ldGhvZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404392</attachid>
            <date>2020-07-15 14:11:52 -0700</date>
            <delta_ts>2020-07-15 14:39:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214309-20200715141151.patch</filename>
            <type>text/plain</type>
            <size>54682</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU2IEBACisyMDIwLTA3LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBTcGluIG9mZiBnZW5lcmFsIHdlYmtpdHB5IHRv
b2xzIGludG8gYSBwaXAgbW9kdWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTQzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisK
KyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvTUFOSUZFU1QuaW46IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weTogQWRkZWQuCisgICAgICAgIChyZWFkbWUp
OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHk6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvdGVzdHMvdmVyc2lvbl91bml0dGVzdC5weTogTW92ZWQgZnJvbQorICAgICAgICB3ZWJraXRw
eS9jb21tb24vdmVyc2lvbl91bml0dGVzdC5weS4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3ZlcnNpb24ucHk6IEFkZGVkLgorICAgICAgICAo
VmVyc2lvbik6IE1vdmVkIGZyb20gd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9fX2luaXRfXy5weTogSW5jbHVkZSB3ZWJraXRjb3JlcHkgb24g
aW1wb3J0IHBhdGguCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL3NjbV91bml0dGVzdC5weTogVXNlIFZlcnNpb24gZnJvbSB3ZWJraXRjb3JlcHkuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mb19tb2NrLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi92ZXJzaW9uLnB5OiBEaXR0by4KKyAgICAgICAgKFZlcnNpb24pOiBNb3ZlZCB0byB3ZWJraXRj
b3JlcHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21h
cC5weTogVXNlIFZlcnNpb24gZnJvbSB3ZWJraXRjb3JlcHkuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcF91bml0dGVzdC5weTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl91bml0dGVzdC5weTogTW92ZWQg
dG8gd2Via2l0Y29yZXB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5
X3VuaXR0ZXN0LnB5OiBVc2UgVmVyc2lvbiBmcm9tIHdlYmtpdGNvcmVweS4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OiBVc2UgVmVyc2lvbiBmcm9tIHdlYmtpdGNvcmVw
eSwgcmVtb3ZlIHVubmVlZGVkIGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvc19kZXZpY2UucHk6IHNlIFZlcnNpb24gZnJvbSB3ZWJraXRjb3JlcHkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2VfdW5pdHRlc3QucHk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5OiBEaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc190ZXN0Y2FzZS5w
eTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoLnB5OiBVc2UgVmVyc2lvbiBm
cm9tIHdlYmtpdGNvcmVweSwgcmVtb3ZlIHVubmVlZGVkIGltcG9ydHMuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX2RldmljZS5weTogVXNlIFZlcnNpb24gZnJvbSB3ZWJr
aXRjb3JlcHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3NpbXVsYXRv
ci5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3NpbXVs
YXRvcl91bml0dGVzdC5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L3dhdGNoX3Rlc3RjYXNlLnB5OiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvd2luLnB5OiBVc2UgVmVyc2lvbiBmcm9tIHdlYmtpdGNvcmVweSwgcmVtb3ZlIHVubmVlZGVk
IGltcG9ydHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5w
eTogVXNlIFZlcnNpb24gZnJvbSB3ZWJraXRjb3JlcHkuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90ZXN0L21haW4ucHk6CisgICAgICAgIChtYWluKTogSW5jbHVkZSB3ZWJraXRjb3JlcHkg
dGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS94Y29kZS9kZXZpY2VfdHlwZV91bml0
dGVzdC5weTogVXNlIFZlcnNpb24gZnJvbSB3ZWJraXRjb3JlcHkuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5OiBEaXR0by4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHk6IFVzZSBW
ZXJzaW9uIGZyb20gd2Via2l0Y29yZXB5LCBmaXggc3R5bGUgZm9yIGltcG9ydHMuCisKIDIwMjAt
MDctMTUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFty
dW4tamF2YXNjcmlwdGNvcmUtdGVzdHNdIG5hdGl2ZUFyY2hpdGVjdHVyZSBzaG91bGQgbmV2ZXIg
YmUgYXJtNjRlCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvTUFO
SUZFU1QuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L01BTklGRVNULmluCShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS9NQU5JRkVTVC5pbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACitp
bmNsdWRlIFJFQURNRS5tZApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L1JFQURNRS5tZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvUkVBRE1FLm1kCShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBA
QAorIyB3ZWJraXRjb3JlcHkKKworUHJvdmlkZXMgYSBudW1iZXIgb2YgdXRpbGl0aWVzIGludGVu
ZGVkIHRvIHN1cHBvcnQgaW50ZXJtZWRpYXRlIHRvIGFkdmFuY2VkIFB5dGhvbiBwcm9ncmFtbWlu
Zy4KKworCisjIyBVc2FnZQorCitWZXJzaW9uIHJlcHJlc2VudGF0aW9uCitgYGAKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCit2ZXJzaW9uID0gVmVyc2lvbigxLCAyLCAzKQorYGBg
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5
CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9z
ZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCB2ZXJzaW9uCitm
cm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCisKKworZGVmIHJlYWRtZSgpOgorICAgIHdpdGgg
b3BlbignUkVBRE1FLm1kJykgYXMgZjoKKyAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKworc2V0
dXAoCisgICAgbmFtZT0nd2Via2l0Y29yZXB5JywKKyAgICB2ZXJzaW9uPXN0cih2ZXJzaW9uKSwK
KyAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBjb250YWluaW5nIHZhcmlvdXMgUHl0aG9uIHN1cHBv
cnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLicsCisgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUo
KSwKKyAgICBjbGFzc2lmaWVycz1bCisgICAgICAgICdEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAt
IFByb2R1Y3Rpb24vU3RhYmxlJywKKyAgICAgICAgJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVs
b3BlcnMnLAorICAgICAgICAnTGljZW5zZSA6OiBPdGhlci9Qcm9wcmlldGFyeSBMaWNlbnNlJywK
KyAgICAgICAgJ09wZXJhdGluZyBTeXN0ZW0gOjogTWFjT1MnLAorICAgICAgICAnTmF0dXJhbCBM
YW5ndWFnZSA6OiBFbmdsaXNoJywKKyAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5
dGhvbiA6OiAzJywKKyAgICAgICAgJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExp
YnJhcmllcyA6OiBQeXRob24gTW9kdWxlcycsCisgICAgXSwKKyAgICBrZXl3b3Jkcz0ncHl0aG9u
IHVuaWNvZGUnLAorICAgIHVybD0naHR0cHM6Ly9naXRodWIucGllLmFwcGxlLmNvbScsCisgICAg
YXV0aG9yPSdKb25hdGhhbiBCZWRhcmQnLAorICAgIGF1dGhvcl9lbWFpbD0namJlZGFyZEBhcHBs
ZS5jb20nLAorICAgIGxpY2Vuc2U9J01vZGlmaWVkIEJTRCcsCisgICAgcGFja2FnZXM9Wyd3ZWJr
aXRjb3JlcHknXSwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAgICAgICAgJ21vY2snLAorICAg
ICAgICAncmVxdWVzdHMnLAorICAgIF0sCisgICAgaW5jbHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwK
KyAgICB6aXBfc2FmZT1GYWxzZSwKKykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQko
bm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRjb3JlcHkudmVy
c2lvbiBpbXBvcnQgVmVyc2lvbgordmVyc2lvbiA9IFZlcnNpb24oMCwgMCwgMSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdmVyc2lvbi5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3ZlcnNpb24ucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS92ZXJzaW9uLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHJlCisKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB0
b3RhbF9vcmRlcmluZworCisKK2NsYXNzIFZlcnNpb24ob2JqZWN0KToKKyAgICBNQVRDSEVTX1JF
ID0gcmUuY29tcGlsZShyJyg/UDxvcGVyYXRvcj49PXwhPXw+fDx8Pj18PD0pPyg/UDx2ZXJzaW9u
PlxkKyhcLlxkKyk/KFwuXGQrKT8oXC5cKik/KScpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIGZyb21fc3RyaW5nKHN0cmluZyk6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHN0cmlu
Zywgc3RyKSBvciBpc2luc3RhbmNlKHN0cmluZywgdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIFZl
cnNpb24uZnJvbV9pdGVyYWJsZShzdHJpbmcuc3BsaXQoJy4nKSkKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgZnJvbV9pdGVyYWJsZSh2YWwpOgorICAgICAgICByZXN1bHQgPSBWZXJzaW9u
KCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHZhbCkpOgorICAgICAgICAgICAgcmVzdWx0
W2ldID0gaW50KHZhbFtpXSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgQHN0YXRpY21l
dGhvZAorICAgIGRlZiBmcm9tX25hbWUobmFtZSk6CisgICAgICAgIGZyb20gd2Via2l0cHkuY29t
bW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1lTWFwCisgICAgICAgIHJldHVy
biBWZXJzaW9uTmFtZU1hcC5tYXAoKS5mcm9tX25hbWUobmFtZSlbMV0KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtYWpvcj0wLCBtaW5vcj0wLCB0aW55PTAsIG1pY3JvPTAsIG5hbm89MCk6Cisg
ICAgICAgIHNlbGYubWFqb3IgPSBpbnQobWFqb3IpCisgICAgICAgIHNlbGYubWlub3IgPSBpbnQo
bWlub3IpCisgICAgICAgIHNlbGYudGlueSA9IGludCh0aW55KQorICAgICAgICBzZWxmLm1pY3Jv
ID0gaW50KG1pY3JvKQorICAgICAgICBzZWxmLm5hbm8gPSBpbnQobmFubykKKworICAgIGRlZiBf
X2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gNQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNl
bGYsIGtleSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBpbnQpOgorICAgICAgICAgICAg
aWYga2V5ID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWFqb3IKKyAgICAgICAg
ICAgIGVsaWYga2V5ID09IDE6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWlub3IKKyAg
ICAgICAgICAgIGVsaWYga2V5ID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGlu
eQorICAgICAgICAgICAgZWxpZiBrZXkgPT0gMzoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5taWNybworICAgICAgICAgICAgZWxpZiBrZXkgPT0gNDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5uYW5vCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWZXJzaW9uIGtleSBt
dXN0IGJlIGJldHdlZW4gMCBhbmQgNCcpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShrZXksIHN0
cik6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdldGF0dHIoc2VsZiwga2V5KQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
VmVyc2lvbiBrZXkgbXVzdCBiZSBtYWpvciwgbWlub3IsIHRpbnksIG1pY3JvIG9yIG5hbm8nKQor
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCB2ZXJzaW9uIGtleSB0byBiZSBzdHJp
bmcgb3IgaW50ZWdlcicpCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6
CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBpbnQpOgorICAgICAgICAgICAgaWYga2V5ID09
IDA6CisgICAgICAgICAgICAgICAgc2VsZi5tYWpvciA9IGludCh2YWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5tYWpvcgorICAgICAgICAgICAgZWxpZiBrZXkgPT0gMToKKyAgICAg
ICAgICAgICAgICBzZWxmLm1pbm9yID0gaW50KHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmLm1pbm9yCisgICAgICAgICAgICBlbGlmIGtleSA9PSAyOgorICAgICAgICAgICAgICAg
IHNlbGYudGlueSA9IGludCh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aW55
CisgICAgICAgICAgICBlbGlmIGtleSA9PSAzOgorICAgICAgICAgICAgICAgIHNlbGYubWljcm8g
PSBpbnQodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWljcm8KKyAgICAgICAg
ICAgIGVsaWYga2V5ID09IDQ6CisgICAgICAgICAgICAgICAgc2VsZi5uYW5vID0gaW50KHZhbHVl
KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbm8KKyAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ1ZlcnNpb24ga2V5IG11c3QgYmUgYmV0d2VlbiAwIGFuZCA0JykKKyAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwg
a2V5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2V0YXR0cihzZWxmLCBrZXksIHZhbHVlKQor
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVmVyc2lvbiBrZXkgbXVzdCBiZSBtYWpvciwg
bWlub3IsIHRpbnksIG1pY3JvIG9yIG5hbm8nKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdF
eHBlY3RlZCB2ZXJzaW9uIGtleSB0byBiZSBzdHJpbmcgb3IgaW50ZWdlcicpCisKKyAgICBkZWYg
bWF0Y2hlcyhzZWxmLCBleHByZXNzaW9ucyk6CisgICAgICAgIGRvZXNfbWF0Y2ggPSBOb25lCisg
ICAgICAgIGZvciBleHByZXNzaW9uIGluIGV4cHJlc3Npb25zLnNwbGl0KCcsJyk6CisgICAgICAg
ICAgICBtYXRjaCA9IHNlbGYuTUFUQ0hFU19SRS5zZWFyY2goZXhwcmVzc2lvbikKKyAgICAgICAg
ICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
b3BlcmF0b3IgPSBtYXRjaC5ncm91cCgnb3BlcmF0b3InKSBvciAnPT0nCisgICAgICAgICAgICBp
ZiBvcGVyYXRvciBpbiBbJz09JywgJyE9J106CisgICAgICAgICAgICAgICAgdmVyc2lvbl9tYXRj
aCA9IFRydWUKKyAgICAgICAgICAgICAgICBzcGxpdCA9IG1hdGNoLmdyb3VwKCd2ZXJzaW9uJyku
c3BsaXQoJy4nKQorICAgICAgICAgICAgICAgIGZvciBpbmRleCBpbiByYW5nZShsZW4oc3BsaXQp
KToKKyAgICAgICAgICAgICAgICAgICAgaWYgJyonID09IHNwbGl0W2luZGV4XToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHN0cihzZWxm
W2luZGV4XSkgIT0gc3BsaXRbaW5kZXhdOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bl9tYXRjaCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAg
ICAgICAgICAgaWYgb3BlcmF0b3IgPT0gJz09JzoKKyAgICAgICAgICAgICAgICAgICAgZG9lc19t
YXRjaCA9IChkb2VzX21hdGNoIG9yIEZhbHNlKSB8IHZlcnNpb25fbWF0Y2gKKyAgICAgICAgICAg
ICAgICBpZiB2ZXJzaW9uX21hdGNoIGFuZCBvcGVyYXRvciA9PSAnIT0nOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
ICAgICB2ZXJzaW9uID0gc2VsZi5mcm9tX3N0cmluZyhtYXRjaC5ncm91cCgndmVyc2lvbicpLnJl
cGxhY2UoJyonLCAnMCcpKQorICAgICAgICAgICAgZG9lc19tYXRjaCA9IChkb2VzX21hdGNoIG9y
IEZhbHNlKSB8IHsKKyAgICAgICAgICAgICAgICAnPic6IGxhbWJkYSBhLCBiOiBhID4gYiwKKyAg
ICAgICAgICAgICAgICAnPCc6IGxhbWJkYSBhLCBiOiBhIDwgYiwKKyAgICAgICAgICAgICAgICAn
Pj0nOiBsYW1iZGEgYSwgYjogYSA+PSBiLAorICAgICAgICAgICAgICAgICc8PSc6IGxhbWJkYSBh
LCBiOiBhIDw9IGIsCisgICAgICAgICAgICB9W29wZXJhdG9yXShzZWxmLCB2ZXJzaW9uKQorCisg
ICAgICAgIHJldHVybiBUcnVlIGlmIGRvZXNfbWF0Y2ggaXMgTm9uZSBlbHNlIGRvZXNfbWF0Y2gK
KworICAgICMgMTEuMiBpcyBpbiAxMSwgYnV0IDExIGlzIG5vdCBpbiAxMS4yCisgICAgZGVmIF9f
Y29udGFpbnNfXyhzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmVy
c2lvbiwgVmVyc2lvbikKKyAgICAgICAgZG9lc19tYXRjaCA9IFRydWUKKyAgICAgICAgZm9yIGkg
aW4gcmFuZ2UobGVuKHZlcnNpb24pKToKKyAgICAgICAgICAgIGlmIHNlbGZbaV0gIT0gdmVyc2lv
bltpXToKKyAgICAgICAgICAgICAgICBkb2VzX21hdGNoID0gRmFsc2UKKyAgICAgICAgICAgIGlm
IG5vdCBkb2VzX21hdGNoIGFuZCBzZWxmW2ldICE9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6Cisg
ICAgICAgIGxlbl90b19wcmludCA9IDEKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNlbGYp
KToKKyAgICAgICAgICAgIGlmIHNlbGZbaV06CisgICAgICAgICAgICAgICAgbGVuX3RvX3ByaW50
ID0gaSArIDEKKyAgICAgICAgcmVzdWx0ID0gc3RyKHNlbGYubWFqb3IpCisgICAgICAgIGZvciBp
IGluIHJhbmdlKGxlbl90b19wcmludCAtIDEpOgorICAgICAgICAgICAgcmVzdWx0ICs9ICcue30n
LmZvcm1hdChzZWxmW2kgKyAxXSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9f
aGFzaF9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSAwCisgICAgICAgIGZvciBpbmRleCBpbiBy
YW5nZShsZW4oc2VsZikpOgorICAgICAgICAgICAgcmVzdWx0ICo9IDEwMDAKKyAgICAgICAgICAg
IHJlc3VsdCArPSBzZWxmW2luZGV4XQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYg
X19jbXBfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG90aGVyIGlzIE5vbmU6CisgICAgICAg
ICAgICByZXR1cm4gMQorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2VsZikpOgorICAgICAg
ICAgICAgZGlmZiA9IHNlbGZbaV0gLSBvdGhlcltpXQorICAgICAgICAgICAgaWYgZGlmZjoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZGlmZgorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9f
ZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIpID09
IDAKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5f
X2NtcF9fKG90aGVyKSAhPSAwCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPCAwCisKKyAgICBkZWYgX19sZV9fKHNlbGYs
IG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPD0gMAorCisgICAg
ZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3Ro
ZXIpID4gMAorCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9fY21wX18ob3RoZXIpID49IDAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvX19pbml0X18ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9f
X2luaXRfXy5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMv
dmVyc2lvbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3ZlcnNpb25fdW5pdHRlc3QucHkJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS90ZXN0cy92ZXJzaW9uX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTU0IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMg
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1
bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCisKK2NsYXNzIFZl
cnNpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zdHJpbmdf
Y29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHYgPSBWZXJzaW9uLmZyb21fc3RyaW5nKCcxLjIu
My40LjUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWFqb3IsIDEpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodi5taW5vciwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRp
bnksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taWNybywgNCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh2Lm5hbm8sIDUpCisKKyAgICBkZWYgdGVzdF9mcm9tX2xpc3Qoc2VsZik6
CisgICAgICAgIHYgPSBWZXJzaW9uLmZyb21faXRlcmFibGUoWzEsIDIsIDMsIDQsIDVdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWFqb3IsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodi5taW5vciwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRpbnksIDMpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taWNybywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh2Lm5hbm8sIDUpCisKKyAgICBkZWYgdGVzdF9mcm9tX3R1cGxlKHNlbGYpOgorICAgICAgICB2
ID0gdiA9IFZlcnNpb24uZnJvbV9pdGVyYWJsZSgoMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodi5tYWpvciwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pbm9yLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudGlueSwgMykKKworICAgIGRlZiB0ZXN0X2lu
dF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgdiA9IFZlcnNpb24oMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh2Lm1ham9yLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWlu
b3IsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50aW55LCAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHYubWljcm8sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5uYW5v
LCAwKQorCisgICAgZGVmIHRlc3RfbGVuKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihWZXJzaW9uKDEsIDIsIDMsIDQsIDUpKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oVmVyc2lvbigpKSwgNSkKKworICAgIGRlZiB0ZXN0X3NldF9ieV9pbnQoc2VsZik6Cisg
ICAgICAgIHYgPSBWZXJzaW9uKCkKKyAgICAgICAgdlswXSA9IDEKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2Lm1ham9yLCAxKQorICAgICAgICB2WzFdID0gMgorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHYubWlub3IsIDIpCisgICAgICAgIHZbMl0gPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodi50aW55LCAzKQorICAgICAgICB2WzNdID0gNAorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHYubWljcm8sIDQpCisgICAgICAgIHZbNF0gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodi5uYW5vLCA1KQorCisgICAgZGVmIHRlc3Rfc2V0X2J5X3N0cmluZyhzZWxmKToKKyAgICAg
ICAgdiA9IFZlcnNpb24oKQorICAgICAgICB2WydtYWpvciddID0gMQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHYubWFqb3IsIDEpCisgICAgICAgIHZbJ21pbm9yJ10gPSAyCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodi5taW5vciwgMikKKyAgICAgICAgdlsndGlueSddID0gMworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHYudGlueSwgMykKKyAgICAgICAgdlsnbWljcm8nXSA9IDQKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1pY3JvLCA0KQorICAgICAgICB2WyduYW5vJ10gPSA1
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5uYW5vLCA1KQorCisgICAgZGVmIHRlc3RfZ2V0
X2J5X2ludChzZWxmKToKKyAgICAgICAgdiA9IFZlcnNpb24oMSwgMiwgMywgNCwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2WzBdLCB2Lm1ham9yKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHZbMV0sIHYubWlub3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsyXSwgdi50aW55
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbM10sIHYubWljcm8pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodls0XSwgdi5uYW5vKQorCisgICAgZGVmIHRlc3RfZ2V0X2J5X3N0cmluZyhz
ZWxmKToKKyAgICAgICAgdiA9IFZlcnNpb24oMSwgMiwgMywgNCwgNSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh2WydtYWpvciddLCB2Lm1ham9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHZbJ21pbm9yJ10sIHYubWlub3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsndGlueSdd
LCB2LnRpbnkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsnbWljcm8nXSwgdi5taWNybykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2WyduYW5vJ10sIHYubmFubykKKworICAgIGRlZiB0
ZXN0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoVmVyc2lvbigx
LCAyLCAzKSksICcxLjIuMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFZlcnNpb24o
MSwgMiwgMCkpLCAnMS4yJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoVmVyc2lvbigx
LCAyKSksICcxLjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihWZXJzaW9uKDAsIDAs
IDMpKSwgJzAuMC4zJykKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5lZF9pbihzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDEpIGluIFZlcnNpb24oMTEpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSwgMSwgMikgaW4gVmVyc2lvbigxMSwgMSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVmVyc2lvbigxMSkgaW4gVmVyc2lvbigxMSwgMSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVmVyc2lvbigxMSkgaW4gVmVyc2lvbigxMSwgMSwgMikp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVmVyc2lvbigxMSwgMSkgaW4gVmVyc2lvbigxMSwg
MSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExKSBpbiBWZXJzaW9uKDEx
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDEpIGluIFZlcnNpb24oMTEs
IDEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSwgMSwgMikgaW4gVmVyc2lv
bigxMSwgMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExKSBpbiBWZXJz
aW9uKDExLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDApIGluIFZl
cnNpb24oMTEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSkgaW4gVmVyc2lv
bigxMSwgMCwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAwLCAwKSBp
biBWZXJzaW9uKDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDEpIGlu
IFZlcnNpb24oMTEsIDEsIDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSwg
MSwgMCkgaW4gVmVyc2lvbigxMSwgMSkpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX3ZlcnNpb25z
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFZlcnNpb24oMSwgMiwgMyksIFZlcnNp
b24oMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihWZXJzaW9uKDEsIDIsIDQp
LCBWZXJzaW9uKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoVmVyc2lvbigx
LCAzLCAyKSwgVmVyc2lvbigxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKFZl
cnNpb24oMiwgMSwgMSksIFZlcnNpb24oMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90
RXF1YWwoVmVyc2lvbigxLCAyLCAzKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X21hdGNoZXMoc2Vs
Zik6CisgICAgICAgIHZlcnNpb24gPSBWZXJzaW9uKDEsIDIsIDMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh2ZXJzaW9uLm1hdGNoZXMoJycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmVy
c2lvbi5tYXRjaGVzKCcxLionKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2ZXJzaW9uLm1h
dGNoZXMoJzIuKicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodmVyc2lvbi5tYXRjaGVz
KCchPTEuKicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc2lvbi5tYXRjaGVzKCchPTIu
KicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzaW9uLm1hdGNoZXMoJzw9MicpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZlcnNpb24ubWF0Y2hlcygnPD0xJykpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHZlcnNpb24ubWF0Y2hlcygnPDEuMycpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHZlcnNpb24ubWF0Y2hlcygnPDEuMicpKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh2ZXJzaW9uLm1hdGNoZXMoJz49MScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHZlcnNpb24ubWF0Y2hlcygnPj0yJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnNp
b24ubWF0Y2hlcygnPjEuMicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZlcnNpb24ubWF0
Y2hlcygnPjEuMycpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9fX2luaXRfXy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L19faW5pdF9fLnB5CShyZXZpc2lv
biAyNjQ0MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L19faW5pdF9fLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xMSwzICsxMSw5IEBACiAjIGNvZGUgaW4gdGhpcyBmaWxlIHNvIHRoYXQgY2Fs
bGVycyBjYW4gb3B0LWluIGFzIHRoZXkgd2FudC4gIFRoaXMgYWxzbwogIyBhbGxvd3MgZGlmZmVy
ZW50IGNhbGxlcnMgdG8gY2hvb3NlIGRpZmZlcmVudCBpbml0aWFsaXphdGlvbiBjb2RlLAogIyBh
cyBuZWNlc3NhcnkuCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitsaWJyYXJpZXMgPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pKSksICdsaWJyYXJpZXMnKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihsaWJyYXJpZXMsICd3ZWJraXRjb3JlcHknKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3ZlcnNpb24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vdmVyc2lvbi5weQkocmV2aXNpb24gMjY0NDE4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vdmVyc2lvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTI4ICsyMCw0IEBACiAjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBjb2xsZWN0aW9ucwotCi0KLWNsYXNz
IFZlcnNpb24ob2JqZWN0KToKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZnJvbV9zdHJp
bmcoc3RyaW5nKToKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpIG9yIGlz
aW5zdGFuY2Uoc3RyaW5nLCB1bmljb2RlKQotICAgICAgICByZXR1cm4gVmVyc2lvbi5mcm9tX2l0
ZXJhYmxlKHN0cmluZy5zcGxpdCgnLicpKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBm
cm9tX2l0ZXJhYmxlKHZhbCk6Ci0gICAgICAgIHJlc3VsdCA9IFZlcnNpb24oKQotICAgICAgICBm
b3IgaSBpbiByYW5nZShsZW4odmFsKSk6Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBpbnQodmFs
W2ldKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVm
IGZyb21fbmFtZShuYW1lKToKLSAgICAgICAgZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9u
YW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVNYXAKLSAgICAgICAgcmV0dXJuIFZlcnNpb25OYW1l
TWFwLm1hcCgpLmZyb21fbmFtZShuYW1lKVsxXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1h
am9yPTAsIG1pbm9yPTAsIHRpbnk9MCwgbWljcm89MCwgbmFubz0wKToKLSAgICAgICAgc2VsZi5t
YWpvciA9IGludChtYWpvcikKLSAgICAgICAgc2VsZi5taW5vciA9IGludChtaW5vcikKLSAgICAg
ICAgc2VsZi50aW55ID0gaW50KHRpbnkpCi0gICAgICAgIHNlbGYubWljcm8gPSBpbnQobWljcm8p
Ci0gICAgICAgIHNlbGYubmFubyA9IGludChuYW5vKQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6
Ci0gICAgICAgIHJldHVybiA1Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShrZXksIGludCk6Ci0gICAgICAgICAgICBpZiBrZXkgPT0gMDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5tYWpvcgotICAgICAgICAgICAgZWxpZiBrZXkg
PT0gMToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5taW5vcgotICAgICAgICAgICAgZWxp
ZiBrZXkgPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aW55Ci0gICAgICAgICAg
ICBlbGlmIGtleSA9PSAzOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm1pY3JvCi0gICAg
ICAgICAgICBlbGlmIGtleSA9PSA0OgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbm8K
LSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1ZlcnNpb24ga2V5IG11c3QgYmUgYmV0d2Vl
biAwIGFuZCA0JykKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKLSAgICAgICAg
ICAgIGlmIGhhc2F0dHIoc2VsZiwga2V5KToKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0
cihzZWxmLCBrZXkpCi0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWZXJzaW9uIGtleSBt
dXN0IGJlIG1ham9yLCBtaW5vciwgdGlueSwgbWljcm8gb3IgbmFubycpCi0gICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ0V4cGVjdGVkIHZlcnNpb24ga2V5IHRvIGJlIHN0cmluZyBvciBpbnRlZ2Vy
JykKLQotICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYg
aXNpbnN0YW5jZShrZXksIGludCk6Ci0gICAgICAgICAgICBpZiBrZXkgPT0gMDoKLSAgICAgICAg
ICAgICAgICBzZWxmLm1ham9yID0gaW50KHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBz
ZWxmLm1ham9yCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAxOgotICAgICAgICAgICAgICAgIHNl
bGYubWlub3IgPSBpbnQodmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWlub3IK
LSAgICAgICAgICAgIGVsaWYga2V5ID09IDI6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW55ID0g
aW50KHZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRpbnkKLSAgICAgICAgICAg
IGVsaWYga2V5ID09IDM6Ci0gICAgICAgICAgICAgICAgc2VsZi5taWNybyA9IGludCh2YWx1ZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5taWNybwotICAgICAgICAgICAgZWxpZiBrZXkg
PT0gNDoKLSAgICAgICAgICAgICAgICBzZWxmLm5hbm8gPSBpbnQodmFsdWUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHNlbGYubmFubwotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVmVy
c2lvbiBrZXkgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDQnKQotICAgICAgICBlbGlmIGlzaW5zdGFu
Y2Uoa2V5LCBzdHIpOgotICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBrZXkpOgotICAgICAg
ICAgICAgICAgIHJldHVybiBzZXRhdHRyKHNlbGYsIGtleSwgdmFsdWUpCi0gICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdWZXJzaW9uIGtleSBtdXN0IGJlIG1ham9yLCBtaW5vciwgdGlueSwg
bWljcm8gb3IgbmFubycpCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0V4cGVjdGVkIHZlcnNp
b24ga2V5IHRvIGJlIHN0cmluZyBvciBpbnRlZ2VyJykKLQotICAgICMgMTEuMiBpcyBpbiAxMSwg
YnV0IDExIGlzIG5vdCBpbiAxMS4yCi0gICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2ZXJzaW9u
KToKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmVyc2lvbiwgVmVyc2lvbikKLSAgICAgICAg
ZG9lc19tYXRjaCA9IFRydWUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHZlcnNpb24pKToK
LSAgICAgICAgICAgIGlmIHNlbGZbaV0gIT0gdmVyc2lvbltpXToKLSAgICAgICAgICAgICAgICBk
b2VzX21hdGNoID0gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBkb2VzX21hdGNoIGFuZCBzZWxm
W2ldICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBU
cnVlCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgbGVuX3RvX3ByaW50ID0gMQot
ICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2VsZikpOgotICAgICAgICAgICAgaWYgc2VsZltp
XToKLSAgICAgICAgICAgICAgICBsZW5fdG9fcHJpbnQgPSBpICsgMQotICAgICAgICByZXN1bHQg
PSBzdHIoc2VsZi5tYWpvcikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuX3RvX3ByaW50IC0g
MSk6Ci0gICAgICAgICAgICByZXN1bHQgKz0gJy57fScuZm9ybWF0KHNlbGZbaSArIDFdKQotICAg
ICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJl
dHVybiBoYXNoKHN0cihzZWxmKSkKLQotICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKLSAg
ICAgICAgaWYgb3RoZXIgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGZv
ciBpIGluIHJhbmdlKGxlbihzZWxmKSk6Ci0gICAgICAgICAgICBkaWZmID0gc2VsZltpXSAtIG90
aGVyW2ldCi0gICAgICAgICAgICBpZiBkaWZmOgotICAgICAgICAgICAgICAgIHJldHVybiBkaWZm
Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPT0gMAotCi0gICAgZGVmIF9fbmVfXyhzZWxm
LCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIpICE9IDAKLQotICAg
IGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZi5fX2NtcF9fKG90
aGVyKSA8IDAKLQotICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4g
c2VsZi5fX2NtcF9fKG90aGVyKSA8PSAwCi0KLSAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPiAwCi0KLSAgICBkZWYgX19nZV9f
KHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbXBfXyhvdGhlcikgPj0gMAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXAucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5weQkocmV2aXNpb24gMjY0NDE4
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOSBAQAogCiBpbXBvcnQgcmUKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQg
aW1wb3J0IG1lbW9pemVkCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJz
aW9uCiAKIAogUFVCTElDX1RBQkxFID0gJ3B1YmxpYycKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3ZlcnNpb25fbmFtZV9tYXBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl9uYW1lX21hcF91bml0dGVzdC5w
eQkocmV2aXNpb24gMjY0NDE4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVy
c2lvbl9uYW1lX21hcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOSBA
QAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24K
KwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhv
c3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1lTWFwCiAKIApJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbl91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNjQ0MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi92ZXJzaW9uX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMTMzICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVuaXR0ZXN0Ci0K
LWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KLQotCi1jbGFzcyBW
ZXJzaW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3Rfc3RyaW5n
X2NvbnN0cnVjdG9yKHNlbGYpOgotICAgICAgICB2ID0gVmVyc2lvbi5mcm9tX3N0cmluZygnMS4y
LjMuNC41JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1ham9yLCAxKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHYubWlub3IsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50
aW55LCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWljcm8sIDQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodi5uYW5vLCA1KQotCi0gICAgZGVmIHRlc3RfZnJvbV9saXN0KHNlbGYp
OgotICAgICAgICB2ID0gVmVyc2lvbi5mcm9tX2l0ZXJhYmxlKFsxLCAyLCAzLCA0LCA1XSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1ham9yLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHYubWlub3IsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50aW55LCAzKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHYubWljcm8sIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodi5uYW5vLCA1KQotCi0gICAgZGVmIHRlc3RfZnJvbV90dXBsZShzZWxmKToKLSAgICAgICAg
diA9IHYgPSBWZXJzaW9uLmZyb21faXRlcmFibGUoKDEsIDIsIDMpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHYubWFqb3IsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taW5vciwg
MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRpbnksIDMpCi0KLSAgICBkZWYgdGVzdF9p
bnRfY29uc3RydWN0b3Ioc2VsZik6Ci0gICAgICAgIHYgPSBWZXJzaW9uKDEpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodi5tYWpvciwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm1p
bm9yLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudGlueSwgMCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh2Lm1pY3JvLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubmFu
bywgMCkKLQotICAgIGRlZiB0ZXN0X2xlbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oVmVyc2lvbigxLCAyLCAzLCA0LCA1KSksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKFZlcnNpb24oKSksIDUpCi0KLSAgICBkZWYgdGVzdF9zZXRfYnlfaW50KHNlbGYpOgot
ICAgICAgICB2ID0gVmVyc2lvbigpCi0gICAgICAgIHZbMF0gPSAxCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodi5tYWpvciwgMSkKLSAgICAgICAgdlsxXSA9IDIKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh2Lm1pbm9yLCAyKQotICAgICAgICB2WzJdID0gMwotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHYudGlueSwgMykKLSAgICAgICAgdlszXSA9IDQKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh2Lm1pY3JvLCA0KQotICAgICAgICB2WzRdID0gNQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHYubmFubywgNSkKLQotICAgIGRlZiB0ZXN0X3NldF9ieV9zdHJpbmcoc2VsZik6Ci0gICAg
ICAgIHYgPSBWZXJzaW9uKCkKLSAgICAgICAgdlsnbWFqb3InXSA9IDEKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh2Lm1ham9yLCAxKQotICAgICAgICB2WydtaW5vciddID0gMgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHYubWlub3IsIDIpCi0gICAgICAgIHZbJ3RpbnknXSA9IDMKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRpbnksIDMpCi0gICAgICAgIHZbJ21pY3JvJ10gPSA0Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5taWNybywgNCkKLSAgICAgICAgdlsnbmFubyddID0g
NQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYubmFubywgNSkKLQotICAgIGRlZiB0ZXN0X2dl
dF9ieV9pbnQoc2VsZik6Ci0gICAgICAgIHYgPSBWZXJzaW9uKDEsIDIsIDMsIDQsIDUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodlswXSwgdi5tYWpvcikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh2WzFdLCB2Lm1pbm9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbMl0sIHYudGlu
eSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2WzNdLCB2Lm1pY3JvKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHZbNF0sIHYubmFubykKLQotICAgIGRlZiB0ZXN0X2dldF9ieV9zdHJpbmco
c2VsZik6Ci0gICAgICAgIHYgPSBWZXJzaW9uKDEsIDIsIDMsIDQsIDUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodlsnbWFqb3InXSwgdi5tYWpvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh2WydtaW5vciddLCB2Lm1pbm9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbJ3Rpbnkn
XSwgdi50aW55KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbJ21pY3JvJ10sIHYubWljcm8p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlsnbmFubyddLCB2Lm5hbm8pCi0KLSAgICBkZWYg
dGVzdF9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFZlcnNpb24o
MSwgMiwgMykpLCAnMS4yLjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihWZXJzaW9u
KDEsIDIsIDApKSwgJzEuMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFZlcnNpb24o
MSwgMikpLCAnMS4yJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoVmVyc2lvbigwLCAw
LCAzKSksICcwLjAuMycpCi0KLSAgICBkZWYgdGVzdF9jb250YWluZWRfaW4oc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAxKSBpbiBWZXJzaW9uKDExKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDEsIDIpIGluIFZlcnNpb24oMTEsIDEpKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFZlcnNpb24oMTEpIGluIFZlcnNpb24oMTEsIDEpKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFZlcnNpb24oMTEpIGluIFZlcnNpb24oMTEsIDEsIDIp
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFZlcnNpb24oMTEsIDEpIGluIFZlcnNpb24oMTEs
IDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSkgaW4gVmVyc2lvbigx
MSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAxKSBpbiBWZXJzaW9uKDEx
LCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEsIDEsIDIpIGluIFZlcnNp
b24oMTEsIDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSkgaW4gVmVy
c2lvbigxMSwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAwKSBpbiBW
ZXJzaW9uKDExKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEpIGluIFZlcnNp
b24oMTEsIDAsIDApKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoVmVyc2lvbigxMSwgMCwgMCkg
aW4gVmVyc2lvbigxMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShWZXJzaW9uKDExLCAxKSBp
biBWZXJzaW9uKDExLCAxLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFZlcnNpb24oMTEs
IDEsIDApIGluIFZlcnNpb24oMTEsIDEpKQotCi0gICAgZGVmIHRlc3RfY29tcGFyZV92ZXJzaW9u
cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChWZXJzaW9uKDEsIDIsIDMpLCBWZXJz
aW9uKDEsIDIsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoVmVyc2lvbigxLCAyLCA0
KSwgVmVyc2lvbigxLCAyLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKFZlcnNpb24o
MSwgMywgMiksIFZlcnNpb24oMSwgMiwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihW
ZXJzaW9uKDIsIDEsIDEpLCBWZXJzaW9uKDEsIDIsIDMpKQotICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKFZlcnNpb24oMSwgMiwgMyksIE5vbmUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAg
aW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGUKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LmNoZWNrb3V0IGltcG9ydCBDaGVja291dAogZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlciAgIyBGSVhNRTogVGhpcyBzaG91
bGQgbm90IGJlIG5lZWRlZAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9y
dCBBdHRhY2htZW50ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCkBAIC01Miw3
ICs1NCw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0KIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lz
dGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGlt
cG9ydCBNb2NrRXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBW
ZXJzaW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0IGltcG9ydCBHaXQs
IEFtYmlndW91c0NvbW1pdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20u
ZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQuc2NtLnNjbSBpbXBvcnQgU0NNLCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRf
ZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJvcgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CShyZXZpc2lvbiAyNjQ0
MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTMgQEAgaW1wb3J0IHN0cmluZwogaW1wb3J0
IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9u
CisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY20gaW1wb3J0IEF1dGhlbnRp
Y2F0aW9uRXJyb3IsIFNDTSwgY29tbWl0X2Vycm9yX2hhbmRsZXIKIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZy51cmxzIGltcG9ydCBzdm5fc2VydmVyX2hvc3QsIHN2bl9zZXJ2ZXJfcmVhbG0K
IGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJv
cgogZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVy
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3Nh
cnkKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZv
cm1pbmZvLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9wbGF0Zm9ybWluZm8ucHkJKHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDggKzMzLDkgQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgcGxhdGZvcm0KIAor
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRweS5jb21tb24u
bWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGlt
cG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9y
dCBQVUJMSUNfVEFCTEUsIElOVEVSTkFMX1RBQkxFLCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJv
cgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1p
bmZvX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5CShyZXZpc2lvbiAyNjQ0MTgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25f
bmFtZV9tYXAgaW1wb3J0IFBVQkxJQ19UQUJMRSwgSU5URVJOQUxfVEFCTEUsIFZlcnNpb25OYW1l
TWFwCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnlfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3Rvcnlf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBA
QAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24K
KwogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhv
c3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIAogZnJvbSB3
ZWJraXRweS5wb3J0IGltcG9ydCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGd0
awpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyNjQ0MTgpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
MSwxMiArMjEsMTAgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCB0
cmFjZWJhY2sKIAotZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVk
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25h
bWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcCwgSU5URVJOQUxfVEFCTEUKLWZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25m
aWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBhcHBsZV9hZGRpdGlv
bnMKIGZyb20gd2Via2l0cHkucG9ydC5kZXZpY2VfcG9ydCBpbXBvcnQgRGV2aWNlUG9ydAogZnJv
bSB3ZWJraXRweS5wb3J0LnNpbXVsYXRvcl9wcm9jZXNzIGltcG9ydCBTaW11bGF0b3JQcm9jZXNz
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZS5weQkocmV2aXNp
b24gMjY0NDE4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2UucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDkgKzIyLDEwIEBACiAKIGltcG9ydCBsb2dnaW5nCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1l
bW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNo
bG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9y
dCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBhcHBsZV9hZGRpdGlv
bnMKIGZyb20gd2Via2l0cHkucG9ydC5pb3MgaW1wb3J0IElPU1BvcnQKIApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19kZXZpY2VfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNl
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw5ICsyMiwxMCBAQAogCiBpbXBvcnQg
dGltZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZl
MiwgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNp
b24KIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IGNsZWFyX2NhY2hlZF9jb25maWd1
cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9zX2RldmljZSBpbXBvcnQgSU9TRGV2aWNlUG9y
dAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBpb3NfdGVzdGNhc2UKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyNjQ0MTgp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsOCArMjIsOSBAQAogCiBpbXBvcnQgbG9nZ2luZwogCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBp
bXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNp
b24KIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucywgQ29u
ZmlnCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9zIGltcG9ydCBJT1NQb3J0CiBmcm9tIHdlYmtpdHB5
Lnhjb2RlLmRldmljZV90eXBlIGltcG9ydCBEZXZpY2VUeXBlCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQkocmV2
aXNpb24gMjY0NDE4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0
b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMiBAQAogIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9zX3NpbXVsYXRvciBpbXBvcnQgSU9T
U2ltdWxhdG9yUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBpb3NfdGVzdGNhc2UKIGZy
b20gd2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0
cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkucG9ydC5jb25m
aWcgaW1wb3J0IGNsZWFyX2NhY2hlZF9jb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyLCBTY3JpcHRFcnJvcgpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc190ZXN0Y2FzZS5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAy
NjQ0MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3Rlc3RjYXNlLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw4IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNp
b24KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkucG9y
dCBpbXBvcnQgZGFyd2luX3Rlc3RjYXNlCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L21hYy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
bWFjLnB5CShyZXZpc2lvbiAyNjQ0MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
bWFjLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSwxMCBAQCBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IG9zCiBpbXBvcnQgcmUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24K
KwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3
ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgogZnJvbSB3ZWJraXRweS5jb21t
b24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgUFVCTElDX1RBQkxFLCBJTlRFUk5BTF9UQUJMRQog
ZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVN
YXAKIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucywgQ29u
ZmlnCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxNCBAQAogIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwog
ZnJvbSB3ZWJraXRweS5wb3J0Lm1hYyBpbXBvcnQgTWFjUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0
IGltcG9ydCBkYXJ3aW5fdGVzdGNhc2UKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90
ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0
IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09w
dGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQg
TW9ja0V4ZWN1dGl2ZSwgTW9ja0V4ZWN1dGl2ZTIsIFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJz
aW9uX25hbWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcAogCiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC93YXRjaC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvd2F0Y2gucHkJKHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93YXRjaC5weQkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAog
CiBpbXBvcnQgbG9nZ2luZwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQg
bWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLnZl
cnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1lTWFwLCBJTlRFUk5BTF9UQUJMRQogZnJv
bSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25zCiBmcm9tIHdlYmtp
dHB5LnBvcnQuZGV2aWNlX3BvcnQgaW1wb3J0IERldmljZVBvcnQKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC93YXRjaF9kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX2RldmljZS5weQkocmV2aXNpb24gMjY0NDE4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX2RldmljZS5weQkod29ya2luZyBjb3B5
KQpAQCAtMjIsOSArMjIsMTAgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIAorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0
IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBD
cmFzaExvZ3MKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZy
b20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IGFwcGxlX2FkZGl0aW9ucwogZnJvbSB3ZWJr
aXRweS5wb3J0LndhdGNoIGltcG9ydCBXYXRjaFBvcnQKIApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3dhdGNoX3NpbXVsYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfc2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyNjQ0MTgpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfc2ltdWxhdG9yLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw4ICsyMiw5IEBACiAKIGltcG9ydCBsb2dnaW5nCiAKK2Zyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGlt
cG9ydCBtZW1vaXplZAotZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lv
bgogZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRpb25zCiBmcm9t
IHdlYmtpdHB5LnBvcnQud2F0Y2ggaW1wb3J0IFdhdGNoUG9ydAogZnJvbSB3ZWJraXRweS54Y29k
ZS5kZXZpY2VfdHlwZSBpbXBvcnQgRGV2aWNlVHlwZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3dhdGNoX3NpbXVsYXRvcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjQ0MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2F0Y2hfc2ltdWxh
dG9yX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCwxMCBAQAogIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgVmVyc2lvbgorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sg
aW1wb3J0IE1vY2tFeGVjdXRpdmUyLCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHku
Y29tbW9uLnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcg
aW1wb3J0IGNsZWFyX2NhY2hlZF9jb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQud2F0
Y2hfc2ltdWxhdG9yIGltcG9ydCBXYXRjaFNpbXVsYXRvclBvcnQKIGZyb20gd2Via2l0cHkucG9y
dCBpbXBvcnQgd2F0Y2hfdGVzdGNhc2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93YXRjaF90ZXN0Y2FzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvd2F0Y2hfdGVzdGNhc2UucHkJKHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC93YXRjaF90ZXN0Y2FzZS5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDI3IEBACi1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCisj
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBWZXJzaW9uCisKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZGFyd2luX3Rlc3Rj
YXNlCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiAKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkocmV2aXNpb24gMjY0NDE4KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEg
KzM1LDExIEBAIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNy
YXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lz
dGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0
aCBpbXBvcnQgYWJzcGF0aF90b191cmksIGN5Z3BhdGgKLWZyb20gd2Via2l0cHkuY29tbW9uLnZl
cnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9t
YXAgaW1wb3J0IFZlcnNpb25OYW1lTWFwCiBmcm9tIHdlYmtpdHB5LnBvcnQuYXBwbGUgaW1wb3J0
IEFwcGxlUG9ydAogZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgYXBwbGVfYWRkaXRp
b25zCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxMSBAQAogIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KKwog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9j
ayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb24gaW1w
b3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0
IFBVQkxJQ19UQUJMRSwgVmVyc2lvbk5hbWVNYXAKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQg
cG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5wb3J0LndpbiBpbXBvcnQgV2luUG9ydApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDI2NDQxOCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2Miw3IEBAIGRlZiBtYWluKCk6CiAKICAgICB0ZXN0ZXIgPSBUZXN0ZXIoKQogICAgIHRlc3Rl
ci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycp
LCAnd2Via2l0cHknKQorICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9y
b290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdsaWJyYXJpZXMnLCAnd2Via2l0Y29yZXB5JyksICd3
ZWJraXRjb3JlcHknKQogCiAgICAgIyBUaGVyZSBpcyBubyBXZWJLaXQyIG9uIFdpbmRvd3MsIHNv
IHdlIGRvbid0IG5lZWQgdG8gcnVuIFdlYktpdDIgdW5pdHRlc3RzIG9uIGl0LgogICAgIGlmIG5v
dCAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAnY3ln
d2luJyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL2RldmljZV90eXBlX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvZGV2
aWNlX3R5cGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkveGNvZGUvZGV2aWNlX3R5cGVfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDcgKzIyLDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9u
LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBWZXJzaW9u
CisKIGZyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUgaW1wb3J0IERldmljZVR5cGUKIAog
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2
aWNlLnB5CShyZXZpc2lvbiAyNjQ0MTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2Rl
L3NpbXVsYXRlZF9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMiBAQCBp
bXBvcnQgcGxpc3RsaWIKIGltcG9ydCByZQogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFZlcnNpb24KKwogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0
IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0
IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnRpbWVvdXRfY29udGV4dCBpbXBvcnQg
VGltZW91dAotZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbiBpbXBvcnQgVmVyc2lvbgogZnJv
bSB3ZWJraXRweS5wb3J0LmRldmljZSBpbXBvcnQgRGV2aWNlCiBmcm9tIHdlYmtpdHB5Lnhjb2Rl
LmRldmljZV90eXBlIGltcG9ydCBEZXZpY2VUeXBlCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NDQxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxh
dGVkX2RldmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsMTggQEAK
ICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGpzb24KK2lt
cG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgorCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRp
dmUyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBN
b2NrRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9j
ayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29t
cGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQorZnJvbSB3ZWJraXRweS54Y29k
ZS5kZXZpY2VfdHlwZSBpbXBvcnQgRGV2aWNlVHlwZQorZnJvbSB3ZWJraXRweS54Y29kZS5zaW11
bGF0ZWRfZGV2aWNlIGltcG9ydCBEZXZpY2VSZXF1ZXN0LCBTaW11bGF0ZWREZXZpY2VNYW5hZ2Vy
LCBTaW11bGF0ZWREZXZpY2UKKwogc2ltY3RsX2pzb25fb3V0cHV0ID0gIiIiewogICJkZXZpY2V0
eXBlcyIgOiBbCiAgICB7CkBAIC00OTUsMTggKzUwNyw2IEBAIHNpbWN0bF9qc29uX291dHB1dCA9
ICIiInsKICBdCiB9IiIiCiAKLWltcG9ydCBqc29uCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZl
MgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9j
a0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sg
aW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uIGltcG9y
dCBWZXJzaW9uCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1w
b3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKLWZyb20gd2Via2l0cHkueGNvZGUuZGV2aWNlX3R5cGUg
aW1wb3J0IERldmljZVR5cGUKLWZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2RldmljZSBp
bXBvcnQgRGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlciwgU2ltdWxhdGVkRGV2
aWNlCi0KLQogY2xhc3MgU2ltdWxhdGVkRGV2aWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICBAc3RhdGljbWV0aG9kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>