<?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>216389</bug_id>
          
          <creation_ts>2020-09-10 17:39:49 -0700</creation_ts>
          <short_desc>No audio output when unplugged wired headset during a call</short_desc>
          <delta_ts>2021-12-02 06:16:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Safari 13</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Trung Le">ldttmt</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>daginge</cc>
    
    <cc>dan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>olsviate</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>visherandro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1687610</commentid>
    <comment_count>0</comment_count>
    <who name="Trung Le">ldttmt</who>
    <bug_when>2020-09-10 17:39:49 -0700</bug_when>
    <thetext>In our webRTC application on iPad, if I unplug a wired headset during a call, I would not be able to hear others in the call anymore. It seems the audio output does not switch automatically from the headset to the iPad speaker.If I use a Bluetooth headset, then the audio output switches automatically to the iPad speaker and i can hear others fine.
I was also be able to reproduce the same issue with other webRTC apps like Google Meet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687672</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-10 23:59:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/68692800&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742201</commentid>
    <comment_count>2</comment_count>
      <attachid>423874</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-22 05:33:59 -0700</bug_when>
    <thetext>Created attachment 423874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742209</commentid>
    <comment_count>3</comment_count>
      <attachid>423875</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-22 06:24:41 -0700</bug_when>
    <thetext>Created attachment 423875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742225</commentid>
    <comment_count>4</comment_count>
      <attachid>423882</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-22 07:36:41 -0700</bug_when>
    <thetext>Created attachment 423882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742245</commentid>
    <comment_count>5</comment_count>
      <attachid>423890</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-22 08:46:48 -0700</bug_when>
    <thetext>Created attachment 423890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742285</commentid>
    <comment_count>6</comment_count>
      <attachid>423882</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-22 10:36:00 -0700</bug_when>
    <thetext>Comment on attachment 423882
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +
&gt; +

Nit: two blank lines

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.h:109
&gt; +private:

Nit: don&apos;t need a second `private`

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:76
&gt; +

Nit: extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742392</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-22 12:47:34 -0700</bug_when>
    <thetext>*** Bug 223182 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742403</commentid>
    <comment_count>8</comment_count>
      <attachid>423890</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-22 12:58:08 -0700</bug_when>
    <thetext>Comment on attachment 423890
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +
&gt; +

Nit: two blank lines

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.h:109
&gt; +private:

Do we need the second `private:`?

&gt; Source/WebCore/platform/audio/ios/MediaSessionHelperIOS.mm:76
&gt; +

