<?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>231161</bug_id>
          
          <creation_ts>2021-10-04 02:39:32 -0700</creation_ts>
          <short_desc>REGRESSION (iOS 15): Safari shows zoom callout even if -webkit-user-select is none</short_desc>
          <delta_ts>2025-07-25 12:43:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>Safari 15</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>timocov</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>hi</cc>
    
    <cc>j</cc>
    
    <cc>mail</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>raine.revere</cc>
    
    <cc>shakilmansuri.dream</cc>
    
    <cc>stefan.meschke</cc>
    
    <cc>thorton</cc>
    
    <cc>tina.shum</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800003</commentid>
    <comment_count>0</comment_count>
      <attachid>440044</attachid>
    <who name="">timocov</who>
    <bug_when>2021-10-04 02:39:32 -0700</bug_when>
    <thetext>Created attachment 440044
debug page

1. Open the attached page with Safari v15+ on mobile device
2. Long press anywhere at the page

=&gt; Even the page is marked as non-selectable Safari still shows a callout.

It is simplest example, which worked in v14. In our example we want to prevent user selection for canvas elements since there is nothing to select, but still no luck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800308</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-04 17:25:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/83863266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800310</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-04 17:32:08 -0700</bug_when>
    <thetext>The (perhaps unfortunately named) CSS property `-webkit-touch-callout` controls whether or not we should present a context menu when long pressing over a particular element.

It sounded like you might want `-webkit-user-select: none;` instead, but while this does prevent text selection, it doesn&apos;t prevent the loupe gesture magnifier from popping up :/

One thing that does seem to work is adding an active &quot;touchstart&quot; event listener and preventing default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801090</commentid>
    <comment_count>3</comment_count>
    <who name="">timocov</who>
    <bug_when>2021-10-06 08:30:12 -0700</bug_when>
    <thetext>Unfortunately, preventing touchstart is not an option for our application since it might prevent the page scroll or some other gestures.

We have `-webkit-user-select: none;` as well, but it doesn’t work either.