Nit: extra blank line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742751</commentid>
    <comment_count>9</comment_count>
      <attachid>424010</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-23 03:56:15 -0700</bug_when>
    <thetext>Created attachment 424010
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746444</commentid>
    <comment_count>10</comment_count>
      <attachid>425003</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-02 03:11:15 -0700</bug_when>
    <thetext>Created attachment 425003
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746469</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 06:19:05 -0700</bug_when>
    <thetext>Committed r275417: &lt;https://commits.webkit.org/r275417&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425003.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762361</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-21 04:11:46 -0700</bug_when>
    <thetext>*** Bug 226075 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811518</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-03 10:36:45 -0700</bug_when>
    <thetext>*** Bug 209594 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819673</commentid>
    <comment_count>14</comment_count>
    <who name="Vishvanath Eshwer">visherandro</who>
    <bug_when>2021-12-02 06:15:57 -0800</bug_when>
    <thetext>Is there a fix to this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819674</commentid>
    <comment_count>15</comment_count>
    <who name="Vishvanath Eshwer">visherandro</who>
    <bug_when>2021-12-02 06:16:35 -0800</bug_when>
    <thetext>(In reply to Trung Le from comment #0)
&gt; In our webRTC application on iPad, if I unplug a wired headset during a
&gt; call, I would not be able to hear others in the call anymore. It seems the
&gt; audio output does not switch automatically from the headset to the iPad
&gt; speaker.If I use a Bluetooth headset, then the audio output switches
&gt; automatically to the iPad speaker and i can hear others fine.
&gt; I was also be able to reproduce the same issue with other webRTC apps like
&gt; Google Meet.

Did you find a solution to this?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423874</attachid>
            <date>2021-03-22 05:33:59 -0700</date>
            <delta_ts>2021-03-22 06:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216389-20210322133357.patch</filename>
            <type>text/plain</type>
            <size>29439</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4YjYwMTE2MWU1OTEx
MWM4NDM4ZjI4OWRmZGRiNTkxYzA1N2UyOC4uODI5NDgxMWU5ZmQ1MTYwYTQ3OTE2NzY3ZGQ4Zjk3
ZWNjZjM3YjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQg
d2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5nUm91dGVDaGFu
Z2UgZm9yIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBJZiBpdCBpcyBhIG1lZGlhIHN0cmVhbSBi
YWNrZWQgdmlkZW8gZWxlbWVudCwgZG8gbm90IHBhdXNlIG9uIGFjdGl2ZSBhdWRpbyByb3V0ZSBj
aGFuZ2UuCisKKyAgICAgICAgSW1wbGVtZW50IGludGVybmFsIEFQSSB0byB3cml0ZSBhIGxheW91
dCB0ZXN0LgorCisgICAgICAgIFJlZmFjdG9yaW5nIHRvIHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVu
IFdlYkNvcmUgYW5kIFdlYktpdCBhbmQgaW1wbGVtZW50IHRoZSBpbnRlcm5hbCBBUEkuCisgICAg
ICAgIEltcHJvdmUgaXNvbGF0aW9uIG9mIE1lZGlhU2Vzc2lvbkhlbHBlciBieSBtb3ZpbmcgYWxs
IGl0cyBtZW1iZXJzIGZyb20gcHJvdGVjdGVkIHRvIHByaXZhdGUuCisKKworICAgICAgICBUZXN0
OiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlv
LXJvdXRlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6bWVkaWFTZXJ2
ZXJDb25uZWN0aW9uRGllZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhl
bHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjEtMDMtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBS
VENEYXRhQ2hhbm5lbCB0cmFuc2ZlciBvdXQgb2YgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZWVlNTI3
NzNlYWMwMzJjMDlmZjljYzMzNzk2MzM5NTI5YmVmMGM3Li5jZGFmYjliY2U0ODE1YWQyYTRkNDBi
ODUxNGFjMmYzZmQwMmYzY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTIy
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBv
dXRwdXQgd2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIFdlYkNvcmUgbWV0aG9kcyBpbnN0ZWFkIG9m
IHJlaW1wbGVtZW50aW5nIHRoZW0gaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6CisKIDIwMjEtMDMtMjIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBlYXJseSByZXR1cm4g
aW4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJl
ZERldmljZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDAzZTkzOWY2MTI1ODM0NDczZWQ4MjQyN2Q1MThmZTIxZjZhN2QyMWUuLjk1MWQ0NWE5NDUzMzY3
NGE0ZDJjMzBjOTM0MGZkYjJiMDM2YzkyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNzYyMSw2ICs3NjIxLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJvY2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmco
KTsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UoKSBjb25zdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcmV0
dXJuIGhhc01lZGlhU3RyZWFtU3JjT2JqZWN0KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzMDZjNmZhNmFiYjU4YjJlNmZiODBjNjBl
OTBiOWQxYWE1ODhmYjIxLi45MmJlYjk3YmVhN2RjY2IyYTc3MzIyMjU5OTJmNzQ4NDU4ZDY0ZmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtODcwLDYgKzg3MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc01lZGlhU3RyZWFtU291cmNlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwcm9j
ZXNzSXNTdXNwZW5kZWRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVBh
dXNlRHVyaW5nUm91dGVDaGFuZ2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFnZU11dGVk
U3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDEwODc4
NDYyYmQwMTFiMDg0ZDFiZGEwYTgzOTE4NDdmOGZhNThkZGYuLjFlNjg3M2RlOGZmMjI1ODMxMmRi
NTRhMmU2NzkzMjk5NGVjZTNjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTY1LDE1ICs2NSwx
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTaGFyZWRIZWxwZXIoKTsKIAogICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBNZWRpYVNlc3Np
b25IZWxwZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKTsKICAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25IZWxwZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVu
dChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQmKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpID0gMDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCk7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CiAKKyAg
ICB2b2lkIHNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoYm9vbCBpc0V4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlKSB7IG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSA9IGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGU7IH0KKwogICAgIGJvb2wgaXNNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSBjb25zdCB7IHJldHVybiBtX21vbml0b3JpbmdXaXJlbGVz
c1JvdXRlc0NvdW50OyB9CiAgICAgYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlOyB9CiAg
ICAgYm9vbCBhY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8oKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbzsgfQpAQCAtODEsMTUg
Kzg0LDQyIEBAIHB1YmxpYzoKIAogICAgIE1lZGlhUGxheWJhY2tUYXJnZXQqIHBsYXliYWNrVGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1RhcmdldC5nZXQoKTsgfQogCisgICAgdXNp
bmcgSGFzQXZhaWxhYmxlVGFyZ2V0cyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6SGFzQXZh
aWxhYmxlVGFyZ2V0czsKKyAgICB1c2luZyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBN
ZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDsKKyAg
ICB1c2luZyBTaG91bGRQYXVzZSA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1
c2U7CisgICAgdXNpbmcgU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBNZWRpYVNlc3Npb25IZWxwZXJD
bGllbnQ6OlN1cHBvcnRzQWlyUGxheVZpZGVvOworICAgIHVzaW5nIFN1c3BlbmRlZFVuZGVyTG9j
ayA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrOworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChTdXNwZW5kZWRVbmRlckxvY2spOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCgpOworCiBwcm90ZWN0ZWQ6CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShIYXNBdmFpbGFibGVUYXJnZXRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlzUGxheWlu
Z1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1
cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJik7CisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJu
YWwoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJ
bnRlcm5hbCgpID0gMDsKKworcHJpdmF0ZToKICAgICBXZWFrSGFzaFNldDxNZWRpYVNlc3Npb25I
ZWxwZXJDbGllbnQ+IG1fY2xpZW50czsKLSAgICB1aW50MzJfdCBtX21vbml0b3JpbmdXaXJlbGVz
c1JvdXRlc0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlIHsgZmFsc2UgfTsKKyAgICB1aW50MzJfdCBtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5
VmlkZW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5p
dCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tU
YXJnZXQ7CiB9OwogCitpbmxpbmUgTWVkaWFTZXNzaW9uSGVscGVyOjpNZWRpYVNlc3Npb25IZWxw
ZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQorICAgIDogbV9pc0V4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUp
Cit7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQppbmRleCAyMjQ3ZjI2NGZh
ODQ4MjdmZjQ0YWZiOTFkNmFhM2MxODE5ZWI0Mzk4Li5kY2IwMzI4YzhmN2U5MTkzNDk1MjY5OThi
NmEyNjZmOGE4YzIzYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTczLDYgKzczLDcgQEAg
Y2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyaU9TOwogI2VuZGlmCiAgICAgYm9vbCBfbW9uaXRvcmlu
Z0FpclBsYXlSb3V0ZXM7CiAgICAgYm9vbCBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc1Bl
bmRpbmc7CisKIH0KIAogLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9uSGVscGVy
aU9TKiljYWxsYmFjazsKQEAgLTk2LDEwICs5Nyw2IEBAIHB1YmxpYzoKICAgICB+TWVkaWFTZXNz
aW9uSGVscGVyaU9TKCk7CiAKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNw
ZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUo
KTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAjaWYgSEFWRShDRUxF
U1RJQUwpCiAgICAgdm9pZCBtZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCk7CiAgICAgdm9pZCB1
cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJik7CkBAIC0xMTAsMTcgKzEw
NywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1c2luZyBIYXNBdmFpbGFi
bGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVUYXJnZXRz
OwotICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vzc2lvbkhl
bHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OwotICAgIHVzaW5nIFNob3Vs
ZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKLSAgICB1c2lu
ZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VwcG9y
dHNBaXJQbGF5VmlkZW87Ci0gICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7Ci0KICAgICB2b2lkIHNldElzUGxh
eWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwogCiAgICAgdm9pZCBwcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRl
cm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVy
bmFsKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29i
amNPYnNlcnZlcjsKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTE2NiwxMSArMTU3LDkyIEBAIHZv
aWQgTWVkaWFTZXNzaW9uSGVscGVyOjpyZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50JiBjbGllbnQpCiAgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCit2b2lkIE1l
ZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSBz
aG91bGRQYXVzZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpOworfQorCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1
c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxFbnRlckZv
cmVncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25IZWxw
ZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNw
ZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5kZWRVbmRl
ckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVj
b21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAg
ICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwordm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sKKyAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjptZWRpYVNl
cnZlckNvbm5lY3Rpb25EaWVkKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKK30KKwordm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hh
bmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAgICBtX2lz
RXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBoYXNBdmFpbGFibGVUYXJnZXRzID09IEhh
c0F2YWlsYWJsZVRhcmdldHM6OlllczsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKK3sKKyAgICBib29sIG5ld1ZhbHVl
ID0gcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID09IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdDo6WWVzOworICAgIGlmIChuZXdWYWx1ZSA9PSBtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0ID0gbmV3VmFsdWU7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShwbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6
YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0Fp
clBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgcGxheWJhY2tUYXJnZXQpCit7
CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUocGxheWJhY2tUYXJnZXQpOworICAgIG1f
YWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3VwcG9ydHNBaXJQbGF5Vmlk
ZW8gPT0gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllczsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uoc3Vw
cG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKK30KKwordm9pZCBNZWRpYVNl
c3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAgICBpZiAo
bV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICByZXR1cm47CisgICAg
c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCit2b2lkIE1lZGlh
U2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7CisgICAgaWYg
KCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9tb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCiBNZWRpYVNlc3Npb25IZWxwZXJpT1M6
Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAgICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9uSGVscGVy
IGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBtX2lzRXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxh
YmxlXTsKKyAgICBzZXRJc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKFttX29iamNPYnNl
cnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTIwNywxMSArMjc5LDggQEAgdm9p
ZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQo
aW50IHBpZCkKICNlbmRpZgogfQogCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0
YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmIChtX21vbml0
b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAgIFttX29i
amNPYnNlcnZlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKQEAgLTIxOSwxNiArMjg4
LDggQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNz
Um91dGVzKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgTWVkaWFT
ZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3ZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwo
KQogewotICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRDSE9TKQog
ICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwpAQCAtMjQ5
LDggKzMxMCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZlckNvbm5l
Y3Rpb25EaWVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXZlUHJlc2VudGVkQXBwbGlj
YXRpb25QSUQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKKyAgICBNZWRpYVNlc3Np
b25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAogdm9pZCBNZWRpYVNl
c3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYm
IGNhclBsYXlJc0Nvbm5lY3RlZCkKQEAgLTI3MCw2MyArMzMwLDMyIEBAIHZvaWQgTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJiBj
YXJQbGF5SXNDCiAKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdChib29sIGlzUGxheWluZykKIHsKLSAgICBpZiAoaXNQbGF5aW5nID09
IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBpc1BsYXlpbmc7Ci0gICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9t
b3RpdmVIZWFkVW5pdERpZENoYW5nZShtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID8g
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpZZXMgOiBQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQ6Ok5vKTsKKyAgICBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShp
c1BsYXlpbmcgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOwogfQogI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFMKQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKQogdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbCBzaG91
bGRQYXVzZSkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAg
Y2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91bGRQYXVz
ZTo6WWVzIDogU2hvdWxkUGF1c2U6Ok5vKTsKKyAgICBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KHNob3VsZFBhdXNlID8gU2hvdWxkUGF1c2U6OlllcyA6IFNob3VsZFBhdXNlOjpObyk7CiB9CiAK
IHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKCkK
IHsKLSAgICBtX3BsYXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVh
dGUoKTsKLSAgICBtX2FjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyA9IG1fcGxh
eWJhY2tUYXJnZXQtPnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOwotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYWN0aXZlVmlkZW9Sb3V0ZURp
ZENoYW5nZShtX2FjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyA/IFN1cHBvcnRz
QWlyUGxheVZpZGVvOjpZZXMgOiBTdXBwb3J0c0FpclBsYXlWaWRlbzo6Tm8sICptX3BsYXliYWNr
VGFyZ2V0KTsKKyAgICBhdXRvIHRhcmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3Jl
YXRlKCk7CisgICAgYXV0byBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0YXJnZXQtPnN1
cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOworICAgIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2Uoc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCBXVEZNb3ZlKHRhcmdldCkpOwogfQogI2Vu
ZGlmCiAKLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNs
aWVudC5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwotfQotCi12b2lkIE1lZGlhU2Vzc2lv
bkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2sgdW5kZXJMb2NrKQotewotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQodW5kZXJMb2NrKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6
OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0
aXZlKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxv
Y2sgdW5kZXJMb2NrKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAg
ICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHVuZGVyTG9jayk7Ci19
Ci0KIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZSgpCiB7CisgICAgSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVU
YXJnZXRzOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1faXNFeHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1Rhcmdl
dHNBdmFpbGFibGVdOworICAgIGhhc0F2YWlsYWJsZVRhcmdldHMgPSBbbV9vYmpjT2JzZXJ2ZXIg
aGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllcyA6
IEhhc0F2YWlsYWJsZVRhcmdldHM6Ok5vOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IAotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuZXh0
ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UobV9pc0V4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlID8gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVzIDogSGFzQXZhaWxhYmxlVGFy
Z2V0czo6Tm8pOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZhaWxhYmxlVGFyZ2V0cyk7CiB9CiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCA4NTBjNWY2NWI3MzI0MTVlZDQ5MjZhZjc3NjMzMDM2ODhhMzdmMmJhLi45YWRmY2Vl
Y2JmZjNiMmJlMDM4MjUwMDhlNWM0NzY5ZWZiMjQ0YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC0zMzAsNiArMzMwLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSGVscGVySU9TLmgiCiAjaW5jbHVkZSAiU3lz
dGVtQmF0dGVyeS5oIgogI2luY2x1ZGUgIlZQOVV0aWxpdGllc0NvY29hLmgiCiAjaW5jbHVkZSA8
cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgpAQCAtNDMxNiw2ICs0MzE3LDEzIEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IEludGVybmFsczo6cG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZFN0cmluCiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmFj
dGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbCBzaG91bGRQYXVzZSkKK3sKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5hY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlID8gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpT
aG91bGRQYXVzZTo6WWVzIDogTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTo6
Tm8pOworI2VuZGlmCit9CisKIGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3Bs
YXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIHJldHVybiBl
bGVtZW50LmlzRGlzYWJsaW5nU2xlZXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IGMyODJjMzQxNWM3ODk4NjcyYjJhY2JlYzc3YTM3ZjQ3MWE1NDgxMTguLmEyZWMwNTY1ZGJk
ZTI3YzIyZTJkMjcyYmI2OWEwNDNjMmFlODMwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtNjgwLDYgKzY4MCw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+
IG1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgY29uc3Q7
CiAgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCYs
IFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
b3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiwgZmxvYXQgYXJndW1lbnQpOwor
ICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShib29sIHNob3VsZFBhdXNlKTsKICAg
ICBib29sIGVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmKSBj
b25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODlj
ZTEyZDBjMzVhMmFlMzMzYWE0MWJkOWIyZTc1ZGQ2ODExY2JiYS4uMjhhNzBjODljNTc2YmVhMTg4
M2I3ZmE0MWNhOGQyNGRlNDMyYzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtNzIxLDYgKzcyMSw4IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbD1W
SURFT10gdW5kZWZpbmVkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVt
ZW50IGVsZW1lbnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1X
RUJfQVVESU9dIHVuZGVmaW5lZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29u
dGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlv
bnMpOwogICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5l
ZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVu
cmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDApOworICAgIFtDb25kaXRpb25hbD1WSURFT10g
dW5kZWZpbmVkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbGVhbiBzaG91bGRQYXVzZSk7
CisKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB1bmRlZmluZWQg
c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7
CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNl
cHRpb25dIHVuZGVmaW5lZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERP
TVN0cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOwogICAgIFtDb25kaXRp
b25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHVuZGVmaW5lZCBtb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlckRpc21pc3NQb3B1cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5jcHAKaW5kZXggZDY3NDFiZDUzZDBkOGMzMjM0MGY4NTdiMmVlZGMzNmI4YjU2ODcyNy4u
Y2IyOTZjMDM3MjU2OTBjOGU5Yjk4Nzg1Mzg5Njc1MDI2N2U5YjYxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCkBAIC02NywyNCArNjcsMTMgQEAgdm9pZCBSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24KICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit2b2lk
IFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJ
bnRlcm5hbCgpCiB7Ci0gICAgaWYgKG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQrKykK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpTdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygp
LCB7IH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkKIHsKLSAgICBpZiAoIW1fbW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzQ291bnQpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoLS1tX21vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlc0NvdW50KQotICAgICAgICByZXR1cm47Ci0KICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlN0b3BNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMoKSwgeyB9KTsKIH0KIApAQCAtOTMsNjAgKzgyLDE0IEBAIHZvaWQgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQp
CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjpQcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCksIHsgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKLXsKLSAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spOwotfQotCi12b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVk
VW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KHN1c3BlbmRlZFVuZGVyTG9jayk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFj
dGl2ZSgpOwotfQotCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQot
ICAgICAgICBjbGllbnQuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLX0KLQotdm9pZCBS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKLXsKLSAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOwotfQotCi12
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVu
aXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdCkKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAg
ICAgY2xpZW50LmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKHBsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQotewot
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVzZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZp
ZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRh
cmdldENvbnRleHQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHRhcmdldE9i
amVjdDsKLSAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpCi0gICAgICAgIG1fcGxheWJhY2tUYXJnZXQg
PSBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0
LmF2T3V0cHV0Q29udGV4dCgpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAodGFyZ2V0Q29udGV4dC50
eXBlKCkgIT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUp
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNr
VGFyZ2V0KTsKKyAgICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAppbmRleCBlZGMwMmU0YWYzMDBl
YzliMDQwNWI2Nzk1ZTZiYzRkNGM4NzA4ZDQ4Li5lNDQ5YzQ4NmU0OWI0MmY0ZDAyMDEyNGE4NDhi
Nzg5MzQyZGZkYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtNjIs
MTggKzYyLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICAvLyBNZWRpYVNlc3Npb25I
ZWxwZXIKLSAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7Ci0g
ICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBz
dGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgZmluYWw7CisgICAgdm9pZCBz
dG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSBmaW5hbDsKICAgICB2b2lkIHBy
b3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKIAogICAgIC8vIE1lc3Nh
Z2VzCi0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5k
ZXJMb2NrKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRl
ZFVuZGVyTG9jayk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwot
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLSAgICB2b2lkIGV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpOwotICAg
IHZvaWQgaXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0
b21vdGl2ZUhlYWRVbml0KTsKLSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hv
dWxkUGF1c2UpOwogICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0Fp
clBsYXlWaWRlbywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKICAg
ICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTU0NGZlNWQxYTBjM2VlZjBjMGQ0MTU0
ZDkzOWE1YmNjMjJiNDU0Ny4uYjBjNWQxOGMzNjNkZTI2ZGNhYjhiODhjOWE5ODMzNmU1MTI3Njg2
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQgd2hlbiB1bnBsdWdnZWQg
d2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4Njky
ODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1y
b3V0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUuaHRtbDogQWRkZWQuCisK
IDIwMjEtMDMtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEdlb2xvY2F0aW9uIEFQSSBkb2VzIG5vdCB3b3JrIGluIFdLV2ViVmlldyB3aXRoIGN1c3RvbSBV
Ukwgc2NoZW1lIGhhbmRsZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVt
ZW50LWNoYW5nZS1hdWRpby1yb3V0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk3MWMxZWEy
OTlkYjBlNmJjYzczZDg1MzJlZDVhMWJkOGQyYWNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2Ut
YXVkaW8tcm91dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1MgTWVkaWFT
dHJlYW0gdmlkZW8gc2hvdWxkIG5vdCBiZSBwYXVzZWQgd2hlbiBhdWRpbyByb3V0ZSBjaGFuZ2Vz
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
dmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZmRmMDgwMWI3ZDdjMmIyZjk2ZTljNTViMjg2MjJlNWY1Y2RkOTNj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS5odG1sCkBAIC0wLDAgKzEsMjUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgPHRpdGxlPkNoYW5nZSBvZiBhdWRpbyByb3V0ZTwvdGl0bGU+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxheSBwbGF5
c0lubGluZT48L3ZpZGVvPgorICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3Qp
ID0+IHsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZSB9KTsKKworICAgIGF3YWl0
IHZpZGVvLnBsYXkoKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRl
cm5hbHMuYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSh0cnVlKTsKKworICAgIGF3YWl0IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOworICAgIGFzc2VydF9m
YWxzZSh2aWRlby5wYXVzZWQsICJ2aWRlbyBwYXVzZWQiKTsKK30sICJNZWRpYVN0cmVhbSB2aWRl
byBzaG91bGQgbm90IGJlIHBhdXNlZCB3aGVuIGF1ZGlvIHJvdXRlIGNoYW5nZXMiKTsKKyAgICA8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="443360"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423875</attachid>
            <date>2021-03-22 06:24:41 -0700</date>
            <delta_ts>2021-03-22 07:36:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216389-20210322142439.patch</filename>
            <type>text/plain</type>
            <size>29427</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4YjYwMTE2MWU1OTEx
MWM4NDM4ZjI4OWRmZGRiNTkxYzA1N2UyOC4uODI5NDgxMWU5ZmQ1MTYwYTQ3OTE2NzY3ZGQ4Zjk3
ZWNjZjM3YjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQg
d2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5nUm91dGVDaGFu
Z2UgZm9yIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBJZiBpdCBpcyBhIG1lZGlhIHN0cmVhbSBi
YWNrZWQgdmlkZW8gZWxlbWVudCwgZG8gbm90IHBhdXNlIG9uIGFjdGl2ZSBhdWRpbyByb3V0ZSBj
aGFuZ2UuCisKKyAgICAgICAgSW1wbGVtZW50IGludGVybmFsIEFQSSB0byB3cml0ZSBhIGxheW91
dCB0ZXN0LgorCisgICAgICAgIFJlZmFjdG9yaW5nIHRvIHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVu
IFdlYkNvcmUgYW5kIFdlYktpdCBhbmQgaW1wbGVtZW50IHRoZSBpbnRlcm5hbCBBUEkuCisgICAg
ICAgIEltcHJvdmUgaXNvbGF0aW9uIG9mIE1lZGlhU2Vzc2lvbkhlbHBlciBieSBtb3ZpbmcgYWxs
IGl0cyBtZW1iZXJzIGZyb20gcHJvdGVjdGVkIHRvIHByaXZhdGUuCisKKworICAgICAgICBUZXN0
OiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlv
LXJvdXRlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6bWVkaWFTZXJ2
ZXJDb25uZWN0aW9uRGllZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhl
bHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjEtMDMtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBS
VENEYXRhQ2hhbm5lbCB0cmFuc2ZlciBvdXQgb2YgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZWVlNTI3
NzNlYWMwMzJjMDlmZjljYzMzNzk2MzM5NTI5YmVmMGM3Li5jZGFmYjliY2U0ODE1YWQyYTRkNDBi
ODUxNGFjMmYzZmQwMmYzY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTIy
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBv
dXRwdXQgd2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIFdlYkNvcmUgbWV0aG9kcyBpbnN0ZWFkIG9m
IHJlaW1wbGVtZW50aW5nIHRoZW0gaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6CisKIDIwMjEtMDMtMjIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBlYXJseSByZXR1cm4g
aW4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJl
ZERldmljZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDAzZTkzOWY2MTI1ODM0NDczZWQ4MjQyN2Q1MThmZTIxZjZhN2QyMWUuLjk1MWQ0NWE5NDUzMzY3
NGE0ZDJjMzBjOTM0MGZkYjJiMDM2YzkyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNzYyMSw2ICs3NjIxLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJvY2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmco
KTsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UoKSBjb25zdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcmV0
dXJuIGhhc01lZGlhU3RyZWFtU3JjT2JqZWN0KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzMDZjNmZhNmFiYjU4YjJlNmZiODBjNjBl
OTBiOWQxYWE1ODhmYjIxLi45MmJlYjk3YmVhN2RjY2IyYTc3MzIyMjU5OTJmNzQ4NDU4ZDY0ZmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtODcwLDYgKzg3MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc01lZGlhU3RyZWFtU291cmNlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwcm9j
ZXNzSXNTdXNwZW5kZWRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVBh
dXNlRHVyaW5nUm91dGVDaGFuZ2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFnZU11dGVk
U3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDEwODc4
NDYyYmQwMTFiMDg0ZDFiZGEwYTgzOTE4NDdmOGZhNThkZGYuLmQ3ZjgxMDA4OTdmNTJlNWVkN2Ni
ZmUxM2RjN2M2NjYyMGI3ZGZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTY1LDE1ICs2NSwx
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTaGFyZWRIZWxwZXIoKTsKIAogICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBNZWRpYVNlc3Np
b25IZWxwZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKTsKICAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25IZWxwZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVu
dChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQmKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpID0gMDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCk7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CiAKKyAg
ICB2b2lkIHNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoYm9vbCk7CisKICAgICBi
b29sIGlzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNDb3VudDsgfQogICAgIGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZTsgfQogICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW87IH0K
QEAgLTgxLDE1ICs4NCw0NyBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVBsYXliYWNrVGFyZ2V0KiBw
bGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tUYXJnZXQuZ2V0KCk7IH0K
IAorICAgIHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6Okhhc0F2YWlsYWJsZVRhcmdldHM7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQ7CisgICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlNob3VsZFBhdXNlOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSk7Cisg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVy
TG9jayk7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZv
aWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB2b2lkIG1lZGlhU2VydmVyQ29u
bmVjdGlvbkRpZWQoKTsKKwogcHJvdGVjdGVkOgorICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9pZCBpc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQpOworICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBs
YXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSA9
IDA7CisKK3ByaXZhdGU6CiAgICAgV2Vha0hhc2hTZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
PiBtX2NsaWVudHM7Ci0gICAgdWludDMyX3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3Vu
dCB7IDAgfTsKICAgICBib29sIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZh
bHNlIH07CisgICAgdWludDMyX3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAg
fTsKICAgICBib29sIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgeyBmYWxzZSB9
OwogICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OwogfTsK
IAoraW5saW5lIE1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKGJvb2wgaXNF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSkKKyAgICA6IG1faXNFeHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZShpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworfQorCitp
bmxpbmUgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworICAgIG1f
aXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGU7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQppbmRleCAyMjQ3
ZjI2NGZhODQ4MjdmZjQ0YWZiOTFkNmFhM2MxODE5ZWI0Mzk4Li5kY2IwMzI4YzhmN2U5MTkzNDk1
MjY5OThiNmEyNjZmOGE4YzIzYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTczLDYgKzcz
LDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyaU9TOwogI2VuZGlmCiAgICAgYm9vbCBfbW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXM7CiAgICAgYm9vbCBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJv
dXRlc1BlbmRpbmc7CisKIH0KIAogLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9u
SGVscGVyaU9TKiljYWxsYmFjazsKQEAgLTk2LDEwICs5Nyw2IEBAIHB1YmxpYzoKICAgICB+TWVk
aWFTZXNzaW9uSGVscGVyaU9TKCk7CiAKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZv
aWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5h
Y3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAjaWYgSEFW
RShDRUxFU1RJQUwpCiAgICAgdm9pZCBtZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCk7CiAgICAg
dm9pZCB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJik7CkBAIC0xMTAs
MTcgKzEwNywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1c2luZyBIYXNB
dmFpbGFibGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVU
YXJnZXRzOwotICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OwotICAgIHVzaW5n
IFNob3VsZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKLSAg
ICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7Ci0KICAgICB2b2lkIHNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwogCiAgICAgdm9pZCBwcm92aWRl
UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXNJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0ludGVybmFsKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVy
PiBtX29iamNPYnNlcnZlcjsKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTE2NiwxMSArMTU3LDky
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpyZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50JiBjbGllbnQpCiAgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSBzaG91bGRQYXVzZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
ayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5k
ZWRVbmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwor
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpt
ZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAg
ICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBoYXNBdmFpbGFibGVUYXJnZXRz
ID09IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllczsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKK3sKKyAgICBib29sIG5l
d1ZhbHVlID0gcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID09IFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdDo6WWVzOworICAgIGlmIChuZXdWYWx1ZSA9PSBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0ID0gbmV3VmFsdWU7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZShwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBw
b3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgcGxheWJhY2tUYXJn
ZXQpCit7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUocGxheWJhY2tUYXJnZXQpOwor
ICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3VwcG9ydHNBaXJQ
bGF5VmlkZW8gPT0gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllczsKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKK30KKwordm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAg
ICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICByZXR1cm47
CisgICAgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCit2b2lk
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7Cisg
ICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9t
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCiBNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBtX2lzRXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlXTsKKyAgICBzZXRJc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKFttX29i
amNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTIwNywxMSArMjc5LDgg
QEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50IHBpZCkKICNlbmRpZgogfQogCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmICht
X21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAg
IFttX29iamNPYnNlcnZlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKQEAgLTIxOSwx
NiArMjg4LDggQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3Zv
aWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwoKQogewotICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRD
SE9TKQogICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwpA
QCAtMjQ5LDggKzMxMCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZl
ckNvbm5lY3Rpb25EaWVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXZlUHJlc2VudGVk
QXBwbGljYXRpb25QSUQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKKyAgICBNZWRp
YVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAogdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxi
b29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKQEAgLTI3MCw2MyArMzMwLDMyIEBAIHZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9v
bD4mJiBjYXJQbGF5SXNDCiAKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdChib29sIGlzUGxheWluZykKIHsKLSAgICBpZiAoaXNQbGF5
aW5nID09IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBpc1BsYXlpbmc7Ci0gICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0ID8gUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpZZXMgOiBQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQ6Ok5vKTsKKyAgICBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENo
YW5nZShpc1BsYXlpbmcgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOwogfQogI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFM
KQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKQog
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9v
bCBzaG91bGRQYXVzZSkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91
bGRQYXVzZTo6WWVzIDogU2hvdWxkUGF1c2U6Ok5vKTsKKyAgICBhY3RpdmVBdWRpb1JvdXRlRGlk
Q2hhbmdlKHNob3VsZFBhdXNlID8gU2hvdWxkUGF1c2U6OlllcyA6IFNob3VsZFBhdXNlOjpObyk7
CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hh
bmdlKCkKIHsKLSAgICBtX3BsYXliYWNrVGFyZ2V0ID0gTWVkaWFQbGF5YmFja1RhcmdldENvY29h
OjpjcmVhdGUoKTsKLSAgICBtX2FjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyA9
IG1fcGxheWJhY2tUYXJnZXQtPnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOwotICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYWN0aXZlVmlkZW9S
b3V0ZURpZENoYW5nZShtX2FjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbyA/IFN1
cHBvcnRzQWlyUGxheVZpZGVvOjpZZXMgOiBTdXBwb3J0c0FpclBsYXlWaWRlbzo6Tm8sICptX3Bs
YXliYWNrVGFyZ2V0KTsKKyAgICBhdXRvIHRhcmdldCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2Nv
YTo6Y3JlYXRlKCk7CisgICAgYXV0byBzdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJhY2sgPSB0YXJn
ZXQtPnN1cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaygpOworICAgIGFjdGl2ZVZpZGVvUm91dGVE
aWRDaGFuZ2Uoc3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrLCBXVEZNb3ZlKHRhcmdldCkpOwog
fQogI2VuZGlmCiAKLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAg
ICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwotfQotCi12b2lkIE1lZGlh
U2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2sgdW5kZXJMb2NrKQotewotICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQodW5kZXJMb2NrKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCkKLXsKLSAgICBmb3IgKGF1dG8m
IGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEJlY29t
ZUluYWN0aXZlKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRV
bmRlckxvY2sgdW5kZXJMb2NrKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQotICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHVuZGVyTG9j
ayk7Ci19Ci0KIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZURpZENoYW5nZSgpCiB7CisgICAgSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFp
bGFibGVUYXJnZXRzOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1faXNF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVz
c1RhcmdldHNBdmFpbGFibGVdOworICAgIGhhc0F2YWlsYWJsZVRhcmdldHMgPSBbbV9vYmpjT2Jz
ZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxlXSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6
OlllcyA6IEhhc0F2YWlsYWJsZVRhcmdldHM6Ok5vOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGll
bnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UobV9pc0V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlID8gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVzIDogSGFzQXZhaWxh
YmxlVGFyZ2V0czo6Tm8pOworICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFzQXZhaWxhYmxlVGFyZ2V0cyk7CiB9CiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCA4NTBjNWY2NWI3MzI0MTVlZDQ5MjZhZjc3NjMzMDM2ODhhMzdmMmJhLi4y
MzAwYzdiZjUxNTU4YmFiOWI5ZTgyMmYxZDEwN2JlMjc2ZjBjYzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMzAsNiArMzMwLDcgQEAKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSGVscGVySU9TLmgiCiAjaW5jbHVk
ZSAiU3lzdGVtQmF0dGVyeS5oIgogI2luY2x1ZGUgIlZQOVV0aWxpdGllc0NvY29hLmgiCiAjaW5j
bHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgpAQCAtNDMxNiw2ICs0MzE3LDE1IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6cG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZFN0cmluCiAgICAgcmV0dXJuIHsgfTsKIH0KIAordm9pZCBJbnRlcm5h
bHM6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbCBzaG91bGRQYXVzZSkKK3sKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjpzaGFyZWRIZWxwZXIoKS5hY3Rp
dmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNlID8gTWVkaWFTZXNzaW9uSGVscGVyQ2xp
ZW50OjpTaG91bGRQYXVzZTo6WWVzIDogTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQ
YXVzZTo6Tm8pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkUGF1c2UpOworI2VuZGlm
Cit9CisKIGJvb2wgSW50ZXJuYWxzOjplbGVtZW50SXNCbG9ja2luZ0Rpc3BsYXlTbGVlcChIVE1M
TWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIHJldHVybiBlbGVtZW50LmlzRGlz
YWJsaW5nU2xlZXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGMyODJjMzQx
NWM3ODk4NjcyYjJhY2JlYzc3YTM3ZjQ3MWE1NDgxMTguLmEyZWMwNTY1ZGJkZTI3YzIyZTJkMjcy
YmI2OWEwNDNjMmFlODMwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNjgw
LDYgKzY4MCw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IG1lZGlhU2Vzc2lv
blJlc3RyaWN0aW9ucyhjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCYsIFN0cmluZ1ZpZXcg
cmVzdHJpY3Rpb25zU3RyaW5nKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0UmVtb3RlQ29u
dHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiwgZmxvYXQgYXJndW1lbnQpOworICAgIHZvaWQgYWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShib29sIHNob3VsZFBhdXNlKTsKICAgICBib29sIGVsZW1l
bnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODljZTEyZDBjMzVhMmFl
MzMzYWE0MWJkOWIyZTc1ZGQ2ODExY2JiYS4uMjhhNzBjODljNTc2YmVhMTg4M2I3ZmE0MWNhOGQy
NGRlNDMyYzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzIxLDYg
KzcyMSw4IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZp
bmVkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQs
IERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHVu
ZGVmaW5lZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBvciBXZWJL
aXRBdWRpb0NvbnRleHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtD
b25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0UmVtb3Rl
Q29udHJvbENvbW1hbmQoRE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBm
bG9hdCBhcmd1bWVudCA9IDApOworICAgIFtDb25kaXRpb25hbD1WSURFT10gdW5kZWZpbmVkIGFj
dGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9vbGVhbiBzaG91bGRQYXVzZSk7CisKICAgICBbQ29u
ZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB1bmRlZmluZWQgc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgW0NvbmRp
dGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVm
aW5lZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0cmluZyBkZXZp
Y2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVRdIHVuZGVmaW5lZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NQb3B1cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKaW5k
ZXggZDY3NDFiZDUzZDBkOGMzMjM0MGY4NTdiMmVlZGMzNmI4YjU2ODcyNy4uY2IyOTZjMDM3MjU2
OTBjOGU5Yjk4Nzg1Mzg5Njc1MDI2N2U5YjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuY3BwCkBAIC02NywyNCArNjcsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24K
ICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpCiB7
Ci0gICAgaWYgKG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQrKykKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OjpTdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpLCB7IH0pOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcygpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlc0ludGVybmFsKCkKIHsKLSAgICBpZiAoIW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzQ291bnQpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoLS1tX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KQot
ICAgICAgICByZXR1cm47Ci0KICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwg
eyB9KTsKIH0KIApAQCAtOTMsNjAgKzgyLDE0IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpQcm92
aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVu
ZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZChzdXNwZW5kZWRVbmRlckxvY2spOwotfQotCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1
c3BlbmRlZFVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
LSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1c3BlbmRlZFVu
ZGVyTG9jayk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlv
bldpbGxCZWNvbWVJbmFjdGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotfQot
Ci12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGll
bnQuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2
YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKLXsKLSAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOwotfQotCi12b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkK
LXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50Lmlz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKHBsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQotewotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0ZURp
ZENoYW5nZShzaG91bGRQYXVzZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRz
QWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQp
CiB7Ci0gICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHRhcmdldE9iamVjdDsKLSAgICBp
ZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFW
T3V0cHV0Q29udGV4dFR5cGUpCi0gICAgICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29u
dGV4dCgpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKKyAg
ICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uo
c3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAppbmRleCBlZGMwMmU0YWYzMDBlYzliMDQwNWI2Nzk1
ZTZiYzRkNGM4NzA4ZDQ4Li5lNDQ5YzQ4NmU0OWI0MmY0ZDAyMDEyNGE4NDhiNzg5MzQyZGZkYWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtNjIsMTggKzYyLDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nl
c3NDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXIKLSAgICB2
b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9w
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSBmaW5hbDsKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzCi0gICAgdm9p
ZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7
Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotICAgIHZvaWQgYXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLSAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpOwotICAgIHZvaWQgaXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0KTsKLSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpOwog
ICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKICAgICBXZWJQcm9jZXNz
JiBtX3Byb2Nlc3M7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTU0NGZlNWQxYTBjM2VlZjBjMGQ0MTU0ZDkzOWE1YmNjMjJi
NDU0Ny4uYjBjNWQxOGMzNjNkZTI2ZGNhYjhiODhjOWE5ODMzNmU1MTI3Njg2OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTAzLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQgd2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNl
dCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlk
ZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUuaHRtbDogQWRkZWQuCisKIDIwMjEtMDMtMTcg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEdlb2xvY2F0aW9u
IEFQSSBkb2VzIG5vdCB3b3JrIGluIFdLV2ViVmlldyB3aXRoIGN1c3RvbSBVUkwgc2NoZW1lIGhh
bmRsZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1h
dWRpby1yb3V0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk3MWMxZWEyOTlkYjBlNmJjYzcz
ZDg1MzJlZDVhMWJkOGQyYWNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1MgTWVkaWFTdHJlYW0gdmlkZW8g
c2hvdWxkIG5vdCBiZSBwYXVzZWQgd2hlbiBhdWRpbyByb3V0ZSBjaGFuZ2VzCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVu
dC1jaGFuZ2UtYXVkaW8tcm91dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZmRmMDgwMWI3ZDdjMmIyZjk2ZTljNTViMjg2MjJlNWY1Y2RkOTNjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1l
bGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
PHRpdGxlPkNoYW5nZSBvZiBhdWRpbyByb3V0ZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRvcGxheSBwbGF5c0lubGluZT48L3Zp
ZGVvPgorICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB2
aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7IGF1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZSB9KTsKKworICAgIGF3YWl0IHZpZGVvLnBsYXko
KTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuYWN0aXZl
QXVkaW9Sb3V0ZURpZENoYW5nZSh0cnVlKTsKKworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOworICAgIGFzc2VydF9mYWxzZSh2aWRlby5w
YXVzZWQsICJ2aWRlbyBwYXVzZWQiKTsKK30sICJNZWRpYVN0cmVhbSB2aWRlbyBzaG91bGQgbm90
IGJlIHBhdXNlZCB3aGVuIGF1ZGlvIHJvdXRlIGNoYW5nZXMiKTsKKyAgICA8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423882</attachid>
            <date>2021-03-22 07:36:41 -0700</date>
            <delta_ts>2021-03-22 08:46:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216389-20210322153639.patch</filename>
            <type>text/plain</type>
            <size>29467</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4YjYwMTE2MWU1OTEx
MWM4NDM4ZjI4OWRmZGRiNTkxYzA1N2UyOC4uODI5NDgxMWU5ZmQ1MTYwYTQ3OTE2NzY3ZGQ4Zjk3
ZWNjZjM3YjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQg
d2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5nUm91dGVDaGFu
Z2UgZm9yIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBJZiBpdCBpcyBhIG1lZGlhIHN0cmVhbSBi
YWNrZWQgdmlkZW8gZWxlbWVudCwgZG8gbm90IHBhdXNlIG9uIGFjdGl2ZSBhdWRpbyByb3V0ZSBj
aGFuZ2UuCisKKyAgICAgICAgSW1wbGVtZW50IGludGVybmFsIEFQSSB0byB3cml0ZSBhIGxheW91
dCB0ZXN0LgorCisgICAgICAgIFJlZmFjdG9yaW5nIHRvIHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVu
IFdlYkNvcmUgYW5kIFdlYktpdCBhbmQgaW1wbGVtZW50IHRoZSBpbnRlcm5hbCBBUEkuCisgICAg
ICAgIEltcHJvdmUgaXNvbGF0aW9uIG9mIE1lZGlhU2Vzc2lvbkhlbHBlciBieSBtb3ZpbmcgYWxs
IGl0cyBtZW1iZXJzIGZyb20gcHJvdGVjdGVkIHRvIHByaXZhdGUuCisKKworICAgICAgICBUZXN0
OiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlv
LXJvdXRlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6bWVkaWFTZXJ2
ZXJDb25uZWN0aW9uRGllZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhl
bHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjEtMDMtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBS
VENEYXRhQ2hhbm5lbCB0cmFuc2ZlciBvdXQgb2YgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZWVlNTI3
NzNlYWMwMzJjMDlmZjljYzMzNzk2MzM5NTI5YmVmMGM3Li5jZGFmYjliY2U0ODE1YWQyYTRkNDBi
ODUxNGFjMmYzZmQwMmYzY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTIy
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBv
dXRwdXQgd2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIFdlYkNvcmUgbWV0aG9kcyBpbnN0ZWFkIG9m
IHJlaW1wbGVtZW50aW5nIHRoZW0gaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6CisKIDIwMjEtMDMtMjIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBlYXJseSByZXR1cm4g
aW4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJl
ZERldmljZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDAzZTkzOWY2MTI1ODM0NDczZWQ4MjQyN2Q1MThmZTIxZjZhN2QyMWUuLjk1MWQ0NWE5NDUzMzY3
NGE0ZDJjMzBjOTM0MGZkYjJiMDM2YzkyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNzYyMSw2ICs3NjIxLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJvY2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmco
KTsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UoKSBjb25zdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcmV0
dXJuIGhhc01lZGlhU3RyZWFtU3JjT2JqZWN0KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzMDZjNmZhNmFiYjU4YjJlNmZiODBjNjBl
OTBiOWQxYWE1ODhmYjIxLi45MmJlYjk3YmVhN2RjY2IyYTc3MzIyMjU5OTJmNzQ4NDU4ZDY0ZmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtODcwLDYgKzg3MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc01lZGlhU3RyZWFtU291cmNlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwcm9j
ZXNzSXNTdXNwZW5kZWRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVBh
dXNlRHVyaW5nUm91dGVDaGFuZ2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFnZU11dGVk
U3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDEwODc4
NDYyYmQwMTFiMDg0ZDFiZGEwYTgzOTE4NDdmOGZhNThkZGYuLmQ3ZjgxMDA4OTdmNTJlNWVkN2Ni
ZmUxM2RjN2M2NjYyMGI3ZGZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTY1LDE1ICs2NSwx
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTaGFyZWRIZWxwZXIoKTsKIAogICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBNZWRpYVNlc3Np
b25IZWxwZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKTsKICAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25IZWxwZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVu
dChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQmKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpID0gMDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCk7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CiAKKyAg
ICB2b2lkIHNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoYm9vbCk7CisKICAgICBi
b29sIGlzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNDb3VudDsgfQogICAgIGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZTsgfQogICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW87IH0K
QEAgLTgxLDE1ICs4NCw0NyBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVBsYXliYWNrVGFyZ2V0KiBw
bGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tUYXJnZXQuZ2V0KCk7IH0K
IAorICAgIHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6Okhhc0F2YWlsYWJsZVRhcmdldHM7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQ7CisgICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlNob3VsZFBhdXNlOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSk7Cisg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVy
TG9jayk7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZv
aWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB2b2lkIG1lZGlhU2VydmVyQ29u
bmVjdGlvbkRpZWQoKTsKKwogcHJvdGVjdGVkOgorICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9pZCBpc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQpOworICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBs
YXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSA9
IDA7CisKK3ByaXZhdGU6CiAgICAgV2Vha0hhc2hTZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
PiBtX2NsaWVudHM7Ci0gICAgdWludDMyX3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3Vu
dCB7IDAgfTsKICAgICBib29sIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZh
bHNlIH07CisgICAgdWludDMyX3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAg
fTsKICAgICBib29sIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgeyBmYWxzZSB9
OwogICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OwogfTsK
IAoraW5saW5lIE1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKGJvb2wgaXNF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSkKKyAgICA6IG1faXNFeHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZShpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworfQorCitp
bmxpbmUgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworICAgIG1f
aXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGU7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQppbmRleCAyMjQ3
ZjI2NGZhODQ4MjdmZjQ0YWZiOTFkNmFhM2MxODE5ZWI0Mzk4Li40MTBhMmUzYTRkOTc4NDFmNTY2
Nzg5NDc0YWE2OGQzODhmNGQwYTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTczLDYgKzcz
LDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyaU9TOwogI2VuZGlmCiAgICAgYm9vbCBfbW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXM7CiAgICAgYm9vbCBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJv
dXRlc1BlbmRpbmc7CisKIH0KIAogLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9u
SGVscGVyaU9TKiljYWxsYmFjazsKQEAgLTk2LDEwICs5Nyw2IEBAIHB1YmxpYzoKICAgICB+TWVk
aWFTZXNzaW9uSGVscGVyaU9TKCk7CiAKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZv
aWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5h
Y3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAjaWYgSEFW
RShDRUxFU1RJQUwpCiAgICAgdm9pZCBtZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCk7CiAgICAg
dm9pZCB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJik7CkBAIC0xMTAs
MTcgKzEwNywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1c2luZyBIYXNB
dmFpbGFibGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVU
YXJnZXRzOwotICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OwotICAgIHVzaW5n
IFNob3VsZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKLSAg
ICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7Ci0KICAgICB2b2lkIHNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwogCiAgICAgdm9pZCBwcm92aWRl
UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXNJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0ludGVybmFsKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVy
PiBtX29iamNPYnNlcnZlcjsKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTE2NiwxMSArMTU3LDky
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpyZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50JiBjbGllbnQpCiAgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSBzaG91bGRQYXVzZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
ayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5k
ZWRVbmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwor
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpt
ZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAg
ICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBoYXNBdmFpbGFibGVUYXJnZXRz
ID09IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllczsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKK3sKKyAgICBib29sIG5l
d1ZhbHVlID0gcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID09IFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdDo6WWVzOworICAgIGlmIChuZXdWYWx1ZSA9PSBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0ID0gbmV3VmFsdWU7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZShwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBw
b3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgcGxheWJhY2tUYXJn
ZXQpCit7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUocGxheWJhY2tUYXJnZXQpOwor
ICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3VwcG9ydHNBaXJQ
bGF5VmlkZW8gPT0gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllczsKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKK30KKwordm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAg
ICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICByZXR1cm47
CisgICAgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCit2b2lk
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7Cisg
ICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9t
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCiBNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBtX2lzRXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlXTsKKyAgICBzZXRJc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKFttX29i
amNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTIwNywxMSArMjc5LDgg
QEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50IHBpZCkKICNlbmRpZgogfQogCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmICht
X21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAg
IFttX29iamNPYnNlcnZlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKQEAgLTIxOSwx
NiArMjg4LDggQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3Zv
aWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwoKQogewotICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRD
SE9TKQogICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwpA
QCAtMjQ5LDggKzMxMCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZl
ckNvbm5lY3Rpb25EaWVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXZlUHJlc2VudGVk
QXBwbGljYXRpb25QSUQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKKyAgICBNZWRp
YVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAogdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxi
b29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKQEAgLTI3MCw2MyArMzMwLDMyIEBAIHZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9v
bD4mJiBjYXJQbGF5SXNDCiAKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdChib29sIGlzUGxheWluZykKIHsKLSAgICBpZiAoaXNQbGF5
aW5nID09IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBpc1BsYXlpbmc7Ci0gICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0ID8gUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpZZXMgOiBQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQ6Ok5vKTsKKyAgICBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENo
YW5nZShpc1BsYXlpbmcgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOwogfQogI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFM
KQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKQog
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9v
bCBzaG91bGRQYXVzZSkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91
bGRQYXVzZTo6WWVzIDogU2hvdWxkUGF1c2U6Ok5vKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6
OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91bGRQYXVzZTo6WWVz
IDogU2hvdWxkUGF1c2U6Ok5vKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoKQogewotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSgpOwotICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1
cHBvcnRzQWlyUGxheVZpZGVvID0gbV9wbGF5YmFja1RhcmdldC0+c3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAg
IGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBv
cnRzQWlyUGxheVZpZGVvID8gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllcyA6IFN1cHBvcnRzQWly
UGxheVZpZGVvOjpObywgKm1fcGxheWJhY2tUYXJnZXQpOworICAgIGF1dG8gdGFyZ2V0ID0gTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjayA9IHRhcmdldC0+c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCk7Cisg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRz
UmVtb3RlVmlkZW9QbGF5YmFjaywgV1RGTW92ZSh0YXJnZXQpKTsKIH0KICNlbmRpZgogCi12b2lk
IE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQotewot
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6
OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KHVuZGVyTG9jayk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlv
bldpbGxCZWNvbWVJbmFjdGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotfQot
Ci12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVyTG9j
aykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50
LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCh1bmRlckxvY2spOwotfQotCiB2b2lkIE1l
ZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFu
Z2UoKQogeworICAgIEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0czsKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxhYmxl
XTsKKyAgICBoYXNBdmFpbGFibGVUYXJnZXRzID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNz
VGFyZ2V0c0F2YWlsYWJsZV0gPyBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMgOiBIYXNBdmFpbGFi
bGVUYXJnZXRzOjpObzsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJs
ZSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllcyA6IEhhc0F2YWlsYWJsZVRhcmdldHM6Ok5vKTsK
KyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOwogfQogCiBAaW1wbGVtZW50YXRpb24gV2ViTWVk
aWFTZXNzaW9uSGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODUw
YzVmNjViNzMyNDE1ZWQ0OTI2YWY3NzYzMzAzNjg4YTM3ZjJiYS4uMjMwMGM3YmY1MTU1OGJhYjli
OWU4MjJmMWQxMDdiZTI3NmYwY2M5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtMzMwLDYgKzMzMCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIgogI2luY2x1ZGUgIlN5c3RlbUJhdHRlcnku
aCIKICNpbmNsdWRlICJWUDlVdGlsaXRpZXNDb2NvYS5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2Yv
Q29yZVRleHRTUEkuaD4KQEAgLTQzMTYsNiArNDMxNywxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJ
bnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmRT
dHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjphY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlKGJvb2wgc2hvdWxkUGF1c2UpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuYWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZShzaG91bGRQYXVzZSA/IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1c2U6
OlllcyA6IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1c2U6Ok5vKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHNob3VsZFBhdXNlKTsKKyNlbmRpZgorfQorCiBib29sIEludGVy
bmFsczo6ZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5U2xlZXAoSFRNTE1lZGlhRWxlbWVudCYgZWxl
bWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gZWxlbWVudC5pc0Rpc2FibGluZ1NsZWVwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBjMjgyYzM0MTVjNzg5ODY3MmIyYWNiZWM3
N2EzN2Y0NzFhNTQ4MTE4Li5hMmVjMDU2NWRiZGUyN2MyMmUyZDI3MmJiNjlhMDQzYzJhZTgzMGVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTY4MCw2ICs2ODAsNyBAQCBwdWJs
aWM6CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBtZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpIGNvbnN0OwogICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50UmVz
dHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQmLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmlu
Zyk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbnN0
IFN0cmluZyYsIGZsb2F0IGFyZ3VtZW50KTsKKyAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRD
aGFuZ2UoYm9vbCBzaG91bGRQYXVzZSk7CiAgICAgYm9vbCBlbGVtZW50SXNCbG9ja2luZ0Rpc3Bs
YXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg5Y2UxMmQwYzM1YTJhZTMzM2FhNDFiZDliMmU3NWRk
NjgxMWNiYmEuLjI4YTcwYzg5YzU3NmJlYTE4ODNiN2ZhNDFjYThkMjRkZTQzMmM2MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTcyMSw2ICs3MjEsOCBAQCBlbnVtIFRy
ZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRpYUVsZW1l
bnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcgcmVzdHJp
Y3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0QXVkaW9D
b250ZXh0UmVzdHJpY3Rpb25zKChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0KSBj
b250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU8s
IE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKERP
TVN0cmluZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQgPSAw
KTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhY3RpdmVBdWRpb1JvdXRlRGlk
Q2hhbmdlKGJvb2xlYW4gc2hvdWxkUGF1c2UpOworCiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVF0gdW5kZWZpbmVkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TW9ja01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3RyaW5n
IGRldmljZVN0YXRlKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
XSB1bmRlZmluZWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9wdXAoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCmluZGV4IGQ2NzQxYmQ1M2QwZDhj
MzIzNDBmODU3YjJlZWRjMzZiOGI1Njg3MjcuLmNiMjk2YzAzNzI1NjkwYzhlOWI5ODc4NTM4OTY3
NTAyNjdlOWI2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcApAQCAt
NjcsMjQgKzY3LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpncHVQcm9jZXNz
Q29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uCiAgICAgY29ubmVjdFRvR1BV
UHJvY2VzcygpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0
YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmIChtX21vbml0
b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAgIGNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6U3Rh
cnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5h
bCgpCiB7Ci0gICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKC0tbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
clByb3h5OjpTdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCksIHsgfSk7CiB9CiAKQEAgLTkz
LDYwICs4MiwxNCBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlkZVByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRpbmdBcHBs
aWNhdGlvblBJRChwaWQpLCB7IH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
cjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNw
ZW5kZWRVbmRlckxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0g
ICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoc3VzcGVuZGVkVW5k
ZXJMb2NrKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2sp
Ci17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5h
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spOwotfQotCi12
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3Rp
dmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGll
bnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKLXsKLSAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpleHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzIGhh
c0F2YWlsYWJsZVRhcmdldHMpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMp
Ci0gICAgICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSho
YXNBdmFpbGFibGVUYXJnZXRzKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdCBwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi17Ci0gICAgZm9yIChhdXRv
JiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdERpZENoYW5nZShwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOwotfQotCi12
b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShT
aG91bGRQYXVzZSBzaG91bGRQYXVzZSkKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xp
ZW50cykKLSAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1
c2UpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0
ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRlbywgTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewotICAgIFJlZlB0cjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiB0YXJnZXRPYmplY3Q7Ci0gICAgaWYgKHRhcmdldENvbnRleHQu
dHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBl
KQotICAgICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSk7Ci0gICAgZWxz
ZSB7CisgICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tUYXJnZXRD
b250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBv
cnRzQWlyUGxheVZpZGVvLCAqbV9wbGF5YmFja1RhcmdldCk7CisgICAgV2ViQ29yZTo6TWVkaWFT
ZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWlyUGxheVZp
ZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250
ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyLmgKaW5kZXggZWRjMDJlNGFmMzAwZWM5YjA0MDViNjc5NWU2YmM0ZDRjODcwOGQ0OC4u
ZTQ0OWM0ODZlNDliNDJmNGQwMjAxMjRhODQ4Yjc4OTM0MmRmZGFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyLmgKQEAgLTYyLDE4ICs2MiwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZp
bmFsOwogCiAgICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyCi0gICAgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJ
bnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0lu
dGVybmFsKCkgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KGludCkgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHZvaWQgYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7Ci0gICAgdm9pZCBhcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCk7Ci0gICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5n
ZShIYXNBdmFpbGFibGVUYXJnZXRzKTsKLSAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk7Ci0gICAgdm9pZCBh
Y3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKTsKICAgICB2b2lkIGFjdGl2ZVZp
ZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDU1NDRmZTVkMWEwYzNlZWYwYzBkNDE1NGQ5MzlhNWJjYzIyYjQ1NDcuLmIwYzVkMThjMzYz
ZGUyNmRjYWI4Yjg4YzlhOTgzMzZlNTEyNzY4NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0wMy0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTm8g
YXVkaW8gb3V0cHV0IHdoZW4gdW5wbHVnZ2VkIHdpcmVkIGhlYWRzZXQgZHVyaW5nIGEgY2FsbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2Mzg5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82ODY5MjgwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
dmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdl
LWF1ZGlvLXJvdXRlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAzLTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBHZW9sb2NhdGlvbiBBUEkgZG9lcyBub3Qgd29y
ayBpbiBXS1dlYlZpZXcgd2l0aCBjdXN0b20gVVJMIHNjaGVtZSBoYW5kbGVyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQt
Y2hhbmdlLWF1ZGlvLXJvdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg5NzFjMWVhMjk5ZGIwZTZiY2M3M2Q4NTMyZWQ1YTFiZDhkMmFj
ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKKworCitQQVNTIE1lZGlhU3RyZWFtIHZpZGVvIHNob3VsZCBub3QgYmUgcGF1
c2VkIHdoZW4gYXVkaW8gcm91dGUgY2hhbmdlcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJv
dXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVv
LWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZkZjA4MDFiN2Q3
YzJiMmY5NmU5YzU1YjI4NjIyZTVmNWNkZDkzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVk
aW8tcm91dGUuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5DaGFuZ2Ugb2Yg
YXVkaW8gcm91dGU8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZp
ZGVvIGlkPSJ2aWRlbyIgYXV0b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICA8c2NyaXB0
PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgdmlkZW8uc3JjT2JqZWN0ID0g
YXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzogdHJ1ZSwg
dmlkZW86IHRydWUgfSk7CisKKyAgICBhd2FpdCB2aWRlby5wbGF5KCk7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2UodHJ1ZSk7CisKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQo
cmVzb2x2ZSwgNTApKTsKKyAgICBhc3NlcnRfZmFsc2UodmlkZW8ucGF1c2VkLCAidmlkZW8gcGF1
c2VkIik7Cit9LCAiTWVkaWFTdHJlYW0gdmlkZW8gc2hvdWxkIG5vdCBiZSBwYXVzZWQgd2hlbiBh
dWRpbyByb3V0ZSBjaGFuZ2VzIik7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423890</attachid>
            <date>2021-03-22 08:46:48 -0700</date>
            <delta_ts>2021-03-23 03:56:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216389-20210322164646.patch</filename>
            <type>text/plain</type>
            <size>29522</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4YjYwMTE2MWU1OTEx
MWM4NDM4ZjI4OWRmZGRiNTkxYzA1N2UyOC4uODI5NDgxMWU5ZmQ1MTYwYTQ3OTE2NzY3ZGQ4Zjk3
ZWNjZjM3YjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQg
d2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5nUm91dGVDaGFu
Z2UgZm9yIG1lZGlhIGVsZW1lbnRzLgorICAgICAgICBJZiBpdCBpcyBhIG1lZGlhIHN0cmVhbSBi
YWNrZWQgdmlkZW8gZWxlbWVudCwgZG8gbm90IHBhdXNlIG9uIGFjdGl2ZSBhdWRpbyByb3V0ZSBj
aGFuZ2UuCisKKyAgICAgICAgSW1wbGVtZW50IGludGVybmFsIEFQSSB0byB3cml0ZSBhIGxheW91
dCB0ZXN0LgorCisgICAgICAgIFJlZmFjdG9yaW5nIHRvIHNoYXJlIG1vcmUgY29kZSBiZXR3ZWVu
IFdlYkNvcmUgYW5kIFdlYktpdCBhbmQgaW1wbGVtZW50IHRoZSBpbnRlcm5hbCBBUEkuCisgICAg
ICAgIEltcHJvdmUgaXNvbGF0aW9uIG9mIE1lZGlhU2Vzc2lvbkhlbHBlciBieSBtb3ZpbmcgYWxs
IGl0cyBtZW1iZXJzIGZyb20gcHJvdGVjdGVkIHRvIHByaXZhdGUuCisKKworICAgICAgICBUZXN0
OiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlv
LXJvdXRlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6bWVkaWFTZXJ2
ZXJDb25uZWN0aW9uRGllZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhl
bHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UpOgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAg
KE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKToK
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQpOgorICAgICAgICAoTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjpzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBw
bGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoTWVkaWFTZXNz
aW9uSGVscGVyaU9TOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjEtMDMtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBS
VENEYXRhQ2hhbm5lbCB0cmFuc2ZlciBvdXQgb2YgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZWVlNTI3
NzNlYWMwMzJjMDlmZjljYzMzNzk2MzM5NTI5YmVmMGM3Li5jZGFmYjliY2U0ODE1YWQyYTRkNDBi
ODUxNGFjMmYzZmQwMmYzY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTIy
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBv
dXRwdXQgd2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1ha2UgdXNlIG9mIFdlYkNvcmUgbWV0aG9kcyBpbnN0ZWFkIG9m
IHJlaW1wbGVtZW50aW5nIHRoZW0gaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxl
c3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUlu
YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6CisKIDIwMjEtMDMtMjIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBlYXJseSByZXR1cm4g
aW4gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJl
ZERldmljZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDAzZTkzOWY2MTI1ODM0NDczZWQ4MjQyN2Q1MThmZTIxZjZhN2QyMWUuLjk1MWQ0NWE5NDUzMzY3
NGE0ZDJjMzBjOTM0MGZkYjJiMDM2YzkyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNzYyMSw2ICs3NjIxLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJvY2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmco
KTsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5n
Um91dGVDaGFuZ2UoKSBjb25zdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcmV0
dXJuIGhhc01lZGlhU3RyZWFtU3JjT2JqZWN0KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzMDZjNmZhNmFiYjU4YjJlNmZiODBjNjBl
OTBiOWQxYWE1ODhmYjIxLi45MmJlYjk3YmVhN2RjY2IyYTc3MzIyMjU5OTJmNzQ4NDU4ZDY0ZmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtODcwLDYgKzg3MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc01lZGlhU3RyZWFtU291cmNlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwcm9j
ZXNzSXNTdXNwZW5kZWRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVBh
dXNlRHVyaW5nUm91dGVDaGFuZ2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFnZU11dGVk
U3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDEwODc4
NDYyYmQwMTFiMDg0ZDFiZGEwYTgzOTE4NDdmOGZhNThkZGYuLmQ3ZjgxMDA4OTdmNTJlNWVkN2Ni
ZmUxM2RjN2M2NjYyMGI3ZGZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTY1LDE1ICs2NSwx
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTaGFyZWRIZWxwZXIoKTsKIAogICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBNZWRpYVNlc3Np
b25IZWxwZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKTsKICAgICB2aXJ0
dWFsIH5NZWRpYVNlc3Npb25IZWxwZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVu
dChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQmKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpID0gMDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzKCk7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CiAKKyAg
ICB2b2lkIHNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoYm9vbCk7CisKICAgICBi
b29sIGlzTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNDb3VudDsgfQogICAgIGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZTsgfQogICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW87IH0K
QEAgLTgxLDE1ICs4NCw0NyBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVBsYXliYWNrVGFyZ2V0KiBw
bGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tUYXJnZXQuZ2V0KCk7IH0K
IAorICAgIHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGll
bnQ6Okhhc0F2YWlsYWJsZVRhcmdldHM7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhl
YWRVbml0ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQ7CisgICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6
OlNob3VsZFBhdXNlOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNz
aW9uSGVscGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5k
ZWRVbmRlckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9j
azsKKworICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSk7Cisg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2Nr
KTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVy
TG9jayk7CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZv
aWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB2b2lkIG1lZGlhU2VydmVyQ29u
bmVjdGlvbkRpZWQoKTsKKwogcHJvdGVjdGVkOgorICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9pZCBpc1Bs
YXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVh
ZFVuaXQpOworICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBs
YXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSA9
IDA7CisKK3ByaXZhdGU6CiAgICAgV2Vha0hhc2hTZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
PiBtX2NsaWVudHM7Ci0gICAgdWludDMyX3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3Vu
dCB7IDAgfTsKICAgICBib29sIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZh
bHNlIH07CisgICAgdWludDMyX3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAg
fTsKICAgICBib29sIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgeyBmYWxzZSB9
OwogICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OwogfTsK
IAoraW5saW5lIE1lZGlhU2Vzc2lvbkhlbHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKGJvb2wgaXNF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSkKKyAgICA6IG1faXNFeHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZShpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworfQorCitp
bmxpbmUgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGUoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworICAgIG1f
aXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGU7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQppbmRleCAyMjQ3
ZjI2NGZhODQ4MjdmZjQ0YWZiOTFkNmFhM2MxODE5ZWI0Mzk4Li5lZGViMWJjM2M5MGMxYWEyMTNk
ZDM0MGIzZmRmZWI3NzZmZTExZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTczLDYgKzcz
LDcgQEAgY2xhc3MgTWVkaWFTZXNzaW9uSGVscGVyaU9TOwogI2VuZGlmCiAgICAgYm9vbCBfbW9u
aXRvcmluZ0FpclBsYXlSb3V0ZXM7CiAgICAgYm9vbCBfc3RhcnRNb25pdG9yaW5nQWlyUGxheVJv
dXRlc1BlbmRpbmc7CisKIH0KIAogLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFTZXNzaW9u
SGVscGVyaU9TKiljYWxsYmFjazsKQEAgLTk2LDEwICs5Nyw2IEBAIHB1YmxpYzoKICAgICB+TWVk
aWFTZXNzaW9uSGVscGVyaU9TKCk7CiAKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZv
aWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5h
Y3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAjaWYgSEFW
RShDRUxFU1RJQUwpCiAgICAgdm9pZCBtZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCk7CiAgICAg
dm9pZCB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJik7CkBAIC0xMTAs
MTcgKzEwNywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1c2luZyBIYXNB
dmFpbGFibGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVU
YXJnZXRzOwotICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OwotICAgIHVzaW5n
IFNob3VsZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKLSAg
ICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7Ci0KICAgICB2b2lkIHNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwogCiAgICAgdm9pZCBwcm92aWRl
UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXNJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0ludGVybmFsKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVy
PiBtX29iamNPYnNlcnZlcjsKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTE2NiwxMSArMTU3LDky
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpyZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50JiBjbGllbnQpCiAgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSBzaG91bGRQYXVzZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
ayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5k
ZWRVbmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwor
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpt
ZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAg
ICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBoYXNBdmFpbGFibGVUYXJnZXRz
ID09IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllczsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKK3sKKyAgICBib29sIG5l
d1ZhbHVlID0gcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID09IFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdDo6WWVzOworICAgIGlmIChuZXdWYWx1ZSA9PSBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0ID0gbmV3VmFsdWU7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZShwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBw
b3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgcGxheWJhY2tUYXJn
ZXQpCit7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUocGxheWJhY2tUYXJnZXQpOwor
ICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3VwcG9ydHNBaXJQ
bGF5VmlkZW8gPT0gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllczsKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKK30KKwordm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAg
ICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICByZXR1cm47
CisgICAgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCit2b2lk
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7Cisg
ICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9t
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCiBNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBtX2lzRXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlXTsKKyAgICBzZXRJc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKFttX29i
amNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTIwNywxMSArMjc5LDgg
QEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50IHBpZCkKICNlbmRpZgogfQogCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmICht
X21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAg
IFttX29iamNPYnNlcnZlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKQEAgLTIxOSwx
NiArMjg4LDggQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3Zv
aWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwoKQogewotICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRD
SE9TKQogICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwpA
QCAtMjQ5LDggKzMxMCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZl
ckNvbm5lY3Rpb25EaWVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXZlUHJlc2VudGVk
QXBwbGljYXRpb25QSUQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKKyAgICBNZWRp
YVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAogdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxi
b29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKQEAgLTI3MCw2MyArMzMwLDMyIEBAIHZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9v
bD4mJiBjYXJQbGF5SXNDCiAKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdChib29sIGlzUGxheWluZykKIHsKLSAgICBpZiAoaXNQbGF5
aW5nID09IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBpc1BsYXlpbmc7Ci0gICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0ID8gUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpZZXMgOiBQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQ6Ok5vKTsKKyAgICBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENo
YW5nZShpc1BsYXlpbmcgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOwogfQogI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFM
KQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKQog
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9v
bCBzaG91bGRQYXVzZSkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91
bGRQYXVzZTo6WWVzIDogU2hvdWxkUGF1c2U6Ok5vKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6
OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91bGRQYXVzZTo6WWVz
IDogU2hvdWxkUGF1c2U6Ok5vKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoKQogewotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSgpOwotICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1
cHBvcnRzQWlyUGxheVZpZGVvID0gbV9wbGF5YmFja1RhcmdldC0+c3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAg
IGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBv
cnRzQWlyUGxheVZpZGVvID8gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllcyA6IFN1cHBvcnRzQWly
UGxheVZpZGVvOjpObywgKm1fcGxheWJhY2tUYXJnZXQpOworICAgIGF1dG8gdGFyZ2V0ID0gTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjayA9IHRhcmdldC0+c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgPyBT
dXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzIDogU3VwcG9ydHNBaXJQbGF5VmlkZW86Ok5vOworICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2ssIFdURk1vdmUodGFyZ2V0KSk7CiB9CiAjZW5kaWYKIAotdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKLXsKLSAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1
c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCh1
bmRlckxvY2spOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQotICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2sp
Ci17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5h
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQodW5kZXJMb2NrKTsKLX0KLQogdm9pZCBNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KCkKIHsKKyAgICBIYXNBdmFpbGFibGVUYXJnZXRzIGhhc0F2YWlsYWJsZVRhcmdldHM7CiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07
CisgICAgaGFzQXZhaWxhYmxlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGVdID8gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVzIDogSGFzQXZhaWxhYmxl
VGFyZ2V0czo6Tm87CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PyBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMgOiBIYXNBdmFpbGFibGVUYXJnZXRzOjpObyk7Cisg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShoYXNBdmFpbGFibGVUYXJnZXRzKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYk1lZGlh
U2Vzc2lvbkhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg1MGM1
ZjY1YjczMjQxNWVkNDkyNmFmNzc2MzMwMzY4OGEzN2YyYmEuLjIzMDBjN2JmNTE1NThiYWI5Yjll
ODIyZjFkMTA3YmUyNzZmMGNjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTMzMCw2ICszMzAsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCIKICNpbmNsdWRlICJTeXN0ZW1CYXR0ZXJ5Lmgi
CiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0Nv
cmVUZXh0U1BJLmg+CkBAIC00MzE2LDYgKzQzMTcsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3Ry
aW4KICAgICByZXR1cm4geyB9OwogfQogCit2b2lkIEludGVybmFsczo6YWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZShib29sIHNob3VsZFBhdXNlKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBN
ZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2Uoc2hvdWxkUGF1c2UgPyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOjpZ
ZXMgOiBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOjpObyk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzaG91bGRQYXVzZSk7CisjZW5kaWYKK30KKwogYm9vbCBJbnRlcm5h
bHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNEaXNhYmxpbmdTbGVlcCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzI4MmMzNDE1Yzc4OTg2NzJiMmFjYmVjNzdh
MzdmNDcxYTU0ODExOC4uYTJlYzA1NjVkYmRlMjdjMjJlMmQyNzJiYjY5YTA0M2MyYWU4MzBlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC02ODAsNiArNjgwLDcgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gbWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKSBjb25zdDsKICAgICB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3Ry
aWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBT
dHJpbmcmLCBmbG9hdCBhcmd1bWVudCk7CisgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hh
bmdlKGJvb2wgc2hvdWxkUGF1c2UpOwogICAgIGJvb2wgZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5
U2xlZXAoSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCA4OWNlMTJkMGMzNWEyYWUzMzNhYTQxYmQ5YjJlNzVkZDY4
MTFjYmJhLi4yOGE3MGM4OWM1NzZiZWExODgzYjdmYTQxY2E4ZDI0ZGU0MzJjNjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03MjEsNiArNzIxLDggQEAgZW51bSBUcmVl
VHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0TWVkaWFFbGVtZW50
UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHJlc3RyaWN0
aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdW5kZWZpbmVkIHNldEF1ZGlvQ29u
dGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29u
dGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChET01T
dHJpbmcgY29tbWFuZCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50ID0gMCk7
CisgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZShib29sZWFuIHNob3VsZFBhdXNlKTsKKwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVRdIHVuZGVmaW5lZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VULCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNldE1vY2tNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoRE9NU3RyaW5nIGRldmljZU5hbWUsIERPTVN0cmluZyBk
ZXZpY2VTdGF0ZSk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0g
dW5kZWZpbmVkIG1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRGlzbWlzc1BvcHVwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAppbmRleCBkNjc0MWJkNTNkMGQ4YzMy
MzQwZjg1N2IyZWVkYzM2YjhiNTY4NzI3Li5jYjI5NmMwMzcyNTY5MGM4ZTliOTg3ODUzODk2NzUw
MjY3ZTliNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKQEAgLTY3
LDI0ICs2NywxMyBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbgogICAgIGNvbm5lY3RUb0dQVVBy
b2Nlc3MoKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKCkKK3ZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdGFy
dE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkKIHsKLSAgICBpZiAobV9tb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQotICAgICAgICByZXR1cm47Ci0KICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlN0YXJ0
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3ZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwo
KQogewotICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQ
cm94eTo6U3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpLCB7IH0pOwogfQogCkBAIC05Myw2
MCArODIsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnByb3ZpZGVQcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoaW50IHBpZCkKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlByb3ZpZGVQcmVzZW50aW5nQXBwbGlj
YXRpb25QSUQocGlkKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVu
ZGVkVW5kZXJMb2NrKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAg
ICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKHN1c3BlbmRlZFVuZGVy
TG9jayk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2sgc3VzcGVuZGVkVW5kZXJMb2NrKQot
ewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKLX0KLQotdm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZl
KCkKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50
LmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCi17Ci0gICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSgpOwotfQotCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNB
dmFpbGFibGVUYXJnZXRzKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQot
ICAgICAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoaGFz
QXZhaWxhYmxlVGFyZ2V0cyk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpp
c1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZl
SGVhZFVuaXQgcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KQotewotICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuaXNQbGF5aW5nVG9BdXRvbW90aXZl
SGVhZFVuaXREaWRDaGFuZ2UocGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKLX0KLQotdm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hv
dWxkUGF1c2Ugc2hvdWxkUGF1c2UpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHNob3VsZFBhdXNl
KTsKLX0KLQogdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVE
aWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8gc3VwcG9ydHNBaXJQbGF5VmlkZW8sIE1lZGlh
UGxheWJhY2tUYXJnZXRDb250ZXh0JiYgdGFyZ2V0Q29udGV4dCkKIHsKLSAgICBSZWZQdHI8TWVk
aWFQbGF5YmFja1RhcmdldD4gdGFyZ2V0T2JqZWN0OwotICAgIGlmICh0YXJnZXRDb250ZXh0LnR5
cGUoKSA9PSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkK
LSAgICAgICAgbV9wbGF5YmFja1RhcmdldCA9IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRD
b2NvYTo6Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpOwotICAgIGVsc2Ug
eworICAgIGlmICh0YXJnZXRDb250ZXh0LnR5cGUoKSAhPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dDo6QVZPdXRwdXRDb250ZXh0VHlwZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQotICAgICAgICBjbGllbnQuYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0
c0FpclBsYXlWaWRlbywgKm1fcGxheWJhY2tUYXJnZXQpOworICAgIFdlYkNvcmU6Ok1lZGlhU2Vz
c2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRl
bywgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4
dC5hdk91dHB1dENvbnRleHQoKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlci5oCmluZGV4IGVkYzAyZTRhZjMwMGVjOWIwNDA1YjY3OTVlNmJjNGQ0Yzg3MDhkNDguLmU0
NDljNDg2ZTQ5YjQyZjRkMDIwMTI0YTg0OGI3ODkzNDJkZmRhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlci5oCkBAIC02MiwxOCArNjIsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5h
bDsKIAogICAgIC8vIE1lZGlhU2Vzc2lvbkhlbHBlcgotICAgIHZvaWQgc3RhcnRNb25pdG9yaW5n
V2lyZWxlc3NSb3V0ZXMoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXMoKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRl
cm5hbCgpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChp
bnQpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMKLSAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAgICB2b2lkIGFwcGxpY2F0
aW9uV2lsbEJlY29tZUluYWN0aXZlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpOwotICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2Uo
SGFzQXZhaWxhYmxlVGFyZ2V0cyk7Ci0gICAgdm9pZCBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFk
VW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOwotICAgIHZvaWQgYWN0
aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSk7CiAgICAgdm9pZCBhY3RpdmVWaWRl
b1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYmKTsKIAogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA1NTQ0ZmU1ZDFhMGMzZWVmMGMwZDQxNTRkOTM5YTViY2MyMmI0NTQ3Li5iMGM1ZDE4YzM2M2Rl
MjZkY2FiOGI4OGM5YTk4MzM2ZTUxMjc2ODY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDMtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE5vIGF1
ZGlvIG91dHB1dCB3aGVuIHVucGx1Z2dlZCB3aXJlZCBoZWFkc2V0IGR1cmluZyBhIGNhbGwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjM4OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjg2OTI4MDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZp
ZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1h
dWRpby1yb3V0ZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMy0xNyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgR2VvbG9jYXRpb24gQVBJIGRvZXMgbm90IHdvcmsg
aW4gV0tXZWJWaWV3IHdpdGggY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNo
YW5nZS1hdWRpby1yb3V0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44OTcxYzFlYTI5OWRiMGU2YmNjNzNkODUzMmVkNWExYmQ4ZDJhY2Vl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKKworUEFTUyBNZWRpYVN0cmVhbSB2aWRlbyBzaG91bGQgbm90IGJlIHBhdXNl
ZCB3aGVuIGF1ZGlvIHJvdXRlIGNoYW5nZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1l
bGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZGYwODAxYjdkN2My
YjJmOTZlOWM1NWIyODYyMmU1ZjVjZGQ5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlv
LXJvdXRlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+Q2hhbmdlIG9mIGF1
ZGlvIHJvdXRlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRl
byBpZD0idmlkZW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgPHNjcmlwdD4K
K3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHZpZGVvLnNyY09iamVjdCA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUsIHZp
ZGVvOiB0cnVlIH0pOworCisgICAgYXdhaXQgdmlkZW8ucGxheSgpOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KHRydWUpOworCisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJl
c29sdmUsIDUwKSk7CisgICAgYXNzZXJ0X2ZhbHNlKHZpZGVvLnBhdXNlZCwgInZpZGVvIHBhdXNl
ZCIpOworfSwgIk1lZGlhU3RyZWFtIHZpZGVvIHNob3VsZCBub3QgYmUgcGF1c2VkIHdoZW4gYXVk
aW8gcm91dGUgY2hhbmdlcyIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424010</attachid>
            <date>2021-03-23 03:56:15 -0700</date>
            <delta_ts>2021-04-02 03:11:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216389-20210323115613.patch</filename>
            <type>text/plain</type>
            <size>29300</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4YjYwMTE2MWU1OTEx
MWM4NDM4ZjI4OWRmZGRiNTkxYzA1N2UyOC4uZmU4MzEzZTk4ODIzMGY3ZTEyNWE0ODU3ZmUxZDhk
NjcwOGI3MThjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQg
d2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICBJbXBsZW1lbnQgc2hvdWxkT3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdl
IGZvciBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgSWYgaXQgaXMgYSBtZWRpYSBzdHJlYW0gYmFj
a2VkIHZpZGVvIGVsZW1lbnQsIGRvIG5vdCBwYXVzZSBvbiBhY3RpdmUgYXVkaW8gcm91dGUgY2hh
bmdlLgorCisgICAgICAgIEltcGxlbWVudCBpbnRlcm5hbCBBUEkgdG8gd3JpdGUgYSBsYXlvdXQg
dGVzdC4KKworICAgICAgICBSZWZhY3RvcmluZyB0byBzaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBX
ZWJDb3JlIGFuZCBXZWJLaXQgYW5kIGltcGxlbWVudCB0aGUgaW50ZXJuYWwgQVBJLgorICAgICAg
ICBJbXByb3ZlIGlzb2xhdGlvbiBvZiBNZWRpYVNlc3Npb25IZWxwZXIgYnkgbW92aW5nIGFsbCBp
dHMgbWVtYmVycyBmcm9tIHByb3RlY3RlZCB0byBwcml2YXRlLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91
dGUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlUGF1c2VEdXJpbmdSb3V0
ZUNoYW5nZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjpNZWRpYVNlc3Npb25IZWxwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW06CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQp
OgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29t
ZUluYWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjptZWRpYVNlcnZlckNv
bm5lY3Rpb25EaWVkKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZSk6CisgICAgICAgIChNZWRp
YVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVk
aWFTZXNzaW9uSGVscGVyOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAg
IChNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpNZWRpYVNlc3Npb25IZWxwZXJpT1MpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0ludGVybmFsKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RvcE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6bWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KToKKyAgICAgICAgKE1lZGlh
U2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQpOiBEZWxldGVkLgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNh
dGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25I
ZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMS0wMy0xOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFJUQ0Rh
dGFDaGFubmVsIHRyYW5zZmVyIG91dCBvZiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVlZWU1Mjc3M2Vh
YzAzMmMwOWZmOWNjMzM3OTYzMzk1MjliZWYwYzcuLjc3ODMwNzFlMzRlYzUzNDU3MWFlNDFjYzM2
NDY0ZTdlY2EzMmJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE5vIGF1ZGlvIG91dHB1
dCB3aGVuIHVucGx1Z2dlZCB3aXJlZCBoZWFkc2V0IGR1cmluZyBhIGNhbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjM4OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjg2OTI4MDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgIE1ha2UgdXNlIG9mIFdlYkNvcmUgbWV0aG9kcyBpbnN0ZWFkIG9mIHJlaW1w
bGVtZW50aW5nIHRoZW0gaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9y
aW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6
OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6
YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29tZUluYWN0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRl
RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmg6CisKIDIwMjEtMDMtMjIgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBlYXJseSByZXR1cm4gaW4gVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbXB1dGVGaWx0ZXJlZERldmlj
ZUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDAzZTkz
OWY2MTI1ODM0NDczZWQ4MjQyN2Q1MThmZTIxZjZhN2QyMWUuLjk1MWQ0NWE5NDUzMzY3NGE0ZDJj
MzBjOTM0MGZkYjJiMDM2YzkyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtNzYyMSw2ICs3NjIxLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJv
Y2Vzc0lzU3VzcGVuZGVkQ2hhbmdlZCgpCiAgICAgdXBkYXRlU2xlZXBEaXNhYmxpbmcoKTsKIH0K
IAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZVBhdXNlRHVyaW5nUm91dGVD
aGFuZ2UoKSBjb25zdAoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgcmV0dXJuIGhh
c01lZGlhU3RyZWFtU3JjT2JqZWN0KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzMDZjNmZhNmFiYjU4YjJlNmZiODBjNjBlOTBiOWQx
YWE1ODhmYjIxLi45MmJlYjk3YmVhN2RjY2IyYTc3MzIyMjU5OTJmNzQ4NDU4ZDY0ZmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtODcwLDYgKzg3MCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGhhc01lZGlhU3RyZWFtU291cmNlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwcm9jZXNzSXNT
dXNwZW5kZWRDaGFuZ2VkKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVBhdXNlRHVy
aW5nUm91dGVDaGFuZ2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCmluZGV4IDEwODc4NDYyYmQw
MTFiMDg0ZDFiZGEwYTgzOTE4NDdmOGZhNThkZGYuLmM1ODRhYjIyN2EyMDYxYjUzZmFhZThlYWYy
NTVjYzNhN2ZjOWQ1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLmgKQEAgLTY1LDE1ICs2NSwxOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTaGFyZWRIZWxwZXIoKTsKIAogICAgIE1lZGlh
U2Vzc2lvbkhlbHBlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBNZWRpYVNlc3Npb25IZWxw
ZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKTsKICAgICB2aXJ0dWFsIH5N
ZWRpYVNlc3Npb25IZWxwZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGFkZENsaWVudChNZWRp
YVNlc3Npb25IZWxwZXJDbGllbnQmKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChNZWRpYVNlc3Np
b25IZWxwZXJDbGllbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVz
c1JvdXRlcygpID0gMDsKKyAgICB2b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7
CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCk7CiAgICAgdmlydHVhbCB2
b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSA9IDA7CiAKKyAgICB2b2lk
IHNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoYm9vbCk7CisKICAgICBib29sIGlz
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tb25pdG9yaW5nV2ly
ZWxlc3NSb3V0ZXNDb3VudDsgfQogICAgIGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZTsg
fQogICAgIGJvb2wgYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW87IH0KQEAgLTgx
LDE1ICs4NCw0NiBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVBsYXliYWNrVGFyZ2V0KiBwbGF5YmFj
a1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tUYXJnZXQuZ2V0KCk7IH0KIAorICAg
IHVzaW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6Okhh
c0F2YWlsYWJsZVRhcmdldHM7CisgICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
ID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7
CisgICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3Vs
ZFBhdXNlOworICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKKyAgICB1c2luZyBTdXNwZW5kZWRVbmRl
ckxvY2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKKwor
ICAgIHZvaWQgYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQYXVzZSk7CisgICAgdm9p
ZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7
CisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOworICAgIHZvaWQgYXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB2b2lkIG1lZGlhU2VydmVyQ29ubmVjdGlv
bkRpZWQoKTsKKwogcHJvdGVjdGVkOgorICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyk7CisgICAgdm9pZCBpc1BsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQp
OworICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRl
bywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwg
dm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSA9IDA7CisK
ICAgICBXZWFrSGFzaFNldDxNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ+IG1fY2xpZW50czsKLSAg
ICB1aW50MzJfdCBtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50IHsgMCB9OwogICAgIGJv
b2wgbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHsgZmFsc2UgfTsKKyAgICB1aW50
MzJfdCBtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50IHsgMCB9OwogICAgIGJvb2wgbV9h
Y3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8geyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPE1l
ZGlhUGxheWJhY2tUYXJnZXQ+IG1fcGxheWJhY2tUYXJnZXQ7CiB9OwogCitpbmxpbmUgTWVkaWFT
ZXNzaW9uSGVscGVyOjpNZWRpYVNlc3Npb25IZWxwZXIoYm9vbCBpc0V4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlKQorICAgIDogbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKGlz
RXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUpCit7Cit9CisKK2lubGluZSB2b2lkIE1lZGlh
U2Vzc2lvbkhlbHBlcjo6c2V0SXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZShib29sIGlz
RXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUpCit7CisgICAgbV9pc0V4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlID0gaXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZTsKK30KKwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IDIyNDdmMjY0ZmE4NDgyN2ZmNDRh
ZmI5MWQ2YWEzYzE4MTllYjQzOTguLjI2YmI0MTEwMDFkN2VmYmMwYmYyNmNiNjEzOWYwMjAxN2U2
YTE1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25IZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtOTYsMTAgKzk2LDYgQEAgcHVibGljOgog
ICAgIH5NZWRpYVNlc3Npb25IZWxwZXJpT1MoKTsKIAogICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayk7
Ci0gICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNlc3Npb25IZWxw
ZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxC
ZWNvbWVJbmFjdGl2ZSgpOwotICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsK
ICNpZiBIQVZFKENFTEVTVElBTCkKICAgICB2b2lkIG1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQo
KTsKICAgICB2b2lkIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxib29sPiYmKTsK
QEAgLTExMCwxNyArMTA2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHVz
aW5nIEhhc0F2YWlsYWJsZVRhcmdldHMgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6Okhhc0F2
YWlsYWJsZVRhcmdldHM7Ci0gICAgdXNpbmcgUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ7Ci0g
ICAgdXNpbmcgU2hvdWxkUGF1c2UgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBh
dXNlOwotICAgIHVzaW5nIFN1cHBvcnRzQWlyUGxheVZpZGVvID0gTWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50OjpTdXBwb3J0c0FpclBsYXlWaWRlbzsKLSAgICB1c2luZyBTdXNwZW5kZWRVbmRlckxv
Y2sgPSBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jazsKLQogICAg
IHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbCk7CiAKICAgICB2b2lk
IHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKLSAgICB2b2lkIHN0
YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wTW9uaXRv
cmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlc0ludGVybmFsKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmluZ1dpcmVs
ZXNzUm91dGVzSW50ZXJuYWwoKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxXZWJNZWRpYVNlc3Np
b25IZWxwZXI+IG1fb2JqY09ic2VydmVyOwogI2lmIEhBVkUoQ0VMRVNUSUFMKQpAQCAtMTY2LDEx
ICsxNTYsOTIgQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OnJlbW92ZUNsaWVudChNZWRpYVNl
c3Npb25IZWxwZXJDbGllbnQmIGNsaWVudCkKICAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7
CiB9CiAKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShzaG91bGRQ
YXVzZSk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spOworfQorCit2b2lkIE1l
ZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVk
VW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KHN1c3BlbmRlZFVuZGVyTG9jayk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjphcHBs
aWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgp
OworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGll
bnQuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25I
ZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKQoreworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQubWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGll
ZCgpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UoSGFzQXZhaWxhYmxlVGFyZ2V0cyBoYXNBdmFpbGFibGVUYXJnZXRz
KQoreworICAgIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IGhhc0F2YWlsYWJs
ZVRhcmdldHMgPT0gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVzOworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFp
bGFibGVEaWRDaGFuZ2UoaGFzQXZhaWxhYmxlVGFyZ2V0cyk7Cit9CisKK3ZvaWQgTWVkaWFTZXNz
aW9uSGVscGVyOjppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXQgcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KQoreworICAg
IGJvb2wgbmV3VmFsdWUgPSBwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPT0gUGxheWluZ1Rv
QXV0b21vdGl2ZUhlYWRVbml0OjpZZXM7CisgICAgaWYgKG5ld1ZhbHVlID09IG1faXNQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQbGF5aW5n
VG9BdXRvbW90aXZlSGVhZFVuaXQgPSBuZXdWYWx1ZTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0
RGlkQ2hhbmdlKHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk7Cit9CisKK3ZvaWQgTWVkaWFT
ZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZp
ZGVvIHN1cHBvcnRzQWlyUGxheVZpZGVvLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBwbGF5
YmFja1RhcmdldCkKK3sKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZShwbGF5YmFja1Rh
cmdldCk7CisgICAgbV9hY3RpdmVWaWRlb1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBzdXBw
b3J0c0FpclBsYXlWaWRlbyA9PSBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzOworICAgIGZvciAo
YXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQuYWN0aXZlVmlkZW9Sb3V0
ZURpZENoYW5nZShzdXBwb3J0c0FpclBsYXlWaWRlbywgKm1fcGxheWJhY2tUYXJnZXQpOworfQor
Cit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMo
KQoreworICAgIGlmIChtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCisgICAgICAg
IHJldHVybjsKKyAgICBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCk7Cit9
CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVz
KCkKK3sKKyAgICBpZiAoIW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoLS1tX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KQorICAgICAgICByZXR1cm47Cisg
ICAgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCk7Cit9CisKIE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKICAgICBtX29iamNPYnNlcnZlciA9IGFkb3B0TlMoW1tXZWJNZWRp
YVNlc3Npb25IZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pOwotICAgIG1faXNF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVz
c1RhcmdldHNBdmFpbGFibGVdOworICAgIHNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGUoW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0pOwogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogI2lmIEhBVkUoQ0VMRVNUSUFMKQpAQCAtMjA3LDEx
ICsyNzgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRChpbnQgcGlkKQogI2VuZGlmCiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uSGVs
cGVyaU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit2b2lkIE1lZGlhU2Vzc2lv
bkhlbHBlcmlPUzo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpCiB7Ci0g
ICAgaWYgKG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQrKykKLSAgICAgICAgcmV0dXJu
OwotCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAjaWYgIVBMQVRGT1JNKFdBVENI
T1MpCiAgICAgW21fb2JqY09ic2VydmVyIHN0YXJ0TW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwpA
QCAtMjE5LDE2ICsyODcsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RhcnRNb25p
dG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
IAotdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNJbnRlcm5hbCgpCiB7Ci0gICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0Nv
dW50KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKC0tbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAjaWYgIVBMQVRG
T1JNKFdBVENIT1MpCiAgICAgW21fb2JqY09ic2VydmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJv
dXRlc107CkBAIC0yNDksOCArMzA5LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6Om1l
ZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2hhdmVQ
cmVzZW50ZWRBcHBsaWNhdGlvblBJRCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgY2xpZW50IDog
bV9jbGllbnRzKQotICAgICAgICBjbGllbnQubWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCgpOwor
ICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6bWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCgpOwogfQog
CiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6dXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKE9w
dGlvbmFsPGJvb2w+JiYgY2FyUGxheUlzQ29ubmVjdGVkKQpAQCAtMjcwLDYzICszMjksMzIgQEAg
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRp
b25hbDxib29sPiYmIGNhclBsYXlJc0MKIAogdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wgaXNQbGF5aW5nKQogewotICAgIGlm
IChpc1BsYXlpbmcgPT0gbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IGlzUGxheWlu
ZzsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50Lmlz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKG1faXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOworICAgIGlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0RGlkQ2hhbmdlKGlzUGxheWluZyA/IFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6WWVz
IDogUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpObyk7CiB9CiAjZW5kaWYgLy8gSEFWRShD
RUxFU1RJQUwpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpCiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZShib29sIHNob3VsZFBhdXNlKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQotICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVz
ZSA/IFNob3VsZFBhdXNlOjpZZXMgOiBTaG91bGRQYXVzZTo6Tm8pOworICAgIE1lZGlhU2Vzc2lv
bkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShzaG91bGRQYXVzZSA/IFNob3VsZFBh
dXNlOjpZZXMgOiBTaG91bGRQYXVzZTo6Tm8pOwogfQogCiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZSgpCiB7Ci0gICAgbV9wbGF5YmFja1Rhcmdl
dCA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6Y3JlYXRlKCk7Ci0gICAgbV9hY3RpdmVWaWRl
b1JvdXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8gPSBtX3BsYXliYWNrVGFyZ2V0LT5zdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2soKTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
LSAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UobV9hY3RpdmVWaWRlb1Jv
dXRlU3VwcG9ydHNBaXJQbGF5VmlkZW8gPyBTdXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzIDogU3Vw
cG9ydHNBaXJQbGF5VmlkZW86Ok5vLCAqbV9wbGF5YmFja1RhcmdldCk7CisgICAgYXV0byB0YXJn
ZXQgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSgpOworICAgIGF1dG8gc3VwcG9y
dHNSZW1vdGVWaWRlb1BsYXliYWNrID0gdGFyZ2V0LT5zdXBwb3J0c1JlbW90ZVZpZGVvUGxheWJh
Y2soKSA/IFN1cHBvcnRzQWlyUGxheVZpZGVvOjpZZXMgOiBTdXBwb3J0c0FpclBsYXlWaWRlbzo6
Tm87CisgICAgTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1
cHBvcnRzUmVtb3RlVmlkZW9QbGF5YmFjaywgV1RGTW92ZSh0YXJnZXQpKTsKIH0KICNlbmRpZgog
Ci12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQu
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLX0KLQotdm9pZCBNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNs
aWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKHVuZGVyTG9jayk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBs
aWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgp
OwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kKE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U3VzcGVuZGVkVW5kZXJMb2NrIHVu
ZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAg
Y2xpZW50LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCh1bmRlckxvY2spOwotfQotCiB2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVE
aWRDaGFuZ2UoKQogeworICAgIEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0
czsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX2lzRXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRzQXZh
aWxhYmxlXTsKKyAgICBoYXNBdmFpbGFibGVUYXJnZXRzID0gW21fb2JqY09ic2VydmVyIGhhc1dp
cmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV0gPyBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMgOiBIYXNB
dmFpbGFibGVUYXJnZXRzOjpObzsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZSA/IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllcyA6IEhhc0F2YWlsYWJsZVRhcmdldHM6
Ok5vKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlRGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOwogfQogCiBAaW1wbGVtZW50YXRpb24g
V2ViTWVkaWFTZXNzaW9uSGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggODUwYzVmNjViNzMyNDE1ZWQ0OTI2YWY3NzYzMzAzNjg4YTM3ZjJiYS4uMjMwMGM3YmY1MTU1
OGJhYjliOWU4MjJmMWQxMDdiZTI3NmYwY2M5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMzMwLDYgKzMzMCw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbkhlbHBlcklPUy5oIgogI2luY2x1ZGUgIlN5c3RlbUJh
dHRlcnkuaCIKICNpbmNsdWRlICJWUDlVdGlsaXRpZXNDb2NvYS5oIgogI2luY2x1ZGUgPHBhbC9z
cGkvY2YvQ29yZVRleHRTUEkuaD4KQEAgLTQzMTYsNiArNDMxNywxNSBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBJbnRlcm5hbHM6OnBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmRTdHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjphY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlKGJvb2wgc2hvdWxkUGF1c2UpCit7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6c2hhcmVkSGVscGVyKCkuYWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZShzaG91bGRQYXVzZSA/IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxk
UGF1c2U6OlllcyA6IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6U2hvdWxkUGF1c2U6Ok5vKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNob3VsZFBhdXNlKTsKKyNlbmRpZgorfQorCiBib29s
IEludGVybmFsczo6ZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5U2xlZXAoSFRNTE1lZGlhRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gZWxlbWVudC5pc0Rpc2FibGluZ1NsZWVw
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBjMjgyYzM0MTVjNzg5ODY3MmIy
YWNiZWM3N2EzN2Y0NzFhNTQ4MTE4Li5hMmVjMDU2NWRiZGUyN2MyMmUyZDI3MmJiNjlhMDQzYzJh
ZTgzMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTY4MCw2ICs2ODAsNyBA
QCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBtZWRpYVNlc3Npb25SZXN0cmljdGlv
bnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpIGNvbnN0OwogICAgIHZvaWQgc2V0TWVkaWFFbGVt
ZW50UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQmLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9u
c1N0cmluZyk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5k
KGNvbnN0IFN0cmluZyYsIGZsb2F0IGFyZ3VtZW50KTsKKyAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91
dGVEaWRDaGFuZ2UoYm9vbCBzaG91bGRQYXVzZSk7CiAgICAgYm9vbCBlbGVtZW50SXNCbG9ja2lu
Z0Rpc3BsYXlTbGVlcChIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg5Y2UxMmQwYzM1YTJhZTMzM2FhNDFiZDli
MmU3NWRkNjgxMWNiYmEuLjI4YTcwYzg5YzU3NmJlYTE4ODNiN2ZhNDFjYThkMjRkZTQzMmM2Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTcyMSw2ICs3MjEsOCBAQCBl
bnVtIFRyZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBzZXRNZWRp
YUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBET01TdHJpbmcg
cmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB1bmRlZmluZWQgc2V0
QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250
ZXh0KSBjb250ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9
VklERU8sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdFJlbW90ZUNvbnRyb2xDb21t
YW5kKERPTVN0cmluZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1l
bnQgPSAwKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9dIHVuZGVmaW5lZCBhY3RpdmVBdWRpb1Jv
dXRlRGlkQ2hhbmdlKGJvb2xlYW4gc2hvdWxkUGF1c2UpOworCiAgICAgW0NvbmRpdGlvbmFsPVdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdW5kZWZpbmVkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIFtDb25kaXRpb25hbD1XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQsIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNlTmFtZSwgRE9N
U3RyaW5nIGRldmljZVN0YXRlKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUXSB1bmRlZmluZWQgbW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJEaXNtaXNzUG9w
dXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9z
L1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuY3BwCmluZGV4IGQ2NzQxYmQ1
M2QwZDhjMzIzNDBmODU3YjJlZWRjMzZiOGI1Njg3MjcuLmNiMjk2YzAzNzI1NjkwYzhlOWI5ODc4
NTM4OTY3NTAyNjdlOWI2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNw
cApAQCAtNjcsMjQgKzY3LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uCiAgICAgY29ubmVj
dFRvR1BVUHJvY2VzcygpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3Rh
cnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxw
ZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmICht
X21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAg
IGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94
eTo6U3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9p
ZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJ
bnRlcm5hbCgpCiB7Ci0gICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKC0tbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OjpTdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCksIHsgfSk7CiB9CiAK
QEAgLTkzLDYwICs4MiwxNCBAQCB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6cHJvdmlk
ZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRChpbnQgcGlkKQogICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eTo6UHJvdmlkZVByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRChwaWQpLCB7IH0pOwogfQogCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
ayBzdXNwZW5kZWRVbmRlckxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoc3VzcGVu
ZGVkVW5kZXJMb2NrKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRl
ckxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNs
aWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5kZWRVbmRlckxvY2spOwot
fQotCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVjb21l
SW5hY3RpdmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAg
ICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLX0KLQotdm9pZCBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKLXsKLSAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShIYXNBdmFpbGFibGVUYXJn
ZXRzIGhhc0F2YWlsYWJsZVRhcmdldHMpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCi0gICAgICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShoYXNBdmFpbGFibGVUYXJnZXRzKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmlzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdCBwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi17Ci0gICAgZm9y
IChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1
dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOwot
fQotCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENo
YW5nZShTaG91bGRQYXVzZSBzaG91bGRQYXVzZSkKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hv
dWxkUGF1c2UpOwotfQotCiB2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBwb3J0c0FpclBsYXlWaWRl
bywgTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJiB0YXJnZXRDb250ZXh0KQogewotICAgIFJl
ZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiB0YXJnZXRPYmplY3Q7Ci0gICAgaWYgKHRhcmdldENv
bnRleHQudHlwZSgpID09IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRl
eHRUeXBlKQotICAgICAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvY29hOjpjcmVhdGUodGFyZ2V0Q29udGV4dC5hdk91dHB1dENvbnRleHQoKSk7Ci0g
ICAgZWxzZSB7CisgICAgaWYgKHRhcmdldENvbnRleHQudHlwZSgpICE9IE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpBVk91dHB1dENvbnRleHRUeXBlKSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdl
KHN1cHBvcnRzQWlyUGxheVZpZGVvLCAqbV9wbGF5YmFja1RhcmdldCk7CisgICAgV2ViQ29yZTo6
TWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKHN1cHBvcnRzQWly
UGxheVZpZGVvLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJn
ZXRDb250ZXh0LmF2T3V0cHV0Q29udGV4dCgpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLmgKaW5kZXggZWRjMDJlNGFmMzAwZWM5YjA0MDViNjc5NWU2YmM0ZDRjODcw
OGQ0OC4uZTQ0OWM0ODZlNDliNDJmNGQwMjAxMjRhODQ4Yjc4OTM0MmRmZGFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmgKQEAgLTYyLDE4ICs2MiwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlv
biYpIGZpbmFsOwogCiAgICAgLy8gTWVkaWFTZXNzaW9uSGVscGVyCi0gICAgdm9pZCBzdGFydE1v
bml0b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NS
b3V0ZXNJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlc0ludGVybmFsKCkgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0
aW9uUElEKGludCkgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAgIHZvaWQgYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7Ci0gICAgdm9pZCBhcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQg
YXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCk7Ci0gICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShIYXNBdmFpbGFibGVUYXJnZXRzKTsKLSAgICB2b2lkIGlzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0RGlkQ2hhbmdlKFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCk7Ci0gICAg
dm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlKTsKICAgICB2b2lkIGFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiYpOwogCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNz
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDU1NDRmZTVkMWEwYzNlZWYwYzBkNDE1NGQ5MzlhNWJjYzIyYjQ1NDcuLmQ4Nzdm
Zjc0NWU5ZmNkMjA3OGY5NjRiNDFmNzc3OTQxMWIzNTczOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wMy0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTm8gYXVkaW8gb3V0cHV0IHdoZW4gdW5wbHVnZ2VkIHdpcmVkIGhlYWRzZXQgZHVyaW5nIGEg
Y2FsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
Mzg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82ODY5MjgwMD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNo
YW5nZS1hdWRpby1yb3V0ZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMy0xNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgR2VvbG9jYXRpb24gQVBJIGRvZXMgbm90
IHdvcmsgaW4gV0tXZWJWaWV3IHdpdGggY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVt
ZW50LWNoYW5nZS1hdWRpby1yb3V0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTcxYzFlYTI5OWRiMGU2YmNjNzNkODUzMmVkNWExYmQ4
ZDJhY2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKKworUEFTUyBNZWRpYVN0cmVhbSB2aWRlbyBzaG91bGQgbm90IGJl
IHBhdXNlZCB3aGVuIGF1ZGlvIHJvdXRlIGNoYW5nZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRp
by1yb3V0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZGYwODAx
YjdkN2MyYjJmOTZlOWM1NWIyODYyMmU1ZjVjZGQ5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdl
LWF1ZGlvLXJvdXRlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+Q2hhbmdl
IG9mIGF1ZGlvIHJvdXRlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgPHNj
cmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHZpZGVvLnNyY09iamVj
dCA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRy
dWUsIHZpZGVvOiB0cnVlIH0pOworCisgICAgYXdhaXQgdmlkZW8ucGxheSgpOworCisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5hY3RpdmVBdWRpb1JvdXRlRGlk
Q2hhbmdlKHRydWUpOworCisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1l
b3V0KHJlc29sdmUsIDUwKSk7CisgICAgYXNzZXJ0X2ZhbHNlKHZpZGVvLnBhdXNlZCwgInZpZGVv
IHBhdXNlZCIpOworfSwgIk1lZGlhU3RyZWFtIHZpZGVvIHNob3VsZCBub3QgYmUgcGF1c2VkIHdo
ZW4gYXVkaW8gcm91dGUgY2hhbmdlcyIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425003</attachid>
            <date>2021-04-02 03:11:15 -0700</date>
            <delta_ts>2021-04-02 06:19:06 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-216389-20210402121113.patch</filename>
            <type>text/plain</type>
            <size>29270</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTYwZmNlNTFlNmU1MDkx
ODM4NjEzYTRlNjdhOTEzZWNmZjRhMDMxNS4uMmU5MGFmN2Y5NDgxNThiODU1NTM1MmMwZWY0MjY3
M2YwOTBkYWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA0LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQg
d2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNldCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICBJbXBsZW1lbnQgc2hvdWxkT3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdl
IGZvciBtZWRpYSBlbGVtZW50cy4KKyAgICAgICAgSWYgaXQgaXMgYSBtZWRpYSBzdHJlYW0gYmFj
a2VkIHZpZGVvIGVsZW1lbnQsIGRvIG5vdCBwYXVzZSBvbiBhY3RpdmUgYXVkaW8gcm91dGUgY2hh
bmdlLgorCisgICAgICAgIEltcGxlbWVudCBpbnRlcm5hbCBBUEkgdG8gd3JpdGUgYSBsYXlvdXQg
dGVzdC4KKworICAgICAgICBSZWZhY3RvcmluZyB0byBzaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBX
ZWJDb3JlIGFuZCBXZWJLaXQgYW5kIGltcGxlbWVudCB0aGUgaW50ZXJuYWwgQVBJLgorICAgICAg
ICBJbXByb3ZlIGlzb2xhdGlvbiBvZiBNZWRpYVNlc3Npb25IZWxwZXIgYnkgbW92aW5nIGFsbCBp
dHMgbWVtYmVycyBmcm9tIHByb3RlY3RlZCB0byBwcml2YXRlLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91
dGUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlUGF1c2VEdXJpbmdSb3V0
ZUNoYW5nZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uSGVscGVyOjpNZWRpYVNlc3Npb25IZWxwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW06CisgICAg
ICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQp
OgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uV2lsbEJlY29t
ZUluYWN0aXZlKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyOjptZWRpYVNlcnZlckNv
bm5lY3Rpb25EaWVkKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcjo6ZXh0ZXJuYWxPdXRw
dXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVy
Ojppc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZSk6CisgICAgICAgIChNZWRp
YVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAgICAoTWVk
aWFTZXNzaW9uSGVscGVyOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6CisgICAgICAg
IChNZWRpYVNlc3Npb25IZWxwZXI6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpNZWRpYVNlc3Npb25IZWxwZXJpT1MpOgorICAg
ICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0ludGVybmFsKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6c3RvcE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6bWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6OnNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KToKKyAgICAgICAgKE1lZGlh
U2Vzc2lvbkhlbHBlcmlPUzo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZSk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UpOgorICAgICAg
ICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZSk6CisgICAgICAgIChNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlP
Uzo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQpOiBEZWxldGVkLgorICAgICAgICAoTWVkaWFTZXNzaW9uSGVscGVyaU9TOjphcHBsaWNh
dGlvbldpbGxCZWNvbWVJbmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChNZWRpYVNlc3Npb25I
ZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjphY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMS0wNC0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RhcnQgb2JzZXJ2aW5n
IG91dGdvaW5nIGF1ZGlvL3ZpZGVvIHNvdXJjZXMgYXN5bmNocm9ub3VzbHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OTkwMmJhNTU2ZDYxZDlmNWRjN2FkMWFlOWMzNTJkNWZhMDk0ZjJhYS4uY2EwOGU3ZDM1ZWZkZTJj
ZmYyMjRmYjA1ZTFhMTgzNGUxZGViMzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAy
MS0wNC0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTm8g
YXVkaW8gb3V0cHV0IHdoZW4gdW5wbHVnZ2VkIHdpcmVkIGhlYWRzZXQgZHVyaW5nIGEgY2FsbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2Mzg5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82ODY5MjgwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgTWFrZSB1c2Ugb2YgV2ViQ29yZSBtZXRob2RzIGluc3Rl
YWQgb2YgcmVpbXBsZW1lbnRpbmcgdGhlbSBoZXJlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6
c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpzdGFydE1vbml0b3JpbmdX
aXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsQmVj
b21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjpleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2
ZUF1ZGlvUm91dGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaDoKKwogMjAyMS0wNC0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRG8gbm90IHNlbmQgc2Ft
cGxlcyB0byBHUFVQcm9jZXNzIGlmIG1lZGlhc3RyZWFtIHZpZGVvIGlzIG5vdCBwbGF5aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2OTFhZGM2ODQ4ZTc1
NjQ2NDdmODk4MzZiMWM2ZmY3OWRkMThkZTA1Li5lMmQ3NTE3Mzc5NGZmMzU5NWFiMjU2ZWE1YzZl
OGVhNDgyMzIzZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTc2MjcsNiArNzYyNywxNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByb2Nlc3NJc1N1
c3BlbmRlZENoYW5nZWQoKQogICAgIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7CiB9CiAKK2Jvb2wg
SFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRlQ2hhbmdlKCkg
Y29uc3QKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHJldHVybiBoYXNNZWRpYVN0
cmVhbVNyY09iamVjdCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggMzA2YzZmYTZhYmI1OGIyZTZmYjgwYzYwZTkwYjlkMWFhNTg4ZmIy
MS4uOTJiZWI5N2JlYTdkY2NiMmE3NzMyMjI1OTkyZjc0ODQ1OGQ2NGZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTg3MCw2ICs4NzAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNNZWRp
YVN0cmVhbVNvdXJjZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcHJvY2Vzc0lzU3VzcGVuZGVk
Q2hhbmdlZCgpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVQYXVzZUR1cmluZ1JvdXRl
Q2hhbmdlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MuaAppbmRleCAxMDg3ODQ2MmJkMDExYjA4NGQx
YmRhMGE4MzkxODQ3ZjhmYTU4ZGRmLi5jNTg0YWIyMjdhMjA2MWI1M2ZhYWU4ZWFmMjU1Y2MzYTdm
YzlkNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5oCkBAIC02NSwxNSArNjUsMTggQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIHJlc2V0U2hhcmVkSGVscGVyKCk7CiAKICAgICBNZWRpYVNlc3Npb25I
ZWxwZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uSGVscGVyKGJvb2wg
aXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSk7CiAgICAgdmlydHVhbCB+TWVkaWFTZXNz
aW9uSGVscGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBhZGRDbGllbnQoTWVkaWFTZXNzaW9u
SGVscGVyQ2xpZW50Jik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVscGVy
Q2xpZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMo
KSA9IDA7CisgICAgdm9pZCBzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOworICAgIHZv
aWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpOwogICAgIHZpcnR1YWwgdm9pZCBwcm92
aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgPSAwOwogCisgICAgdm9pZCBzZXRJc0V4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKGJvb2wpOworCiAgICAgYm9vbCBpc01vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzQ291bnQ7IH0KICAgICBib29sIGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGU7IH0KICAgICBi
b29sIGFjdGl2ZVZpZGVvUm91dGVTdXBwb3J0c0FpclBsYXlWaWRlbygpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvOyB9CkBAIC04MSwxNSArODQs
NDYgQEAgcHVibGljOgogCiAgICAgTWVkaWFQbGF5YmFja1RhcmdldCogcGxheWJhY2tUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrVGFyZ2V0LmdldCgpOyB9CiAKKyAgICB1c2luZyBI
YXNBdmFpbGFibGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFi
bGVUYXJnZXRzOworICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlh
U2Vzc2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OworICAgIHVz
aW5nIFNob3VsZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsK
KyAgICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVu
dDo6U3VwcG9ydHNBaXJQbGF5VmlkZW87CisgICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0g
TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7CisKKyAgICB2b2lk
IGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpOworICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7CisgICAgdm9pZCBh
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChTdXNwZW5kZWRVbmRlckxvY2spOworICAgIHZv
aWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CisgICAgdm9pZCBtZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCk7
CisKIHByb3RlY3RlZDoKKyAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpOworICAgIHZvaWQgaXNQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KTsKKyAgICB2
b2lkIGFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoU3VwcG9ydHNBaXJQbGF5VmlkZW8sIFJlZjxN
ZWRpYVBsYXliYWNrVGFyZ2V0PiYmKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgPSAwOworCiAgICAgV2Vh
a0hhc2hTZXQ8TWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50PiBtX2NsaWVudHM7Ci0gICAgdWludDMy
X3QgbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAgfTsKICAgICBib29sIG1faXNF
eHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB7IGZhbHNlIH07CisgICAgdWludDMyX3QgbV9t
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCB7IDAgfTsKICAgICBib29sIG1fYWN0aXZlVmlk
ZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OwogfTsKIAoraW5saW5lIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6TWVkaWFTZXNzaW9uSGVscGVyKGJvb2wgaXNFeHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZSkKKyAgICA6IG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZShpc0V4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworfQorCitpbmxpbmUgdm9pZCBNZWRpYVNlc3Npb25I
ZWxwZXI6OnNldElzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUoYm9vbCBpc0V4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlKQoreworICAgIG1faXNFeHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZSA9IGlzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGU7Cit9CisKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uSGVscGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQppbmRleCAyMjQ3ZjI2NGZhODQ4MjdmZjQ0YWZiOTFkNmFh
M2MxODE5ZWI0Mzk4Li4yNmJiNDExMDAxZDdlZmJjMGJmMjZjYjYxMzlmMDIwMTdlNmExNWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25IZWxwZXJJT1MubW0KQEAgLTk2LDEwICs5Niw2IEBAIHB1YmxpYzoKICAgICB+TWVk
aWFTZXNzaW9uSGVscGVyaU9TKCk7CiAKICAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZv
aWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50
OjpTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIHZvaWQgYXBwbGljYXRpb25XaWxsQmVjb21lSW5h
Y3RpdmUoKTsKLSAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAjaWYgSEFW
RShDRUxFU1RJQUwpCiAgICAgdm9pZCBtZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCk7CiAgICAg
dm9pZCB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9vbD4mJik7CkBAIC0xMTAs
MTcgKzEwNiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB1c2luZyBIYXNB
dmFpbGFibGVUYXJnZXRzID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpIYXNBdmFpbGFibGVU
YXJnZXRzOwotICAgIHVzaW5nIFBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCA9IE1lZGlhU2Vz
c2lvbkhlbHBlckNsaWVudDo6UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OwotICAgIHVzaW5n
IFNob3VsZFBhdXNlID0gTWVkaWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTaG91bGRQYXVzZTsKLSAg
ICB1c2luZyBTdXBwb3J0c0FpclBsYXlWaWRlbyA9IE1lZGlhU2Vzc2lvbkhlbHBlckNsaWVudDo6
U3VwcG9ydHNBaXJQbGF5VmlkZW87Ci0gICAgdXNpbmcgU3VzcGVuZGVkVW5kZXJMb2NrID0gTWVk
aWFTZXNzaW9uSGVscGVyQ2xpZW50OjpTdXNwZW5kZWRVbmRlckxvY2s7Ci0KICAgICB2b2lkIHNl
dElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwogCiAgICAgdm9pZCBwcm92aWRl
UHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCkgZmluYWw7Ci0gICAgdm9pZCBzdGFydE1vbml0
b3JpbmdXaXJlbGVzc1JvdXRlcygpIGZpbmFsOwotICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlcygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXNJbnRlcm5hbCgpIGZpbmFsOworICAgIHZvaWQgc3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRl
c0ludGVybmFsKCkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVy
PiBtX29iamNPYnNlcnZlcjsKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTE2NiwxMSArMTU2LDky
IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpyZW1vdmVDbGllbnQoTWVkaWFTZXNzaW9uSGVs
cGVyQ2xpZW50JiBjbGllbnQpCiAgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCit2
b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlQXVkaW9Sb3V0ZURpZENoYW5nZShTaG91bGRQ
YXVzZSBzaG91bGRQYXVzZSkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
KyAgICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UpOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKFN1c3BlbmRlZFVuZGVyTG9jayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoc3VzcGVuZGVkVW5kZXJMb2NrKTsKK30KKwordm9pZCBNZWRpYVNlc3Np
b25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9j
ayBzdXNwZW5kZWRVbmRlckxvY2spCit7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChzdXNwZW5k
ZWRVbmRlckxvY2spOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQoreworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwor
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uSGVscGVyOjpt
ZWRpYVNlcnZlckNvbm5lY3Rpb25EaWVkKCkKK3sKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKK30K
Kwordm9pZCBNZWRpYVNlc3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKK3sKKyAg
ICBtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgPSBoYXNBdmFpbGFibGVUYXJnZXRz
ID09IEhhc0F2YWlsYWJsZVRhcmdldHM6OlllczsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkKK3sKKyAgICBib29sIG5l
d1ZhbHVlID0gcGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0ID09IFBsYXlpbmdUb0F1dG9tb3Rp
dmVIZWFkVW5pdDo6WWVzOworICAgIGlmIChuZXdWYWx1ZSA9PSBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZ1RvQXV0b21v
dGl2ZUhlYWRVbml0ID0gbmV3VmFsdWU7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC5pc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5n
ZShwbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbkhl
bHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbyBzdXBw
b3J0c0FpclBsYXlWaWRlbywgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgcGxheWJhY2tUYXJn
ZXQpCit7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUocGxheWJhY2tUYXJnZXQpOwor
ICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBvcnRzQWlyUGxheVZpZGVvID0gc3VwcG9ydHNBaXJQ
bGF5VmlkZW8gPT0gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllczsKKyAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFu
Z2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKK30KKwordm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXI6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3sKKyAg
ICBpZiAobV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCsrKQorICAgICAgICByZXR1cm47
CisgICAgc3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCit2b2lk
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit7Cisg
ICAgaWYgKCFtX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKC0tbV9t
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIHN0b3BN
b25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpOworfQorCiBNZWRpYVNlc3Npb25IZWxw
ZXJpT1M6Ok1lZGlhU2Vzc2lvbkhlbHBlcmlPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgbV9vYmpjT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKLSAgICBtX2lzRXh0ZXJuYWxP
dXRwdXREZXZpY2VBdmFpbGFibGUgPSBbbV9vYmpjT2JzZXJ2ZXIgaGFzV2lyZWxlc3NUYXJnZXRz
QXZhaWxhYmxlXTsKKyAgICBzZXRJc0V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlKFttX29i
amNPYnNlcnZlciBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGVdKTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKQEAgLTIwNywxMSArMjc4LDgg
QEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoaW50IHBpZCkKICNlbmRpZgogfQogCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6
c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKQordm9pZCBNZWRpYVNlc3Npb25IZWxwZXJp
T1M6OnN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKQogewotICAgIGlmICht
X21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KyspCi0gICAgICAgIHJldHVybjsKLQogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRDSE9TKQogICAg
IFttX29iamNPYnNlcnZlciBzdGFydE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKQEAgLTIxOSwx
NiArMjg3LDggQEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0YXJ0TW9uaXRvcmluZ1dp
cmVsZXNzUm91dGVzKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQg
TWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkKK3Zv
aWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzdG9wTW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzSW50
ZXJuYWwoKQogewotICAgIGlmICghbV9tb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNDb3VudCkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICgtLW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2lmICFQTEFURk9STShXQVRD
SE9TKQogICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNdOwpA
QCAtMjQ5LDggKzMwOSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZl
ckNvbm5lY3Rpb25EaWVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXZlUHJlc2VudGVk
QXBwbGljYXRpb25QSUQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgY2xpZW50Lm1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKKyAgICBNZWRp
YVNlc3Npb25IZWxwZXI6Om1lZGlhU2VydmVyQ29ubmVjdGlvbkRpZWQoKTsKIH0KIAogdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OnVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChPcHRpb25hbDxi
b29sPiYmIGNhclBsYXlJc0Nvbm5lY3RlZCkKQEAgLTI3MCw2MyArMzI5LDMyIEBAIHZvaWQgTWVk
aWFTZXNzaW9uSGVscGVyaU9TOjp1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoT3B0aW9uYWw8Ym9v
bD4mJiBjYXJQbGF5SXNDCiAKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjpzZXRJc1BsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdChib29sIGlzUGxheWluZykKIHsKLSAgICBpZiAoaXNQbGF5
aW5nID09IG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1faXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQgPSBpc1BsYXlpbmc7Ci0gICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5pc1BsYXlpbmdU
b0F1dG9tb3RpdmVIZWFkVW5pdERpZENoYW5nZShtX2lzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0ID8gUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0OjpZZXMgOiBQbGF5aW5nVG9BdXRvbW90
aXZlSGVhZFVuaXQ6Ok5vKTsKKyAgICBpc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdERpZENo
YW5nZShpc1BsYXlpbmcgPyBQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQ6OlllcyA6IFBsYXlp
bmdUb0F1dG9tb3RpdmVIZWFkVW5pdDo6Tm8pOwogfQogI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFM
KQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lN
VUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKQog
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoYm9v
bCBzaG91bGRQYXVzZSkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAg
ICAgICAgY2xpZW50LmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91
bGRQYXVzZTo6WWVzIDogU2hvdWxkUGF1c2U6Ok5vKTsKKyAgICBNZWRpYVNlc3Npb25IZWxwZXI6
OmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2Uoc2hvdWxkUGF1c2UgPyBTaG91bGRQYXVzZTo6WWVz
IDogU2hvdWxkUGF1c2U6Ok5vKTsKIH0KIAogdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFj
dGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2UoKQogewotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBNZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSgpOwotICAgIG1fYWN0aXZlVmlkZW9Sb3V0ZVN1
cHBvcnRzQWlyUGxheVZpZGVvID0gbV9wbGF5YmFja1RhcmdldC0+c3VwcG9ydHNSZW1vdGVWaWRl
b1BsYXliYWNrKCk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAg
IGNsaWVudC5hY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKG1fYWN0aXZlVmlkZW9Sb3V0ZVN1cHBv
cnRzQWlyUGxheVZpZGVvID8gU3VwcG9ydHNBaXJQbGF5VmlkZW86OlllcyA6IFN1cHBvcnRzQWly
UGxheVZpZGVvOjpObywgKm1fcGxheWJhY2tUYXJnZXQpOworICAgIGF1dG8gdGFyZ2V0ID0gTWVk
aWFQbGF5YmFja1RhcmdldENvY29hOjpjcmVhdGUoKTsKKyAgICBhdXRvIHN1cHBvcnRzUmVtb3Rl
VmlkZW9QbGF5YmFjayA9IHRhcmdldC0+c3VwcG9ydHNSZW1vdGVWaWRlb1BsYXliYWNrKCkgPyBT
dXBwb3J0c0FpclBsYXlWaWRlbzo6WWVzIDogU3VwcG9ydHNBaXJQbGF5VmlkZW86Ok5vOworICAg
IE1lZGlhU2Vzc2lvbkhlbHBlcjo6YWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShzdXBwb3J0c1Jl
bW90ZVZpZGVvUGxheWJhY2ssIFdURk1vdmUodGFyZ2V0KSk7CiB9CiAjZW5kaWYKIAotdm9pZCBN
ZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKLXsKLSAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCk7Ci19Ci0KLXZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1
c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2spCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCh1
bmRlckxvY2spOwotfQotCi12b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6YXBwbGljYXRpb25X
aWxsQmVjb21lSW5hY3RpdmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRz
KQotICAgICAgICBjbGllbnQuYXBwbGljYXRpb25XaWxsQmVjb21lSW5hY3RpdmUoKTsKLX0KLQot
dm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlN1c3BlbmRlZFVuZGVyTG9jayB1bmRlckxvY2sp
Ci17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5h
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQodW5kZXJMb2NrKTsKLX0KLQogdm9pZCBNZWRp
YVNlc3Npb25IZWxwZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdl
KCkKIHsKKyAgICBIYXNBdmFpbGFibGVUYXJnZXRzIGhhc0F2YWlsYWJsZVRhcmdldHM7CiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9pc0V4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlID0gW21fb2JqY09ic2VydmVyIGhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZV07
CisgICAgaGFzQXZhaWxhYmxlVGFyZ2V0cyA9IFttX29iamNPYnNlcnZlciBoYXNXaXJlbGVzc1Rh
cmdldHNBdmFpbGFibGVdID8gSGFzQXZhaWxhYmxlVGFyZ2V0czo6WWVzIDogSGFzQXZhaWxhYmxl
VGFyZ2V0czo6Tm87CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC5leHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZURpZENoYW5nZShtX2lzRXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUg
PyBIYXNBdmFpbGFibGVUYXJnZXRzOjpZZXMgOiBIYXNBdmFpbGFibGVUYXJnZXRzOjpObyk7Cisg
ICAgTWVkaWFTZXNzaW9uSGVscGVyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENo
YW5nZShoYXNBdmFpbGFibGVUYXJnZXRzKTsKIH0KIAogQGltcGxlbWVudGF0aW9uIFdlYk1lZGlh
U2Vzc2lvbkhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDhjMTJk
ZGExNTQxOTgyNDM1YjZiNDBmNTIxOTZhMjkxOGE2MDdjZjguLmNmODRkNGUxNGY2MzVlODM3MWJl
MjM1OWI5NjkzMDA2ODMwMDQ1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTMyOCw2ICszMjgsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCIKICNpbmNsdWRlICJTeXN0ZW1CYXR0ZXJ5Lmgi
CiAjaW5jbHVkZSAiVlA5VXRpbGl0aWVzQ29jb2EuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0Nv
cmVUZXh0U1BJLmg+CkBAIC00MzI3LDYgKzQzMjgsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50
ZXJuYWxzOjpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3Ry
aW4KICAgICByZXR1cm4geyB9OwogfQogCit2b2lkIEludGVybmFsczo6YWN0aXZlQXVkaW9Sb3V0
ZURpZENoYW5nZShib29sIHNob3VsZFBhdXNlKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBN
ZWRpYVNlc3Npb25IZWxwZXI6OnNoYXJlZEhlbHBlcigpLmFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFu
Z2Uoc2hvdWxkUGF1c2UgPyBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOjpZ
ZXMgOiBNZWRpYVNlc3Npb25IZWxwZXJDbGllbnQ6OlNob3VsZFBhdXNlOjpObyk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzaG91bGRQYXVzZSk7CisjZW5kaWYKK30KKwogYm9vbCBJbnRlcm5h
bHM6OmVsZW1lbnRJc0Jsb2NraW5nRGlzcGxheVNsZWVwKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnQuaXNEaXNhYmxpbmdTbGVlcCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNDYxMTk4Njk2ZjdhNDRmNTlhMmMxYzI4N2I3
ODJhMWE3ODdhZmExNy4uZjQ0ZGUxMzlhZTcwZDRkMWUwMTUzMWY5M2RhNzYxNjFiZjY0ZGEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC02ODMsNiArNjgzLDcgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gbWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKSBjb25zdDsKICAgICB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3Ry
aWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChjb25zdCBT
dHJpbmcmLCBmbG9hdCBhcmd1bWVudCk7CisgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hh
bmdlKGJvb2wgc2hvdWxkUGF1c2UpOwogICAgIGJvb2wgZWxlbWVudElzQmxvY2tpbmdEaXNwbGF5
U2xlZXAoSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCAwMWUzYTg2Y2ZiNDM2ODA4N2QzNDdhNmU2MTUwYWM5MDk5
NTNhMTVjLi40NjVjMDU3NDllN2ZlNzAwZjUwZGQ3NjA2NzQzZDNiNzlkMTEwNGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03MjEsNiArNzIxLDggQEAgZW51bSBUcmVl
VHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1bmRlZmluZWQgc2V0TWVkaWFFbGVtZW50
UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHJlc3RyaWN0
aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdW5kZWZpbmVkIHNldEF1ZGlvQ29u
dGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29u
dGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB1
bmRlZmluZWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKERPTVN0cmluZyBjb21tYW5kLCBvcHRp
b25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQgPSAwKTsKKyAgICBbQ29uZGl0aW9uYWw9
VklERU9dIHVuZGVmaW5lZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKGJvb2xlYW4gc2hvdWxk
UGF1c2UpOworCiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdW5k
ZWZpbmVkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVu
YWJsZWQpOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHVuZGVm
aW5lZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0cmluZyBkZXZp
Y2VOYW1lLCBET01TdHJpbmcgZGV2aWNlU3RhdGUpOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVRdIHVuZGVmaW5lZCBtb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckRpc21pc3NQb3B1cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlci5jcHAKaW5k
ZXggZDY3NDFiZDUzZDBkOGMzMjM0MGY4NTdiMmVlZGMzNmI4YjU2ODcyNy4uY2IyOTZjMDM3MjU2
OTBjOGU5Yjk4Nzg1Mzg5Njc1MDI2N2U5YjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIuY3BwCkBAIC02NywyNCArNjcsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVNlc3Npb25I
ZWxwZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24K
ICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyOjpzdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpCit2b2lkIFJlbW90ZU1lZGlh
U2Vzc2lvbkhlbHBlcjo6c3RhcnRNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpCiB7
Ci0gICAgaWYgKG1fbW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzQ291bnQrKykKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lv
bkhlbHBlclByb3h5OjpTdGFydE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlcygpLCB7IH0pOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1Jv
dXRlcygpCit2b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6c3RvcE1vbml0b3JpbmdXaXJl
bGVzc1JvdXRlc0ludGVybmFsKCkKIHsKLSAgICBpZiAoIW1fbW9uaXRvcmluZ1dpcmVsZXNzUm91
dGVzQ291bnQpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoLS1tX21vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0NvdW50KQot
ICAgICAgICByZXR1cm47Ci0KICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyUHJveHk6OlN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXMoKSwg
eyB9KTsKIH0KIApAQCAtOTMsNjAgKzgyLDE0IEBAIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyOjpwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKGludCBwaWQpCiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5OjpQcm92
aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKHBpZCksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3Rl
TWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVu
ZGVkVW5kZXJMb2NrIHN1c3BlbmRlZFVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZChzdXNwZW5kZWRVbmRlckxvY2spOwotfQotCi12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhl
bHBlcjo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrIHN1
c3BlbmRlZFVuZGVyTG9jaykKLXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykK
LSAgICAgICAgY2xpZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKHN1c3BlbmRlZFVu
ZGVyTG9jayk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphcHBsaWNhdGlv
bldpbGxCZWNvbWVJbmFjdGl2ZSgpCi17Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVu
dHMpCi0gICAgICAgIGNsaWVudC5hcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotfQot
Ci12b2lkIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlcjo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoKQotewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGll
bnQuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLX0KLQotdm9pZCBSZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXI6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2
YWlsYWJsZVRhcmdldHMgaGFzQXZhaWxhYmxlVGFyZ2V0cykKLXsKLSAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKGhhc0F2YWlsYWJsZVRhcmdldHMpOwotfQotCi12b2lkIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlcjo6aXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2Uo
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0IHBsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdCkK
LXsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50Lmlz
UGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0RGlkQ2hhbmdlKHBsYXlpbmdUb0F1dG9tb3RpdmVI
ZWFkVW5pdCk7Ci19Ci0KLXZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyOjphY3RpdmVBdWRp
b1JvdXRlRGlkQ2hhbmdlKFNob3VsZFBhdXNlIHNob3VsZFBhdXNlKQotewotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQuYWN0aXZlQXVkaW9Sb3V0ZURp
ZENoYW5nZShzaG91bGRQYXVzZSk7Ci19Ci0KIHZvaWQgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
OjphY3RpdmVWaWRlb1JvdXRlRGlkQ2hhbmdlKFN1cHBvcnRzQWlyUGxheVZpZGVvIHN1cHBvcnRz
QWlyUGxheVZpZGVvLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYmIHRhcmdldENvbnRleHQp
CiB7Ci0gICAgUmVmUHRyPE1lZGlhUGxheWJhY2tUYXJnZXQ+IHRhcmdldE9iamVjdDsKLSAgICBp
ZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgPT0gTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFW
T3V0cHV0Q29udGV4dFR5cGUpCi0gICAgICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2E6OmNyZWF0ZSh0YXJnZXRDb250ZXh0LmF2T3V0cHV0Q29u
dGV4dCgpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAodGFyZ2V0Q29udGV4dC50eXBlKCkgIT0gTWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OkFWT3V0cHV0Q29udGV4dFR5cGUpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LmFjdGl2ZVZpZGVvUm91
dGVEaWRDaGFuZ2Uoc3VwcG9ydHNBaXJQbGF5VmlkZW8sICptX3BsYXliYWNrVGFyZ2V0KTsKKyAg
ICBXZWJDb3JlOjpNZWRpYVNlc3Npb25IZWxwZXI6OmFjdGl2ZVZpZGVvUm91dGVEaWRDaGFuZ2Uo
c3VwcG9ydHNBaXJQbGF5VmlkZW8sIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb2NvYTo6
Y3JlYXRlKHRhcmdldENvbnRleHQuYXZPdXRwdXRDb250ZXh0KCkpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFT
ZXNzaW9uSGVscGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9S
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaAppbmRleCBlZGMwMmU0YWYzMDBlYzliMDQwNWI2Nzk1
ZTZiYzRkNGM4NzA4ZDQ4Li5lNDQ5YzQ4NmU0OWI0MmY0ZDAyMDEyNGE4NDhiNzg5MzQyZGZkYWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIuaApAQCAtNjIsMTggKzYyLDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nl
c3NDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICAvLyBNZWRpYVNlc3Npb25IZWxwZXIKLSAgICB2
b2lkIHN0YXJ0TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9w
TW9uaXRvcmluZ1dpcmVsZXNzUm91dGVzKCkgZmluYWw7CisgICAgdm9pZCBzdGFydE1vbml0b3Jp
bmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkgZmluYWw7CisgICAgdm9pZCBzdG9wTW9uaXRvcmlu
Z1dpcmVsZXNzUm91dGVzSW50ZXJuYWwoKSBmaW5hbDsKICAgICB2b2lkIHByb3ZpZGVQcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoaW50KSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2VzCi0gICAgdm9p
ZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoU3VzcGVuZGVkVW5kZXJMb2NrKTsKLSAg
ICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKFN1c3BlbmRlZFVuZGVyTG9jayk7
Ci0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxCZWNvbWVJbmFjdGl2ZSgpOwotICAgIHZvaWQgYXBw
bGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKLSAgICB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlRGlkQ2hhbmdlKEhhc0F2YWlsYWJsZVRhcmdldHMpOwotICAgIHZvaWQgaXNQbGF5
aW5nVG9BdXRvbW90aXZlSGVhZFVuaXREaWRDaGFuZ2UoUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRV
bml0KTsKLSAgICB2b2lkIGFjdGl2ZUF1ZGlvUm91dGVEaWRDaGFuZ2UoU2hvdWxkUGF1c2UpOwog
ICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShTdXBwb3J0c0FpclBsYXlWaWRlbywg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmJik7CiAKICAgICBXZWJQcm9jZXNz
JiBtX3Byb2Nlc3M7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDg4NmNmZDhhYjI0ZDY1NmU5ODE4YTY4YzlkMmZiM2UzZDNm
ZDZlNC4uYzA4MjU0MzNmMzRlZWQ5MzNkNzQ3OWFlNGY0MTc4YmNlZWY3ZDFhZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTA0LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBObyBhdWRpbyBvdXRwdXQgd2hlbiB1bnBsdWdnZWQgd2lyZWQgaGVhZHNl
dCBkdXJpbmcgYSBjYWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTYzODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY4NjkyODAwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1jaGFuZ2UtYXVkaW8tcm91dGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVv
LWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTAzLTMxICBS
b2JlcnQgSmVubmVyICA8amVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIERlYnVnIHdrMiBd
IEFTU0VSVElPTiBGQUlMRUQ6IHdpbGxCZUNvbXBvc2l0ZWQgPT0gbmVlZHNUb0JlQ29tcG9zaXRl
ZChsYXllciwgcXVlcnlEYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVs
ZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTcxYzFl
YTI5OWRiMGU2YmNjNzNkODUzMmVkNWExYmQ4ZDJhY2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5n
ZS1hdWRpby1yb3V0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBNZWRp
YVN0cmVhbSB2aWRlbyBzaG91bGQgbm90IGJlIHBhdXNlZCB3aGVuIGF1ZGlvIHJvdXRlIGNoYW5n
ZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWNoYW5nZS1hdWRpby1yb3V0
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVmZGYwODAxYjdkN2MyYjJmOTZlOWM1NWIyODYyMmU1ZjVjZGQ5
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtY2hhbmdlLWF1ZGlvLXJvdXRlLmh0bWwKQEAgLTAsMCArMSwy
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICA8dGl0bGU+Q2hhbmdlIG9mIGF1ZGlvIHJvdXRlPC90aXRsZT4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5IHBs
YXlzSW5saW5lPjwvdmlkZW8+CisgICAgPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIHZpZGVvLnNyY09iamVjdCA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUsIHZpZGVvOiB0cnVlIH0pOworCisgICAgYXdh
aXQgdmlkZW8ucGxheSgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5hY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdlKHRydWUpOworCisgICAgYXdhaXQgbmV3
IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7CisgICAgYXNzZXJ0
X2ZhbHNlKHZpZGVvLnBhdXNlZCwgInZpZGVvIHBhdXNlZCIpOworfSwgIk1lZGlhU3RyZWFtIHZp
ZGVvIHNob3VsZCBub3QgYmUgcGF1c2VkIHdoZW4gYXVkaW8gcm91dGUgY2hhbmdlcyIpOworICAg
IDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>