Is there any way to get it fixed in the following ios updates? This really frustrates our users, but we cannot do anything with that since it looks like the browser’s bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806636</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-20 08:42:40 -0700</bug_when>
    <thetext>(In reply to timocov from comment #3)
&gt; Unfortunately, preventing touchstart is not an option for our application
&gt; since it might prevent the page scroll or some other gestures.
&gt; 
&gt; We have `-webkit-user-select: none;` as well, but it doesn’t work either.
&gt; 
&gt; Is there any way to get it fixed in the following ios updates? This really
&gt; frustrates our users, but we cannot do anything with that since it looks
&gt; like the browser’s bug.

It looks like the new magnifier UI that appears during a loupe (i.e. long-press) gesture is new behavior in iOS 15. I&apos;ll see if we can make it so that `-webkit-user-select: none;` suppresses this UI (in addition to text selection in general).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806779</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pearson">j</who>
    <bug_when>2021-10-20 12:47:11 -0700</bug_when>
    <thetext>Thanks Wenson, we&apos;d also appreciate this change, mostly for accessibility reasons. I&apos;ve seen discussion of it in a few other places, including here: https://github.com/Leaflet/Leaflet/issues/7678

Note that when the loupe appears in iOS 15, a haptic thud occurs around the same time. However, this haptic has been happening for a few versions of iOS (I think it started with iOS 14.0). Prior to iOS 15, it had no visible effect if user-select=none. So I&apos;m not sure if it is related to the loupe, but ideally the haptic would be suppressed by -webkit-user-select: none as well. If it isn&apos;t related, let me know and I&apos;ll create a separate ticket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808140</commentid>
    <comment_count>6</comment_count>
      <attachid>442284</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-23 16:30:27 -0700</bug_when>
    <thetext>Created attachment 442284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808171</commentid>
    <comment_count>7</comment_count>
      <attachid>442284</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-23 22:14:14 -0700</bug_when>
    <thetext>Comment on attachment 442284
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2898
&gt; +            if (isAssistableElement(*downcast&lt;Element&gt;(hitNode)))

Not too fond of checking if not text but then casting to Element. Why not make the check and the downcast match? Also could use *node.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2912
&gt; +        return;

Do we want to set isSelected to false here? Or is it valuable to leave the other fields with old values? Or are these always set to the default values in practice? Can’t tell from this function alone, but maybe due to how it’s used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808242</commentid>
    <comment_count>8</comment_count>
      <attachid>442284</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-24 11:46:01 -0700</bug_when>
    <thetext>Comment on attachment 442284
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2898
&gt;&gt; +            if (isAssistableElement(*downcast&lt;Element&gt;(hitNode)))
&gt; 
&gt; Not too fond of checking if not text but then casting to Element. Why not make the check and the downcast match? Also could use *node.

Good catch — this should probably be an `is&lt;Element&gt;()` check instead (I moved this logic from its current place in the method, below).

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2912
&gt;&gt; +        return;
&gt; 
&gt; Do we want to set isSelected to false here? Or is it valuable to leave the other fields with old values? Or are these always set to the default values in practice? Can’t tell from this function alone, but maybe due to how it’s used.

Ah, so we never populated the `isSelected` member before in this case, which means that it&apos;s currently just the default value of `false` in the case of links and images. In practice, we don&apos;t currently consult that bit in the case where `info.isLink || info.isImage`, but I agree that it would be better to just set that value to prevent confusion down the line. I&apos;ll move the `info.isSelected = result.isSelected();` to before this early return.

(I suppose the same applies to some of the other members in this struct, such as `idAttribute` below — seems like it might be worth doing an audit at some point and make sure these are populated in all codepaths, as long as they&apos;re relatively cheap to compute).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808245</commentid>
    <comment_count>9</comment_count>
      <attachid>442316</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-24 12:09:57 -0700</bug_when>
    <thetext>Created attachment 442316
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808252</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-24 13:39:43 -0700</bug_when>
    <thetext>Committed r284766 (243475@main): &lt;https://commits.webkit.org/243475@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442316.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808263</commentid>
    <comment_count>11</comment_count>
      <attachid>442284</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-24 14:21:02 -0700</bug_when>
    <thetext>Comment on attachment 442284
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2912
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; Do we want to set isSelected to false here? Or is it valuable to leave the other fields with old values? Or are these always set to the default values in practice? Can’t tell from this function alone, but maybe due to how it’s used.
&gt; 
&gt; Ah, so we never populated the `isSelected` member before in this case, which means that it&apos;s currently just the default value of `false` in the case of links and images. In practice, we don&apos;t currently consult that bit in the case where `info.isLink || info.isImage`, but I agree that it would be better to just set that value to prevent confusion down the line. I&apos;ll move the `info.isSelected = result.isSelected();` to before this early return.
&gt; 
&gt; (I suppose the same applies to some of the other members in this struct, such as `idAttribute` below — seems like it might be worth doing an audit at some point and make sure these are populated in all codepaths, as long as they&apos;re relatively cheap to compute).

Yes, that’s sort of what I had in mind.

One way to do this is to have a structure that initializes all its data members in its definition or a constructor, then have the structure be a return value so we know we are filling in a default-initialized local variable and don’t have to worry about data members we don’t set. But in the case of this function, I believe this is actually an in/out case where the structure is partially filled in by the caller and is not just a pure return value.

Maybe there’s no practical problem, but it’s hard to tell that from looking at the code locally so long term it’s not a great design pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814363</commentid>
    <comment_count>12</comment_count>
    <who name="">stefan.meschke</who>
    <bug_when>2021-11-12 00:34:38 -0800</bug_when>
    <thetext>Is there already an ETA when this will be released as a fix for iOS 15? Seems like iOS 15.1 nor iOS 15.2 (public beta) got this. Thanks in advance!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814440</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-12 08:00:08 -0800</bug_when>
    <thetext>(In reply to stefan.meschke from comment #12)
&gt; Is there already an ETA when this will be released as a fix for iOS 15?
&gt; Seems like iOS 15.1 nor iOS 15.2 (public beta) got this. Thanks in advance!

So it looks like this change didn&apos;t make it into iOS 15.2 beta 2 (19C5036e). We&apos;ll update the bug when it lands in a public beta!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814481</commentid>
    <comment_count>14</comment_count>
    <who name="">stefan.meschke</who>
    <bug_when>2021-11-12 09:01:21 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #13)
&gt; (In reply to stefan.meschke from comment #12)
&gt; &gt; Is there already an ETA when this will be released as a fix for iOS 15?
&gt; &gt; Seems like iOS 15.1 nor iOS 15.2 (public beta) got this. Thanks in advance!
&gt; 
&gt; So it looks like this change didn&apos;t make it into iOS 15.2 beta 2 (19C5036e).
&gt; We&apos;ll update the bug when it lands in a public beta!

Perfect. Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819563</commentid>
    <comment_count>15</comment_count>
    <who name="shakil mansuri">shakilmansuri.dream</who>
    <bug_when>2021-12-01 21:10:06 -0800</bug_when>
    <thetext>This issue still exists with iOS 15.1.

You can see https://bug-231161-attachments.webkit.org/attachment.cgi?id=440044.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861634</commentid>
    <comment_count>16</comment_count>
    <who name="Tina">tina.shum</who>
    <bug_when>2022-04-14 14:47:22 -0700</bug_when>
    <thetext>May I ask when will this bug be verified please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861638</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-14 15:10:31 -0700</bug_when>
    <thetext>Sorry no one at Apple mentioned it when it made it into a public beta. This fix did make it into iOS 15.3. The current version of iOS, iOS 15.4 should also have it fixed. Feel free to verify it in iOS 15.3 or newer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861639</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-14 15:12:42 -0700</bug_when>
    <thetext>I believe it also made it into the final version of iOS 15.2, now that I look at Apple’s internal records more carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2132393</commentid>
    <comment_count>19</comment_count>
    <who name="">hi</who>
    <bug_when>2025-07-24 15:05:45 -0700</bug_when>
    <thetext>Wanted to mention that disabling the loupe with `-webkit-user-select` no longer works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2132528</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2025-07-25 10:58:22 -0700</bug_when>
    <thetext>Would you be willing to file a bug report about that? In the past, adding a comment to an older resolved bug report hasn’t been an effective way to report a new problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2132547</commentid>
    <comment_count>21</comment_count>
    <who name="">hi</who>
    <bug_when>2025-07-25 12:43:50 -0700</bug_when>
    <thetext>Opened a new report: https://bugs.webkit.org/show_bug.cgi?id=296492</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>440044</attachid>
            <date>2021-10-04 02:39:32 -0700</date>
            <delta_ts>2021-10-04 02:39:32 -0700</delta_ts>
            <desc>debug page</desc>
            <filename>safari-selection.html</filename>
            <type>text/html</type>
            <size>845</size>
            <attacher>timocov</attacher>
            
              <data encoding="base64">PGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgIDx0
aXRsZT5fX188L3RpdGxlPgoKICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJJ
bnRlcmFjdGl2ZSBmaW5hbmNpYWwgY2hhcnRzIGZvciBhbmFseXNpcyBhbmQgZ2VuZXJhdGluZyB0
cmFkaW5nIGlkZWFzIG9uIFRyYWRpbmdWaWV3ISI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFi
bGU9bm8iPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13
aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9MS4wLCBtaW5pbXVtLXNjYWxl
PTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+CgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAg
ICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgbWluLXdpZHRoOiAzMjBweDsKICAgICAgICAg
ICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgb3Zl
cmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiBy
Z2JhKDAsIDAsIDAsIDApOwogICAgICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwog
ICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAgICAgLXdlYmtpdC10b3VjaC1j
YWxsb3V0OiBub25lOwogICAgICAgICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7
CiAgICAgICAgfQogICAgPC9zdHlsZT4KCjxib2R5PjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442284</attachid>
            <date>2021-10-23 16:30:27 -0700</date>
            <delta_ts>2021-10-23 22:14:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231161-20211023163026.patch</filename>
            <type>text/plain</type>
            <size>14923</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI5OGFhYmYwNTcxMDllMTM3
MGE5N2VmYWU5NjdiNjA3ZGMxZjFhN2YuLmJlZjc5N2M4ODg2ZGMwNWE1NDNiOTc1YmM4MTViM2Q4
MjhmMDg5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMTAtMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoaU9T
IDE1KTogU2FmYXJpIHNob3dzIHpvb20gY2FsbG91dCBldmVuIGlmIC13ZWJraXQtdXNlci1zZWxl
Y3QgaXMgbm9uZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMxMTYxCisgICAgICAgIHJkYXI6Ly84Mzg2MzI2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc2V2ZXJhbCBtaW5vciB0d2Vha3MgdG8g
cHJldmVudCB0aGUgdGV4dCBpbnRlcmFjdGlvbiBhc3Npc3RhbnQncyBsb3VwZSBnZXN0dXJlIGZy
b20gYmVnaW5uaW5nIHdoZW4gbG9uZworICAgICAgICBwcmVzc2luZyBpbnNpZGUgY29udGVudCB3
aXRoIGAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO2AuIEltcG9ydGFudGx5LCB0aGlzIHByZXZl
bnRzIGJvdGggdGhlIHRleHQKKyAgICAgICAgaW50ZXJhY3Rpb24ncyBoYXB0aWMgZmVlZGJhY2sg
YW5kIHRoZSB0ZXh0IHNlbGVjdGlvbiBtYWduaWZpZXIgVUkgKGludHJvZHVjZWQgaW4gaU9TIDE1
KSBmcm9tIHNob3dpbmcgdXAuIFNlZQorICAgICAgICBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3QtYWxs
b3ctdGV4dC1zZWxlY3Rpb24taW4tdXNlci1zZWxlY3Qtbm9uZS5odG1sCisKKyAgICAgICAgKiBT
aGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjppc1NlbGVjdGFibGUgY29u
c3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gcmV0dXJuIHdoZXRoZXIgdGhl
IGBzZWxlY3RhYmlsaXR5YCBmbGFnIGlzIGVxdWFsIHRvIGBTZWxlY3RhYmxlYCwgYW5kIHVzZSB0
aGlzIGluIHBsYWNlcworICAgICAgICB3aGVyZSB3ZSBjdXJyZW50IGNoZWNrIHRoZSBgaXNTZWxl
Y3RhYmxlYCBmbGFnLgorCisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOgorCisgICAgICAgIEJyZWFrIHRoZSBjdXJy
ZW50IGBpc1NlbGVjdGFibGVgIGZsYWcgb3V0IGludG8gZGlmZmVyZW50IGVudW0gdHlwZXMsIHdo
aWNoIGVudW1lcmF0ZSB0aGUgcmVhc29ucyB3aHkgd2UgbWlnaHQKKyAgICAgICAgbmVlZCB0byB0
cmVhdCBoaXQtdGVzdGVkIGNvbnRlbnQgYXMgbm9uLXVzZXItc2VsZWN0YWJsZS4gSW1wb3J0YW50
bHksIHRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgZWFybHkgcmV0dXJuIGluc2lkZQorICAgICAgICBg
LXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6c2hvdWxkQmVnaW5BdFBvaW50OmAgYmVsb3cgaWYgdGhl
IGVsZW1lbnQgaGFzIGFuIGV4cGxpY2l0IGAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO2AsCisg
ICAgICAgIGFuZCBub3QgYmVjYXVzZSBvZiB0aGUgb3RoZXIgcmVhc29ucyAoaS5lLiBsYXJnZSBl
bGVtZW50IGJvdW5kcyBvciB0aGUgZmFjdCB0aGF0IHdlJ3JlIGxvbmcgcHJlc3NpbmcgZWRpdGFi
bGUKKyAgICAgICAgdGV4dCB3aGlsZSBub3QgZWRpdGluZykuCisKKyAgICAgICAgVGhpcyBudWFu
Y2UgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGNvbnRpbnVlIGFsbG93aW5nIHRoZSBsb3VwZSBn
ZXN0dXJlICh3aGljaCBtYW5pZmVzdHMgYXMgYSBmbG9hdGluZyBjYXJldCkKKyAgICAgICAgdG8g
YmVnaW4gd2hlbiBsb25nIHByZXNzaW5nIGluc2lkZSBhIGZvY3VzZWQgYSB0ZXh0IGZpZWxkLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOnNob3VsZEJl
Z2luQXRQb2ludDpdKToKKworICAgICAgICBSZXR1cm4gTk8gaGVyZSBpbiB0aGUgY2FzZSB3aGVy
ZSB3ZSdyZSByZWNvZ25pemluZyBhIGxvdXBlIGdlc3R1cmUgKGkuZS4gbG9uZyBwcmVzcykgaW5z
aWRlIGNvbnRlbnQgd2l0aAorICAgICAgICBgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtgIChi
eSBjb25zdWx0aW5nIHRoZSBuZXcgYHNlbGVjdGFiaWxpdHlgIGVudW1lcmF0aW9uKS4gVGhpcyBh
bGxvd3MgdXMgdG8gcHJldmVudCBib3RoCisgICAgICAgIGhhcHRpYyBmZWVkYmFjayBhcyB3ZWxs
IGFzIHRoZSBuZXcgbWFnbmlmaWVyIFVJIGZyb20gdHJpZ2dlcmluZyB3aGVuIGxvbmcgcHJlc3Np
bmcgaW5zaWRlIGNvbnRlbnQgdGhhdCBoYXMKKyAgICAgICAgZXhwbGljaXRseSBkaXNhYmxlZCB0
ZXh0IHNlbGVjdGlvbi4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsb3Nlc3RQb3NpdGlv
blRvUG9pbnQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbik6CisKKyAgICAgICAg
QWRkaXRpb25hbGx5IHBvcHVsYXRlIHRoZSBgc2VsZWN0YWJpbGl0eWAgZmxhZyBldmVuIHdoZW4g
bG9uZyBwcmVzc2luZyBpbnNpZGUgaW1hZ2VzIGFuZCBsaW5rcy4gSW5zdGVhZCBvZgorICAgICAg
ICBwdXR0aW5nIHRoZSBjYWxsIHRvIGBzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uYCBiZWhp
bmQgdGhlIGBpc0xpbmtgL2Bpc0ltYWdlYCBjaGVjaywgbW92ZSB0aGF0IGNvbmRpdGlvbiBpbnRv
CisgICAgICAgIGBzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uYCBpbiB0aGUgZm9ybSBvZiBh
biBlYXJseSByZXR1cm4sIGFuZCBhbHdheXMgcG9wdWxhdGUgYHNlbGVjdGFiaWxpdHlgIGluIGVp
dGhlcgorICAgICAgICBjYXNlLgorCiAyMDIxLTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODQwNzkpOiBBdWRpbyBj
b250aW51ZXMgcGxheWluZyBvbiBodWx1LmNvbSBpbiBwcml2YXRlIGJyb3dzaW5nIG1vZGUgYWZ0
ZXIgY2xvc2luZyB0aGUgdGFiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDY1ZDYzZjkyYTk4
M2JiMzM5ZDU3MDRjMjI2ODZjMTNlMTI4ZDllMTAuLjQwZjYzZmIzZGU4NDZjMmQ1MDE0N2YwYTk2
YWVjYTg4MDg2NDhjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC01Myw3ICs1MywxNSBA
QCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogCiAgICAgYm9vbCBj
YW5CZVZhbGlkIHsgdHJ1ZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbm9kZUF0UG9zaXRp
b25IYXNEb3VibGVDbGlja0hhbmRsZXI7Ci0gICAgYm9vbCBpc1NlbGVjdGFibGUgeyBmYWxzZSB9
OworCisgICAgZW51bSBjbGFzcyBTZWxlY3RhYmlsaXR5IDogdWludDhfdCB7CisgICAgICAgIFNl
bGVjdGFibGUsCisgICAgICAgIFVuc2VsZWN0YWJsZUR1ZVRvRm9jdXNhYmxlRWxlbWVudCwKKyAg
ICAgICAgVW5zZWxlY3RhYmxlRHVlVG9MYXJnZUVsZW1lbnRCb3VuZHMsCisgICAgICAgIFVuc2Vs
ZWN0YWJsZUR1ZVRvVXNlclNlbGVjdE5vbmUsCisgICAgfTsKKyAgICBTZWxlY3RhYmlsaXR5IHNl
bGVjdGFiaWxpdHkgeyBTZWxlY3RhYmlsaXR5OjpTZWxlY3RhYmxlIH07CisKICAgICBib29sIGlz
U2VsZWN0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJlZmVyc0RyYWdnaW5nT3ZlclRleHRTZWxl
Y3Rpb24geyBmYWxzZSB9OwogICAgIGJvb2wgaXNOZWFyTWFya2VkVGV4dCB7IGZhbHNlIH07CkBA
IC0xMDcsMTAgKzExNSwyNiBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24gewogICAgIC8vIHdlIGNhbiBmZXRjaCB0aGUgY2hlYXAgaW5mb3JtYXRpb24gYW5kIGNvcHkg
dGhlIHNuYXBzaG90cyBpbnRvIHRoZSBuZXcgcmVzcG9uc2UpLgogICAgIHZvaWQgbWVyZ2VDb21w
YXRpYmxlT3B0aW9uYWxJbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYgb2xkSW5mb3JtYXRpb24pOwogCisgICAgYm9vbCBpc1NlbGVjdGFibGUoKSBjb25z
dCB7IHJldHVybiBzZWxlY3RhYmlsaXR5ID09IFNlbGVjdGFiaWxpdHk6OlNlbGVjdGFibGU7IH0K
KwogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24mKTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpTZWxlY3RhYmlsaXR5PiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0eSwKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0eTo6U2VsZWN0YWJsZSwKKyAg
ICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJp
bGl0eTo6VW5zZWxlY3RhYmxlRHVlVG9Gb2N1c2FibGVFbGVtZW50LAorICAgICAgICBXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpTZWxlY3RhYmlsaXR5OjpVbnNlbGVj
dGFibGVEdWVUb0xhcmdlRWxlbWVudEJvdW5kcywKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0eTo6VW5zZWxlY3RhYmxlRHVlVG9V
c2VyU2VsZWN0Tm9uZQorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggNGIw
YjhiNTI0YzM3YWM4NDgzMDM3YjRjYWZhMDc2OGVlZTg1ODA3YS4uMTFlYWI1ZGYxZTQyNzRjNzQ2
MjRjZWY2OTk2ODJiM2Y4MWQ4MTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQpAQCAtNDAs
NyArNDAsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgZW5jb2RlciA8PCBjYW5CZVZhbGlk
OwogICAgIGVuY29kZXIgPDwgbm9kZUF0UG9zaXRpb25IYXNEb3VibGVDbGlja0hhbmRsZXI7Ci0g
ICAgZW5jb2RlciA8PCBpc1NlbGVjdGFibGU7CisgICAgZW5jb2RlciA8PCBzZWxlY3RhYmlsaXR5
OwogICAgIGVuY29kZXIgPDwgaXNTZWxlY3RlZDsKICAgICBlbmNvZGVyIDw8IHByZWZlcnNEcmFn
Z2luZ092ZXJUZXh0U2VsZWN0aW9uOwogICAgIGVuY29kZXIgPDwgaXNOZWFyTWFya2VkVGV4dDsK
QEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5ub2RlQXRQb3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmlz
U2VsZWN0YWJsZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0YWJpbGl0
eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmlzU2VsZWN0ZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOTQ5ZmQwMzRhZjIxMmRlMmRmMmVh
N2JiZGM0ZGY2MWQ1NDYxMmY4OS4uNTgxZmZhMjIwZTE1MjYwZDExZDkxZGJkYTVhYzY1OWRjNmNm
NTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yODg2LDcgKzI4ODYsNyBAQCAtIChCT09MKWhhc1Nl
bGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICAgICAgcmV0dXJuIFlF
UzsKICNlbmRpZgogCi0gICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzU2VsZWN0YWJs
ZTsKKyAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNTZWxlY3RhYmxlKCk7CiB9CiAK
IC0gKEJPT0wpcG9pbnRJc05lYXJNYXJrZWRUZXh0OihDR1BvaW50KXBvaW50CkBAIC0yOTU0LDYg
KzI5NTQsOSBAQCAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6KFVJV0tHZXN0dXJlVHlw
ZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQbwogICAgIGlmICghW3NlbGYgZW5zdXJl
UG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBO
TzsKIAorICAgIGlmIChnZXN0dXJlID09IFVJV0tHZXN0dXJlTG91cGUgJiYgX3Bvc2l0aW9uSW5m
b3JtYXRpb24uc2VsZWN0YWJpbGl0eSA9PSBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uOjpTZWxlY3RhYmlsaXR5OjpVbnNlbGVjdGFibGVEdWVUb1VzZXJTZWxlY3ROb25l
KQorICAgICAgICByZXR1cm4gTk87CisKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAg
ICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24ucHJldmVudFRleHRJbnRlcmFjdGlvbikKICAgICAg
ICAgcmV0dXJuIE5POwpAQCAtNTI1NCw3ICs1MjU3LDcgQEAgLSAoVUlUZXh0UG9zaXRpb24gKilj
bG9zZXN0UG9zaXRpb25Ub1BvaW50OihDR1BvaW50KXBvaW50CiAjaWYgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0
KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb2ludCkpOwogICAgIFtzZWxmIHJlcXVlc3RBc3lu
Y2hyb25vdXNQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOnJlcXVlc3RdOwotICAgIGlmIChbc2Vs
ZiBfY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb25Jc0FwcHJveGltYXRlbHlWYWxpZEZvclJlcXVl
c3Q6cmVxdWVzdCByYWRpdXNGb3JBcHByb3hpbWF0aW9uOjJdICYmIF9wb3NpdGlvbkluZm9ybWF0
aW9uLmlzU2VsZWN0YWJsZSkKKyAgICBpZiAoW3NlbGYgX2N1cnJlbnRQb3NpdGlvbkluZm9ybWF0
aW9uSXNBcHByb3hpbWF0ZWx5VmFsaWRGb3JSZXF1ZXN0OnJlcXVlc3QgcmFkaXVzRm9yQXBwcm94
aW1hdGlvbjoyXSAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIFtXS1RleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25XaXRoUmVjdDpfcG9zaXRpb25J
bmZvcm1hdGlvbi5jYXJldFJlY3RdOwogI2VuZGlmCiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
ZTczNjdhYWRmYjEzOGFmOTIwYTcxNzA0ZjYxNDBkNDg3ZjFiZGE3Zi4uYzIxNWM3ZDFkZjgzNmVj
OWMyMGUxZTk0NGJjNzA3ZTBmYmIyZTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI4ODgsNyArMjg4OCwyOSBAQCBz
dGF0aWMgdm9pZCBzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYQogICAgIGlmICghaGl0Tm9kZSB8fCAhaGl0Tm9kZS0+cmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGhpdE5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVyZXIgPSBoaXROb2RlLT5yZW5k
ZXJlcigpOworCisgICAgaW5mby5zZWxlY3RhYmlsaXR5ID0gKFsmXSB7CisgICAgICAgIGlmIChy
ZW5kZXJlci0+c3R5bGUoKS51c2VyU2VsZWN0SW5jbHVkaW5nSW5lcnQoKSA9PSBVc2VyU2VsZWN0
OjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uOjpTZWxlY3RhYmlsaXR5OjpVbnNlbGVjdGFibGVEdWVUb1VzZXJTZWxlY3ROb25lOworCisg
ICAgICAgIGlmICghaGl0Tm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoaXNB
c3Npc3RhYmxlRWxlbWVudCgqZG93bmNhc3Q8RWxlbWVudD4oaGl0Tm9kZSkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJp
bGl0eTo6VW5zZWxlY3RhYmxlRHVlVG9Gb2N1c2FibGVFbGVtZW50OworCisgICAgICAgICAgICBp
ZiAocmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGluZm8uYm91bmRzLCAqcmVzdWx0LmlubmVyTm9k
ZUZyYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzZWxlY3Qg
YmxvY2tzIHRoYXQgYXJlIGxhcmdlciB0aGFuIDk3JSBvZiB0aGUgdmlzaWJsZSBhcmVhIG9mIHRo
ZSBkb2N1bWVudC4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBoZXVyaXN0aWMg
c3RpbGwgbmVlZGVkLCBub3cgdGhhdCBibG9jayBzZWxlY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZD8K
KyAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246
OlNlbGVjdGFiaWxpdHk6OlVuc2VsZWN0YWJsZUR1ZVRvTGFyZ2VFbGVtZW50Qm91bmRzOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uOjpTZWxlY3RhYmlsaXR5OjpTZWxlY3RhYmxlOworICAgIH0pKCk7CisK
KyAgICBpZiAoaW5mby5pc0xpbmsgfHwgaW5mby5pc0ltYWdlKQorICAgICAgICByZXR1cm47CisK
ICAgICBib3VuZHNQb3NpdGlvbkluZm9ybWF0aW9uKCpyZW5kZXJlciwgaW5mbyk7CiAKICAgICBp
bmZvLmlzU2VsZWN0ZWQgPSByZXN1bHQuaXNTZWxlY3RlZCgpOwpAQCAtMjkwNSwxMyArMjkyNyw4
IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFn
ZSwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hCiAgICAgICAgIGxpbmtJbmRpY2F0b3JQb3NpdGlv
bkluZm9ybWF0aW9uKHBhZ2UsIGF0dGFjaG1lbnQsIHJlcXVlc3QsIGluZm8pOwogICAgICAgICBp
ZiAoYXR0YWNobWVudC5maWxlKCkpCiAgICAgICAgICAgICBpbmZvLnVybCA9IFVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpoaXRO
b2RlKS5maWxlKCktPnBhdGgoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaW5mby5pc1NlbGVj
dGFibGUgPSByZW5kZXJlci0+c3R5bGUoKS51c2VyU2VsZWN0SW5jbHVkaW5nSW5lcnQoKSAhPSBV
c2VyU2VsZWN0OjpOb25lOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHNlbGVjdCBibG9j
a3MgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gOTclIG9mIHRoZSB2aXNpYmxlIGFyZWEgb2YgdGhlIGRv
Y3VtZW50LgotICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBoZXVyaXN0aWMgc3RpbGwgbmVlZGVk
LCBub3cgdGhhdCBibG9jayBzZWxlY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZD8KLSAgICAgICAgaWYg
KGluZm8uaXNTZWxlY3RhYmxlICYmICFoaXROb2RlLT5pc1RleHROb2RlKCkpCi0gICAgICAgICAg
ICBpbmZvLmlzU2VsZWN0YWJsZSA9ICFpc0Fzc2lzdGFibGVFbGVtZW50KCpkb3duY2FzdDxFbGVt
ZW50PihoaXROb2RlKSkgJiYgIXJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlvbihpbmZvLmJvdW5kcywg
KnJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKTsKICAgICB9CisKICAgICBmb3IgKFJlZlB0ciBjdXJy
ZW50Tm9kZSA9IGhpdE5vZGU7IGN1cnJlbnROb2RlOyBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2Rl
LT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKICAgICAgICAgYXV0byogcmVuZGVyZXIgPSBj
dXJyZW50Tm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTMwODcs
OCArMzEwNCw3IEBAIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JCiAgICAgaWYgKCFpbmZvLmlzSW1h
Z2UgJiYgcmVxdWVzdC5pbmNsdWRlSW1hZ2VEYXRhICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhp
dFRlc3ROb2RlKSkKICAgICAgICAgaW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKCp0aGlzLCBkb3du
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqaGl0VGVzdE5vZGUpLCByZXF1ZXN0LCBpbmZvKTsKIAot
ICAgIGlmICghKGluZm8uaXNMaW5rIHx8IGluZm8uaXNJbWFnZSkpCi0gICAgICAgIHNlbGVjdGlv
blBvc2l0aW9uSW5mb3JtYXRpb24oKnRoaXMsIHJlcXVlc3QsIGluZm8pOworICAgIHNlbGVjdGlv
blBvc2l0aW9uSW5mb3JtYXRpb24oKnRoaXMsIHJlcXVlc3QsIGluZm8pOwogCiAgICAgLy8gUHJl
dmVudCB0aGUgY2FsbG91dCBiYXIgZnJvbSBzaG93aW5nIHdoZW4gdGFwcGluZyBvbiB0aGUgZGF0
YWxpc3QgYnV0dG9uLgogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0MWJi
Yzk3YmI4NDJkYmVkYTM4MGU2NDA0YWIwMzNiNzdkMTYyOWIuLmM1OTBkZWE4NDFhY2M4ZTRlZjEy
ZTc1Mjk0YThmNjZmZGNiNTRmYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMC0yMyAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OIChpT1MgMTUpOiBTYWZhcmkgc2hvd3Mgem9vbSBjYWxsb3V0IGV2ZW4gaWYgLXdlYmtpdC11
c2VyLXNlbGVjdCBpcyBub25lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzExNjEKKyAgICAgICAgcmRhcjovLzgzODYzMjY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9p
b3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LWFs
bG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUuaHRtbDogQWRkZWQuCisKIDIw
MjEtMTAtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBkcm9wIGN1c3RvbSBpT1MgZXhwZWN0YXRpb25zIGZvciBub29wZW5lci1ub3JlZmVy
cmVyLXNpemluZy53aW5kb3cuaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9kby1ub3QtYWxsb3ctdGV4dC1zZWxlY3Rpb24taW4tdXNlci1zZWxlY3Qt
bm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8t
bm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxYjljNDk5ODM5NzlkNDU4ZWE0ODIzYjRiMWYxYjg2YjQ3MzgyMWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90
LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGxvbmcgcHJlc3NpbmcgYW4g
ZWxlbWVudCB3aXRoIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IGRvZXMgbm90IGJlZ2luIGEg
dGV4dCBzZWxlY3Rpb24gZ2VzdHVyZS4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBsb25nIHBy
ZXNzIHRoZSBzcXVhcmUgYmVsb3cgYW5kIHZlcmlmeSB0aGF0IG5vIHRleHQgaXMgc2VsZWN0ZWQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorSGVsbG8gd29ybGQKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0
LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3QtYWxs
b3ctdGV4dC1zZWxlY3Rpb24taW4tdXNlci1zZWxlY3Qtbm9uZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZh
YTU4ZGQwZWUyYjE1ZjcyNzMxMzY5Y2UxNTY4OTEzMGQ2ZGIwMzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQtc2Vs
ZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitodG1sLCBib2R5IHsKKyAgICBmb250
LXNpemU6IDE2cHg7Cit9CisKKyN0YXJnZXQgeworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWln
aHQ6IDE1MHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHRvbWF0bzsKKyAgICAtd2Via2l0LXVz
ZXItc2VsZWN0OiBub25lOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRy
dWU7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgbG9uZyBwcmVzc2luZyBh
biBlbGVtZW50IHdpdGggPGNvZGU+LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTs8L2NvZGU+IGRv
ZXMgbm90IGJlZ2luIGEgdGV4dCBzZWxlY3Rpb24gZ2VzdHVyZS4gVG8gbWFudWFsbHkgcnVuIHRo
ZSB0ZXN0LCBsb25nIHByZXNzIHRoZSBzcXVhcmUgYmVsb3cgYW5kIHZlcmlmeSB0aGF0IG5vIHRl
eHQgaXMgc2VsZWN0ZWQuIik7CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9
PiB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXdhaXQgVUlIZWxwZXIubG9uZ1ByZXNzRWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0IikpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPkhlbGxvIHdvcmxkPC9wPgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="466749"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442316</attachid>
            <date>2021-10-24 12:09:57 -0700</date>
            <delta_ts>2021-10-24 13:39:43 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-231161-20211024120957.patch</filename>
            <type>text/plain</type>
            <size>15061</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI5OGFhYmYwNTcxMDllMTM3
MGE5N2VmYWU5NjdiNjA3ZGMxZjFhN2YuLjAyZDMwMGE2ZjY1NTg1ODBlMjNmNTI5ZGJmNDBiNGQ3
ZWYzY2NkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMTAtMjMgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoaU9T
IDE1KTogU2FmYXJpIHNob3dzIHpvb20gY2FsbG91dCBldmVuIGlmIC13ZWJraXQtdXNlci1zZWxl
Y3QgaXMgbm9uZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMxMTYxCisgICAgICAgIHJkYXI6Ly84Mzg2MzI2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIE1ha2Ugc2V2ZXJhbCBtaW5vciB0d2Vha3MgdG8gcHJl
dmVudCB0aGUgdGV4dCBpbnRlcmFjdGlvbiBhc3Npc3RhbnQncyBsb3VwZSBnZXN0dXJlIGZyb20g
YmVnaW5uaW5nIHdoZW4gbG9uZworICAgICAgICBwcmVzc2luZyBpbnNpZGUgY29udGVudCB3aXRo
IGAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO2AuIEltcG9ydGFudGx5LCB0aGlzIHByZXZlbnRz
IGJvdGggdGhlIHRleHQKKyAgICAgICAgaW50ZXJhY3Rpb24ncyBoYXB0aWMgZmVlZGJhY2sgYW5k
IHRoZSB0ZXh0IHNlbGVjdGlvbiBtYWduaWZpZXIgVUkgKGludHJvZHVjZWQgaW4gaU9TIDE1KSBm
cm9tIHNob3dpbmcgdXAuIFNlZQorICAgICAgICBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3QtYWxsb3ct
dGV4dC1zZWxlY3Rpb24taW4tdXNlci1zZWxlY3Qtbm9uZS5odG1sCisKKyAgICAgICAgKiBTaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmg6CisgICAgICAgIChXZWJL
aXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjppc1NlbGVjdGFibGUgY29uc3Qp
OgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gcmV0dXJuIHdoZXRoZXIgdGhlIGBz
ZWxlY3RhYmlsaXR5YCBmbGFnIGlzIGVxdWFsIHRvIGBTZWxlY3RhYmxlYCwgYW5kIHVzZSB0aGlz
IGluIHBsYWNlcworICAgICAgICB3aGVyZSB3ZSBjdXJyZW50IGNoZWNrIHRoZSBgaXNTZWxlY3Rh
YmxlYCBmbGFnLgorCisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOgorCisgICAgICAgIEJyZWFrIHRoZSBjdXJyZW50
IGBpc1NlbGVjdGFibGVgIGZsYWcgb3V0IGludG8gZGlmZmVyZW50IGVudW0gdHlwZXMsIHdoaWNo
IGVudW1lcmF0ZSB0aGUgcmVhc29ucyB3aHkgd2UgbWlnaHQKKyAgICAgICAgbmVlZCB0byB0cmVh
dCBoaXQtdGVzdGVkIGNvbnRlbnQgYXMgbm9uLXVzZXItc2VsZWN0YWJsZS4gSW1wb3J0YW50bHks
IHRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgZWFybHkgcmV0dXJuIGluc2lkZQorICAgICAgICBgLXRl
eHRJbnRlcmFjdGlvbkdlc3R1cmU6c2hvdWxkQmVnaW5BdFBvaW50OmAgYmVsb3cgaWYgdGhlIGVs
ZW1lbnQgaGFzIGFuIGV4cGxpY2l0IGAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO2AsCisgICAg
ICAgIGFuZCBub3QgYmVjYXVzZSBvZiB0aGUgb3RoZXIgcmVhc29ucyAoaS5lLiBsYXJnZSBlbGVt
ZW50IGJvdW5kcyBvciB0aGUgZmFjdCB0aGF0IHdlJ3JlIGxvbmcgcHJlc3NpbmcgZWRpdGFibGUK
KyAgICAgICAgdGV4dCB3aGlsZSBub3QgZWRpdGluZykuCisKKyAgICAgICAgVGhpcyBudWFuY2Ug
aXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGNvbnRpbnVlIGFsbG93aW5nIHRoZSBsb3VwZSBnZXN0
dXJlICh3aGljaCBtYW5pZmVzdHMgYXMgYSBmbG9hdGluZyBjYXJldCkKKyAgICAgICAgdG8gYmVn
aW4gd2hlbiBsb25nIHByZXNzaW5nIGluc2lkZSBhIGZvY3VzZWQgYSB0ZXh0IGZpZWxkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOnNob3VsZEJlZ2lu
QXRQb2ludDpdKToKKworICAgICAgICBSZXR1cm4gTk8gaGVyZSBpbiB0aGUgY2FzZSB3aGVyZSB3
ZSdyZSByZWNvZ25pemluZyBhIGxvdXBlIGdlc3R1cmUgKGkuZS4gbG9uZyBwcmVzcykgaW5zaWRl
IGNvbnRlbnQgd2l0aAorICAgICAgICBgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtgIChieSBj
b25zdWx0aW5nIHRoZSBuZXcgYHNlbGVjdGFiaWxpdHlgIGVudW1lcmF0aW9uKS4gVGhpcyBhbGxv
d3MgdXMgdG8gcHJldmVudCBib3RoCisgICAgICAgIGhhcHRpYyBmZWVkYmFjayBhcyB3ZWxsIGFz
IHRoZSBuZXcgbWFnbmlmaWVyIFVJIGZyb20gdHJpZ2dlcmluZyB3aGVuIGxvbmcgcHJlc3Npbmcg
aW5zaWRlIGNvbnRlbnQgdGhhdCBoYXMKKyAgICAgICAgZXhwbGljaXRseSBkaXNhYmxlZCB0ZXh0
IHNlbGVjdGlvbi4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsb3Nlc3RQb3NpdGlvblRv
UG9pbnQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbik6CisKKyAgICAgICAgQWRk
aXRpb25hbGx5IHBvcHVsYXRlIHRoZSBgc2VsZWN0YWJpbGl0eWAgZmxhZyBldmVuIHdoZW4gbG9u
ZyBwcmVzc2luZyBpbnNpZGUgaW1hZ2VzIGFuZCBsaW5rcy4gSW5zdGVhZCBvZgorICAgICAgICBw
dXR0aW5nIHRoZSBjYWxsIHRvIGBzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uYCBiZWhpbmQg
dGhlIGBpc0xpbmtgL2Bpc0ltYWdlYCBjaGVjaywgbW92ZSB0aGF0IGNvbmRpdGlvbiBpbnRvCisg
ICAgICAgIGBzZWxlY3Rpb25Qb3NpdGlvbkluZm9ybWF0aW9uYCBpbiB0aGUgZm9ybSBvZiBhbiBl
YXJseSByZXR1cm4sIGFuZCBhbHdheXMgcG9wdWxhdGUgYHNlbGVjdGFiaWxpdHlgIGluIGVpdGhl
cgorICAgICAgICBjYXNlLgorCiAyMDIxLTEwLTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODQwNzkpOiBBdWRpbyBjb250
aW51ZXMgcGxheWluZyBvbiBodWx1LmNvbSBpbiBwcml2YXRlIGJyb3dzaW5nIG1vZGUgYWZ0ZXIg
Y2xvc2luZyB0aGUgdGFiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDY1ZDYzZjkyYTk4M2Ji
MzM5ZDU3MDRjMjI2ODZjMTNlMTI4ZDllMTAuLjQwZjYzZmIzZGU4NDZjMmQ1MDE0N2YwYTk2YWVj
YTg4MDg2NDhjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC01Myw3ICs1MywxNSBAQCBz
dHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogCiAgICAgYm9vbCBjYW5C
ZVZhbGlkIHsgdHJ1ZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbm9kZUF0UG9zaXRpb25I
YXNEb3VibGVDbGlja0hhbmRsZXI7Ci0gICAgYm9vbCBpc1NlbGVjdGFibGUgeyBmYWxzZSB9Owor
CisgICAgZW51bSBjbGFzcyBTZWxlY3RhYmlsaXR5IDogdWludDhfdCB7CisgICAgICAgIFNlbGVj
dGFibGUsCisgICAgICAgIFVuc2VsZWN0YWJsZUR1ZVRvRm9jdXNhYmxlRWxlbWVudCwKKyAgICAg
ICAgVW5zZWxlY3RhYmxlRHVlVG9MYXJnZUVsZW1lbnRCb3VuZHMsCisgICAgICAgIFVuc2VsZWN0
YWJsZUR1ZVRvVXNlclNlbGVjdE5vbmUsCisgICAgfTsKKyAgICBTZWxlY3RhYmlsaXR5IHNlbGVj
dGFiaWxpdHkgeyBTZWxlY3RhYmlsaXR5OjpTZWxlY3RhYmxlIH07CisKICAgICBib29sIGlzU2Vs
ZWN0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgcHJlZmVyc0RyYWdnaW5nT3ZlclRleHRTZWxlY3Rp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgaXNOZWFyTWFya2VkVGV4dCB7IGZhbHNlIH07CkBAIC0x
MDcsMTAgKzExNSwyNiBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24g
ewogICAgIC8vIHdlIGNhbiBmZXRjaCB0aGUgY2hlYXAgaW5mb3JtYXRpb24gYW5kIGNvcHkgdGhl
IHNuYXBzaG90cyBpbnRvIHRoZSBuZXcgcmVzcG9uc2UpLgogICAgIHZvaWQgbWVyZ2VDb21wYXRp
YmxlT3B0aW9uYWxJbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYgb2xkSW5mb3JtYXRpb24pOwogCisgICAgYm9vbCBpc1NlbGVjdGFibGUoKSBjb25zdCB7
IHJldHVybiBzZWxlY3RhYmlsaXR5ID09IFNlbGVjdGFiaWxpdHk6OlNlbGVjdGFibGU7IH0KKwog
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpTZWxlY3RhYmlsaXR5PiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0eSwKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0eTo6U2VsZWN0YWJsZSwKKyAgICAg
ICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0
eTo6VW5zZWxlY3RhYmxlRHVlVG9Gb2N1c2FibGVFbGVtZW50LAorICAgICAgICBXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpTZWxlY3RhYmlsaXR5OjpVbnNlbGVjdGFi
bGVEdWVUb0xhcmdlRWxlbWVudEJvdW5kcywKKyAgICAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbjo6U2VsZWN0YWJpbGl0eTo6VW5zZWxlY3RhYmxlRHVlVG9Vc2Vy
U2VsZWN0Tm9uZQorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggNGIwYjhi
NTI0YzM3YWM4NDgzMDM3YjRjYWZhMDc2OGVlZTg1ODA3YS4uMTFlYWI1ZGYxZTQyNzRjNzQ2MjRj
ZWY2OTk2ODJiM2Y4MWQ4MTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQpAQCAtNDAsNyAr
NDAsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgZW5jb2RlciA8PCBjYW5CZVZhbGlkOwog
ICAgIGVuY29kZXIgPDwgbm9kZUF0UG9zaXRpb25IYXNEb3VibGVDbGlja0hhbmRsZXI7Ci0gICAg
ZW5jb2RlciA8PCBpc1NlbGVjdGFibGU7CisgICAgZW5jb2RlciA8PCBzZWxlY3RhYmlsaXR5Owog
ICAgIGVuY29kZXIgPDwgaXNTZWxlY3RlZDsKICAgICBlbmNvZGVyIDw8IHByZWZlcnNEcmFnZ2lu
Z092ZXJUZXh0U2VsZWN0aW9uOwogICAgIGVuY29kZXIgPDwgaXNOZWFyTWFya2VkVGV4dDsKQEAg
LTk5LDcgKzk5LDcgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb24KICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5ub2RlQXRQb3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzU2Vs
ZWN0YWJsZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0YWJpbGl0eSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmlzU2VsZWN0ZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOTQ5ZmQwMzRhZjIxMmRlMmRmMmVhN2Ji
ZGM0ZGY2MWQ1NDYxMmY4OS4uNTgxZmZhMjIwZTE1MjYwZDExZDkxZGJkYTVhYzY1OWRjNmNmNTU1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yODg2LDcgKzI4ODYsNyBAQCAtIChCT09MKWhhc1NlbGVj
dGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKICAgICAgICAgcmV0dXJuIFlFUzsK
ICNlbmRpZgogCi0gICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzU2VsZWN0YWJsZTsK
KyAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNTZWxlY3RhYmxlKCk7CiB9CiAKIC0g
KEJPT0wpcG9pbnRJc05lYXJNYXJrZWRUZXh0OihDR1BvaW50KXBvaW50CkBAIC0yOTU0LDYgKzI5
NTQsOSBAQCAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSln
ZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQbwogICAgIGlmICghW3NlbGYgZW5zdXJlUG9z
aXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgIHJldHVybiBOTzsK
IAorICAgIGlmIChnZXN0dXJlID09IFVJV0tHZXN0dXJlTG91cGUgJiYgX3Bvc2l0aW9uSW5mb3Jt
YXRpb24uc2VsZWN0YWJpbGl0eSA9PSBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uOjpTZWxlY3RhYmlsaXR5OjpVbnNlbGVjdGFibGVEdWVUb1VzZXJTZWxlY3ROb25lKQor
ICAgICAgICByZXR1cm4gTk87CisKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBp
ZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24ucHJldmVudFRleHRJbnRlcmFjdGlvbikKICAgICAgICAg
cmV0dXJuIE5POwpAQCAtNTI1NCw3ICs1MjU3LDcgQEAgLSAoVUlUZXh0UG9zaXRpb24gKiljbG9z
ZXN0UG9zaXRpb25Ub1BvaW50OihDR1BvaW50KXBvaW50CiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb2ludCkpOwogICAgIFtzZWxmIHJlcXVlc3RBc3luY2hy
b25vdXNQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOnJlcXVlc3RdOwotICAgIGlmIChbc2VsZiBf
Y3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb25Jc0FwcHJveGltYXRlbHlWYWxpZEZvclJlcXVlc3Q6
cmVxdWVzdCByYWRpdXNGb3JBcHByb3hpbWF0aW9uOjJdICYmIF9wb3NpdGlvbkluZm9ybWF0aW9u
LmlzU2VsZWN0YWJsZSkKKyAgICBpZiAoW3NlbGYgX2N1cnJlbnRQb3NpdGlvbkluZm9ybWF0aW9u
SXNBcHByb3hpbWF0ZWx5VmFsaWRGb3JSZXF1ZXN0OnJlcXVlc3QgcmFkaXVzRm9yQXBwcm94aW1h
dGlvbjoyXSAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFibGUoKSkKICAgICAgICAg
cmV0dXJuIFtXS1RleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25XaXRoUmVjdDpfcG9zaXRpb25JbmZv
cm1hdGlvbi5jYXJldFJlY3RdOwogI2VuZGlmCiAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZTcz
NjdhYWRmYjEzOGFmOTIwYTcxNzA0ZjYxNDBkNDg3ZjFiZGE3Zi4uN2ZlZjA2ZDI4NjE5NTNjZjA1
ZTA1MDcwZTE3MTdkYmFiYjE5Y2Q4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI4ODgsMTAgKzI4ODgsMzEgQEAgc3Rh
dGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWEKICAgICBpZiAoIWhpdE5vZGUgfHwgIWhpdE5vZGUtPnJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBo
aXROb2RlLT5yZW5kZXJlcigpOwotICAgIGJvdW5kc1Bvc2l0aW9uSW5mb3JtYXRpb24oKnJlbmRl
cmVyLCBpbmZvKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGhpdE5vZGUtPnJlbmRlcmVyKCk7CisK
KyAgICBpbmZvLnNlbGVjdGFiaWxpdHkgPSAoWyZdIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5z
dHlsZSgpLnVzZXJTZWxlY3RJbmNsdWRpbmdJbmVydCgpID09IFVzZXJTZWxlY3Q6Ok5vbmUpCisg
ICAgICAgICAgICByZXR1cm4gSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OlNlbGVj
dGFiaWxpdHk6OlVuc2VsZWN0YWJsZUR1ZVRvVXNlclNlbGVjdE5vbmU7CiAKKyAgICAgICAgaWYg
KGlzPEVsZW1lbnQ+KCpoaXROb2RlKSkgeworICAgICAgICAgICAgaWYgKGlzQXNzaXN0YWJsZUVs
ZW1lbnQoZG93bmNhc3Q8RWxlbWVudD4oKmhpdE5vZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OlNlbGVjdGFiaWxpdHk6OlVuc2Vs
ZWN0YWJsZUR1ZVRvRm9jdXNhYmxlRWxlbWVudDsKKworICAgICAgICAgICAgaWYgKHJlY3RJc1Rv
b0JpZ0ZvclNlbGVjdGlvbihpbmZvLmJvdW5kcywgKnJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKSkg
eworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2VsZWN0IGJsb2NrcyB0aGF0
IGFyZSBsYXJnZXIgdGhhbiA5NyUgb2YgdGhlIHZpc2libGUgYXJlYSBvZiB0aGUgZG9jdW1lbnQu
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgaGV1cmlzdGljIHN0aWxsIG5lZWRl
ZCwgbm93IHRoYXQgYmxvY2sgc2VsZWN0aW9uIGhhcyBiZWVuIHJlbW92ZWQ/CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpTZWxlY3RhYmls
aXR5OjpVbnNlbGVjdGFibGVEdWVUb0xhcmdlRWxlbWVudEJvdW5kczsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjo6U2VsZWN0YWJpbGl0eTo6U2VsZWN0YWJsZTsKKyAgICB9KSgpOwogICAgIGluZm8uaXNT
ZWxlY3RlZCA9IHJlc3VsdC5pc1NlbGVjdGVkKCk7CisKKyAgICBpZiAoaW5mby5pc0xpbmsgfHwg
aW5mby5pc0ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBib3VuZHNQb3NpdGlvbkluZm9y
bWF0aW9uKCpyZW5kZXJlciwgaW5mbyk7CiAgICAgCiAgICAgaWYgKGlzPEVsZW1lbnQ+KCpoaXRO
b2RlKSkgewogICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKmhp
dE5vZGUpOwpAQCAtMjkwNSwxMyArMjkyNiw4IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvblBvc2l0
aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hCiAg
ICAgICAgIGxpbmtJbmRpY2F0b3JQb3NpdGlvbkluZm9ybWF0aW9uKHBhZ2UsIGF0dGFjaG1lbnQs
IHJlcXVlc3QsIGluZm8pOwogICAgICAgICBpZiAoYXR0YWNobWVudC5maWxlKCkpCiAgICAgICAg
ICAgICBpbmZvLnVybCA9IFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3duY2FzdDxI
VE1MQXR0YWNobWVudEVsZW1lbnQ+KCpoaXROb2RlKS5maWxlKCktPnBhdGgoKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaW5mby5pc1NlbGVjdGFibGUgPSByZW5kZXJlci0+c3R5bGUoKS51c2Vy
U2VsZWN0SW5jbHVkaW5nSW5lcnQoKSAhPSBVc2VyU2VsZWN0OjpOb25lOwotICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHNlbGVjdCBibG9ja3MgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gOTclIG9m
IHRoZSB2aXNpYmxlIGFyZWEgb2YgdGhlIGRvY3VtZW50LgotICAgICAgICAvLyBGSVhNRTogSXMg
dGhpcyBoZXVyaXN0aWMgc3RpbGwgbmVlZGVkLCBub3cgdGhhdCBibG9jayBzZWxlY3Rpb24gaGFz
IGJlZW4gcmVtb3ZlZD8KLSAgICAgICAgaWYgKGluZm8uaXNTZWxlY3RhYmxlICYmICFoaXROb2Rl
LT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICBpbmZvLmlzU2VsZWN0YWJsZSA9ICFpc0Fzc2lz
dGFibGVFbGVtZW50KCpkb3duY2FzdDxFbGVtZW50PihoaXROb2RlKSkgJiYgIXJlY3RJc1Rvb0Jp
Z0ZvclNlbGVjdGlvbihpbmZvLmJvdW5kcywgKnJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKTsKICAg
ICB9CisKICAgICBmb3IgKFJlZlB0ciBjdXJyZW50Tm9kZSA9IGhpdE5vZGU7IGN1cnJlbnROb2Rl
OyBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsK
ICAgICAgICAgYXV0byogcmVuZGVyZXIgPSBjdXJyZW50Tm9kZS0+cmVuZGVyZXIoKTsKICAgICAg
ICAgaWYgKCFyZW5kZXJlcikKQEAgLTMwODcsOCArMzEwMyw3IEBAIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JCiAgICAgaWYgKCFpbmZvLmlzSW1hZ2UgJiYgcmVxdWVzdC5pbmNsdWRlSW1hZ2VEYXRh
ICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhpdFRlc3ROb2RlKSkKICAgICAgICAgaW1hZ2VQb3Np
dGlvbkluZm9ybWF0aW9uKCp0aGlzLCBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqaGl0VGVz
dE5vZGUpLCByZXF1ZXN0LCBpbmZvKTsKIAotICAgIGlmICghKGluZm8uaXNMaW5rIHx8IGluZm8u
aXNJbWFnZSkpCi0gICAgICAgIHNlbGVjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24oKnRoaXMsIHJl
cXVlc3QsIGluZm8pOworICAgIHNlbGVjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24oKnRoaXMsIHJl
cXVlc3QsIGluZm8pOwogCiAgICAgLy8gUHJldmVudCB0aGUgY2FsbG91dCBiYXIgZnJvbSBzaG93
aW5nIHdoZW4gdGFwcGluZyBvbiB0aGUgZGF0YWxpc3QgYnV0dG9uLgogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0MWJiYzk3YmI4NDJkYmVkYTM4MGU2NDA0YWIwMzNiNzdk
MTYyOWIuLmRlZGJjZmQ5NzQwMzQyMDJmZjQ3Y2JjZGUxZjc0YWFiNzFjMjJlMzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0xMC0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChpT1MgMTUpOiBTYWZhcmkgc2hvd3Mgem9v
bSBjYWxsb3V0IGV2ZW4gaWYgLXdlYmtpdC11c2VyLXNlbGVjdCBpcyBub25lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzExNjEKKyAgICAgICAgcmRh
cjovLzgzODYzMjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgU2VlIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWlu
LXVzZXItc2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0
LW5vbmUuaHRtbDogQWRkZWQuCisKIDIwMjEtMTAtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBkcm9wIGN1c3RvbSBpT1MgZXhwZWN0YXRp
b25zIGZvciBub29wZW5lci1ub3JlZmVycmVyLXNpemluZy53aW5kb3cuaHRtbC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kby1ub3QtYWxsb3ctdGV4dC1z
ZWxlY3Rpb24taW4tdXNlci1zZWxlY3Qtbm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXIt
c2VsZWN0LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxYjljNDk5ODM5NzlkNDU4ZWE0
ODIzYjRiMWYxYjg2YjQ3MzgyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2Vs
ZWN0LW5vbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IGxvbmcgcHJlc3NpbmcgYW4gZWxlbWVudCB3aXRoIC13ZWJraXQtdXNlci1zZWxlY3Q6
IG5vbmU7IGRvZXMgbm90IGJlZ2luIGEgdGV4dCBzZWxlY3Rpb24gZ2VzdHVyZS4gVG8gbWFudWFs
bHkgcnVuIHRoZSB0ZXN0LCBsb25nIHByZXNzIHRoZSBzcXVhcmUgYmVsb3cgYW5kIHZlcmlmeSB0
aGF0IG5vIHRleHQgaXMgc2VsZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVsbG8gd29ybGQKKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvZG8tbm90LWFsbG93LXRleHQt
c2VsZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9kby1ub3QtYWxsb3ctdGV4dC1zZWxlY3Rpb24taW4tdXNlci1zZWxlY3Qt
bm9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYTU4ZGQwZWUyYjE1ZjcyNzMxMzY5Y2UxNTY4OTEzMGQ2
ZGIwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9p
b3MvZG8tbm90LWFsbG93LXRleHQtc2VsZWN0aW9uLWluLXVzZXItc2VsZWN0LW5vbmUuaHRtbApA
QCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
CitodG1sLCBib2R5IHsKKyAgICBmb250LXNpemU6IDE2cHg7Cit9CisKKyN0YXJnZXQgeworICAg
IHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICAgIGJhY2tncm91bmQtY29sb3I6
IHRvbWF0bzsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorPC9zdHlsZT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgbG9uZyBwcmVzc2luZyBhbiBlbGVtZW50IHdpdGggPGNvZGU+LXdlYmtpdC11c2Vy
LXNlbGVjdDogbm9uZTs8L2NvZGU+IGRvZXMgbm90IGJlZ2luIGEgdGV4dCBzZWxlY3Rpb24gZ2Vz
dHVyZS4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBsb25nIHByZXNzIHRoZSBzcXVhcmUgYmVs
b3cgYW5kIHZlcmlmeSB0aGF0IG5vIHRleHQgaXMgc2VsZWN0ZWQuIik7CisKK2FkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXdhaXQgVUlIZWxwZXIubG9uZ1ByZXNzRWxlbWVudChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPkhlbGxvIHdvcmxkPC9wPgor
PGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>