<?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>223806</bug_id>
          
          <creation_ts>2021-03-26 11:16:23 -0700</creation_ts>
          <short_desc>Promote WKWebView getUserMedia SPI to API</short_desc>
          <delta_ts>2021-11-18 13:23:54 -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>WebKit Local Build</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 name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>franz</cc>
    
    <cc>ggaren</cc>
    
    <cc>kpd400</cc>
    
    <cc>sam</cc>
    
    <cc>tobbi1993</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744246</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-26 11:16:23 -0700</bug_when>
    <thetext>Promote WKWebView getUserMedia SPI to API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744249</commentid>
    <comment_count>1</comment_count>
      <attachid>424379</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-26 11:29:59 -0700</bug_when>
    <thetext>Created attachment 424379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744265</commentid>
    <comment_count>2</comment_count>
      <attachid>424379</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-26 12:03:12 -0700</bug_when>
    <thetext>Comment on attachment 424379
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h:147
&gt; + @discussion If not implemented, the result is the same as calling the decisionHandler with WKPermissionDecisionPrompt.
&gt; +
&gt; + If you do not implement this method, the web view will behave as if the user selected the Cancel button.

These don&apos;t agree with one another.

I wonder if we should mention that the call will be denied if app doesn&apos;t have the camera and/or microphone entitlement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744319</commentid>
    <comment_count>3</comment_count>
      <attachid>424400</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-26 13:50:46 -0700</bug_when>
    <thetext>Created attachment 424400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744356</commentid>
    <comment_count>4</comment_count>
      <attachid>424400</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-26 15:47:11 -0700</bug_when>
    <thetext>Comment on attachment 424400
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h:58
&gt; +typedef NS_ENUM(NSInteger, WKMediaCaptureType) {
&gt; +    WKMediaCaptureTypeCamera,
&gt; +    WKMediaCaptureTypeMicrophone,
&gt; +    WKMediaCaptureTypeCameraAndMicrophone,
&gt; +} WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

This seems like something an NS_OPTIONS style bit mask would be better suited for, and therefore you wouldn&apos;t need an explicit WKMediaCaptureTypeCameraAndMicrophone value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744493</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-27 06:05:01 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 424400 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424400&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h:58
&gt; &gt; +typedef NS_ENUM(NSInteger, WKMediaCaptureType) {
&gt; &gt; +    WKMediaCaptureTypeCamera,
&gt; &gt; +    WKMediaCaptureTypeMicrophone,
&gt; &gt; +    WKMediaCaptureTypeCameraAndMicrophone,
&gt; &gt; +} WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; This seems like something an NS_OPTIONS style bit mask would be better
&gt; suited for, and therefore you wouldn&apos;t need an explicit
&gt; WKMediaCaptureTypeCameraAndMicrophone value.

We could go both ways. I
went this way for two reasons:
1. With a bit field, there is the theoretical possibility of asking for &apos;no camera&apos; and &apos;no microphone&apos;. Patch shows an API test previously dealing with this case.
2. Enum works fine with the usual cases for this API:
a. Deny always: return WKPermissionDecisionDeny
b. Grant always: return WKPermissionDecisionGrant
c. Grant only microphone: return type == WKMediaCaptureTypeMicrophone ? WKPermissionDecisionGrant : WKPermissionDecisionDeny
d. Grant only camera: return type == WKMediaCaptureTypeCamera ? WKPermissionDecisionGrant : WKPermissionDecisionDeny
3. Enum works fine when implementing prompting:
switch (type) {
case WKMediaCaptureTypeCamera:
    return &quot;Allow access to camera(s)&quot;;
case WKMediaCaptureTypeMicrophone:
    return &quot;Allow access to microphone(s)&quot;;
case WKMediaCaptureTypeCameraAndMicrophone:
    return &quot;Allow access to camera(s) and microphone(s)&quot;;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744495</commentid>
    <comment_count>6</comment_count>
      <attachid>424400</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-27 06:05:19 -0700</bug_when>
    <thetext>Comment on attachment 424400
Patch

WPE error unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744504</commentid>
    <comment_count>7</comment_count>
      <attachid>424400</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-27 07:46:49 -0700</bug_when>
    <thetext>Comment on attachment 424400
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:377
&gt; + @param state state to apply for capture.

s/state state/state State/

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:378
&gt; + @param completionHandler A block to invoke with the return value of the function call.

The function has not return value, so maybe &quot;A block to invoke after the camera state has been changed.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:388
&gt; + @param state state to apply for capture.
&gt; + @param completionHandler A block to invoke with the return value of the function call.

Ditto the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744521</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-27 10:51:49 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; Comment on attachment 424400 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=424400&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h:58
&gt; &gt; &gt; +typedef NS_ENUM(NSInteger, WKMediaCaptureType) {
&gt; &gt; &gt; +    WKMediaCaptureTypeCamera,
&gt; &gt; &gt; +    WKMediaCaptureTypeMicrophone,
&gt; &gt; &gt; +    WKMediaCaptureTypeCameraAndMicrophone,
&gt; &gt; &gt; +} WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; 
&gt; &gt; This seems like something an NS_OPTIONS style bit mask would be better
&gt; &gt; suited for, and therefore you wouldn&apos;t need an explicit
&gt; &gt; WKMediaCaptureTypeCameraAndMicrophone value.
&gt; 
&gt; We could go both ways. I
&gt; went this way for two reasons:
&gt; 1. With a bit field, there is the theoretical possibility of asking for &apos;no
&gt; camera&apos; and &apos;no microphone&apos;. Patch shows an API test previously dealing with
&gt; this case.
&gt; 2. Enum works fine with the usual cases for this API:
&gt; a. Deny always: return WKPermissionDecisionDeny
&gt; b. Grant always: return WKPermissionDecisionGrant
&gt; c. Grant only microphone: return type == WKMediaCaptureTypeMicrophone ?
&gt; WKPermissionDecisionGrant : WKPermissionDecisionDeny
&gt; d. Grant only camera: return type == WKMediaCaptureTypeCamera ?
&gt; WKPermissionDecisionGrant : WKPermissionDecisionDeny
&gt; 3. Enum works fine when implementing prompting:
&gt; switch (type) {
&gt; case WKMediaCaptureTypeCamera:
&gt;     return &quot;Allow access to camera(s)&quot;;
&gt; case WKMediaCaptureTypeMicrophone:
&gt;     return &quot;Allow access to microphone(s)&quot;;
&gt; case WKMediaCaptureTypeCameraAndMicrophone:
&gt;     return &quot;Allow access to camera(s) and microphone(s)&quot;;
&gt; }

The biggest problem with this approach is it leads no real room for new types in the future without exponential items to cover all combinations. That seems like a bigger deal than documenting that you must pass in at least one type for it to be meaningful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744523</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-27 11:21:35 -0700</bug_when>
    <thetext>&gt; The biggest problem with this approach is it leads no real room for new
&gt; types in the future without exponential items to cover all combinations.
&gt; That seems like a bigger deal than documenting that you must pass in at
&gt; least one type for it to be meaningful.

This delegate is scoped to getUserMedia which by design is dedicated to microphone and/or camera. Hence why the initial proposal was booleans. I changed to an enum as it is as nice or nicer to developers and might still allow some extension, should we see the need in the future.

I am not sure which additional future type we are talking about here.
One known feature in that area is screen sharing.
Though we have no concrete plan yet on how to control screen sharing, we think another delegate might be a better fit.

We plan to have specific delegates for geolocation or device motion orientation as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744568</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-27 17:45:58 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; &gt; The biggest problem with this approach is it leads no real room for new
&gt; &gt; types in the future without exponential items to cover all combinations.
&gt; &gt; That seems like a bigger deal than documenting that you must pass in at
&gt; &gt; least one type for it to be meaningful.
&gt; 
&gt; This delegate is scoped to getUserMedia which by design is dedicated to
&gt; microphone and/or camera. Hence why the initial proposal was booleans. I
&gt; changed to an enum as it is as nice or nicer to developers and might still
&gt; allow some extension, should we see the need in the future.

getUserMedia is scoped to microphone and/or camera *today*. There may very well be other sensors getUserMedia will deal with in the future. When designing APIs, we should be cognizant that we don&apos;t know what the future brings, and design APIs to accommodate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744595</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-28 02:08:00 -0700</bug_when>
    <thetext>&gt; getUserMedia is scoped to microphone and/or camera *today*.

Right and getUserMedia model is far from being perfect so I hope we keep it that way.

&gt; There may very well be other sensors getUserMedia will deal with in the future.

It would not be great to ask users a question like: give me &quot;camera AND microphone AND xray AND telescope&quot; or fail.
CameraAndMicrophone combo is an exception, given how this API is biased towards video conferencing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744646</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-28 14:26:03 -0700</bug_when>
    <thetext>Ok, that’s fair I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744701</commentid>
    <comment_count>13</comment_count>
      <attachid>424530</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-28 23:57:12 -0700</bug_when>
    <thetext>Created attachment 424530
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744728</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-29 09:33:04 -0700</bug_when>
    <thetext>Committed r275162: &lt;https://commits.webkit.org/r275162&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744729</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-29 09:34:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/75957792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761920</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-20 05:57:28 -0700</bug_when>
    <thetext>*** Bug 220416 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761960</commentid>
    <comment_count>17</comment_count>
    <who name="Kyle Dunn">kpd400</who>
    <bug_when>2021-05-20 08:17:56 -0700</bug_when>
    <thetext>Youenn, thanks for getting this resolved! Is there a way for me to determine when this will land in a public iOS build? Or will you update this issue as the time comes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768261</commentid>
    <comment_count>18</comment_count>
    <who name="Kyle Dunn">kpd400</who>
    <bug_when>2021-06-09 11:52:07 -0700</bug_when>
    <thetext>FYI - this appears to have landed in iOS 15. The particulars for this addition are demo&apos;d @ 14:40 here: https://developer.apple.com/videos/play/wwdc2021/10032/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816596</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-18 13:23:54 -0800</bug_when>
    <thetext>*** Bug 233315 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424379</attachid>
            <date>2021-03-26 11:29:59 -0700</date>
            <delta_ts>2021-03-26 13:50:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223806-20210326192958.patch</filename>
            <type>text/plain</type>
            <size>51341</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzODhkNWE2MzgzNGM4Nzk2
OGM5ZDkwNDc4NWE1NjBmZWNjNzViMWUuLjg4YjY0MzM5Y2RlZmJkMGMxZDc1YjMzNzViZDVlMWMw
Yjg2ZGFjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDMtMjYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IGdl
dFVzZXJNZWRpYSBTUEkgdG8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM4MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFNQSSB0byBBUEkuCisgICAgICAgIFVwZGF0ZSBkZWxlZ2F0ZSB0
byB0YWtlIGFuIGVudW1lcmF0aW9uIGluc3RlYWQgb2YgdHdvIGJvb2xlYW5zLgorICAgICAgICBN
YWtlIHNldHRlcnMgY29tcGxldGlvbiBoYW5kbGVycyBudWxsYWJsZS4KKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjYW1lcmFDYXB0dXJlU3RhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG1pY3JvcGhvbmVD
YXB0dXJlU3RhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1pY3JvcGhvbmVDYXB0dXJl
U3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRDYW1l
cmFDYXB0dXJlU3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorCiAyMDIxLTAzLTI1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggZnJv
bSBQT1JUQUxMT0NBVE9SX0RJU0FCTEVfQURBUFRFUl9FTlVNRVJBVElPTiB0byBmaWx0ZXJpbmcg
aW50ZXJmYWNlcyBpbiBOZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaAppbmRleCBjYWQ4N2YzZWYyYWI5M2Q5M2E3NGNl
YzBjMzRiNDdjNjk1ZGU2YmM2Li5iMDA5M2VlNGU5MzYxNGFlNmUzNzAxNmFhMDliOTI3Njg0Mjc4
MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oCkBAIC00NSw2ICs0NSwxOCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3Rv
Y29sIFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkNvbW1pdEFuaW1hdGluZzsKICNlbmRpZgogCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1Blcm1pc3Npb25EZWNpc2lvbikgeworICAgIFdL
UGVybWlzc2lvbkRlY2lzaW9uUHJvbXB0LAorICAgIFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQs
CisgICAgV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBXS01lZGlhQ2FwdHVyZVR5cGUpIHsKKyAgICBXS01lZGlhQ2FwdHVyZVR5cGVDYW1lcmEs
CisgICAgV0tNZWRpYUNhcHR1cmVUeXBlTWljcm9waG9uZSwKKyAgICBXS01lZGlhQ2FwdHVyZVR5
cGVDYW1lcmFBbmRNaWNyb3Bob25lLAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBX
S1VJRGVsZWdhdGUgcHJvdG9jb2wgcHJvdmlkZXMgbWV0aG9kcyBmb3IKICBwcmVzZW50aW5nIG5h
dGl2ZSBVSSBvbiBiZWhhbGYgb2YgYSB3ZWJwYWdlLgogICovCkBAIC0xMjMsNiArMTM1LDE5IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAgKi8KIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmlu
ZyAqKXByb21wdCBkZWZhdWx0VGV4dDoobnVsbGFibGUgTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1N0cmluZyAqIF9OdWxsYWJsZSByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwog
CisKKy8qISBAYWJzdHJhY3QgQSBkZWxlZ2F0ZSB0byByZXF1ZXN0IHBlcm1pc3Npb24gZm9yIG1p
Y3JvcGhvbmUgYXVkaW8gYW5kIGNhbWVyYSB2aWRlbyBhY2Nlc3MuCisgQHBhcmFtIHdlYlZpZXcg
VGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCisgQHBhcmFtIG9yaWdp
biBUaGUgb3JpZ2luIG9mIHRoZSBwYWdlLgorIEBwYXJhbSBmcmFtZSBJbmZvcm1hdGlvbiBhYm91
dCB0aGUgZnJhbWUgd2hvc2UgSmF2YVNjcmlwdCBpbml0aWF0ZWQgdGhpcyBjYWxsLgorIEBwYXJh
bSB0eXBlIFRoZSB0eXBlIG9mIGNhcHR1cmUgKGNhbWVyYSwgbWljcm9waG9uZSkuCisgQHBhcmFt
IGRlY2lzaW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGNhbGwgb25jZSB0aGUg
ZGVjaXNpb24gaXMgbWFkZQorIEBkaXNjdXNzaW9uIElmIG5vdCBpbXBsZW1lbnRlZCwgdGhlIHJl
c3VsdCBpcyB0aGUgc2FtZSBhcyBjYWxsaW5nIHRoZSBkZWNpc2lvbkhhbmRsZXIgd2l0aCBXS1Bl
cm1pc3Npb25EZWNpc2lvblByb21wdC4KKworIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMg
bWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCBiZWhhdmUgYXMgaWYgdGhlIHVzZXIgc2VsZWN0ZWQg
dGhlIENhbmNlbCBidXR0b24uCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6
KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQ
SE9ORQogCiAvKiEgQGFic3RyYWN0IEFsbG93cyB5b3VyIGFwcCB0byBkZXRlcm1pbmUgd2hldGhl
ciBvciBub3QgdGhlIGdpdmVuIGVsZW1lbnQgc2hvdWxkIHNob3cgYSBwcmV2aWV3LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggZTY2NThlNTNjYzNhMTA1NjcwNWZiZGFhODcxYjhkZTRiMzEwZDA4NS4uZjQ0
OWRjZjM3ODQ3NTRjMTVjYzIxNTE3NmNiMGMxYmQ0NGZiZWFkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBA
IC0xMjIsNyArMTIyLDYgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIAogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOihD
R1NpemUpc2l6ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIC0g
KE5TRGljdGlvbmFyeSAqKV9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7Ci0t
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQ
ZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5
RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wp
dmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVj
aXNpb24pKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjAwKSwgaW9z
KDE1LjApKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNl
bnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoXikoQk9PTCBpbmNsdWRlU2Vuc2l0aXZl
RGV0YWlscykpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBp
b3MoMTMuMCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0
VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6KF9XS0NhcHR1cmVEZXZpY2VzKWRldmlj
ZXMgdXJsOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDoo
TlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50
aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSk7CkBAIC0xMzAsNyArMTI5LDcg
QEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFn
Z2luZ0luZm86KGlkKWRyYWdnaW5nSW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwg
aW9zKDExLjApKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRl
V2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0
aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVy
ZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2ViVmlldyAqd2ViVmlldykpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAt
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKEJPT0wgYWxsb3dlZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCksIGlvcygxMS4zKSk7Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlP
cmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNp
c2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdEdl
b2xvY2F0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiopb3JpZ2luIGlu
aXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0Zy
YW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIHJlc3VsdCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4w
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGVkaXRvclN0YXRlRGlk
Q2hhbmdlOihOU0RpY3Rpb25hcnkgKillZGl0b3JTdGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpLCBpb3MoMTEuMykpOwpAQCAtMjIzLDcgKzIyMiw3IEBAIHN0cnVjdCBVSUVkZ2VJ
bnNldHM7CiAgQHBhcmFtIGZyYW1lIFRoZSBmcmFtZSB0aGF0IGluaXRpYXRlZCB0aGUgcmVxdWVz
dC4KICBAcGFyYW0gZGVjaXNpb25IYW5kbGVyIFRoZSBkZWNpc2lvbiBoYW5kbGVyIHRvIGNhbGwg
b25jZSB0aGUgYXBwIGhhcyBtYWRlIGl0cyBkZWNpc2lvbi4KICAqLwotLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25Q
ZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlG
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Bl
cm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNp
c2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
IAogI2Vsc2UgLy8gIVRBUkdFVF9PU19JUEhPTkUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IGEzN2I1NjhhNTZkYTlhZjBmMWY0YjlhZjdk
MTY5ZjM1MThkY2E4YzEuLjBlNDQ5ZjFhNDJhZDg4OTcwY2IyMDIyMmFjNmY5MzU0MDZmNGNjZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAg
LTY4LDYgKzY4LDEyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTWVkaWFQbGF5YmFj
a1N0YXRlKSB7CiAgICAgV0tNZWRpYVBsYXliYWNrU3RhdGVTdXNwZW5kZWQKIH0gV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAordHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tNZWRpYUNhcHR1cmVTdGF0ZSkgeworICAgIFdLTWVkaWFDYXB0
dXJlU3RhdGVOb25lLAorICAgIFdLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUsCisgICAgV0tNZWRp
YUNhcHR1cmVTdGF0ZU11dGVkLAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEEgY29weSBvZiB0aGUgY29uZmln
dXJhdGlvbiB3aXRoIHdoaWNoIHRoZSB3ZWIgdmlldyB3YXMKICBpbml0aWFsaXplZC4gKi8KIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbjsKQEAgLTM1NCw2ICszNjAsMzkgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgV0tNZWRpYVBsYXliYWNrU3RhdGUpIHsKICAqLwogLSAodm9pZClyZXF1ZXN0TWVk
aWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS01lZGlhUGxh
eWJhY2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorCisvKiEgQGFic3RyYWN0IFRoZSBzdGF0ZSBv
ZiBjYW1lcmEgY2FwdHVyZSBvbiBhIHdlYiBwYWdlLgorIEBkaXNjdXNzaW9uIEBsaW5rIFdLV2Vi
VmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQKKyBmb3Ig
dGhpcyBwcm9wZXJ0eS4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS01l
ZGlhQ2FwdHVyZVN0YXRlIGNhbWVyYUNhcHR1cmVTdGF0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFRoZSBzdGF0
ZSBvZiBtaWNyb3Bob25lIGNhcHR1cmUgb24gYSB3ZWIgcGFnZS4KKyBAZGlzY3Vzc2lvbiBAbGlu
ayBXS1dlYlZpZXcgQC9saW5rIGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxpYW50
CisgZm9yIHRoaXMgcHJvcGVydHkuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tNZWRpYUNhcHR1cmVTdGF0ZSBtaWNyb3Bob25lQ2FwdHVyZVN0YXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJh
Y3QgU2V0IGNhbWVyYSBjYXB0dXJlIHN0YXRlIG9mIGEgV0tXZWJWaWV3LgorIEBwYXJhbSBzdGF0
ZSBzdGF0ZSB0byBhcHBseSBmb3IgY2FwdHVyZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIg
QSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBj
YWxsLgorIEBkaXNjdXNzaW9uCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUs
IHRoaXMgd2lsbCBzdG9wIGFueSBjYW1lcmEgY2FwdHVyZS4KKyBJZiB2YWx1ZSBpcyBXS01lZGlh
Q2FwdHVyZVN0YXRlTXV0ZWQsIGFueSBhY3RpdmUgY2FtZXJhIGNhcHR1cmUgd2lsbCBiZWNvbWUg
bXV0ZWQuCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSwgYW55IG11dGVk
IGNhbWVyYSBjYXB0dXJlIHdpbGwgYmVjb21lIGFjdGl2ZS4KKyAqLworLSAodm9pZClzZXRDYW1l
cmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF5fTnVsbGFibGUpKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJh
Y3QgU2V0IG1pY3JvcGhvbmUgY2FwdHVyZSBzdGF0ZSBvZiBhIFdLV2ViVmlldy4KKyBAcGFyYW0g
c3RhdGUgc3RhdGUgdG8gYXBwbHkgZm9yIGNhcHR1cmUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5k
bGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rp
b24gY2FsbC4KKyBAZGlzY3Vzc2lvbgorIElmIHZhbHVlIGlzIFdLTWVkaWFDYXB0dXJlU3RhdGVO
b25lLCB0aGlzIHdpbGwgc3RvcCBhbnkgbWljcm9waG9uZSBjYXB0dXJlLgorIElmIHZhbHVlIGlz
IFdLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZCwgYW55IGFjdGl2ZSBtaWNyb3Bob25lIGNhcHR1cmUg
d2lsbCBiZWNvbWUgbXV0ZWQuCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZSwgYW55IG11dGVkIG1pY3JvcGhvbmUgY2FwdHVyZSB3aWxsIGJlY29tZSBhY3RpdmUuCisgKi8K
Ky0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlz
dGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXl9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKwogLyohIEBhYnN0cmFjdCBHZXQgYSBzbmFwc2hvdCBmb3IgdGhlIHZpc2libGUgdmll
d3BvcnQgb2YgV0tXZWJWaWV3LgogIEBwYXJhbSBzbmFwc2hvdENvbmZpZ3VyYXRpb24gQW4gb2Jq
ZWN0IHRoYXQgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3QgaXMgY29uZmlndXJlZC4KICBAcGFy
YW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc25hcHNob3Qg
aXMgcmVhZHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCBjMmU1MjIwMDI1MjQ3YTBkY2ZhMTA5ODMxNTU2YTY0NTliZjBiYjcwLi5jZDM5
YWVhNmY5N2U4ZjE2NjA1ZGMyOTczZTBjMjk0NWM4YzJhMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk3NSw2ICs5NzUsNjggQEAg
c3RhdGljIFdLTWVkaWFQbGF5YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2ViS2l0
OjpNZWRpYVBsYXliYWNrU3RhdGUgbWUKICAgICB9KTsKIH0KIAorLSAoV0tNZWRpYUNhcHR1cmVT
dGF0ZSljYW1lcmFDYXB0dXJlU3RhdGUKK3sKKyAgICBhdXRvIHN0YXRlID0gX3BhZ2UtPnJlcG9y
dGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
SGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXS01lZGlhQ2FwdHVy
ZVN0YXRlTXV0ZWQ7CisgICAgcmV0dXJuIFdLTWVkaWFDYXB0dXJlU3RhdGVOb25lOworfQorCist
IChXS01lZGlhQ2FwdHVyZVN0YXRlKW1pY3JvcGhvbmVDYXB0dXJlU3RhdGUKK3sKKyAgICBhdXRv
IHN0YXRlID0gX3BhZ2UtPnJlcG9ydGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSkKKyAgICAg
ICAgcmV0dXJuIFdLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmU7CisgICAgaWYgKHN0YXRlICYgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzTXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAg
IHJldHVybiBXS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWQ7CisgICAgcmV0dXJuIFdLTWVkaWFDYXB0
dXJlU3RhdGVOb25lOworfQorCistICh2b2lkKXNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6KFdL
TWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CisKKyAgICBpZiAoc3RhdGUgPT0gV0tNZWRp
YUNhcHR1cmVTdGF0ZU5vbmUpIHsKKyAgICAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW8sIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGF1dG8gbXV0ZWRTdGF0ZSA9IF9wYWdlLT5tdXRlZFN0YXRlRmxhZ3MoKTsKKyAgICBp
ZiAoc3RhdGUgPT0gV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSAmJiBtdXRlZFN0YXRlICYgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJlSXNNdXRlZCkKKyAgICAgICAgbXV0ZWRT
dGF0ZSBePSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVJc011dGVkOworICAg
IGVsc2UgaWYgKHN0YXRlID09IFdLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZCkKKyAgICAgICAgbXV0
ZWRTdGF0ZSA9IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZUlzTXV0ZWQ7Cisg
ICAgX3BhZ2UtPnNldE11dGVkKG11dGVkU3RhdGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICB9KTsKK30KKworLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFD
YXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CisKKyAgICBpZiAoc3RhdGUgPT0gV0tNZWRpYUNhcHR1
cmVTdGF0ZU5vbmUpIHsKKyAgICAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW8sIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGF1dG8gbXV0ZWRTdGF0ZSA9IF9wYWdlLT5tdXRlZFN0YXRlRmxhZ3MoKTsKKyAgICBpZiAoc3Rh
dGUgPT0gV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSAmJiBtdXRlZFN0YXRlICYgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlSXNNdXRlZCkKKyAgICAgICAgbXV0ZWRTdGF0ZSBe
PSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVJc011dGVkOworICAgIGVsc2Ug
aWYgKHN0YXRlID09IFdLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZCkKKyAgICAgICAgbXV0ZWRTdGF0
ZSA9IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZUlzTXV0ZWQ7CisgICAgX3Bh
Z2UtPnNldE11dGVkKG11dGVkU3RhdGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICB9KTsKK30KKwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFT
Y3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoU291
cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2Vy
R2VzdHVyZSBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluV29ybGQ6KFdLQ29udGVudFdv
cmxkICopd29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlv
bkhhbmRsZXIgY29weV0pOwpAQCAtMTc0MCw2MiArMTgwMiw2IEBAIEZPUl9FQUNIX1BSSVZBVEVf
V0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKICAg
ICByZXR1cm4gX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5oYXNOZWdvdGlhdGVkTGVnYWN5VExTKCk7
CiB9CiAKLS0gKF9XS01lZGlhQ2FwdHVyZVN0YXRlKV9jYW1lcmFDYXB0dXJlU3RhdGUKLXsKLSAg
ICBhdXRvIHN0YXRlID0gX3BhZ2UtPnJlcG9ydGVkTWVkaWFTdGF0ZSgpOwotICAgIGlmIChzdGF0
ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkK
LSAgICAgICAgcmV0dXJuIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlOwotICAgIGlmIChzdGF0
ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlKQot
ICAgICAgICByZXR1cm4gX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZDsKLSAgICByZXR1cm4gX1dL
TWVkaWFDYXB0dXJlU3RhdGVOb25lOwotfQotCi0tIChfV0tNZWRpYUNhcHR1cmVTdGF0ZSlfbWlj
cm9waG9uZUNhcHR1cmVTdGF0ZQotewotICAgIGF1dG8gc3RhdGUgPSBfcGFnZS0+cmVwb3J0ZWRN
ZWRpYVN0YXRlKCk7Ci0gICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFz
QWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlKQotICAgICAgICByZXR1cm4gX1dLTWVkaWFDYXB0dXJl
U3RhdGVBY3RpdmU7Ci0gICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFz
TXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCi0gICAgICAgIHJldHVybiBfV0tNZWRpYUNhcHR1cmVT
dGF0ZU11dGVkOwotICAgIHJldHVybiBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmU7Ci19Ci0KLS0g
KHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooX1dLTWVkaWFDYXB0dXJlU3RhdGUpc3Rh
dGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCi17
Ci0gICAgaWYgKHN0YXRlID09IF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkgewotICAgICAgICBf
cGFnZS0+c3RvcE1lZGlhQ2FwdHVyZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1
cmVLaW5kOjpBdWRpbywgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBtdXRlZFN0YXRlID0gX3BhZ2Ut
Pm11dGVkU3RhdGVGbGFncygpOwotICAgIGlmIChzdGF0ZSA9PSBfV0tNZWRpYUNhcHR1cmVTdGF0
ZUFjdGl2ZSAmJiBtdXRlZFN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0
dXJlSXNNdXRlZCkKLSAgICAgICAgbXV0ZWRTdGF0ZSBePSBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpBdWRpb0NhcHR1cmVJc011dGVkOwotICAgIGVsc2UgaWYgKHN0YXRlID09IF9XS01lZGlhQ2Fw
dHVyZVN0YXRlTXV0ZWQpCi0gICAgICAgIG11dGVkU3RhdGUgPSBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpBdWRpb0NhcHR1cmVJc011dGVkOwotICAgIF9wYWdlLT5zZXRNdXRlZChtdXRlZFN0YXRl
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc2V0
Q2FtZXJhQ2FwdHVyZVN0YXRlOihfV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBpZiAoc3Rh
dGUgPT0gX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSB7Ci0gICAgICAgIF9wYWdlLT5zdG9wTWVk
aWFDYXB0dXJlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVv
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICB9KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBhdXRvIG11dGVkU3RhdGUgPSBfcGFnZS0+bXV0ZWRTdGF0ZUZs
YWdzKCk7Ci0gICAgaWYgKHN0YXRlID09IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlICYmIG11
dGVkU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVJc011dGVkKQot
ICAgICAgICBtdXRlZFN0YXRlIF49IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVy
ZUlzTXV0ZWQ7Ci0gICAgZWxzZSBpZiAoc3RhdGUgPT0gX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRl
ZCkKLSAgICAgICAgbXV0ZWRTdGF0ZSA9IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2Fw
dHVyZUlzTXV0ZWQ7Ci0gICAgX3BhZ2UtPnNldE11dGVkKG11dGVkU3RhdGUsIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZnJhbWVzOih2b2lkIChe
KShfV0tGcmFtZVRyZWVOb2RlICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3BhZ2UtPmdl
dEFsbEZyYW1lcyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpLCBwYWdlID0gbWFrZVJlZigqX3BhZ2UuZ2V0KCkpXSAoV2ViS2l0OjpGcmFtZVRyZWVO
b2RlRGF0YSYmIGRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDkzZmQyZGYzNzUzMzYwNWZkOWQ3YjA0MjUx
ZjEzMzUwZDFkMWM1YWQuLjFiYWI2ZjQxMTQ5ZGMzMjM3NThmOGFiNGJhNmNjZmE5OThhYTkyYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtNDgsMTIgKzQ4LDYgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS01lZGlhQ2FwdHVyZVN0YXRlRGVwcmVjYXRlZCkgewogICAgIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlRGVwcmVjYXRlZE11dGVkQ2FtZXJhID0gMSA8PCAzLAogfSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS01lZGlhQ2FwdHVyZVN0YXRlKSB7Ci0gICAgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25l
ID0gMCwKLSAgICBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSA9IDEgPDwgMCwKLSAgICBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZU11dGVkID0gMSA8PCAxLAotfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCiB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLTWVkaWFNdXRlZFN0YXRlKSB7CiAgICAgX1dLTWVkaWFOb25lTXV0ZWQgPSAw
LAogICAgIF9XS01lZGlhQXVkaW9NdXRlZCA9IDEgPDwgMCwKQEAgLTY3LDEyICs2MSw2IEBAIHR5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tDYXB0dXJlRGV2aWNlcykgewogICAgIF9X
S0NhcHR1cmVEZXZpY2VEaXNwbGF5ID0gMSA8PCAyLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzKSwgaW9zKDExLjApKTsKIAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1Blcm1pc3Npb25EZWNpc2lvbikgewotICAgIF9XS1Blcm1pc3Npb25EZWNpc2lvblByb21wdCA9
IDEgPDwgMCwKLSAgICBfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCA9IDEgPDwgMSwKLSAgICBf
V0tQZXJtaXNzaW9uRGVjaXNpb25EZW55ID0gMSA8PCAyLAotfSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjAwKSwgaW9zKDE1LjApKTsKLQogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1NlbGVjdGlvbkF0dHJpYnV0ZXMpIHsKICAgICBfV0tTZWxlY3Rpb25BdHRyaWJ1dGVOb1Nl
bGVjdGlvbiA9IDAsCiAgICAgX1dLU2VsZWN0aW9uQXR0cmlidXRlSXNDYXJldCA9IDEgPDwgMCwK
QEAgLTE5MywxNiArMTgxLDYgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAqLwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9uZWdvdGlhdGVkTGVnYWN5VExTIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiAKLS8qISBAYWJzdHJhY3QgVGhlIHN0
YXRlIG9mIG1lZGlhIGNhcHR1cmUgb24gYSB3ZWIgcGFnZS4KLSBAZGlzY3Vzc2lvbiBAbGluayBX
S1dlYlZpZXcgQC9saW5rIGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxpYW50Ci0g
Zm9yIHRoaXMgcHJvcGVydHkuCi0gKi8KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
X1dLTWVkaWFDYXB0dXJlU3RhdGUgX2NhbWVyYUNhcHR1cmVTdGF0ZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBfV0tNZWRpYUNhcHR1cmVTdGF0ZSBfbWljcm9waG9uZUNhcHR1cmVTdGF0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwot
Ci0tICh2b2lkKXNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6KF9XS01lZGlhQ2FwdHVyZVN0YXRl
KXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwot
LSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KF9XS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCiAtICh2
b2lkKV9mcmFtZXM6KHZvaWQgKF4pKF9XS0ZyYW1lVHJlZU5vZGUgKikpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIAogLy8gRklYTUU6
IFJlbW92ZSB0aGVzZSBvbmNlIG5vYm9keSBpcyB1c2luZyB0aGVtLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMzg2YmIyN2VkZWQ5NDNlYTA5ZTQz
YmMyYWJkYmJlMGI4MDAwNGRjYy4uZTQ5ZmQxMzEwZmQ2MzZlZGE0NWZkMTAwOGI0Mzc3NTFmOThj
YjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBA
IC00MTEsNyArNDExLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OlcKICAgICBpZiAobV91aURl
bGVnYXRlLT5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvck9yaWdpbkRlY2lzaW9uSGFuZGxlcikgewogICAgICAgICBhdXRvIHNlY3VyaXR5T3Jp
Z2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocGFnZS5wYWdl
TG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihf
d2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5
RnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRp
b25IYW5kbGVyLCBudWxscHRyKSwgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi0+ZGF0
YSgpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgcGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2Up
XSAoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3Rk
OjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciksIHNlY3VyaXR5T3JpZ2luID0g
c2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHBhZ2Ug
PSBtYWtlV2Vha1B0cihwYWdlKV0gKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQyMCwxMyArNDIwLDEzIEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3QoV2ViS2l0OjpXCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewotICAgICAgICAgICAgY2FzZSBfV0tQZXJt
aXNzaW9uRGVjaXNpb25Qcm9tcHQ6CisgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lz
aW9uUHJvbXB0OgogICAgICAgICAgICAgICAgIGFsZXJ0Rm9yUGVybWlzc2lvbigqcGFnZSwgTWVk
aWFQZXJtaXNzaW9uUmVhc29uOjpHZW9sb2NhdGlvbiwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ6CisgICAgICAgICAgICBjYXNlIFdLUGVy
bWlzc2lvbkRlY2lzaW9uR3JhbnQ6CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1p
c3Npb25EZWNpc2lvbkRlbnk6CisgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9u
RGVueToKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzKFdlYktpdDo6VwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS0+
bV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRl
ZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIGNoZWNrZXIgPSBX
VEZNb3ZlKGNoZWNrZXIpLCBwYWdlID0gbWFrZVdlYWtQdHIocGFnZSldKF9XS1Blcm1pc3Npb25E
ZWNpc2lvbiBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgY2hlY2tlciA9IFdU
Rk1vdmUoY2hlY2tlciksIHBhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKV0oV0tQZXJtaXNzaW9uRGVj
aXNpb24gZGVjaXNpb24pIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlv
bkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA1OCwxMyArMTA1OCwxMyBA
QCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzKFdlYktpdDo6VwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKLSAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9u
RGVjaXNpb25Qcm9tcHQ6CisgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQ6
CiAgICAgICAgICAgICBhbGVydEZvclBlcm1pc3Npb24oKnBhZ2UsIE1lZGlhUGVybWlzc2lvblJl
YXNvbjo6RGV2aWNlT3JpZW50YXRpb24sIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBfV0tQZXJtaXNz
aW9uRGVjaXNpb25HcmFudDoKKyAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50
OgogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55OgorICAgICAgICBjYXNl
IFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueToKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDk3LDcgKzEwOTcs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYm9vbCByZXNwb25kc1RvUmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb24gPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0
dXJlUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOmF1ZGlvOnZpZGVvOmRlY2lz
aW9uSGFuZGxlcjopXTsKKyAgICBib29sIHJlc3BvbmRzVG9SZXF1ZXN0TWVkaWFDYXB0dXJlUGVy
bWlzc2lvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6
cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0
eXBlOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBib29sIHJlc3BvbmRzVG9SZXF1ZXN0VXNlck1l
ZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmlj
ZXM6dXJsOm1haW5GcmFtZVVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CiAKICAgICBpZiAoIXJlc3Bv
bmRzVG9SZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbiAmJiAhcmVzcG9uZHNUb1JlcXVlc3RV
c2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcykgewpAQCAtMTEwNywyMyArMTEwNywyMyBA
QCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogCiAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzcGVj
aWZpYyBkZWxlZ2F0ZSBmb3IgZGlzcGxheSBjYXB0dXJlLgogICAgIGlmICghcmVxdWVzdC5yZXF1
aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJt
aXNzaW9uKSB7Ci0gICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RNZWRpYUNh
cHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6YXVkaW86dmlkZW86ZGVj
aXNpb25IYW5kbGVyOikpOwotICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpXShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pIHsKKyAgICAgICAg
YXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVn
YXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9y
aWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICBh
dXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkUmVxdWVzdCA9IG1h
a2VSZWYocmVxdWVzdCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShXS1Blcm1pc3Npb25E
ZWNpc2lvbiBkZWNpc2lvbikgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgICAgICBz
d2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1pc3Npb25EZWNpc2lv
blByb21wdDoKKyAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQ6CiAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+cHJvbXB0KCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50OiB7
CisgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ6IHsKICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVzdC0+
cmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IHByb3RlY3RlZFJlcXVlc3QtPnZpZGVvRGV2aWNlVUlE
cygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGF1
ZGlvRGV2aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVzdC0+cmVxdWlyZXNBdWRpb0NhcHR1cmUoKSA/
IHByb3RlY3RlZFJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsK
ICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5hbGxvdyhhdWRpb0RldmljZVVJRCwg
dmlkZW9EZXZpY2VVSUQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55OgorICAgICAgICAgICAg
Y2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnk6CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVk
UmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFB
Y2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMTEzNSw3ICsxMTM1LDEwIEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdl
YlBhZ2VQcm94CiAgICAgICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvIHsgZnJhbWUuaXNNYWlu
RnJhbWUoKSwgeyB9LCB1c2VyTWVkaWFPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZnJh
bWVJRCgpLCBtYWluRnJhbWVJRCB9OwogICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZy
YW1lSW5mb1dyYXBwZXIgPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShm
cmFtZUluZm8pLCBmcmFtZS5wYWdlKCkpKTsKIAotICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6
bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE1lZGlhQ2FwdHVyZVBl
cm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcih0b3BMZXZlbE9yaWdpbikgaW5pdGlhdGVkQnlGcmFt
ZTpmcmFtZUluZm9XcmFwcGVyLmdldCgpIGF1ZGlvOnJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1
cmUoKSB2aWRlbzpyZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgZGVjaXNpb25IYW5kbGVy
OmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CisgICAgICAgIFdLTWVkaWFDYXB0dXJlVHlwZSB0eXBl
ID0gV0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhOworICAgICAgICBpZiAocmVxdWVzdC5yZXF1aXJl
c0F1ZGlvQ2FwdHVyZSgpKQorICAgICAgICAgICAgdHlwZSA9IHJlcXVlc3QucmVxdWlyZXNWaWRl
b0NhcHR1cmUoKSA/IFdLTWVkaWFDYXB0dXJlVHlwZUNhbWVyYUFuZE1pY3JvcGhvbmUgOiBXS01l
ZGlhQ2FwdHVyZVR5cGVNaWNyb3Bob25lOworICAgICAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Vp
RGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlz
c2lvbkZvck9yaWdpbjp3cmFwcGVyKHRvcExldmVsT3JpZ2luKSBpbml0aWF0ZWRCeUZyYW1lOmZy
YW1lSW5mb1dyYXBwZXIuZ2V0KCkgdHlwZTp0eXBlIGRlY2lzaW9uSGFuZGxlcjpkZWNpc2lvbkhh
bmRsZXIuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDM1YzRjZjRhZmJlMzEzZTBhMDdj
Y2M0N2M2NTMyYTVlOWIzNmQ4Ny4uZGVjMGMxN2FmNjM0YjUyMzkxMTc2ZmQ0OWFhNzdjNDk1MWNi
ZGU0MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDIxLTAzLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBQcm9tb3RlIFdLV2ViVmlldyBnZXRVc2VyTWVkaWEgU1BJIHRvIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW06CisgICAgICAgICgtW1VzZXJN
ZWRpYUNhcHR1cmVVSURlbGVnYXRlRm9yUGFyYW1ldGVycyB3ZWJWaWV3OnJlcXVlc3RNZWRpYUNh
cHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlh
UHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVQZXJt
aXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9t
cHQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbToK
KyAgICAgICAgKC1bRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZSBfd2ViVmll
dzpyZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmlu
aXRpYXRlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtEZXZpY2VPcmll
bnRhdGlvblBlcm1pc3Npb25WYWxpZGF0aW9uRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdERldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1l
OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tOgorICAgICAgICAoLVtTcGVlY2hSZWNvZ25pdGlv
blVJRGVsZWdhdGUgd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdp
bjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1b
R2VvbG9jYXRpb25EZWxlZ2F0ZU5ldyBfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhRGlzYWJsZWQubW06
CisgICAgICAgICgtW1VzZXJNZWRpYVVJRGVsZWdhdGUgd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0
dXJlUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1l
ZGlhU2ltdWxhdGVGYWlsZWRTYW5kYm94Lm1tOgorICAgICAgICAoLVtTaW11bGF0ZUZhaWxlZFNh
bmRib3hVSURlbGVnYXRlIHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JP
cmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbToKKyAg
ICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25VSURlbGVnYXRlIF93ZWJW
aWV3OnJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46
aW5pdGlhdGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvY29jb2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUubW06CisgICAgICAgICgt
W1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGluaXRdKToKKyAgICAgICAgKC1bVXNlck1lZGlh
Q2FwdHVyZVVJRGVsZWdhdGUgc2V0QXVkaW9EZWNpc2lvbjpdKToKKyAgICAgICAgKC1bVXNlck1l
ZGlhQ2FwdHVyZVVJRGVsZWdhdGUgc2V0VmlkZW9EZWNpc2lvbjpdKToKKyAgICAgICAgKC1bVXNl
ck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlz
c2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOl0pOgor
CiAyMDIxLTAzLTIzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIFNlcnZpY2Ugd29ya2VyIGxvYWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3Vu
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1t
CmluZGV4IDk2ZjY2MmExYmQ2N2ZiYzJiMTg2YzY4MjI1YWNkMzA1YjAwNzc2NDkuLjc0ZmFmNzhl
MzlkMzRmYmU4MTI3ZjBhM2M3YzAzMjgyNjAzNzE3NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KQEAgLTUwLDExICs1MCwxMSBAQCBz
dGF0aWMgYm9vbCBkb25lOwogCiBAaW50ZXJmYWNlIFVzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRl
Rm9yUGFyYW1ldGVycyA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0ZT4KIC8vIFdLVUlEZWxlZ2F0ZQot
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJl
UGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRC
eUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihCT09M
KXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRl
Y2lzaW9uKSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlP
cmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB0eXBl
OihXS01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVy
bWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXI7CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZUZvclBhcmFtZXRlcnMKLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1p
c3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFt
ZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzooQk9PTCl2aWRl
byBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lv
bikpZGVjaXNpb25IYW5kbGVyIHsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdp
biAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6KFdL
TWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNz
aW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciB7CiAgICAgRVhQRUNUX1dLX1NU
UkVRKG9yaWdpbi5wcm90b2NvbCwgQCJodHRwIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKG9yaWdp
bi5ob3N0LCBAIjEyNy4wLjAuMSIpOwogICAgIEVYUEVDVF9FUShvcmlnaW4ucG9ydCwgOTA5MFUp
OwpAQCAtNjUsMTEgKzY1LDEwIEBAIHN0YXRpYyBib29sIGRvbmU7CiAgICAgRVhQRUNUX0ZBTFNF
KGZyYW1lLmlzTWFpbkZyYW1lKTsKICAgICBFWFBFQ1RfVFJVRShmcmFtZS53ZWJWaWV3ID09IHdl
YlZpZXcpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGF1ZGlvKTsKLSAgICBFWFBFQ1RfVFJVRSh2aWRl
byk7CisgICAgRVhQRUNUX0VRKHR5cGUsIFdLTWVkaWFDYXB0dXJlVHlwZUNhbWVyYSk7CiAKICAg
ICBkb25lID0gdHJ1ZTsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9u
R3JhbnQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsK
IH0KIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggNDAzZjBhNjIxM2M0Yjg3YjE2OGM3
YmIyNDA2ZDZmM2Q1YmRlOWU2Yy4uMTJjYTc0NjJkNWFiY2RiY2RkMTE4ZWU2M2JlNWYzNTgxMTk1
YzY5OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNl
ck1lZGlhTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJU
ZXN0LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KQEAgLTQyLDE3ICs0MiwxNyBA
QCBzdGF0aWMgYm9vbCBva1RvUHJvY2VlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgc2hvdWxkUmVs
ZWFzZUluRW51bWVyYXRlID0gZmFsc2U7CiAKIEBpbnRlcmZhY2UgTmF2aWdhdGlvbldoaWxlR2V0
VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0
ZT4KLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2Fw
dHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlh
dGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzoo
Qk9PTCl2aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lv
biBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3Vy
aXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
dHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JV
Ukw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJ
ZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcjsK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIE5hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21w
dERpc3BsYXllZFVJRGVsZWdhdGUKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzoo
Qk9PTClhdWRpbyB2aWRlbzooQk9PTCl2aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25G
b3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tG
cmFtZUluZm8gKilmcmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhh
bmRsZXIKIHsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOwogICAgIFt3ZWJW
aWV3IHJlbGVhc2VdOwogICAgIG9rVG9Qcm9jZWVkID0gdHJ1ZTsKLSAgICBkZWNpc2lvbkhhbmRs
ZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS1Bl
cm1pc3Npb25EZWNpc2lvbkdyYW50KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1h
aW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRl
Z2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpz
YWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFSZXByb21wdC5tbQppbmRl
eCA5NDE1MTQwZGMwYWRkMjNiMzZkNTM0YWIwOTE0MmNmMjIwYWFhNDgxLi4wN2Y1N2QwMTI1ZTA0
OTkyMDE1YjMwZjE2ODZkZGEzZmUyMDUwZmFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFSZXByb21wdC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFSZXByb21wdC5tbQpAQCAtMTA2LDgg
KzEwNiw4IEBAIFRFU1QoV2ViS2l0MiwgR2V0VXNlck1lZGlhUmVwcm9tcHRBZnRlckF1ZGlvVmlk
ZW9CZWluZ0RlbmllZCkKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbR2V0VXNlck1lZGlhUmVwcm9t
cHRUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFtkZWxl
Z2F0ZSBzZXRBdWRpb0RlY2lzaW9uOl9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50XTsKLSAgICBb
ZGVsZWdhdGUgc2V0VmlkZW9EZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55XTsKKyAg
ICBbZGVsZWdhdGUgc2V0QXVkaW9EZWNpc2lvbjpXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50XTsK
KyAgICBbZGVsZWdhdGUgc2V0VmlkZW9EZWNpc2lvbjpXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnld
OwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZSJd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFTdHJl
YW1UcmFja0RldGFjaGVkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVk
aWFTdHJlYW1UcmFja0RldGFjaGVkLm1tCmluZGV4IDA5MjQ2OTQ3ZmJkODBmMDIzYzAwMDMwYTFj
NGZiZDI3ZTdjM2UwM2EuLjg3MzZlYTQ2NDlkMmI0YWE3YTEyYzZjZTA1ZTcyYTFkYzdkMzRlOTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU3RyZWFt
VHJhY2tEZXRhY2hlZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9N
ZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdl
YktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KIAogc3RhdGljIGJvb2wgaGFzUmVj
ZWl2ZWRDb3JyZWN0Q2FwdHVyZVN0YXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRl
eCA1MzgyYjdkNWZhYzAzMTQ0ZTFlMzNlOTJkMTc3NzU0MDJiZjQ4NGM3Li44YjlkZmFhYzY5OTg5
NzAyMWVlNGQzNjdhNjc5YWUwM2YxNDEwMjA2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTc2
LDkgKzc2LDkgQEAgRnVuY3Rpb248Ym9vbCgpPiBfZGVjaXNpb25IYW5kbGVyOwogICAgIHJldHVy
biBzZWxmOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJp
dHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKXJlcXVlc3Rp
bmdGcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbikp
ZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
cXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2Vj
dXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKXJlcXVl
c3RpbmdGcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9u
KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX2RlY2lzaW9uSGFuZGxl
cigpID8gX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQgOiBfV0tQZXJtaXNzaW9uRGVjaXNpb25E
ZW55KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoX2RlY2lzaW9uSGFuZGxlcigpID8gV0tQZXJtaXNz
aW9uRGVjaXNpb25HcmFudCA6IFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7CiAgICAgYXNrZWRD
bGllbnRGb3JQZXJtaXNzaW9uID0gdHJ1ZTsKIH0KIApAQCAtMzg2LDEyICszODYsMTIgQEAgRnVu
Y3Rpb248dm9pZChXS1NlY3VyaXR5T3JpZ2luKiwgV0tGcmFtZUluZm8qKT4gX3ZhbGlkYXRpb25I
YW5kbGVyOwogICAgIF92YWxpZGF0aW9uSGFuZGxlciA9IFdURk1vdmUodmFsaWRhdGlvbkhhbmRs
ZXIpOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RE
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlP
cmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNp
c2lvbkhhbmRsZXIgeworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3Vy
aXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlk
ZWNpc2lvbkhhbmRsZXIgewogICAgIGlmIChfdmFsaWRhdGlvbkhhbmRsZXIpCiAgICAgICAgIF92
YWxpZGF0aW9uSGFuZGxlcihvcmlnaW4sIGZyYW1lKTsKIAogICAgIGFza2VkQ2xpZW50Rm9yUGVy
bWlzc2lvbiAgPSB0cnVlOwotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNp
b25HcmFudCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQp
OwogfQogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQppbmRleCAzNzZiYjdmZjJlODY3M2YwZDM3
NmQ2YWZiYmI3OTUyZTkzMTlhYzBjLi40NWY4ODZlODI5NDRjMGRkNDc5ZjI0ZDFlZmE1YjBkYzJm
NDU2ZjVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NwZWVjaFJlY29nbml0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogCiBAaW50ZXJmYWNlIFNwZWVjaFJl
Y29nbml0aW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0ZVByaXZhdGU+CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXI7Ci0tICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3Jp
Z2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJ
bmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wpdmlkZW8gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9u
SGFuZGxlcjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVk
aWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6KFdLTWVkaWFDYXB0dXJl
VHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24g
ZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcjsKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmln
YXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0Zl
YXR1cmVzICopd2luZG93RmVhdHVyZXM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlOihfV0tNZWRpYUNhcHR1cmVTdGF0ZURl
cHJlY2F0ZWQpc3RhdGU7CiBAZW5kCkBAIC01NywxMCArNTcsMTAgQEAgc3RhdGljIFJldGFpblB0
cjxXS1dlYlZpZXc+IGNyZWF0ZWRXZWJWaWV3OwogICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRH
cmFudFBlcm1pc3Npb25SZXF1ZXN0KTsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1l
IGF1ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihCT09MKXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIKKy0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVy
bWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRl
Y2lzaW9uSGFuZGxlcgogewogICAgIHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSB0cnVlOwotICAgIGRl
Y2lzaW9uSGFuZGxlcihzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0ID8gX1dLUGVybWlzc2lv
bkRlY2lzaW9uR3JhbnQgOiBfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKKyAgICBkZWNpc2lv
bkhhbmRsZXIoc2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCA/IFdLUGVybWlzc2lvbkRlY2lz
aW9uR3JhbnQgOiBXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOwogfQogCiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVBdXRob3JpemF0aW9u
OiAoX1dLQ2FwdHVyZURldmljZXMpZGV2aWNlcyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJP
T0wpKWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDI0MmY3NTBlNWM1ZjljZDY5NDAwNjFmMDc0
ZWE1NmY2ZTYzMDRkYTQuLmY1ZmQ3OGVhNzA1MzI4NTg2ZDgyM2Y5MzFmOTA5ZmNlNDU0ZTkwMDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVs
ZWdhdGUubW0KQEAgLTIxOCw3ICsyMTgsNyBAQCBURVNUKFdlYktpdCwgR2VvbG9jYXRpb25QZXJt
aXNzaW9uKQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gR2VvbG9jYXRpb25EZWxlZ2F0ZU5ldwot
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlG
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Bl
cm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIHsKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZv
ck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJh
bWVJbmZvICopZnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNp
c2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIHsKICAgICBFWFBFQ1RfV0tfU1RSRVEob3Jp
Z2luLnByb3RvY29sLCBAImh0dHBzIik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKG9yaWdpbi5ob3N0
LCBAIjEyNy4wLjAuMSIpOwogICAgIEVYUEVDVF9FUShvcmlnaW4ucG9ydCwgOTA5MCk7CkBAIC0y
MzAsNyArMjMwLDcgQEAgVEVTVChXZWJLaXQsIEdlb2xvY2F0aW9uUGVybWlzc2lvbikKICAgICBF
WFBFQ1RfVFJVRShmcmFtZS53ZWJWaWV3ID09IHdlYlZpZXcpOwogCiAgICAgZG9uZSAgPSB0cnVl
OwotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CisgICAg
ZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOwogfQogQGVuZAogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRp
YURpc2FibGVkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2Vy
TWVkaWFEaXNhYmxlZC5tbQppbmRleCBhNmJiNzljNDVmNDk3ZTcxZDA3YzgxMTMzNjdmNGUxYTI5
ODRjZjk5Li41OWRmMGQ1Yzk4MTY3Y2Q0YjZlMGVhNmVlMzcxMjBjODhhMGVjZjYxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2Fi
bGVkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1l
ZGlhRGlzYWJsZWQubW0KQEAgLTU5LDE2ICs1OSwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFdLU2Ny
aXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CiAKIEBpbXBsZW1lbnRhdGlvbiBVc2VyTWVk
aWFVSURlbGVnYXRlCiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVx
dWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClh
dWRpbyB2aWRlbzooQk9PTCl2aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1p
c3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmln
aW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUlu
Zm8gKilmcmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIK
IHsKICAgICB3YXNQcm9tcHRlZCA9IHRydWU7CiAKLSAgICBpZiAoIWF1ZGlvICYmICF2aWRlbykg
ewotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lv
bkRlY2lzaW9uR3JhbnQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25EZWNpc2lv
bkdyYW50KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBpbmNs
dWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lkICheKShCT09MIGluY2x1ZGVTZW5z
aXRpdmVEZXRhaWxzKSlkZWNpc2lvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhU2ltdWxhdGVGYWlsZWRTYW5kYm94Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFTaW11bGF0
ZUZhaWxlZFNhbmRib3gubW0KaW5kZXggMjgzOTA3NDE2NTM5NWNkNjJlZGI5ODlmNDI5ODhlZDYx
NWI4MmQ3Yi4uMzY3MjhmMjFkM2EyYTg4Y2U1NGRmMTU0NzkxNGE4ZjI4ZGIxMDA3MSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFTaW11
bGF0ZUZhaWxlZFNhbmRib3gubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Vc2VyTWVkaWFTaW11bGF0ZUZhaWxlZFNhbmRib3gubW0KQEAgLTU5LDE2ICs1OSwx
MSBAQCBzdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7
CiAKIEBpbXBsZW1lbnRhdGlvbiBTaW11bGF0ZUZhaWxlZFNhbmRib3hVSURlbGVnYXRlCiAKLS0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBl
cm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlG
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzooQk9PTCl2
aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNp
c2lvbikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB0eXBlOihX
S01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlz
c2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICB3YXNQcm9tcHRl
ZCA9IHRydWU7CiAKLSAgICBpZiAoIWF1ZGlvICYmICF2aWRlbykgewotICAgICAgICBkZWNpc2lv
bkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOwor
ICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKIH0KIAogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBpbmNsdWRlU2Vuc2l0aXZlTWVkaWFE
ZXZpY2VEZXRhaWxzOih2b2lkICheKShCT09MIGluY2x1ZGVTZW5zaXRpdmVEZXRhaWxzKSlkZWNp
c2lvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggMTc4MGM2MmZkZjEwMWMxNTRlYWY0MmMz
ZmFiNjY4ZjFmMGVmNTUzYS4uYmVmMjQyODhhZTBlZmZlYTE0NDZhOGZjYTFhYThiOGU3Mjc2YmQ1
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTE0ODEsMTAgKzE0ODEsMTAgQEAgc3RhdGljIGJvb2wg
Y2FsbGVkU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0RlbGVnYXRl
ID0gZmFsc2U7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRh
dGlvblVJRGVsZWdhdGUKIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBy
ZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1Nl
Y3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilyZXF1
ZXN0aW5nRnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNp
b24pKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKily
ZXF1ZXN0aW5nRnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNp
c2lvbikpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgY2FsbGVkU2hvdWxkQWxsb3dEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0RlbGVnYXRlID0gdHJ1ZTsKLSAgICBkZWNpc2lvbkhhbmRs
ZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS1Bl
cm1pc3Npb25EZWNpc2lvbkdyYW50KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oCmluZGV4IDdhOWEx
NWRhZGI5NWRlYjU3N2UzZTQ4NTE0ODE1Mjc3M2FlMzBiOWIuLjJjMWZlOTZkZjVkZWI3NjY1NjAz
ZjQyYWJkOTNjNzg4ZmUyZjdiMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmgKQEAgLTI0LDI3ICsyNCwyNyBAQAog
ICovCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGUuaD4KIAogQGludGVy
ZmFjZSBVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0ZT4g
ewogICAgIGJvb2wgX3dhc1Byb21wdGVkOwogICAgIGludCBfbnVtYmVyT2ZQcm9tcHRzOwotICAg
IF9XS1Blcm1pc3Npb25EZWNpc2lvbiBfYXVkaW9EZWNpc2lvbjsKLSAgICBfV0tQZXJtaXNzaW9u
RGVjaXNpb24gX3ZpZGVvRGVjaXNpb247CisgICAgV0tQZXJtaXNzaW9uRGVjaXNpb24gX2F1ZGlv
RGVjaXNpb247CisgICAgV0tQZXJtaXNzaW9uRGVjaXNpb24gX3ZpZGVvRGVjaXNpb247CiB9CiAK
IEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgd2FzUHJvbXB0ZWQ7CiBAcHJvcGVydHkgaW50IG51
bWJlck9mUHJvbXB0czsKLUBwcm9wZXJ0eSBfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb247
CitAcHJvcGVydHkgV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb247CiAKIC0gKHZvaWQpd2Fp
dFVudGlsUHJvbXB0ZWQ7CiAtKHZvaWQpcmVzZXRXYXNQcm9tcHRlZDsKIAotLSh2b2lkKXNldEF1
ZGlvRGVjaXNpb246KF9XS1Blcm1pc3Npb25EZWNpc2lvbilkZWNpc2lvbjsKLS0odm9pZClzZXRW
aWRlb0RlY2lzaW9uOihfV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb247CistKHZvaWQpc2V0
QXVkaW9EZWNpc2lvbjooV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb247CistKHZvaWQpc2V0
VmlkZW9EZWNpc2lvbjooV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb247CiAKIC8vIFdLVUlE
ZWxlZ2F0ZQotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVk
aWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZp
ZGVvOihCT09MKXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRl
Y2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdL
U2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXI7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBm
cmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5k
bGVyOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVVSURlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5tbQppbmRleCBlYTU5NTNhODIyYTE5MmZlODllZWYwOGNk
MTFmZTc0NjFhYjdiODUxLi5mOWNjOGQwZjdmMTQyYWRmMmE0ODYxMDY3NDVjOGJlYmE0M2QxMGIz
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVV
SURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZVVJRGVsZWdhdGUubW0KQEAgLTM5LDggKzM5LDggQEAKICAgICBpZiAoc2VsZiAhPSBuaWwp
IHsKICAgICAgICAgX3dhc1Byb21wdGVkID0gZmFsc2U7CiAgICAgICAgIF9udW1iZXJPZlByb21w
dHMgPSAwOwotICAgICAgICBfYXVkaW9EZWNpc2lvbiA9IF9XS1Blcm1pc3Npb25EZWNpc2lvbkdy
YW50OwotICAgICAgICBfdmlkZW9EZWNpc2lvbiA9IF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50
OworICAgICAgICBfYXVkaW9EZWNpc2lvbiA9IFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ7Cisg
ICAgICAgIF92aWRlb0RlY2lzaW9uID0gV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDsKICAgICB9
CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTU5LDM0ICs1OSwzNSBAQAogICAgIF93YXNQcm9tcHRl
ZCA9IGZhbHNlOwogfQogCi0tKHZvaWQpc2V0QXVkaW9EZWNpc2lvbjooX1dLUGVybWlzc2lvbkRl
Y2lzaW9uKWRlY2lzaW9uIHsKKy0odm9pZClzZXRBdWRpb0RlY2lzaW9uOihXS1Blcm1pc3Npb25E
ZWNpc2lvbilkZWNpc2lvbiB7CiAgICAgX2F1ZGlvRGVjaXNpb24gPSBkZWNpc2lvbjsKIH0KIAot
LSh2b2lkKXNldFZpZGVvRGVjaXNpb246KF9XS1Blcm1pc3Npb25EZWNpc2lvbilkZWNpc2lvbiB7
CistKHZvaWQpc2V0VmlkZW9EZWNpc2lvbjooV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb24g
ewogICAgIF92aWRlb0RlY2lzaW9uID0gZGVjaXNpb247CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmln
aW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUlu
Zm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzooQk9PTCl2aWRlbyBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25I
YW5kbGVyIHsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVk
aWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6KFdLTWVkaWFDYXB0dXJl
VHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24g
ZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciB7CiAgICAgKytfbnVtYmVyT2ZQcm9tcHRzOwogICAg
IF93YXNQcm9tcHRlZCA9IHRydWU7Ci0gICAgaWYgKGF1ZGlvICYmIF9hdWRpb0RlY2lzaW9uID09
IF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpIHsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9X
S1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOwotICAgICAgICByZXR1cm47CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBXS01lZGlhQ2FwdHVyZVR5cGVDYW1lcmE6CisgICAgICAgIGlmICgh
X3ZpZGVvRGVjaXNpb24pIHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Np
b25EZWNpc2lvbkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgY2Fz
ZSBXS01lZGlhQ2FwdHVyZVR5cGVNaWNyb3Bob25lOgorICAgICAgICBpZiAoIV9hdWRpb0RlY2lz
aW9uKSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25E
ZW55KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIGNhc2UgV0tNZWRpYUNh
cHR1cmVUeXBlQ2FtZXJhQW5kTWljcm9waG9uZToKKyAgICAgICAgaWYgKCFfYXVkaW9EZWNpc2lv
biB8fCAhX3ZpZGVvRGVjaXNpb24pIHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS1Bl
cm1pc3Npb25EZWNpc2lvbkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgfQotICAgIGlmICh2aWRlbyAmJiBfdmlkZW9EZWNpc2lvbiA9PSBfV0tQZXJtaXNzaW9uRGVj
aXNpb25EZW55KSB7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNp
b25EZW55KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYXVkaW8gJiYgX2F1ZGlv
RGVjaXNpb24gPT0gX1dLUGVybWlzc2lvbkRlY2lzaW9uUHJvbXB0KSB7Ci0gICAgICAgIGRlY2lz
aW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmICh2aWRlbyAmJiBfdmlkZW9EZWNpc2lvbiA9PSBfV0tQZXJtaXNzaW9u
RGVjaXNpb25Qcm9tcHQpIHsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25E
ZWNpc2lvblByb21wdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZGVjaXNpb25IYW5k
bGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQ
ZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOihOU1VSTCAqKXVybCBt
YWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRpZmllcjooTlNVSW50
ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAq
c2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424400</attachid>
            <date>2021-03-26 13:50:46 -0700</date>
            <delta_ts>2021-03-28 23:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223806-20210326215043.patch</filename>
            <type>text/plain</type>
            <size>51388</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzODhkNWE2MzgzNGM4Nzk2
OGM5ZDkwNDc4NWE1NjBmZWNjNzViMWUuLjg4YjY0MzM5Y2RlZmJkMGMxZDc1YjMzNzViZDVlMWMw
Yjg2ZGFjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDMtMjYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IGdl
dFVzZXJNZWRpYSBTUEkgdG8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM4MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIFNQSSB0byBBUEkuCisgICAgICAgIFVwZGF0ZSBkZWxlZ2F0ZSB0
byB0YWtlIGFuIGVudW1lcmF0aW9uIGluc3RlYWQgb2YgdHdvIGJvb2xlYW5zLgorICAgICAgICBN
YWtlIHNldHRlcnMgY29tcGxldGlvbiBoYW5kbGVycyBudWxsYWJsZS4KKyAgICAgICAgQ292ZXJl
ZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjYW1lcmFDYXB0dXJlU3RhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG1pY3JvcGhvbmVD
YXB0dXJlU3RhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1pY3JvcGhvbmVDYXB0dXJl
U3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRDYW1l
cmFDYXB0dXJlU3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOgorCiAyMDIxLTAzLTI1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggZnJv
bSBQT1JUQUxMT0NBVE9SX0RJU0FCTEVfQURBUFRFUl9FTlVNRVJBVElPTiB0byBmaWx0ZXJpbmcg
aW50ZXJmYWNlcyBpbiBOZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGUuaAppbmRleCBjYWQ4N2YzZWYyYWI5M2Q5M2E3NGNl
YzBjMzRiNDdjNjk1ZGU2YmM2Li43MjNhY2IzOTc5NjA1OGQ3ZGI1ZmNiMzQ1ZTA0ODIzYmFmMzli
OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oCkBAIC00NSw2ICs0NSwxOCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3Rv
Y29sIFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkNvbW1pdEFuaW1hdGluZzsKICNlbmRpZgogCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1Blcm1pc3Npb25EZWNpc2lvbikgeworICAgIFdL
UGVybWlzc2lvbkRlY2lzaW9uUHJvbXB0LAorICAgIFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQs
CisgICAgV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBXS01lZGlhQ2FwdHVyZVR5cGUpIHsKKyAgICBXS01lZGlhQ2FwdHVyZVR5cGVDYW1lcmEs
CisgICAgV0tNZWRpYUNhcHR1cmVUeXBlTWljcm9waG9uZSwKKyAgICBXS01lZGlhQ2FwdHVyZVR5
cGVDYW1lcmFBbmRNaWNyb3Bob25lLAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBX
S1VJRGVsZWdhdGUgcHJvdG9jb2wgcHJvdmlkZXMgbWV0aG9kcyBmb3IKICBwcmVzZW50aW5nIG5h
dGl2ZSBVSSBvbiBiZWhhbGYgb2YgYSB3ZWJwYWdlLgogICovCkBAIC0xMjMsNiArMTM1LDE3IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAgKi8KIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OihOU1N0cmlu
ZyAqKXByb21wdCBkZWZhdWx0VGV4dDoobnVsbGFibGUgTlNTdHJpbmcgKilkZWZhdWx0VGV4dCBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1N0cmluZyAqIF9OdWxsYWJsZSByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwog
CisKKy8qISBAYWJzdHJhY3QgQSBkZWxlZ2F0ZSB0byByZXF1ZXN0IHBlcm1pc3Npb24gZm9yIG1p
Y3JvcGhvbmUgYXVkaW8gYW5kIGNhbWVyYSB2aWRlbyBhY2Nlc3MuCisgQHBhcmFtIHdlYlZpZXcg
VGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCisgQHBhcmFtIG9yaWdp
biBUaGUgb3JpZ2luIG9mIHRoZSBwYWdlLgorIEBwYXJhbSBmcmFtZSBJbmZvcm1hdGlvbiBhYm91
dCB0aGUgZnJhbWUgd2hvc2UgSmF2YVNjcmlwdCBpbml0aWF0ZWQgdGhpcyBjYWxsLgorIEBwYXJh
bSB0eXBlIFRoZSB0eXBlIG9mIGNhcHR1cmUgKGNhbWVyYSwgbWljcm9waG9uZSkuCisgQHBhcmFt
IGRlY2lzaW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIGNhbGwgb25jZSB0aGUg
ZGVjaXNpb24gaXMgbWFkZQorIEBkaXNjdXNzaW9uIElmIG5vdCBpbXBsZW1lbnRlZCwgdGhlIHJl
c3VsdCBpcyB0aGUgc2FtZSBhcyBjYWxsaW5nIHRoZSBkZWNpc2lvbkhhbmRsZXIgd2l0aCBXS1Bl
cm1pc3Npb25EZWNpc2lvblByb21wdC4KKyAqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3Vy
aXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
dHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRf
T1NfSVBIT05FCiAKIC8qISBAYWJzdHJhY3QgQWxsb3dzIHlvdXIgYXBwIHRvIGRldGVybWluZSB3
aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gZWxlbWVudCBzaG91bGQgc2hvdyBhIHByZXZpZXcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaAppbmRleCBlNjY1OGU1M2NjM2ExMDU2NzA1ZmJkYWE4NzFiOGRlNGIzMTBkMDg1
Li5mNDQ5ZGNmMzc4NDc1NGMxNWNjMjE1MTc2Y2IwYzFiZDQ0ZmJlYWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRl
LmgKQEAgLTEyMiw3ICsxMjIsNiBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5n
ZWQ6KENHU2l6ZSlzaXplIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkp
OwogLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjAp
KTsKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2Fw
dHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlh
dGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzoo
Qk9PTCl2aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lv
biBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMDAp
LCBpb3MoMTUuMCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBpbmNs
dWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lkICheKShCT09MIGluY2x1ZGVTZW5z
aXRpdmVEZXRhaWxzKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
cXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczooX1dLQ2FwdHVyZURldmljZXMp
ZGV2aWNlcyB1cmw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVV
UkwgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
VVJMOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1l
SWRlbnRpZmllcjooTlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9zKDEwLjMpKTsKQEAgLTEzMCw3ICsx
MjksNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24p
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mbzooaWQpZHJhZ2dpbmdJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMpLCBpb3MoMTEuMCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBj
cmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKilj
b25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5h
dmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMgKil3aW5kb3dG
ZWF0dXJlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tXZWJWaWV3ICp3ZWJWaWV3KSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjAp
KTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoQk9PTCBhbGxvd2VkKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24p
KWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luKilvcmln
aW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAog
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgcmVz
dWx0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9z
KDExLjApKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZWRpdG9yU3Rh
dGVEaWRDaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWVkaXRvclN0YXRlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CkBAIC0yMjMsNyArMjIyLDcgQEAgc3RydWN0IFVJ
RWRnZUluc2V0czsKICBAcGFyYW0gZnJhbWUgVGhlIGZyYW1lIHRoYXQgaW5pdGlhdGVkIHRoZSBy
ZXF1ZXN0LgogIEBwYXJhbSBkZWNpc2lvbkhhbmRsZXIgVGhlIGRlY2lzaW9uIGhhbmRsZXIgdG8g
Y2FsbCBvbmNlIHRoZSBhcHAgaGFzIG1hZGUgaXRzIGRlY2lzaW9uLgogICovCi0tICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0
ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3Jp
Z2luOihXS1NlY3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUlu
Zm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9u
IGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RC
QSkpOwogCiAjZWxzZSAvLyAhVEFSR0VUX09TX0lQSE9ORQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggYTM3YjU2OGE1NmRhOWFmMGYxZjRi
OWFmN2QxNjlmMzUxOGRjYThjMS4uMGU0NDlmMWE0MmFkODg5NzBjYjIwMjIyYWM2ZjkzNTQwNmY0
Y2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aApAQCAtNjgsNiArNjgsMTIgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tNZWRpYVBs
YXliYWNrU3RhdGUpIHsKICAgICBXS01lZGlhUGxheWJhY2tTdGF0ZVN1c3BlbmRlZAogfSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCit0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS01lZGlhQ2FwdHVyZVN0YXRlKSB7CisgICAgV0tNZWRp
YUNhcHR1cmVTdGF0ZU5vbmUsCisgICAgV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSwKKyAgICBX
S01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWQsCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qISBAYWJzdHJhY3QgQSBjb3B5IG9mIHRoZSBj
b25maWd1cmF0aW9uIHdpdGggd2hpY2ggdGhlIHdlYiB2aWV3IHdhcwogIGluaXRpYWxpemVkLiAq
LwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uOwpAQCAtMzU0LDYgKzM2MCwzOSBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBXS01lZGlhUGxheWJhY2tTdGF0ZSkgewogICovCiAtICh2b2lkKXJlcXVl
c3RNZWRpYVBsYXliYWNrU3RhdGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTWVk
aWFQbGF5YmFja1N0YXRlKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisKKy8qISBAYWJzdHJhY3QgVGhlIHN0
YXRlIG9mIGNhbWVyYSBjYXB0dXJlIG9uIGEgd2ViIHBhZ2UuCisgQGRpc2N1c3Npb24gQGxpbmsg
V0tXZWJWaWV3IEAvbGluayBpcyBrZXktdmFsdWUgb2JzZXJ2aW5nIChLVk8pIGNvbXBsaWFudAor
IGZvciB0aGlzIHByb3BlcnR5LgorICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IFdLTWVkaWFDYXB0dXJlU3RhdGUgY2FtZXJhQ2FwdHVyZVN0YXRlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgVGhl
IHN0YXRlIG9mIG1pY3JvcGhvbmUgY2FwdHVyZSBvbiBhIHdlYiBwYWdlLgorIEBkaXNjdXNzaW9u
IEBsaW5rIFdLV2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21w
bGlhbnQKKyBmb3IgdGhpcyBwcm9wZXJ0eS4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBXS01lZGlhQ2FwdHVyZVN0YXRlIG1pY3JvcGhvbmVDYXB0dXJlU3RhdGUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBh
YnN0cmFjdCBTZXQgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2YgYSBXS1dlYlZpZXcuCisgQHBhcmFt
IHN0YXRlIHN0YXRlIHRvIGFwcGx5IGZvciBjYXB0dXJlLgorIEBwYXJhbSBjb21wbGV0aW9uSGFu
ZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0
aW9uIGNhbGwuCisgQGRpc2N1c3Npb24KKyBJZiB2YWx1ZSBpcyBXS01lZGlhQ2FwdHVyZVN0YXRl
Tm9uZSwgdGhpcyB3aWxsIHN0b3AgYW55IGNhbWVyYSBjYXB0dXJlLgorIElmIHZhbHVlIGlzIFdL
TWVkaWFDYXB0dXJlU3RhdGVNdXRlZCwgYW55IGFjdGl2ZSBjYW1lcmEgY2FwdHVyZSB3aWxsIGJl
Y29tZSBtdXRlZC4KKyBJZiB2YWx1ZSBpcyBXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlLCBhbnkg
bXV0ZWQgY2FtZXJhIGNhcHR1cmUgd2lsbCBiZWNvbWUgYWN0aXZlLgorICovCistICh2b2lkKXNl
dENhbWVyYUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXl9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBh
YnN0cmFjdCBTZXQgbWljcm9waG9uZSBjYXB0dXJlIHN0YXRlIG9mIGEgV0tXZWJWaWV3LgorIEBw
YXJhbSBzdGF0ZSBzdGF0ZSB0byBhcHBseSBmb3IgY2FwdHVyZS4KKyBAcGFyYW0gY29tcGxldGlv
bkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBm
dW5jdGlvbiBjYWxsLgorIEBkaXNjdXNzaW9uCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVT
dGF0ZU5vbmUsIHRoaXMgd2lsbCBzdG9wIGFueSBtaWNyb3Bob25lIGNhcHR1cmUuCisgSWYgdmFs
dWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkLCBhbnkgYWN0aXZlIG1pY3JvcGhvbmUgY2Fw
dHVyZSB3aWxsIGJlY29tZSBtdXRlZC4KKyBJZiB2YWx1ZSBpcyBXS01lZGlhQ2FwdHVyZVN0YXRl
QWN0aXZlLCBhbnkgbXV0ZWQgbWljcm9waG9uZSBjYXB0dXJlIHdpbGwgYmVjb21lIGFjdGl2ZS4K
KyAqLworLSAodm9pZClzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOihXS01lZGlhQ2FwdHVyZVN0
YXRlKXN0YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheX051bGxhYmxlKSh2b2lkKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEdldCBhIHNuYXBzaG90IGZvciB0aGUgdmlzaWJs
ZSB2aWV3cG9ydCBvZiBXS1dlYlZpZXcuCiAgQHBhcmFtIHNuYXBzaG90Q29uZmlndXJhdGlvbiBB
biBvYmplY3QgdGhhdCBzcGVjaWZpZXMgaG93IHRoZSBzbmFwc2hvdCBpcyBjb25maWd1cmVkLgog
IEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIHRoZSBzbmFw
c2hvdCBpcyByZWFkeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IGMyZTUyMjAwMjUyNDdhMGRjZmExMDk4MzE1NTZhNjQ1OWJmMGJiNzAu
LmNkMzlhZWE2Zjk3ZThmMTY2MDVkYzI5NzNlMGMyOTQ1YzhjMmEwMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTc1LDYgKzk3NSw2
OCBAQCBzdGF0aWMgV0tNZWRpYVBsYXliYWNrU3RhdGUgdG9XS01lZGlhUGxheWJhY2tTdGF0ZShX
ZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSBtZQogICAgIH0pOwogfQogCistIChXS01lZGlhQ2Fw
dHVyZVN0YXRlKWNhbWVyYUNhcHR1cmVTdGF0ZQoreworICAgIGF1dG8gc3RhdGUgPSBfcGFnZS0+
cmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0tNZWRp
YUNhcHR1cmVTdGF0ZUFjdGl2ZTsKKyAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpIYXNNdXRlZFZpZGVvQ2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdLTWVkaWFD
YXB0dXJlU3RhdGVNdXRlZDsKKyAgICByZXR1cm4gV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmU7Cit9
CisKKy0gKFdLTWVkaWFDYXB0dXJlU3RhdGUpbWljcm9waG9uZUNhcHR1cmVTdGF0ZQoreworICAg
IGF1dG8gc3RhdGUgPSBfcGFnZS0+cmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRl
ICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlKQor
ICAgICAgICByZXR1cm4gV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZTsKKyAgICBpZiAoc3RhdGUg
JiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNNdXRlZEF1ZGlvQ2FwdHVyZURldmljZSkKKyAg
ICAgICAgcmV0dXJuIFdLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZDsKKyAgICByZXR1cm4gV0tNZWRp
YUNhcHR1cmVTdGF0ZU5vbmU7Cit9CisKKy0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0
ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKKworICAgIGlmIChzdGF0ZSA9PSBX
S01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkgeworICAgICAgICBfcGFnZS0+c3RvcE1lZGlhQ2FwdHVy
ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbywgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgYXV0byBtdXRlZFN0YXRlID0gX3BhZ2UtPm11dGVkU3RhdGVGbGFncygpOwor
ICAgIGlmIChzdGF0ZSA9PSBXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlICYmIG11dGVkU3RhdGUg
JiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVJc011dGVkKQorICAgICAgICBt
dXRlZFN0YXRlIF49IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZUlzTXV0ZWQ7
CisgICAgZWxzZSBpZiAoc3RhdGUgPT0gV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkKQorICAgICAg
ICBtdXRlZFN0YXRlID0gV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJlSXNNdXRl
ZDsKKyAgICBfcGFnZS0+c2V0TXV0ZWQobXV0ZWRTdGF0ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0pOworfQorCistICh2b2lkKXNldENhbWVyYUNhcHR1cmVTdGF0ZTooV0tN
ZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfTsKKworICAgIGlmIChzdGF0ZSA9PSBXS01lZGlh
Q2FwdHVyZVN0YXRlTm9uZSkgeworICAgICAgICBfcGFnZS0+c3RvcE1lZGlhQ2FwdHVyZShXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbywgW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byBtdXRlZFN0YXRlID0gX3BhZ2UtPm11dGVkU3RhdGVGbGFncygpOworICAgIGlm
IChzdGF0ZSA9PSBXS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlICYmIG11dGVkU3RhdGUgJiBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVJc011dGVkKQorICAgICAgICBtdXRlZFN0
YXRlIF49IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZUlzTXV0ZWQ7CisgICAg
ZWxzZSBpZiAoc3RhdGUgPT0gV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkKQorICAgICAgICBtdXRl
ZFN0YXRlID0gV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlSXNNdXRlZDsKKyAg
ICBfcGFnZS0+c2V0TXV0ZWQobXV0ZWRTdGF0ZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgIH0pOworfQorCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICop
amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wpYXNBc3luY0Z1bmN0aW9uIHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3Jj
ZVVzZXJHZXN0dXJlIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Xb3JsZDooV0tDb250
ZW50V29ybGQgKil3b3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21w
bGV0aW9uSGFuZGxlciBjb3B5XSk7CkBAIC0xNzQwLDYyICsxODAyLDYgQEAgRk9SX0VBQ0hfUFJJ
VkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVX
KQogICAgIHJldHVybiBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmhhc05lZ290aWF0ZWRMZWdhY3lU
TFMoKTsKIH0KIAotLSAoX1dLTWVkaWFDYXB0dXJlU3RhdGUpX2NhbWVyYUNhcHR1cmVTdGF0ZQot
ewotICAgIGF1dG8gc3RhdGUgPSBfcGFnZS0+cmVwb3J0ZWRNZWRpYVN0YXRlKCk7Ci0gICAgaWYg
KHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2
aWNlKQotICAgICAgICByZXR1cm4gX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmU7Ci0gICAgaWYg
KHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZp
Y2UpCi0gICAgICAgIHJldHVybiBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkOwotICAgIHJldHVy
biBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmU7Ci19Ci0KLS0gKF9XS01lZGlhQ2FwdHVyZVN0YXRl
KV9taWNyb3Bob25lQ2FwdHVyZVN0YXRlCi17Ci0gICAgYXV0byBzdGF0ZSA9IF9wYWdlLT5yZXBv
cnRlZE1lZGlhU3RhdGUoKTsKLSAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpIYXNBY3RpdmVBdWRpb0NhcHR1cmVEZXZpY2UpCi0gICAgICAgIHJldHVybiBfV0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZTsKLSAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpIYXNNdXRlZEF1ZGlvQ2FwdHVyZURldmljZSkKLSAgICAgICAgcmV0dXJuIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlTXV0ZWQ7Ci0gICAgcmV0dXJuIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZTsKLX0K
LQotLSAodm9pZClzZXRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOihfV0tNZWRpYUNhcHR1cmVTdGF0
ZSlzdGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIKLXsKLSAgICBpZiAoc3RhdGUgPT0gX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSB7Ci0gICAg
ICAgIF9wYWdlLT5zdG9wTWVkaWFDYXB0dXJlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
Q2FwdHVyZUtpbmQ6OkF1ZGlvLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAg
ICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvIG11dGVkU3RhdGUgPSBf
cGFnZS0+bXV0ZWRTdGF0ZUZsYWdzKCk7Ci0gICAgaWYgKHN0YXRlID09IF9XS01lZGlhQ2FwdHVy
ZVN0YXRlQWN0aXZlICYmIG11dGVkU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpBdWRp
b0NhcHR1cmVJc011dGVkKQotICAgICAgICBtdXRlZFN0YXRlIF49IFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6OkF1ZGlvQ2FwdHVyZUlzTXV0ZWQ7Ci0gICAgZWxzZSBpZiAoc3RhdGUgPT0gX1dLTWVk
aWFDYXB0dXJlU3RhdGVNdXRlZCkKLSAgICAgICAgbXV0ZWRTdGF0ZSA9IFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZUlzTXV0ZWQ7Ci0gICAgX3BhZ2UtPnNldE11dGVkKG11dGVk
U3RhdGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQotLSAodm9p
ZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KF9XS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGlm
IChzdGF0ZSA9PSBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpIHsKLSAgICAgICAgX3BhZ2UtPnN0
b3BNZWRpYUNhcHR1cmUoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6
VmlkZW8sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gbXV0ZWRTdGF0ZSA9IF9wYWdlLT5tdXRlZFN0
YXRlRmxhZ3MoKTsKLSAgICBpZiAoc3RhdGUgPT0gX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUg
JiYgbXV0ZWRTdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZUlzTXV0
ZWQpCi0gICAgICAgIG11dGVkU3RhdGUgXj0gV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6VmlkZW9D
YXB0dXJlSXNNdXRlZDsKLSAgICBlbHNlIGlmIChzdGF0ZSA9PSBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkKQotICAgICAgICBtdXRlZFN0YXRlID0gV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6Vmlk
ZW9DYXB0dXJlSXNNdXRlZDsKLSAgICBfcGFnZS0+c2V0TXV0ZWQobXV0ZWRTdGF0ZSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9mcmFtZXM6KHZv
aWQgKF4pKF9XS0ZyYW1lVHJlZU5vZGUgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfcGFn
ZS0+Z2V0QWxsRnJhbWVzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVmKCpfcGFnZS5nZXQoKSldIChXZWJLaXQ6OkZyYW1l
VHJlZU5vZGVEYXRhJiYgZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTNmZDJkZjM3NTMzNjA1ZmQ5ZDdi
MDQyNTFmMTMzNTBkMWQxYzVhZC4uMWJhYjZmNDExNDlkYzMyMzc1OGY4YWI0YmE2Y2NmYTk5OGFh
OTJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC00OCwxMiArNDgsNiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLTWVkaWFDYXB0dXJlU3RhdGVEZXByZWNhdGVkKSB7CiAgICAgX1dLTWVkaWFD
YXB0dXJlU3RhdGVEZXByZWNhdGVkTXV0ZWRDYW1lcmEgPSAxIDw8IDMsCiB9IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCi10eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLTWVkaWFDYXB0dXJlU3RhdGUpIHsKLSAgICBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU5vbmUgPSAwLAotICAgIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlID0gMSA8PCAwLAotICAg
IF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWQgPSAxIDw8IDEsCi19IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tNZWRpYU11dGVkU3RhdGUpIHsKICAgICBfV0tNZWRpYU5vbmVNdXRl
ZCA9IDAsCiAgICAgX1dLTWVkaWFBdWRpb011dGVkID0gMSA8PCAwLApAQCAtNjcsMTIgKzYxLDYg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0NhcHR1cmVEZXZpY2VzKSB7CiAg
ICAgX1dLQ2FwdHVyZURldmljZURpc3BsYXkgPSAxIDw8IDIsCiB9IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCi10eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLUGVybWlzc2lvbkRlY2lzaW9uKSB7Ci0gICAgX1dLUGVybWlzc2lvbkRlY2lzaW9uUHJv
bXB0ID0gMSA8PCAwLAotICAgIF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50ID0gMSA8PCAxLAot
ICAgIF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkgPSAxIDw8IDIsCi19IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTIuMDApLCBpb3MoMTUuMCkpOwotCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLU2VsZWN0aW9uQXR0cmlidXRlcykgewogICAgIF9XS1NlbGVjdGlvbkF0dHJpYnV0
ZU5vU2VsZWN0aW9uID0gMCwKICAgICBfV0tTZWxlY3Rpb25BdHRyaWJ1dGVJc0NhcmV0ID0gMSA8
PCAwLApAQCAtMTkzLDE2ICsxODEsNiBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KICovCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX25lZ290aWF0ZWRMZWdhY3lUTFMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKIAotLyohIEBhYnN0cmFjdCBU
aGUgc3RhdGUgb2YgbWVkaWEgY2FwdHVyZSBvbiBhIHdlYiBwYWdlLgotIEBkaXNjdXNzaW9uIEBs
aW5rIFdLV2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlh
bnQKLSBmb3IgdGhpcyBwcm9wZXJ0eS4KLSAqLwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBfV0tNZWRpYUNhcHR1cmVTdGF0ZSBfY2FtZXJhQ2FwdHVyZVN0YXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIF9XS01lZGlhQ2FwdHVyZVN0YXRlIF9taWNyb3Bob25lQ2FwdHVy
ZVN0YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7Ci0KLS0gKHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooX1dLTWVkaWFDYXB0dXJl
U3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7Ci0tICh2b2lkKXNldENhbWVyYUNhcHR1cmVTdGF0ZTooX1dLTWVkaWFDYXB0dXJlU3RhdGUp
c3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0K
IC0gKHZvaWQpX2ZyYW1lczoodm9pZCAoXikoX1dLRnJhbWVUcmVlTm9kZSAqKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogCiAvLyBG
SVhNRTogUmVtb3ZlIHRoZXNlIG9uY2Ugbm9ib2R5IGlzIHVzaW5nIHRoZW0uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAzODZiYjI3ZWRlZDk0M2Vh
MDllNDNiYzJhYmRiYmUwYjgwMDA0ZGNjLi5lNDlmZDEzMTBmZDYzNmVkYTQ1ZmQxMDA4YjQzNzc1
MWY5OGNiM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6VwogICAgIGlmICht
X3VpRGVsZWdhdGUtPm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRm9yT3JpZ2luRGVjaXNpb25IYW5kbGVyKSB7CiAgICAgICAgIGF1dG8gc2VjdXJp
dHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhwYWdl
LnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgICAgIGF1dG8gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlh
dGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgICAgIGF1dG8gZGVjaXNpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29t
cGxldGlvbkhhbmRsZXIsIG51bGxwdHIpLCBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2lu
LT5kYXRhKCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBwYWdlID0gbWFrZVdlYWtQdHIo
cGFnZSldIChfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pIG11dGFibGUgeworICAgICAg
ICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSwgc2VjdXJpdHlPcmln
aW4gPSBzZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwg
cGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpXSAoV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24p
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNDIwLDEzICs0MjAsMTMgQEAgdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXQ6OlcKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgICAgICBjYXNlIF9X
S1Blcm1pc3Npb25EZWNpc2lvblByb21wdDoKKyAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9u
RGVjaXNpb25Qcm9tcHQ6CiAgICAgICAgICAgICAgICAgYWxlcnRGb3JQZXJtaXNzaW9uKCpwYWdl
LCBNZWRpYVBlcm1pc3Npb25SZWFzb246Okdlb2xvY2F0aW9uLCBzZWN1cml0eU9yaWdpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDoKKyAgICAgICAgICAgIGNhc2Ug
V0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDoKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgX1dL
UGVybWlzc2lvbkRlY2lzaW9uRGVueToKKyAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVj
aXNpb25EZW55OgogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTEwNDksNyArMTA0OSw3IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXCiAKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVn
YXRlLT5tX2RlbGVnYXRlLmdldCgpOwogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46aW5p
dGlhdGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlciksIHBhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKV0oX1dLUGVybWlz
c2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi0+ZGF0YSgpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKSwgcGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpXShXS1Blcm1pc3Np
b25EZWNpc2lvbiBkZWNpc2lvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21w
bGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDU4LDEzICsxMDU4
LDEzIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3VsZEFsbG93RGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewotICAgICAgICBjYXNlIF9XS1Blcm1p
c3Npb25EZWNpc2lvblByb21wdDoKKyAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvblBy
b21wdDoKICAgICAgICAgICAgIGFsZXJ0Rm9yUGVybWlzc2lvbigqcGFnZSwgTWVkaWFQZXJtaXNz
aW9uUmVhc29uOjpEZXZpY2VPcmllbnRhdGlvbiwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIF9XS1Bl
cm1pc3Npb25EZWNpc2lvbkdyYW50OgorICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9u
R3JhbnQ6CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnk6CisgICAgICAg
IGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55OgogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwOTcsNyAr
MTA5Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBib29sIHJlc3BvbmRzVG9SZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbiA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RNZWRp
YUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6YXVkaW86dmlkZW86
ZGVjaXNpb25IYW5kbGVyOildOworICAgIGJvb2wgcmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1
cmVQZXJtaXNzaW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZy
YW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOildOwogICAgIGJvb2wgcmVzcG9uZHNUb1JlcXVlc3RV
c2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9y
RGV2aWNlczp1cmw6bWFpbkZyYW1lVVJMOmRlY2lzaW9uSGFuZGxlcjopXTsKIAogICAgIGlmICgh
cmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uICYmICFyZXNwb25kc1RvUmVx
dWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKSB7CkBAIC0xMTA3LDIzICsxMTA3
LDIzIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAKICAgICAvLyBGSVhNRTogUHJvdmlkZSBh
IHNwZWNpZmljIGRlbGVnYXRlIGZvciBkaXNwbGF5IGNhcHR1cmUuCiAgICAgaWYgKCFyZXF1ZXN0
LnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSAmJiByZXNwb25kc1RvUmVxdWVzdE1lZGlhQ2FwdHVy
ZVBlcm1pc3Npb24pIHsKLSAgICAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE1l
ZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTphdWRpbzp2aWRl
bzpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikgeworICAg
ICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
ZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9u
Rm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAg
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0
ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKFdLUGVybWlz
c2lvbkRlY2lzaW9uIGRlY2lzaW9uKSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICAgICAg
ICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKLSAgICAgICAgICAgIGNhc2UgX1dLUGVybWlzc2lvbkRl
Y2lzaW9uUHJvbXB0OgorICAgICAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvblByb21w
dDoKICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5wcm9tcHQoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgX1dLUGVybWlzc2lvbkRlY2lzaW9uR3Jh
bnQ6IHsKKyAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDogewogICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRSZXF1
ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gcHJvdGVjdGVkUmVxdWVzdC0+dmlkZW9EZXZp
Y2VVSURzKCkuZmlyc3QoKSA6IFN0cmluZygpOwogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgYXVkaW9EZXZpY2VVSUQgPSBwcm90ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJlc0F1ZGlvQ2FwdHVy
ZSgpID8gcHJvdGVjdGVkUmVxdWVzdC0+YXVkaW9EZXZpY2VVSURzKCkuZmlyc3QoKSA6IFN0cmlu
ZygpOwogICAgICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmFsbG93KGF1ZGlvRGV2aWNl
VUlELCB2aWRlb0RldmljZVVJRCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnk6CisgICAgICAg
ICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueToKICAgICAgICAgICAgICAgICBwcm90
ZWN0ZWRSZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJN
ZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMTM1LDcgKzExMzUsMTAgQEAgdm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QoV2ViUGFnZVByb3gKICAgICAgICAgRnJhbWVJbmZvRGF0YSBmcmFtZUluZm8geyBmcmFtZS5p
c01haW5GcmFtZSgpLCB7IH0sIHVzZXJNZWRpYU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBmcmFt
ZS5mcmFtZUlEKCksIG1haW5GcmFtZUlEIH07CiAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5m
bz4gZnJhbWVJbmZvV3JhcHBlciA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKGZyYW1lSW5mbyksIGZyYW1lLnBhZ2UoKSkpOwogCi0gICAgICAgIFtkZWxlZ2F0ZSBfd2Vi
VmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXF1ZXN0TWVkaWFDYXB0
dXJlUGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVyKHRvcExldmVsT3JpZ2luKSBpbml0aWF0ZWRC
eUZyYW1lOmZyYW1lSW5mb1dyYXBwZXIuZ2V0KCkgYXVkaW86cmVxdWVzdC5yZXF1aXJlc0F1ZGlv
Q2FwdHVyZSgpIHZpZGVvOnJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKSBkZWNpc2lvbkhh
bmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKKyAgICAgICAgV0tNZWRpYUNhcHR1cmVUeXBl
IHR5cGUgPSBXS01lZGlhQ2FwdHVyZVR5cGVDYW1lcmE7CisgICAgICAgIGlmIChyZXF1ZXN0LnJl
cXVpcmVzQXVkaW9DYXB0dXJlKCkpCisgICAgICAgICAgICB0eXBlID0gcmVxdWVzdC5yZXF1aXJl
c1ZpZGVvQ2FwdHVyZSgpID8gV0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhQW5kTWljcm9waG9uZSA6
IFdLTWVkaWFDYXB0dXJlVHlwZU1pY3JvcGhvbmU7CisgICAgICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3
Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJlcXVlc3RNZWRpYUNhcHR1cmVQ
ZXJtaXNzaW9uRm9yT3JpZ2luOndyYXBwZXIodG9wTGV2ZWxPcmlnaW4pIGluaXRpYXRlZEJ5RnJh
bWU6ZnJhbWVJbmZvV3JhcHBlci5nZXQoKSB0eXBlOnR5cGUgZGVjaXNpb25IYW5kbGVyOmRlY2lz
aW9uSGFuZGxlci5nZXQoKV07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMzVjNGNmNGFmYmUzMTNl
MGEwN2NjYzQ3YzY1MzJhNWU5YjM2ZDg3Li5kZWMwYzE3YWY2MzRiNTIzOTExNzZmZDQ5YWE3N2M0
OTUxY2JkZTQyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDMtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IGdldFVzZXJNZWRpYSBTUEkg
dG8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjM4MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbToKKyAgICAgICAgKC1b
VXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGVGb3JQYXJhbWV0ZXJzIHdlYlZpZXc6cmVxdWVzdE1l
ZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lz
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRV
c2VyTWVkaWFOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtOYXZpZ2F0aW9uV2hpbGVHZXRVc2Vy
TWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVy
ZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFS
ZXByb21wdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU3RyZWFtVHJhY2tEZXRhY2hlZC5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9u
Lm1tOgorICAgICAgICAoLVtEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25VSURlbGVnYXRlIF93
ZWJWaWV3OnJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmln
aW46aW5pdGlhdGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0Rldmlj
ZU9yaWVudGF0aW9uUGVybWlzc2lvblZhbGlkYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpyZXF1ZXN0
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5
RnJhbWU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW06CisgICAgICAgICgtW1NwZWVjaFJlY29n
bml0aW9uVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9y
T3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtHZW9sb2NhdGlvbkRlbGVnYXRlTmV3IF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFEaXNhYmxl
ZC5tbToKKyAgICAgICAgKC1bVXNlck1lZGlhVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJlcXVlc3RNZWRp
YUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
c2VyTWVkaWFTaW11bGF0ZUZhaWxlZFNhbmRib3gubW06CisgICAgICAgICgtW1NpbXVsYXRlRmFp
bGVkU2FuZGJveFVJRGVsZWdhdGUgd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lv
bkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1t
OgorICAgICAgICAoLVtXZWJzaXRlUG9saWNpZXNEZXZpY2VPcmllbnRhdGlvblVJRGVsZWdhdGUg
X3dlYlZpZXc6cmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9y
aWdpbjppbml0aWF0ZWRCeUZyYW1lOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKC1bVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgaW5pdF0pOgorICAgICAgICAoLVtVc2Vy
TWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBzZXRBdWRpb0RlY2lzaW9uOl0pOgorICAgICAgICAoLVtV
c2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBzZXRWaWRlb0RlY2lzaW9uOl0pOgorICAgICAgICAo
LVtVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSB3ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVQ
ZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhhbmRsZXI6
XSk6CisKIDIwMjEtMDMtMjMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5j
b20+CiAKICAgICAgICAgU2VydmljZSB3b3JrZXIgbG9hZHMgYXJlIG5vdCBtYXJrZWQgYXMgYXBw
LWJvdW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRV
c2VyTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVk
aWEubW0KaW5kZXggOTZmNjYyYTFiZDY3ZmJjMmIxODZjNjgyMjVhY2QzMDViMDA3NzY0OS4uNzRm
YWY3OGUzOWQzNGZiZTgxMjdmMGEzYzdjMDMyODI2MDM3MTc2NCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQpAQCAtNTAsMTEgKzUwLDEx
IEBAIHN0YXRpYyBib29sIGRvbmU7CiAKIEBpbnRlcmZhY2UgVXNlck1lZGlhQ2FwdHVyZVVJRGVs
ZWdhdGVGb3JQYXJhbWV0ZXJzIDogTlNPYmplY3Q8V0tVSURlbGVnYXRlPgogLy8gV0tVSURlbGVn
YXRlCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNh
cHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRp
YXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86
KEJPT0wpdmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNp
b24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1l
IHR5cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
V0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcjsKIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFVzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlRm9yUGFyYW1ldGVycwot
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJl
UGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRC
eUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihCT09M
KXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRl
Y2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgeworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5
T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgdHlw
ZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Bl
cm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIHsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEob3JpZ2luLnByb3RvY29sLCBAImh0dHAiKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
b3JpZ2luLmhvc3QsIEAiMTI3LjAuMC4xIik7CiAgICAgRVhQRUNUX0VRKG9yaWdpbi5wb3J0LCA5
MDkwVSk7CkBAIC02NSwxMSArNjUsMTAgQEAgc3RhdGljIGJvb2wgZG9uZTsKICAgICBFWFBFQ1Rf
RkFMU0UoZnJhbWUuaXNNYWluRnJhbWUpOwogICAgIEVYUEVDVF9UUlVFKGZyYW1lLndlYlZpZXcg
PT0gd2ViVmlldyk7CiAKLSAgICBFWFBFQ1RfRkFMU0UoYXVkaW8pOwotICAgIEVYUEVDVF9UUlVF
KHZpZGVvKTsKKyAgICBFWFBFQ1RfRVEodHlwZSwgV0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhKTsK
IAogICAgIGRvbmUgPSB0cnVlOwotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVj
aXNpb25HcmFudCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRlY2lzaW9uR3Jh
bnQpOwogfQogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQppbmRleCA0MDNmMGE2MjEzYzRiODdi
MTY4YzdiYjI0MDZkNmYzZDViZGU5ZTZjLi4xMmNhNzQ2MmQ1YWJjZGJjZGQxMThlZTYzYmU1ZjM1
ODExOTVjNjk5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9H
ZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBv
cnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgpAQCAtNDIsMTcgKzQy
LDE3IEBAIHN0YXRpYyBib29sIG9rVG9Qcm9jZWVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91
bGRSZWxlYXNlSW5FbnVtZXJhdGUgPSBmYWxzZTsKIAogQGludGVyZmFjZSBOYXZpZ2F0aW9uV2hp
bGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIDogTlNPYmplY3Q8V0tVSURl
bGVnYXRlPgotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVk
aWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBp
bml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZp
ZGVvOihCT09MKXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRl
Y2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXI7CistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdL
U2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXI7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBm
cmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5k
bGVyOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlh
UHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZQotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1
ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihCT09MKXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlz
c2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lz
aW9uSGFuZGxlcgogewogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXV07CiAgICAg
W3dlYlZpZXcgcmVsZWFzZV07CiAgICAgb2tUb1Byb2NlZWQgPSB0cnVlOwotICAgIGRlY2lzaW9u
SGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CisgICAgZGVjaXNpb25IYW5kbGVy
KFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOwogfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1
cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5T
VUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJp
bmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFSZXByb21wdC5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1t
CmluZGV4IDk0MTUxNDBkYzBhZGQyM2IzNmQ1MzRhYjA5MTQyY2YyMjBhYWE0ODEuLjA3ZjU3ZDAx
MjVlMDQ5OTIwMTViMzBmMTY4NmRkYTNmZTIwNTBmYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tCkBAIC0x
MDYsOCArMTA2LDggQEAgVEVTVChXZWJLaXQyLCBHZXRVc2VyTWVkaWFSZXByb21wdEFmdGVyQXVk
aW9WaWRlb0JlaW5nRGVuaWVkKQogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkID0gWUVTOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tHZXRVc2VyTWVkaWFS
ZXByb21wdFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
W2RlbGVnYXRlIHNldEF1ZGlvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnRdOwot
ICAgIFtkZWxlZ2F0ZSBzZXRWaWRlb0RlY2lzaW9uOl9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnld
OworICAgIFtkZWxlZ2F0ZSBzZXRBdWRpb0RlY2lzaW9uOldLUGVybWlzc2lvbkRlY2lzaW9uR3Jh
bnRdOworICAgIFtkZWxlZ2F0ZSBzZXRWaWRlb0RlY2lzaW9uOldLUGVybWlzc2lvbkRlY2lzaW9u
RGVueV07CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0
dXJlIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRp
YVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9NZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0KaW5kZXggMDkyNDY5NDdmYmQ4MGYwMjNjMDAw
MzBhMWM0ZmJkMjdlN2MzZTAzYS4uODczNmVhNDY0OWQyYjRhYTdhMTJjNmNlMDVlNzJhMWRjN2Qz
NGU5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFT
dHJlYW1UcmFja0RldGFjaGVkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L01lZGlhU3RyZWFtVHJhY2tEZXRhY2hlZC5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogCiBzdGF0aWMgYm9vbCBo
YXNSZWNlaXZlZENvcnJlY3RDYXB0dXJlU3RhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
CmluZGV4IDUzODJiN2Q1ZmFjMDMxNDRlMWUzM2U5MmQxNzc3NTQwMmJmNDg0YzcuLjhiOWRmYWFj
Njk5ODk3MDIxZWU0ZDM2N2E2NzlhZTAzZjE0MTAyMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpA
QCAtNzYsOSArNzYsOSBAQCBGdW5jdGlvbjxib29sKCk+IF9kZWNpc2lvbkhhbmRsZXI7CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tT
ZWN1cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopcmVx
dWVzdGluZ0ZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lz
aW9uKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
cmVxdWVzdGluZ0ZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVj
aXNpb24pKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihfZGVjaXNpb25I
YW5kbGVyKCkgPyBfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCA6IF9XS1Blcm1pc3Npb25EZWNp
c2lvbkRlbnkpOworICAgIGRlY2lzaW9uSGFuZGxlcihfZGVjaXNpb25IYW5kbGVyKCkgPyBXS1Bl
cm1pc3Npb25EZWNpc2lvbkdyYW50IDogV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKICAgICBh
c2tlZENsaWVudEZvclBlcm1pc3Npb24gPSB0cnVlOwogfQogCkBAIC0zODYsMTIgKzM4NiwxMiBA
QCBGdW5jdGlvbjx2b2lkKFdLU2VjdXJpdHlPcmlnaW4qLCBXS0ZyYW1lSW5mbyopPiBfdmFsaWRh
dGlvbkhhbmRsZXI7CiAgICAgX3ZhbGlkYXRpb25IYW5kbGVyID0gV1RGTW92ZSh2YWxpZGF0aW9u
SGFuZGxlcik7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVx
dWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24p
KWRlY2lzaW9uSGFuZGxlciB7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdL
U2VjdXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZy
YW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNp
b24pKWRlY2lzaW9uSGFuZGxlciB7CiAgICAgaWYgKF92YWxpZGF0aW9uSGFuZGxlcikKICAgICAg
ICAgX3ZhbGlkYXRpb25IYW5kbGVyKG9yaWdpbiwgZnJhbWUpOwogCiAgICAgYXNrZWRDbGllbnRG
b3JQZXJtaXNzaW9uICA9IHRydWU7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25E
ZWNpc2lvbkdyYW50KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25H
cmFudCk7CiB9CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tCmluZGV4IDM3NmJiN2ZmMmU4Njcz
ZjBkMzc2ZDZhZmJiYjc5NTJlOTMxOWFjMGMuLjQ1Zjg4NmU4Mjk0NGMwZGQ0NzlmMjRkMWVmYTVi
MGRjMmY0NTZmNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQpAQCAtNDUsNyArNDUsNyBAQCBzdGF0
aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gY3JlYXRlZFdlYlZpZXc7CiAKIEBpbnRlcmZhY2UgU3Bl
ZWNoUmVjb2duaXRpb25VSURlbGVnYXRlIDogTlNPYmplY3Q8V0tVSURlbGVnYXRlUHJpdmF0ZT4K
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcjsKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25G
b3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tG
cmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzooQk9PTCl2aWRlbyBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVj
aXNpb25IYW5kbGVyOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgdHlwZTooV0tNZWRpYUNh
cHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNp
c2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOwogLSAoV0tXZWJWaWV3ICopd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2lu
ZG93RmVhdHVyZXMgKil3aW5kb3dGZWF0dXJlczsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgbWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2U6KF9XS01lZGlhQ2FwdHVyZVN0
YXRlRGVwcmVjYXRlZClzdGF0ZTsKIEBlbmQKQEAgLTU3LDEwICs1NywxMCBAQCBzdGF0aWMgUmV0
YWluUHRyPFdLV2ViVmlldz4gY3JlYXRlZFdlYlZpZXc7CiAgICAgZGVjaXNpb25IYW5kbGVyKHNo
b3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QpOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wpdmlkZW8gZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxl
cgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1
cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRl
ZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgdHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5
cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lv
bikpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IHRydWU7Ci0g
ICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QgPyBfV0tQZXJt
aXNzaW9uRGVjaXNpb25HcmFudCA6IF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOworICAgIGRl
Y2lzaW9uSGFuZGxlcihzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0ID8gV0tQZXJtaXNzaW9u
RGVjaXNpb25HcmFudCA6IFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7CiB9CiAKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZUF1dGhvcml6
YXRpb246IChfV0tDYXB0dXJlRGV2aWNlcylkZXZpY2VzIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoQk9PTCkpZGVjaXNpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMjQyZjc1MGU1YzVmOWNkNjk0MDA2
MWYwNzRlYTU2ZjZlNjMwNGRhNC4uZjVmZDc4ZWE3MDUzMjg1ODZkODIzZjkzMWY5MDlmY2U0NTRl
OTAwMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
SURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VUlEZWxlZ2F0ZS5tbQpAQCAtMjE4LDcgKzIxOCw3IEBAIFRFU1QoV2ViS2l0LCBHZW9sb2NhdGlv
blBlcm1pc3Npb24pCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBHZW9sb2NhdGlvbkRlbGVnYXRl
TmV3Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0
ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgeworLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZToo
V0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lv
bkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgewogICAgIEVYUEVDVF9XS19TVFJF
UShvcmlnaW4ucHJvdG9jb2wsIEAiaHR0cHMiKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEob3JpZ2lu
Lmhvc3QsIEAiMTI3LjAuMC4xIik7CiAgICAgRVhQRUNUX0VRKG9yaWdpbi5wb3J0LCA5MDkwKTsK
QEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdlYktpdCwgR2VvbG9jYXRpb25QZXJtaXNzaW9uKQog
ICAgIEVYUEVDVF9UUlVFKGZyYW1lLndlYlZpZXcgPT0gd2ViVmlldyk7CiAKICAgICBkb25lICA9
IHRydWU7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsK
KyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CiB9CiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNl
ck1lZGlhRGlzYWJsZWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1VzZXJNZWRpYURpc2FibGVkLm1tCmluZGV4IGE2YmI3OWM0NWY0OTdlNzFkMDdjODExMzM2N2Y0
ZTFhMjk4NGNmOTkuLjU5ZGYwZDVjOTgxNjdjZDRiNmUwZWE2ZWUzNzEyMGM4OGEwZWNmNjEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlh
RGlzYWJsZWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
c2VyTWVkaWFEaXNhYmxlZC5tbQpAQCAtNTksMTYgKzU5LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8
V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVzc2FnZTsKIAogQGltcGxlbWVudGF0aW9uIFVz
ZXJNZWRpYVVJRGVsZWdhdGUKIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdp
biAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihC
T09MKWF1ZGlvIHZpZGVvOihCT09MKXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dL
UGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZv
ck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0Zy
YW1lSW5mbyAqKWZyYW1lIHR5cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFu
ZGxlcgogewogICAgIHdhc1Byb21wdGVkID0gdHJ1ZTsKIAotICAgIGlmICghYXVkaW8gJiYgIXZp
ZGVvKSB7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJt
aXNzaW9uRGVjaXNpb25HcmFudCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRl
Y2lzaW9uR3JhbnQpOwogfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGluY2x1ZGVTZW5zaXRpdmVNZWRpYURldmljZURldGFpbHM6KHZvaWQgKF4pKEJPT0wgaW5jbHVk
ZVNlbnNpdGl2ZURldGFpbHMpKWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFTaW11bGF0ZUZhaWxlZFNhbmRi
b3gubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYVNp
bXVsYXRlRmFpbGVkU2FuZGJveC5tbQppbmRleCAyODM5MDc0MTY1Mzk1Y2Q2MmVkYjk4OWY0Mjk4
OGVkNjE1YjgyZDdiLi4zNjcyOGYyMWQzYTJhODhjZTU0ZGYxNTQ3OTE0YThmMjhkYjEwMDcxIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRp
YVNpbXVsYXRlRmFpbGVkU2FuZGJveC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJNZWRpYVNpbXVsYXRlRmFpbGVkU2FuZGJveC5tbQpAQCAtNTksMTYg
KzU5LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVz
c2FnZTsKIAogQGltcGxlbWVudGF0aW9uIFNpbXVsYXRlRmFpbGVkU2FuZGJveFVJRGVsZWdhdGUK
IAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0
dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0
ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihC
T09MKXZpZGVvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9u
IGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5
cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQ
ZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcgogewogICAgIHdhc1By
b21wdGVkID0gdHJ1ZTsKIAotICAgIGlmICghYXVkaW8gJiYgIXZpZGVvKSB7Ci0gICAgICAgIGRl
Y2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFu
dCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOwogfQog
CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGluY2x1ZGVTZW5zaXRpdmVN
ZWRpYURldmljZURldGFpbHM6KHZvaWQgKF4pKEJPT0wgaW5jbHVkZVNlbnNpdGl2ZURldGFpbHMp
KWRlY2lzaW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQppbmRleCAxNzgwYzYyZmRmMTAxYzE1NGVh
ZjQyYzNmYWI2NjhmMWYwZWY1NTNhLi5iZWYyNDI4OGFlMGVmZmVhMTQ0NmE4ZmNhMWFhOGI4ZTcy
NzZiZDU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVQb2xpY2llcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTQ4MSwxMCArMTQ4MSwxMCBAQCBzdGF0aWMg
Ym9vbCBjYWxsZWRTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzRGVs
ZWdhdGUgPSBmYWxzZTsKIAogQGltcGxlbWVudGF0aW9uIFdlYnNpdGVQb2xpY2llc0RldmljZU9y
aWVudGF0aW9uVUlEZWxlZ2F0ZQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46
KFdLU2VjdXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAq
KXJlcXVlc3RpbmdGcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25E
ZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmln
aW46KFdLU2VjdXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5m
byAqKXJlcXVlc3RpbmdGcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lv
bkRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBjYWxsZWRTaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzRGVsZWdhdGUgPSB0cnVlOwotICAgIGRlY2lzaW9u
SGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CisgICAgZGVjaXNpb25IYW5kbGVy
KFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmgKaW5kZXgg
N2E5YTE1ZGFkYjk1ZGViNTc3ZTNlNDg1MTQ4MTUyNzczYWUzMGI5Yi4uMmMxZmU5NmRmNWRlYjc2
NjU2MDNmNDJhYmQ5M2M3ODhmZTJmN2IwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaApAQCAtMjQsMjcgKzI0LDI3
IEBACiAgKi8KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW1wb3J0IDxXZWJLaXQvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZS5oPgogCiBA
aW50ZXJmYWNlIFVzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIDogTlNPYmplY3Q8V0tVSURlbGVn
YXRlPiB7CiAgICAgYm9vbCBfd2FzUHJvbXB0ZWQ7CiAgICAgaW50IF9udW1iZXJPZlByb21wdHM7
Ci0gICAgX1dLUGVybWlzc2lvbkRlY2lzaW9uIF9hdWRpb0RlY2lzaW9uOwotICAgIF9XS1Blcm1p
c3Npb25EZWNpc2lvbiBfdmlkZW9EZWNpc2lvbjsKKyAgICBXS1Blcm1pc3Npb25EZWNpc2lvbiBf
YXVkaW9EZWNpc2lvbjsKKyAgICBXS1Blcm1pc3Npb25EZWNpc2lvbiBfdmlkZW9EZWNpc2lvbjsK
IH0KIAogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCB3YXNQcm9tcHRlZDsKIEBwcm9wZXJ0eSBp
bnQgbnVtYmVyT2ZQcm9tcHRzOwotQHByb3BlcnR5IF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNp
c2lvbjsKK0Bwcm9wZXJ0eSBXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbjsKIAogLSAodm9p
ZCl3YWl0VW50aWxQcm9tcHRlZDsKIC0odm9pZClyZXNldFdhc1Byb21wdGVkOwogCi0tKHZvaWQp
c2V0QXVkaW9EZWNpc2lvbjooX1dLUGVybWlzc2lvbkRlY2lzaW9uKWRlY2lzaW9uOwotLSh2b2lk
KXNldFZpZGVvRGVjaXNpb246KF9XS1Blcm1pc3Npb25EZWNpc2lvbilkZWNpc2lvbjsKKy0odm9p
ZClzZXRBdWRpb0RlY2lzaW9uOihXS1Blcm1pc3Npb25EZWNpc2lvbilkZWNpc2lvbjsKKy0odm9p
ZClzZXRWaWRlb0RlY2lzaW9uOihXS1Blcm1pc3Npb25EZWNpc2lvbilkZWNpc2lvbjsKIAogLy8g
V0tVSURlbGVnYXRlCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVk
aW8gdmlkZW86KEJPT0wpdmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNz
aW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdp
bjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5m
byAqKWZyYW1lIHR5cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcjsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yVVJMOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1l
VVJMIGZyYW1lSWRlbnRpZmllcjooTlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lv
bkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLm1tCmluZGV4IGVhNTk1M2E4MjJhMTkyZmU4OWVl
ZjA4Y2QxMWZlNzQ2MWFiN2I4NTEuLmEyOTRkMTBhY2NiYzkwMWJlZjFjZjI1ZDIzODM5ZWRlOWIz
Y2E1ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZVVJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlVUlEZWxlZ2F0ZS5tbQpAQCAtMzksOCArMzksOCBAQAogICAgIGlmIChzZWxmICE9
IG5pbCkgewogICAgICAgICBfd2FzUHJvbXB0ZWQgPSBmYWxzZTsKICAgICAgICAgX251bWJlck9m
UHJvbXB0cyA9IDA7Ci0gICAgICAgIF9hdWRpb0RlY2lzaW9uID0gX1dLUGVybWlzc2lvbkRlY2lz
aW9uR3JhbnQ7Ci0gICAgICAgIF92aWRlb0RlY2lzaW9uID0gX1dLUGVybWlzc2lvbkRlY2lzaW9u
R3JhbnQ7CisgICAgICAgIF9hdWRpb0RlY2lzaW9uID0gV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFu
dDsKKyAgICAgICAgX3ZpZGVvRGVjaXNpb24gPSBXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50Owog
ICAgIH0KIAogICAgIHJldHVybiBzZWxmOwpAQCAtNTksMzQgKzU5LDM4IEBACiAgICAgX3dhc1By
b21wdGVkID0gZmFsc2U7CiB9CiAKLS0odm9pZClzZXRBdWRpb0RlY2lzaW9uOihfV0tQZXJtaXNz
aW9uRGVjaXNpb24pZGVjaXNpb24geworLSh2b2lkKXNldEF1ZGlvRGVjaXNpb246KFdLUGVybWlz
c2lvbkRlY2lzaW9uKWRlY2lzaW9uIHsKICAgICBfYXVkaW9EZWNpc2lvbiA9IGRlY2lzaW9uOwog
fQogCi0tKHZvaWQpc2V0VmlkZW9EZWNpc2lvbjooX1dLUGVybWlzc2lvbkRlY2lzaW9uKWRlY2lz
aW9uIHsKKy0odm9pZClzZXRWaWRlb0RlY2lzaW9uOihXS1Blcm1pc3Npb25EZWNpc2lvbilkZWNp
c2lvbiB7CiAgICAgX3ZpZGVvRGVjaXNpb24gPSBkZWNpc2lvbjsKIH0KIAotLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZv
ck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0Zy
YW1lSW5mbyAqKWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihCT09MKXZpZGVvIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNp
c2lvbkhhbmRsZXIgeworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3Jp
Z2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgdHlwZTooV0tNZWRpYUNh
cHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNp
c2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIHsKICAgICArK19udW1iZXJPZlByb21wdHM7
CiAgICAgX3dhc1Byb21wdGVkID0gdHJ1ZTsKLSAgICBpZiAoYXVkaW8gJiYgX2F1ZGlvRGVjaXNp
b24gPT0gX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSkgewotICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdLTWVkaWFDYXB0dXJlVHlwZUNhbWVyYToKKyAgICAgICAg
aWYgKF92aWRlb0RlY2lzaW9uID09IFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueSkgeworICAgICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXS01lZGlh
Q2FwdHVyZVR5cGVNaWNyb3Bob25lOgorICAgICAgICBpZiAoX2F1ZGlvRGVjaXNpb24gPT0gV0tQ
ZXJtaXNzaW9uRGVjaXNpb25EZW55KSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tQ
ZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdLTWVkaWFDYXB0dXJlVHlwZUNhbWVyYUFuZE1pY3Jv
cGhvbmU6CisgICAgICAgIGlmIChfYXVkaW9EZWNpc2lvbiA9PSBXS1Blcm1pc3Npb25EZWNpc2lv
bkRlbnkgfHwgX3ZpZGVvRGVjaXNpb24gPT0gV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KSB7Cisg
ICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
aWYgKHZpZGVvICYmIF92aWRlb0RlY2lzaW9uID09IF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkp
IHsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChhdWRpbyAmJiBfYXVkaW9EZWNpc2lvbiA9
PSBfV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQpIHsKLSAgICAgICAgZGVjaXNpb25IYW5kbGVy
KF9XS1Blcm1pc3Npb25EZWNpc2lvblByb21wdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKHZpZGVvICYmIF92aWRlb0RlY2lzaW9uID09IF9XS1Blcm1pc3Npb25EZWNpc2lvblBy
b21wdCkgewotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uUHJv
bXB0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVy
bWlzc2lvbkRlY2lzaW9uR3JhbnQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25E
ZWNpc2lvbkdyYW50KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JVUkw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVS
TDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1l
SWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09M
IGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424530</attachid>
            <date>2021-03-28 23:57:12 -0700</date>
            <delta_ts>2021-03-29 09:33:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223806-20210329085709.patch</filename>
            <type>text/plain</type>
            <size>51378</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzODhkNWE2MzgzNGM4Nzk2
OGM5ZDkwNDc4NWE1NjBmZWNjNzViMWUuLjljZjM3M2UyYjdiZDQ0MTU0YTRkN2NmZmEyMDIzODc1
ZGY2ZDExMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDMtMjYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IGdl
dFVzZXJNZWRpYSBTUEkgdG8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM4MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgTW92ZSBTUEkgdG8gQVBJLgorICAgICAgICBVcGRhdGUgZGVsZWdhdGUgdG8g
dGFrZSBhbiBlbnVtZXJhdGlvbiBpbnN0ZWFkIG9mIHR3byBib29sZWFucy4KKyAgICAgICAgTWFr
ZSBzZXR0ZXJzIGNvbXBsZXRpb24gaGFuZGxlcnMgbnVsbGFibGUuCisgICAgICAgIENvdmVyZWQg
YnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
Y2FtZXJhQ2FwdHVyZVN0YXRlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBtaWNyb3Bob25lQ2Fw
dHVyZVN0YXRlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRNaWNyb3Bob25lQ2FwdHVyZVN0
YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Q2FtZXJh
Q2FwdHVyZVN0YXRlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KToKKwogMjAyMS0wMy0yNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGZyb20g
UE9SVEFMTE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04gdG8gZmlsdGVyaW5nIGlu
dGVyZmFjZXMgaW4gTmV0d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlLmgKaW5kZXggY2FkODdmM2VmMmFiOTNkOTNhNzRjZWMw
YzM0YjQ3YzY5NWRlNmJjNi4uNzIzYWNiMzk3OTYwNThkN2RiNWZjYjM0NWUwNDgyM2JhZjM5Yjlj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGUuaApAQCAtNDUsNiArNDUsMTggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBwcm90b2Nv
bCBVSUNvbnRleHRNZW51SW50ZXJhY3Rpb25Db21taXRBbmltYXRpbmc7CiAjZW5kaWYKIAordHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tQZXJtaXNzaW9uRGVjaXNpb24pIHsKKyAgICBXS1Bl
cm1pc3Npb25EZWNpc2lvblByb21wdCwKKyAgICBXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50LAor
ICAgIFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueSwKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgV0tNZWRpYUNhcHR1cmVUeXBlKSB7CisgICAgV0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhLAor
ICAgIFdLTWVkaWFDYXB0dXJlVHlwZU1pY3JvcGhvbmUsCisgICAgV0tNZWRpYUNhcHR1cmVUeXBl
Q2FtZXJhQW5kTWljcm9waG9uZSwKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tV
SURlbGVnYXRlIHByb3RvY29sIHByb3ZpZGVzIG1ldGhvZHMgZm9yCiAgcHJlc2VudGluZyBuYXRp
dmUgVUkgb24gYmVoYWxmIG9mIGEgd2VicGFnZS4KICAqLwpAQCAtMTIzLDYgKzEzNSwxNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdHJpbmcg
Kilwcm9tcHQgZGVmYXVsdFRleHQ6KG51bGxhYmxlIE5TU3RyaW5nICopZGVmYXVsdFRleHQgaW5p
dGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKiBfTnVsbGFibGUgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIAor
CisvKiEgQGFic3RyYWN0IEEgZGVsZWdhdGUgdG8gcmVxdWVzdCBwZXJtaXNzaW9uIGZvciBtaWNy
b3Bob25lIGF1ZGlvIGFuZCBjYW1lcmEgdmlkZW8gYWNjZXNzLgorIEBwYXJhbSB3ZWJWaWV3IFRo
ZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgorIEBwYXJhbSBvcmlnaW4g
VGhlIG9yaWdpbiBvZiB0aGUgcGFnZS4KKyBAcGFyYW0gZnJhbWUgSW5mb3JtYXRpb24gYWJvdXQg
dGhlIGZyYW1lIHdob3NlIEphdmFTY3JpcHQgaW5pdGlhdGVkIHRoaXMgY2FsbC4KKyBAcGFyYW0g
dHlwZSBUaGUgdHlwZSBvZiBjYXB0dXJlIChjYW1lcmEsIG1pY3JvcGhvbmUpLgorIEBwYXJhbSBk
ZWNpc2lvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byBjYWxsIG9uY2UgdGhlIGRl
Y2lzaW9uIGlzIG1hZGUKKyBAZGlzY3Vzc2lvbiBJZiBub3QgaW1wbGVtZW50ZWQsIHRoZSByZXN1
bHQgaXMgdGhlIHNhbWUgYXMgY2FsbGluZyB0aGUgZGVjaXNpb25IYW5kbGVyIHdpdGggV0tQZXJt
aXNzaW9uRGVjaXNpb25Qcm9tcHQuCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5
cGU6KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQ
ZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09T
X0lQSE9ORQogCiAvKiEgQGFic3RyYWN0IEFsbG93cyB5b3VyIGFwcCB0byBkZXRlcm1pbmUgd2hl
dGhlciBvciBub3QgdGhlIGdpdmVuIGVsZW1lbnQgc2hvdWxkIHNob3cgYSBwcmV2aWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmgKaW5kZXggZTY2NThlNTNjYzNhMTA1NjcwNWZiZGFhODcxYjhkZTRiMzEwZDA4NS4u
ZjQ0OWRjZjM3ODQ3NTRjMTVjYzIxNTE3NmNiMGMxYmQ0NGZiZWFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CkBAIC0xMjIsNyArMTIyLDYgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIAogLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2Vk
OihDR1NpemUpc2l6ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsK
IC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7
Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1
cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRl
ZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJP
T0wpdmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24g
ZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjAwKSwg
aW9zKDE1LjApKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVk
ZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoXikoQk9PTCBpbmNsdWRlU2Vuc2l0
aXZlRGV0YWlscykpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUp
LCBpb3MoMTMuMCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6KF9XS0NhcHR1cmVEZXZpY2VzKWRl
dmljZXMgdXJsOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJM
IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVS
TDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlk
ZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSk7CkBAIC0xMzAsNyArMTI5
LDcgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JE
cmFnZ2luZ0luZm86KGlkKWRyYWdnaW5nSW5mbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
KSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3Jl
YXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZp
Z2F0aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVh
dHVyZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2ViVmlldyAqd2ViVmlldykpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7
CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKEJPT0wgYWxsb3dlZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7Ci0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJp
dHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlk
ZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVz
dEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiopb3JpZ2lu
IGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihX
S0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIHJlc3Vs
dCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygx
MS4wKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGVkaXRvclN0YXRl
RGlkQ2hhbmdlOihOU0RpY3Rpb25hcnkgKillZGl0b3JTdGF0ZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwpAQCAtMjIzLDcgKzIyMiw3IEBAIHN0cnVjdCBVSUVk
Z2VJbnNldHM7CiAgQHBhcmFtIGZyYW1lIFRoZSBmcmFtZSB0aGF0IGluaXRpYXRlZCB0aGUgcmVx
dWVzdC4KICBAcGFyYW0gZGVjaXNpb25IYW5kbGVyIFRoZSBkZWNpc2lvbiBoYW5kbGVyIHRvIGNh
bGwgb25jZSB0aGUgYXBwIGhhcyBtYWRlIGl0cyBkZWNpc2lvbi4KICAqLwotLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVk
QnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9X
S1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdp
bjooV0tTZWN1cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZv
ICopZnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBk
ZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEp
KTsKIAogI2Vsc2UgLy8gIVRBUkdFVF9PU19JUEhPTkUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IGEzN2I1NjhhNTZkYTlhZjBmMWY0Yjlh
ZjdkMTY5ZjM1MThkY2E4YzEuLjFmMWFkM2NmMTE0ZmEwZmI3NGFmNzI1ODU3ODhlZTAwOTUzNDhh
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgK
QEAgLTY4LDYgKzY4LDEyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTWVkaWFQbGF5
YmFja1N0YXRlKSB7CiAgICAgV0tNZWRpYVBsYXliYWNrU3RhdGVTdXNwZW5kZWQKIH0gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAordHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgV0tNZWRpYUNhcHR1cmVTdGF0ZSkgeworICAgIFdLTWVkaWFD
YXB0dXJlU3RhdGVOb25lLAorICAgIFdLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmUsCisgICAgV0tN
ZWRpYUNhcHR1cmVTdGF0ZU11dGVkLAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEEgY29weSBvZiB0aGUgY29u
ZmlndXJhdGlvbiB3aXRoIHdoaWNoIHRoZSB3ZWIgdmlldyB3YXMKICBpbml0aWFsaXplZC4gKi8K
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbjsKQEAgLTM1NCw2ICszNjAsMzkgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgV0tNZWRpYVBsYXliYWNrU3RhdGUpIHsKICAqLwogLSAodm9pZClyZXF1ZXN0
TWVkaWFQbGF5YmFja1N0YXRlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS01lZGlh
UGxheWJhY2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorCisvKiEgQGFic3RyYWN0IFRoZSBzdGF0
ZSBvZiBjYW1lcmEgY2FwdHVyZSBvbiBhIHdlYiBwYWdlLgorIEBkaXNjdXNzaW9uIEBsaW5rIFdL
V2ViVmlldyBAL2xpbmsgaXMga2V5LXZhbHVlIG9ic2VydmluZyAoS1ZPKSBjb21wbGlhbnQKKyBm
b3IgdGhpcyBwcm9wZXJ0eS4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBX
S01lZGlhQ2FwdHVyZVN0YXRlIGNhbWVyYUNhcHR1cmVTdGF0ZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFRoZSBz
dGF0ZSBvZiBtaWNyb3Bob25lIGNhcHR1cmUgb24gYSB3ZWIgcGFnZS4KKyBAZGlzY3Vzc2lvbiBA
bGluayBXS1dlYlZpZXcgQC9saW5rIGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxp
YW50CisgZm9yIHRoaXMgcHJvcGVydHkuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgV0tNZWRpYUNhcHR1cmVTdGF0ZSBtaWNyb3Bob25lQ2FwdHVyZVN0YXRlIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJz
dHJhY3QgU2V0IGNhbWVyYSBjYXB0dXJlIHN0YXRlIG9mIGEgV0tXZWJWaWV3LgorIEBwYXJhbSBz
dGF0ZSBTdGF0ZSB0byBhcHBseSBmb3IgY2FwdHVyZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2UgYWZ0ZXIgdGhlIGNhbWVyYSBzdGF0ZSBoYXMgYmVlbiBjaGFu
Z2VkLgorIEBkaXNjdXNzaW9uCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUs
IHRoaXMgd2lsbCBzdG9wIGFueSBjYW1lcmEgY2FwdHVyZS4KKyBJZiB2YWx1ZSBpcyBXS01lZGlh
Q2FwdHVyZVN0YXRlTXV0ZWQsIGFueSBhY3RpdmUgY2FtZXJhIGNhcHR1cmUgd2lsbCBiZWNvbWUg
bXV0ZWQuCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSwgYW55IG11dGVk
IGNhbWVyYSBjYXB0dXJlIHdpbGwgYmVjb21lIGFjdGl2ZS4KKyAqLworLSAodm9pZClzZXRDYW1l
cmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF5fTnVsbGFibGUpKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJh
Y3QgU2V0IG1pY3JvcGhvbmUgY2FwdHVyZSBzdGF0ZSBvZiBhIFdLV2ViVmlldy4KKyBAcGFyYW0g
c3RhdGUgc3RhdGUgdG8gYXBwbHkgZm9yIGNhcHR1cmUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5k
bGVyIEEgYmxvY2sgdG8gaW52b2tlIGFmdGVyIHRoZSBjYW1lcmEgc3RhdGUgaGFzIGJlZW4gY2hh
bmdlZC4KKyBAZGlzY3Vzc2lvbgorIElmIHZhbHVlIGlzIFdLTWVkaWFDYXB0dXJlU3RhdGVOb25l
LCB0aGlzIHdpbGwgc3RvcCBhbnkgbWljcm9waG9uZSBjYXB0dXJlLgorIElmIHZhbHVlIGlzIFdL
TWVkaWFDYXB0dXJlU3RhdGVNdXRlZCwgYW55IGFjdGl2ZSBtaWNyb3Bob25lIGNhcHR1cmUgd2ls
bCBiZWNvbWUgbXV0ZWQuCisgSWYgdmFsdWUgaXMgV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSwg
YW55IG11dGVkIG1pY3JvcGhvbmUgY2FwdHVyZSB3aWxsIGJlY29tZSBhY3RpdmUuCisgKi8KKy0g
KHZvaWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXl9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogLyohIEBhYnN0cmFjdCBHZXQgYSBzbmFwc2hvdCBmb3IgdGhlIHZpc2libGUgdmlld3Bv
cnQgb2YgV0tXZWJWaWV3LgogIEBwYXJhbSBzbmFwc2hvdENvbmZpZ3VyYXRpb24gQW4gb2JqZWN0
IHRoYXQgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNob3QgaXMgY29uZmlndXJlZC4KICBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc25hcHNob3QgaXMg
cmVhZHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBjMmU1MjIwMDI1MjQ3YTBkY2ZhMTA5ODMxNTU2YTY0NTliZjBiYjcwLi5jZDM5YWVh
NmY5N2U4ZjE2NjA1ZGMyOTczZTBjMjk0NWM4YzJhMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk3NSw2ICs5NzUsNjggQEAgc3Rh
dGljIFdLTWVkaWFQbGF5YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2ViS2l0OjpN
ZWRpYVBsYXliYWNrU3RhdGUgbWUKICAgICB9KTsKIH0KIAorLSAoV0tNZWRpYUNhcHR1cmVTdGF0
ZSljYW1lcmFDYXB0dXJlU3RhdGUKK3sKKyAgICBhdXRvIHN0YXRlID0gX3BhZ2UtPnJlcG9ydGVk
TWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhh
c0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdLTWVkaWFDYXB0dXJl
U3RhdGVBY3RpdmU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFz
TXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXS01lZGlhQ2FwdHVyZVN0
YXRlTXV0ZWQ7CisgICAgcmV0dXJuIFdLTWVkaWFDYXB0dXJlU3RhdGVOb25lOworfQorCistIChX
S01lZGlhQ2FwdHVyZVN0YXRlKW1pY3JvcGhvbmVDYXB0dXJlU3RhdGUKK3sKKyAgICBhdXRvIHN0
YXRlID0gX3BhZ2UtPnJlcG9ydGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZSkKKyAgICAgICAg
cmV0dXJuIFdLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6SGFzTXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJl
dHVybiBXS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWQ7CisgICAgcmV0dXJuIFdLTWVkaWFDYXB0dXJl
U3RhdGVOb25lOworfQorCistICh2b2lkKXNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6KFdLTWVk
aWFDYXB0dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH07CisKKyAgICBpZiAoc3RhdGUgPT0gV0tNZWRpYUNh
cHR1cmVTdGF0ZU5vbmUpIHsKKyAgICAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW8sIFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGF1dG8gbXV0ZWRTdGF0ZSA9IF9wYWdlLT5tdXRlZFN0YXRlRmxhZ3MoKTsKKyAgICBpZiAo
c3RhdGUgPT0gV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSAmJiBtdXRlZFN0YXRlICYgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJlSXNNdXRlZCkKKyAgICAgICAgbXV0ZWRTdGF0
ZSBePSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVJc011dGVkOworICAgIGVs
c2UgaWYgKHN0YXRlID09IFdLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZCkKKyAgICAgICAgbXV0ZWRT
dGF0ZSA9IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZUlzTXV0ZWQ7CisgICAg
X3BhZ2UtPnNldE11dGVkKG11dGVkU3RhdGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICB9KTsKK30KKworLSAodm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KFdLTWVkaWFDYXB0
dXJlU3RhdGUpc3RhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIgPSBbXSB7IH07CisKKyAgICBpZiAoc3RhdGUgPT0gV0tNZWRpYUNhcHR1cmVT
dGF0ZU5vbmUpIHsKKyAgICAgICAgX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW8sIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1
dG8gbXV0ZWRTdGF0ZSA9IF9wYWdlLT5tdXRlZFN0YXRlRmxhZ3MoKTsKKyAgICBpZiAoc3RhdGUg
PT0gV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSAmJiBtdXRlZFN0YXRlICYgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlSXNNdXRlZCkKKyAgICAgICAgbXV0ZWRTdGF0ZSBePSBX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVJc011dGVkOworICAgIGVsc2UgaWYg
KHN0YXRlID09IFdLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZCkKKyAgICAgICAgbXV0ZWRTdGF0ZSA9
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZUlzTXV0ZWQ7CisgICAgX3BhZ2Ut
PnNldE11dGVkKG11dGVkU3RhdGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
KTsKK30KKwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3Jp
cHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlvbiB3aXRoU291cmNl
VVJMOihOU1VSTCAqKXNvdXJjZVVSTCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopYXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2Vz
dHVyZSBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluV29ybGQ6KFdLQ29udGVudFdvcmxk
ICopd29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pOwpAQCAtMTc0MCw2MiArMTgwMiw2IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tD
T05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKICAgICBy
ZXR1cm4gX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5oYXNOZWdvdGlhdGVkTGVnYWN5VExTKCk7CiB9
CiAKLS0gKF9XS01lZGlhQ2FwdHVyZVN0YXRlKV9jYW1lcmFDYXB0dXJlU3RhdGUKLXsKLSAgICBh
dXRvIHN0YXRlID0gX3BhZ2UtPnJlcG9ydGVkTWVkaWFTdGF0ZSgpOwotICAgIGlmIChzdGF0ZSAm
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkKLSAg
ICAgICAgcmV0dXJuIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlOwotICAgIGlmIChzdGF0ZSAm
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlKQotICAg
ICAgICByZXR1cm4gX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZDsKLSAgICByZXR1cm4gX1dLTWVk
aWFDYXB0dXJlU3RhdGVOb25lOwotfQotCi0tIChfV0tNZWRpYUNhcHR1cmVTdGF0ZSlfbWljcm9w
aG9uZUNhcHR1cmVTdGF0ZQotewotICAgIGF1dG8gc3RhdGUgPSBfcGFnZS0+cmVwb3J0ZWRNZWRp
YVN0YXRlKCk7Ci0gICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzQWN0
aXZlQXVkaW9DYXB0dXJlRGV2aWNlKQotICAgICAgICByZXR1cm4gX1dLTWVkaWFDYXB0dXJlU3Rh
dGVBY3RpdmU7Ci0gICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6SGFzTXV0
ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCi0gICAgICAgIHJldHVybiBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkOwotICAgIHJldHVybiBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmU7Ci19Ci0KLS0gKHZv
aWQpc2V0TWljcm9waG9uZUNhcHR1cmVTdGF0ZTooX1dLTWVkaWFDYXB0dXJlU3RhdGUpc3RhdGUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0g
ICAgaWYgKHN0YXRlID09IF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkgewotICAgICAgICBfcGFn
ZS0+c3RvcE1lZGlhQ2FwdHVyZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVL
aW5kOjpBdWRpbywgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byBtdXRlZFN0YXRlID0gX3BhZ2UtPm11
dGVkU3RhdGVGbGFncygpOwotICAgIGlmIChzdGF0ZSA9PSBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZSAmJiBtdXRlZFN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJl
SXNNdXRlZCkKLSAgICAgICAgbXV0ZWRTdGF0ZSBePSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpB
dWRpb0NhcHR1cmVJc011dGVkOwotICAgIGVsc2UgaWYgKHN0YXRlID09IF9XS01lZGlhQ2FwdHVy
ZVN0YXRlTXV0ZWQpCi0gICAgICAgIG11dGVkU3RhdGUgPSBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpBdWRpb0NhcHR1cmVJc011dGVkOwotICAgIF9wYWdlLT5zZXRNdXRlZChtdXRlZFN0YXRlLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpc2V0Q2Ft
ZXJhQ2FwdHVyZVN0YXRlOihfV0tNZWRpYUNhcHR1cmVTdGF0ZSlzdGF0ZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBpZiAoc3RhdGUg
PT0gX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSB7Ci0gICAgICAgIF9wYWdlLT5zdG9wTWVkaWFD
YXB0dXJlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBhdXRvIG11dGVkU3RhdGUgPSBfcGFnZS0+bXV0ZWRTdGF0ZUZsYWdz
KCk7Ci0gICAgaWYgKHN0YXRlID09IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlICYmIG11dGVk
U3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVJc011dGVkKQotICAg
ICAgICBtdXRlZFN0YXRlIF49IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZUlz
TXV0ZWQ7Ci0gICAgZWxzZSBpZiAoc3RhdGUgPT0gX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZCkK
LSAgICAgICAgbXV0ZWRTdGF0ZSA9IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVy
ZUlzTXV0ZWQ7Ci0gICAgX3BhZ2UtPnNldE11dGVkKG11dGVkU3RhdGUsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQogLSAodm9pZClfZnJhbWVzOih2b2lkICheKShf
V0tGcmFtZVRyZWVOb2RlICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3BhZ2UtPmdldEFs
bEZyYW1lcyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpLCBwYWdlID0gbWFrZVJlZigqX3BhZ2UuZ2V0KCkpXSAoV2ViS2l0OjpGcmFtZVRyZWVOb2Rl
RGF0YSYmIGRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDkzZmQyZGYzNzUzMzYwNWZkOWQ3YjA0MjUxZjEz
MzUwZDFkMWM1YWQuLjFiYWI2ZjQxMTQ5ZGMzMjM3NThmOGFiNGJhNmNjZmE5OThhYTkyYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaApAQCAtNDgsMTIgKzQ4LDYgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS01lZGlhQ2FwdHVyZVN0YXRlRGVwcmVjYXRlZCkgewogICAgIF9XS01lZGlhQ2FwdHVyZVN0
YXRlRGVwcmVjYXRlZE11dGVkQ2FtZXJhID0gMSA8PCAzLAogfSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS01lZGlhQ2FwdHVyZVN0YXRlKSB7Ci0gICAgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lID0g
MCwKLSAgICBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZSA9IDEgPDwgMCwKLSAgICBfV0tNZWRp
YUNhcHR1cmVTdGF0ZU11dGVkID0gMSA8PCAxLAotfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLTWVkaWFNdXRlZFN0YXRlKSB7CiAgICAgX1dLTWVkaWFOb25lTXV0ZWQgPSAwLAog
ICAgIF9XS01lZGlhQXVkaW9NdXRlZCA9IDEgPDwgMCwKQEAgLTY3LDEyICs2MSw2IEBAIHR5cGVk
ZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tDYXB0dXJlRGV2aWNlcykgewogICAgIF9XS0Nh
cHR1cmVEZXZpY2VEaXNwbGF5ID0gMSA8PCAyLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzKSwgaW9zKDExLjApKTsKIAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1Bl
cm1pc3Npb25EZWNpc2lvbikgewotICAgIF9XS1Blcm1pc3Npb25EZWNpc2lvblByb21wdCA9IDEg
PDwgMCwKLSAgICBfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCA9IDEgPDwgMSwKLSAgICBfV0tQ
ZXJtaXNzaW9uRGVjaXNpb25EZW55ID0gMSA8PCAyLAotfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEyLjAwKSwgaW9zKDE1LjApKTsKLQogdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1NlbGVjdGlvbkF0dHJpYnV0ZXMpIHsKICAgICBfV0tTZWxlY3Rpb25BdHRyaWJ1dGVOb1NlbGVj
dGlvbiA9IDAsCiAgICAgX1dLU2VsZWN0aW9uQXR0cmlidXRlSXNDYXJldCA9IDEgPDwgMCwKQEAg
LTE5MywxNiArMTgxLDYgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAqLwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF9uZWdvdGlhdGVkTGVnYWN5VExTIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiAKLS8qISBAYWJzdHJhY3QgVGhlIHN0YXRl
IG9mIG1lZGlhIGNhcHR1cmUgb24gYSB3ZWIgcGFnZS4KLSBAZGlzY3Vzc2lvbiBAbGluayBXS1dl
YlZpZXcgQC9saW5rIGlzIGtleS12YWx1ZSBvYnNlcnZpbmcgKEtWTykgY29tcGxpYW50Ci0gZm9y
IHRoaXMgcHJvcGVydHkuCi0gKi8KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dL
TWVkaWFDYXB0dXJlU3RhdGUgX2NhbWVyYUNhcHR1cmVTdGF0ZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBfV0tNZWRpYUNhcHR1cmVTdGF0ZSBfbWljcm9waG9uZUNhcHR1cmVTdGF0ZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCi0t
ICh2b2lkKXNldE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU6KF9XS01lZGlhQ2FwdHVyZVN0YXRlKXN0
YXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAo
dm9pZClzZXRDYW1lcmFDYXB0dXJlU3RhdGU6KF9XS01lZGlhQ2FwdHVyZVN0YXRlKXN0YXRlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCiAtICh2b2lk
KV9mcmFtZXM6KHZvaWQgKF4pKF9XS0ZyYW1lVHJlZU5vZGUgKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIAogLy8gRklYTUU6IFJl
bW92ZSB0aGVzZSBvbmNlIG5vYm9keSBpcyB1c2luZyB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMzg2YmIyN2VkZWQ5NDNlYTA5ZTQzYmMy
YWJkYmJlMGI4MDAwNGRjYy4uZTQ5ZmQxMzEwZmQ2MzZlZGE0NWZkMTAwOGI0Mzc3NTFmOThjYjNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC00
MTEsNyArNDExLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OlcKICAgICBpZiAobV91aURlbGVn
YXRlLT5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvck9yaWdpbkRlY2lzaW9uSGFuZGxlcikgewogICAgICAgICBhdXRvIHNlY3VyaXR5T3JpZ2lu
ID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcocGFnZS5wYWdlTG9h
ZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2Vi
VmlldzpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJh
bWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25I
YW5kbGVyLCBudWxscHRyKSwgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi0+ZGF0YSgp
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgcGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpXSAo
X1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBk
ZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpl
eGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0ciksIHNlY3VyaXR5T3JpZ2luID0gc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIHBhZ2UgPSBt
YWtlV2Vha1B0cihwYWdlKV0gKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQyMCwxMyArNDIwLDEzIEBAIHZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0OjpXCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewotICAgICAgICAgICAgY2FzZSBfV0tQZXJtaXNz
aW9uRGVjaXNpb25Qcm9tcHQ6CisgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9u
UHJvbXB0OgogICAgICAgICAgICAgICAgIGFsZXJ0Rm9yUGVybWlzc2lvbigqcGFnZSwgTWVkaWFQ
ZXJtaXNzaW9uUmVhc29uOjpHZW9sb2NhdGlvbiwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ6CisgICAgICAgICAgICBjYXNlIFdLUGVybWlz
c2lvbkRlY2lzaW9uR3JhbnQ6CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1pc3Np
b25EZWNpc2lvbkRlbnk6CisgICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9uRGVu
eToKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzKFdlYktpdDo6VwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS0+bV9k
ZWxlZ2F0ZS5nZXQoKTsKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5
RnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLT5kYXRhKCksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpLCBwYWdlID0gbWFrZVdlYWtQdHIocGFnZSldKF9XS1Blcm1pc3Npb25EZWNp
c2lvbiBkZWNpc2lvbikgbXV0YWJsZSB7CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwgY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlciksIHBhZ2UgPSBtYWtlV2Vha1B0cihwYWdlKV0oV0tQZXJtaXNzaW9uRGVjaXNp
b24gZGVjaXNpb24pIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA1OCwxMyArMTA1OCwxMyBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzKFdlYktpdDo6VwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKLSAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9uRGVj
aXNpb25Qcm9tcHQ6CisgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQ6CiAg
ICAgICAgICAgICBhbGVydEZvclBlcm1pc3Npb24oKnBhZ2UsIE1lZGlhUGVybWlzc2lvblJlYXNv
bjo6RGV2aWNlT3JpZW50YXRpb24sIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9u
RGVjaXNpb25HcmFudDoKKyAgICAgICAgY2FzZSBXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50Ogog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55OgorICAgICAgICBjYXNlIFdL
UGVybWlzc2lvbkRlY2lzaW9uRGVueToKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDk3LDcgKzEwOTcsNyBA
QCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ym9vbCByZXNwb25kc1RvUmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb24gPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJl
UGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOmF1ZGlvOnZpZGVvOmRlY2lzaW9u
SGFuZGxlcjopXTsKKyAgICBib29sIHJlc3BvbmRzVG9SZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlz
c2lvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cmVx
dWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBl
OmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBib29sIHJlc3BvbmRzVG9SZXF1ZXN0VXNlck1lZGlh
QXV0aG9yaXphdGlvbkZvckRldmljZXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6
dXJsOm1haW5GcmFtZVVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CiAKICAgICBpZiAoIXJlc3BvbmRz
VG9SZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbiAmJiAhcmVzcG9uZHNUb1JlcXVlc3RVc2Vy
TWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcykgewpAQCAtMTEwNywyMyArMTEwNywyMyBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdChXZWJQYWdlUHJveAogCiAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzcGVjaWZp
YyBkZWxlZ2F0ZSBmb3IgZGlzcGxheSBjYXB0dXJlLgogICAgIGlmICghcmVxdWVzdC5yZXF1aXJl
c0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNz
aW9uKSB7Ci0gICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1
cmVQZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6YXVkaW86dmlkZW86ZGVjaXNp
b25IYW5kbGVyOikpOwotICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpXShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pIHsKKyAgICAgICAgYXV0
byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRl
LCBAc2VsZWN0b3Iod2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdp
bjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOikpOworICAgICAgICBhdXRv
IGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VS
ZWYocmVxdWVzdCksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShXS1Blcm1pc3Npb25EZWNp
c2lvbiBkZWNpc2lvbikgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgICAgICBzd2l0
Y2ggKGRlY2lzaW9uKSB7Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1pc3Npb25EZWNpc2lvblBy
b21wdDoKKyAgICAgICAgICAgIGNhc2UgV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQ6CiAgICAg
ICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+cHJvbXB0KCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50OiB7Cisg
ICAgICAgICAgICBjYXNlIFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ6IHsKICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVzdC0+cmVx
dWlyZXNWaWRlb0NhcHR1cmUoKSA/IHByb3RlY3RlZFJlcXVlc3QtPnZpZGVvRGV2aWNlVUlEcygp
LmZpcnN0KCkgOiBTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGF1ZGlv
RGV2aWNlVUlEID0gcHJvdGVjdGVkUmVxdWVzdC0+cmVxdWlyZXNBdWRpb0NhcHR1cmUoKSA/IHBy
b3RlY3RlZFJlcXVlc3QtPmF1ZGlvRGV2aWNlVUlEcygpLmZpcnN0KCkgOiBTdHJpbmcoKTsKICAg
ICAgICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5hbGxvdyhhdWRpb0RldmljZVVJRCwgdmlk
ZW9EZXZpY2VVSUQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55OgorICAgICAgICAgICAgY2Fz
ZSBXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnk6CiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkUmVx
dWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nl
c3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMTEzNSw3ICsxMTM1LDEwIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94CiAgICAgICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvIHsgZnJhbWUuaXNNYWluRnJh
bWUoKSwgeyB9LCB1c2VyTWVkaWFPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZnJhbWVJ
RCgpLCBtYWluRnJhbWVJRCB9OwogICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1l
SW5mb1dyYXBwZXIgPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFt
ZUluZm8pLCBmcmFtZS5wYWdlKCkpKTsKIAotICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV91
aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1p
c3Npb25Gb3JPcmlnaW46d3JhcHBlcih0b3BMZXZlbE9yaWdpbikgaW5pdGlhdGVkQnlGcmFtZTpm
cmFtZUluZm9XcmFwcGVyLmdldCgpIGF1ZGlvOnJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUo
KSB2aWRlbzpyZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgZGVjaXNpb25IYW5kbGVyOmRl
Y2lzaW9uSGFuZGxlci5nZXQoKV07CisgICAgICAgIFdLTWVkaWFDYXB0dXJlVHlwZSB0eXBlID0g
V0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhOworICAgICAgICBpZiAocmVxdWVzdC5yZXF1aXJlc0F1
ZGlvQ2FwdHVyZSgpKQorICAgICAgICAgICAgdHlwZSA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0Nh
cHR1cmUoKSA/IFdLTWVkaWFDYXB0dXJlVHlwZUNhbWVyYUFuZE1pY3JvcGhvbmUgOiBXS01lZGlh
Q2FwdHVyZVR5cGVNaWNyb3Bob25lOworICAgICAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVs
ZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQoKSByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lv
bkZvck9yaWdpbjp3cmFwcGVyKHRvcExldmVsT3JpZ2luKSBpbml0aWF0ZWRCeUZyYW1lOmZyYW1l
SW5mb1dyYXBwZXIuZ2V0KCkgdHlwZTp0eXBlIGRlY2lzaW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRs
ZXIuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDM1YzRjZjRhZmJlMzEzZTBhMDdjY2M0
N2M2NTMyYTVlOWIzNmQ4Ny4uZjA5OWI5MGE2ZmJiNWYzZTIwMTg3MDg0MzQxZmRhYTU1MTVjMGI0
YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM3IEBACisyMDIxLTAzLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBQcm9tb3RlIFdLV2ViVmlldyBnZXRVc2VyTWVkaWEgU1BJIHRvIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoLVtVc2VyTWVkaWFD
YXB0dXJlVUlEZWxlZ2F0ZUZvclBhcmFtZXRlcnMgd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJl
UGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYU5h
dmlnYXRpb24ubW06CisgICAgICAgICgtW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21w
dERpc3BsYXllZFVJRGVsZWdhdGUgd2ViVmlldzpyZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lv
bkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvTWVkaWFTdHJlYW1UcmFja0RldGFjaGVkLm1tOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW06CisgICAg
ICAgICgtW0RldmljZU9yaWVudGF0aW9uUGVybWlzc2lvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVx
dWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0
ZWRCeUZyYW1lOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bRGV2aWNlT3JpZW50YXRp
b25QZXJtaXNzaW9uVmFsaWRhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3REZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTpkZWNp
c2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TcGVlY2hSZWNvZ25pdGlvbi5tbToKKyAgICAgICAgKC1bU3BlZWNoUmVjb2duaXRpb25VSURl
bGVnYXRlIHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5p
dGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW0dlb2xv
Y2F0aW9uRGVsZWdhdGVOZXcgX3dlYlZpZXc6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZv
ck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAg
ICAgICAoLVtVc2VyTWVkaWFVSURlbGVnYXRlIHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZVBl
cm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYVNp
bXVsYXRlRmFpbGVkU2FuZGJveC5tbToKKyAgICAgICAgKC1bU2ltdWxhdGVGYWlsZWRTYW5kYm94
VUlEZWxlZ2F0ZSB3ZWJWaWV3OnJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2lu
OmluaXRpYXRlZEJ5RnJhbWU6dHlwZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW06CisgICAgICAg
ICgtW1dlYnNpdGVQb2xpY2llc0RldmljZU9yaWVudGF0aW9uVUlEZWxlZ2F0ZSBfd2ViVmlldzpy
ZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRp
YXRlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVc2Vy
TWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBpbml0XSk6CisgICAgICAgICgtW1VzZXJNZWRpYUNhcHR1
cmVVSURlbGVnYXRlIHNldEF1ZGlvRGVjaXNpb246XSk6CisgICAgICAgICgtW1VzZXJNZWRpYUNh
cHR1cmVVSURlbGVnYXRlIHNldFZpZGVvRGVjaXNpb246XSk6CisgICAgICAgICgtW1VzZXJNZWRp
YUNhcHR1cmVVSURlbGVnYXRlIHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25G
b3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxlcjpdKToKKwogMjAy
MS0wMy0yMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAg
ICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBhcmUgbm90IG1hcmtlZCBhcyBhcHAtYm91bmQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQppbmRl
eCA5NmY2NjJhMWJkNjdmYmMyYjE4NmM2ODIyNWFjZDMwNWIwMDc3NjQ5Li43NGZhZjc4ZTM5ZDM0
ZmJlODEyN2YwYTNjN2MwMzI4MjYwMzcxNzY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCkBAIC01MCwxMSArNTAsMTEgQEAgc3RhdGlj
IGJvb2wgZG9uZTsKIAogQGludGVyZmFjZSBVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZUZvclBh
cmFtZXRlcnMgOiBOU09iamVjdDxXS1VJRGVsZWdhdGU+CiAvLyBXS1VJRGVsZWdhdGUKLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1p
c3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFt
ZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzooQk9PTCl2aWRl
byBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lv
bikpZGVjaXNpb25IYW5kbGVyOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgdHlwZTooV0tN
ZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Np
b25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGVGb3JQYXJhbWV0ZXJzCi0tICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9u
Rm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdL
RnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wpdmlkZW8gZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRl
Y2lzaW9uSGFuZGxlciB7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVx
dWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB0eXBlOihXS01lZGlh
Q2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRl
Y2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgewogICAgIEVYUEVDVF9XS19TVFJFUShv
cmlnaW4ucHJvdG9jb2wsIEAiaHR0cCIpOwogICAgIEVYUEVDVF9XS19TVFJFUShvcmlnaW4uaG9z
dCwgQCIxMjcuMC4wLjEiKTsKICAgICBFWFBFQ1RfRVEob3JpZ2luLnBvcnQsIDkwOTBVKTsKQEAg
LTY1LDExICs2NSwxMCBAQCBzdGF0aWMgYm9vbCBkb25lOwogICAgIEVYUEVDVF9GQUxTRShmcmFt
ZS5pc01haW5GcmFtZSk7CiAgICAgRVhQRUNUX1RSVUUoZnJhbWUud2ViVmlldyA9PSB3ZWJWaWV3
KTsKIAotICAgIEVYUEVDVF9GQUxTRShhdWRpbyk7Ci0gICAgRVhQRUNUX1RSVUUodmlkZW8pOwor
ICAgIEVYUEVDVF9FUSh0eXBlLCBXS01lZGlhQ2FwdHVyZVR5cGVDYW1lcmEpOwogCiAgICAgZG9u
ZSA9IHRydWU7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50
KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CiB9CiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVz
ZXJNZWRpYU5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9H
ZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCmluZGV4IDQwM2YwYTYyMTNjNGI4N2IxNjhjN2JiMjQw
NmQ2ZjNkNWJkZTllNmMuLjEyY2E3NDYyZDVhYmNkYmNkZDExOGVlNjNiZTVmMzU4MTE5NWM2OTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRp
YU5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0
VXNlck1lZGlhTmF2aWdhdGlvbi5tbQpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9ydCAiVGVzdC5o
IgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CkBAIC00MiwxNyArNDIsMTcgQEAgc3Rh
dGljIGJvb2wgb2tUb1Byb2NlZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHNob3VsZFJlbGVhc2VJ
bkVudW1lcmF0ZSA9IGZhbHNlOwogCiBAaW50ZXJmYWNlIE5hdmlnYXRpb25XaGlsZUdldFVzZXJN
ZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJRGVsZWdhdGU+Ci0t
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQ
ZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5
RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wp
dmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVj
aXNpb24pKWRlY2lzaW9uSGFuZGxlcjsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHR5cGU6
KFdLTWVkaWFDYXB0dXJlVHlwZSl0eXBlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcjsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOihO
U1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRp
ZmllcjooTlNVSW50ZWdlcilmcmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShOU1N0cmluZyAqc2FsdCwgQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXI7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNw
bGF5ZWRVSURlbGVnYXRlCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
cXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICop
b3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wp
YXVkaW8gdmlkZW86KEJPT0wpdmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3Jp
Z2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJ
bmZvICopZnJhbWUgdHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVy
CiB7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJsYW5rIl1dXTsKICAgICBbd2ViVmlldyBy
ZWxlYXNlXTsKICAgICBva1RvUHJvY2VlZCA9IHRydWU7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9X
S1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNz
aW9uRGVjaXNpb25HcmFudCk7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOihOU1VSTCAqKXVybCBtYWluRnJh
bWVVUkw6KE5TVVJMICopbWFpbkZyYW1lVVJMIGZyYW1lSWRlbnRpZmllcjooTlNVSW50ZWdlcilm
cmFtZUlkZW50aWZpZXIgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqc2FsdCwg
Qk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KaW5kZXggOTQx
NTE0MGRjMGFkZDIzYjM2ZDUzNGFiMDkxNDJjZjIyMGFhYTQ4MS4uMDdmNTdkMDEyNWUwNDk5MjAx
NWIzMGYxNjg2ZGRhM2ZlMjA1MGZhZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KQEAgLTEwNiw4ICsxMDYs
OCBAQCBURVNUKFdlYktpdDIsIEdldFVzZXJNZWRpYVJlcHJvbXB0QWZ0ZXJBdWRpb1ZpZGVvQmVp
bmdEZW5pZWQpCiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZ
RVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVz
dFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbZGVsZWdhdGUg
c2V0QXVkaW9EZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudF07Ci0gICAgW2RlbGVn
YXRlIHNldFZpZGVvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueV07CisgICAgW2Rl
bGVnYXRlIHNldEF1ZGlvRGVjaXNpb246V0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudF07CisgICAg
W2RlbGVnYXRlIHNldFZpZGVvRGVjaXNpb246V0tQZXJtaXNzaW9uRGVjaXNpb25EZW55XTsKICAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhQXVkaW9WaWRlb0NhcHR1cmUiXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU3RyZWFtVHJh
Y2tEZXRhY2hlZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01lZGlhU3Ry
ZWFtVHJhY2tEZXRhY2hlZC5tbQppbmRleCAwOTI0Njk0N2ZiZDgwZjAyM2MwMDAzMGExYzRmYmQy
N2U3YzNlMDNhLi44NzM2ZWE0NjQ5ZDJiNGFhN2ExMmM2Y2UwNWU3MmExZGM3ZDM0ZTk4IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9NZWRpYVN0cmVhbVRyYWNr
RGV0YWNoZWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWVkaWFT
dHJlYW1UcmFja0RldGFjaGVkLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAKIHN0YXRpYyBib29sIGhhc1JlY2VpdmVk
Q29ycmVjdENhcHR1cmVTdGF0ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5kZXggNTM4
MmI3ZDVmYWMwMzE0NGUxZTMzZTkyZDE3Nzc1NDAyYmY0ODRjNy4uOGI5ZGZhYWM2OTk4OTcwMjFl
ZTRkMzY3YTY3OWFlMDNmMTQxMDIwNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC03Niw5ICs3
Niw5IEBAIEZ1bmN0aW9uPGJvb2woKT4gX2RlY2lzaW9uSGFuZGxlcjsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3Jp
Z2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilyZXF1ZXN0aW5nRnJh
bWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24pKWRlY2lz
aW9uSGFuZGxlcgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5
T3JpZ2luKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilyZXF1ZXN0aW5n
RnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbikpZGVj
aXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9kZWNpc2lvbkhhbmRsZXIoKSA/
IF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50IDogX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7
CisgICAgZGVjaXNpb25IYW5kbGVyKF9kZWNpc2lvbkhhbmRsZXIoKSA/IFdLUGVybWlzc2lvbkRl
Y2lzaW9uR3JhbnQgOiBXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOwogICAgIGFza2VkQ2xpZW50
Rm9yUGVybWlzc2lvbiA9IHRydWU7CiB9CiAKQEAgLTM4NiwxMiArMzg2LDEyIEBAIEZ1bmN0aW9u
PHZvaWQoV0tTZWN1cml0eU9yaWdpbiosIFdLRnJhbWVJbmZvKik+IF92YWxpZGF0aW9uSGFuZGxl
cjsKICAgICBfdmFsaWRhdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHZhbGlkYXRpb25IYW5kbGVyKTsK
IH0KIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2lu
KilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25I
YW5kbGVyIHsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9y
aWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNp
b25IYW5kbGVyIHsKICAgICBpZiAoX3ZhbGlkYXRpb25IYW5kbGVyKQogICAgICAgICBfdmFsaWRh
dGlvbkhhbmRsZXIob3JpZ2luLCBmcmFtZSk7CiAKICAgICBhc2tlZENsaWVudEZvclBlcm1pc3Np
b24gID0gdHJ1ZTsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uR3Jh
bnQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKIH0K
IEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TcGVlY2hSZWNvZ25pdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KaW5kZXggMzc2YmI3ZmYyZTg2NzNmMGQzNzZkNmFm
YmJiNzk1MmU5MzE5YWMwYy4uNDVmODg2ZTgyOTQ0YzBkZDQ3OWYyNGQxZWZhNWIwZGMyZjQ1NmY1
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVl
Y2hSZWNvZ25pdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NwZWVjaFJlY29nbml0aW9uLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKIAogQGludGVyZmFjZSBTcGVlY2hSZWNvZ25p
dGlvblVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJRGVsZWdhdGVQcml2YXRlPgogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyOwotLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAq
KWZyYW1lIGF1ZGlvOihCT09MKWF1ZGlvIHZpZGVvOihCT09MKXZpZGVvIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRs
ZXI7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2Fw
dHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlh
dGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUp
dHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lz
aW9uKSlkZWNpc2lvbkhhbmRsZXI7CiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9u
QWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczooV0tXaW5kb3dGZWF0dXJl
cyAqKXdpbmRvd0ZlYXR1cmVzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZTooX1dLTWVkaWFDYXB0dXJlU3RhdGVEZXByZWNh
dGVkKXN0YXRlOwogQGVuZApAQCAtNTcsMTAgKzU3LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKICAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkR3JhbnRQ
ZXJtaXNzaW9uUmVxdWVzdCk7CiB9CiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlP
cmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRp
bzooQk9PTClhdWRpbyB2aWRlbzooQk9PTCl2aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KF9XS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Np
b25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZToo
V0tGcmFtZUluZm8gKilmcmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lv
bkhhbmRsZXIKIHsKICAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBkZWNpc2lv
bkhhbmRsZXIoc2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCA/IF9XS1Blcm1pc3Npb25EZWNp
c2lvbkdyYW50IDogX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7CisgICAgZGVjaXNpb25IYW5k
bGVyKHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QgPyBXS1Blcm1pc3Npb25EZWNpc2lvbkdy
YW50IDogV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKIH0KIAogLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlQXV0aG9yaXphdGlvbjogKF9X
S0NhcHR1cmVEZXZpY2VzKWRldmljZXMgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlk
ZWNpc2lvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAyNDJmNzUwZTVjNWY5Y2Q2OTQwMDYxZjA3NGVhNTZm
NmU2MzA0ZGE0Li5mNWZkNzhlYTcwNTMyODU4NmQ4MjNmOTMxZjkwOWZjZTQ1NGU5MDAzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRl
Lm1tCkBAIC0yMTgsNyArMjE4LDcgQEAgVEVTVChXZWJLaXQsIEdlb2xvY2F0aW9uUGVybWlzc2lv
bikKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEdlb2xvY2F0aW9uRGVsZWdhdGVOZXcKLS0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNz
aW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciB7CistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JPcmln
aW46KFdLU2VjdXJpdHlPcmlnaW4qKW9yaWdpbiBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5m
byAqKWZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24g
ZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlciB7CiAgICAgRVhQRUNUX1dLX1NUUkVRKG9yaWdpbi5w
cm90b2NvbCwgQCJodHRwcyIpOwogICAgIEVYUEVDVF9XS19TVFJFUShvcmlnaW4uaG9zdCwgQCIx
MjcuMC4wLjEiKTsKICAgICBFWFBFQ1RfRVEob3JpZ2luLnBvcnQsIDkwOTApOwpAQCAtMjMwLDcg
KzIzMCw3IEBAIFRFU1QoV2ViS2l0LCBHZW9sb2NhdGlvblBlcm1pc3Npb24pCiAgICAgRVhQRUNU
X1RSVUUoZnJhbWUud2ViVmlldyA9PSB3ZWJWaWV3KTsKIAogICAgIGRvbmUgID0gdHJ1ZTsKLSAg
ICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQpOworICAgIGRlY2lz
aW9uSGFuZGxlcihXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKIH0KIEBlbmQKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFEaXNh
YmxlZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlh
RGlzYWJsZWQubW0KaW5kZXggYTZiYjc5YzQ1ZjQ5N2U3MWQwN2M4MTEzMzY3ZjRlMWEyOTg0Y2Y5
OS4uNTlkZjBkNWM5ODE2N2NkNGI2ZTBlYTZlZTM3MTIwYzg4YTBlY2Y2MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFEaXNhYmxlZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURp
c2FibGVkLm1tCkBAIC01OSwxNiArNTksMTEgQEAgc3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1l
c3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOwogCiBAaW1wbGVtZW50YXRpb24gVXNlck1lZGlhVUlE
ZWxlZ2F0ZQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RN
ZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2lu
IGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8g
dmlkZW86KEJPT0wpdmlkZW8gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9u
RGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgdHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCiB7CiAg
ICAgd2FzUHJvbXB0ZWQgPSB0cnVlOwogCi0gICAgaWYgKCFhdWRpbyAmJiAhdmlkZW8pIHsKLSAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25EZWNp
c2lvbkdyYW50KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFu
dCk7CiB9CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNl
bnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoXikoQk9PTCBpbmNsdWRlU2Vuc2l0aXZl
RGV0YWlscykpZGVjaXNpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYVNpbXVsYXRlRmFpbGVkU2FuZGJveC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhU2ltdWxhdGVGYWls
ZWRTYW5kYm94Lm1tCmluZGV4IDI4MzkwNzQxNjUzOTVjZDYyZWRiOTg5ZjQyOTg4ZWQ2MTViODJk
N2IuLjM2NzI4ZjIxZDNhMmE4OGNlNTRkZjE1NDc5MTRhOGYyOGRiMTAwNzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhU2ltdWxhdGVG
YWlsZWRTYW5kYm94Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVXNlck1lZGlhU2ltdWxhdGVGYWlsZWRTYW5kYm94Lm1tCkBAIC01OSwxNiArNTksMTEgQEAg
c3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOwogCiBA
aW1wbGVtZW50YXRpb24gU2ltdWxhdGVGYWlsZWRTYW5kYm94VUlEZWxlZ2F0ZQogCi0tICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNz
aW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wpdmlkZW8g
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24p
KWRlY2lzaW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
cXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICop
b3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgdHlwZTooV0tNZWRp
YUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS1Blcm1pc3Npb25E
ZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgd2FzUHJvbXB0ZWQgPSB0
cnVlOwogCi0gICAgaWYgKCFhdWRpbyAmJiAhdmlkZW8pIHsKLSAgICAgICAgZGVjaXNpb25IYW5k
bGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKKyAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudCk7CiB9CiAKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNl
RGV0YWlsczoodm9pZCAoXikoQk9PTCBpbmNsdWRlU2Vuc2l0aXZlRGV0YWlscykpZGVjaXNpb25I
YW5kbGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDE3ODBjNjJmZGYxMDFjMTU0ZWFmNDJjM2ZhYjY2
OGYxZjBlZjU1M2EuLmJlZjI0Mjg4YWUwZWZmZWExNDQ2YThmY2ExYWE4YjhlNzI3NmJkNTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBv
bGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZVBvbGljaWVzLm1tCkBAIC0xNDgxLDEwICsxNDgxLDEwIEBAIHN0YXRpYyBib29sIGNhbGxl
ZFNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NEZWxlZ2F0ZSA9IGZh
bHNlOwogCiBAaW1wbGVtZW50YXRpb24gV2Vic2l0ZVBvbGljaWVzRGV2aWNlT3JpZW50YXRpb25V
SURlbGVnYXRlCiAKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVz
dERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0
eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopcmVxdWVzdGlu
Z0ZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLUGVybWlzc2lvbkRlY2lzaW9uKSlk
ZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVx
dWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopcmVxdWVz
dGluZ0ZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tQZXJtaXNzaW9uRGVjaXNpb24p
KWRlY2lzaW9uSGFuZGxlcgogewogICAgIGNhbGxlZFNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NEZWxlZ2F0ZSA9IHRydWU7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9X
S1Blcm1pc3Npb25EZWNpc2lvbkdyYW50KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tQZXJtaXNz
aW9uRGVjaXNpb25HcmFudCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaAppbmRleCA3YTlhMTVkYWRi
OTVkZWI1NzdlM2U0ODUxNDgxNTI3NzNhZTMwYjliLi4yYzFmZTk2ZGY1ZGViNzY2NTYwM2Y0MmFi
ZDkzYzc4OGZlMmY3YjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oCkBAIC0yNCwyNyArMjQsMjcgQEAKICAqLwog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CiAKIEBpbnRlcmZhY2Ug
VXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJRGVsZWdhdGU+IHsKICAg
ICBib29sIF93YXNQcm9tcHRlZDsKICAgICBpbnQgX251bWJlck9mUHJvbXB0czsKLSAgICBfV0tQ
ZXJtaXNzaW9uRGVjaXNpb24gX2F1ZGlvRGVjaXNpb247Ci0gICAgX1dLUGVybWlzc2lvbkRlY2lz
aW9uIF92aWRlb0RlY2lzaW9uOworICAgIFdLUGVybWlzc2lvbkRlY2lzaW9uIF9hdWRpb0RlY2lz
aW9uOworICAgIFdLUGVybWlzc2lvbkRlY2lzaW9uIF92aWRlb0RlY2lzaW9uOwogfQogCiBAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIHdhc1Byb21wdGVkOwogQHByb3BlcnR5IGludCBudW1iZXJP
ZlByb21wdHM7Ci1AcHJvcGVydHkgX1dLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uOworQHBy
b3BlcnR5IFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uOwogCiAtICh2b2lkKXdhaXRVbnRp
bFByb21wdGVkOwogLSh2b2lkKXJlc2V0V2FzUHJvbXB0ZWQ7CiAKLS0odm9pZClzZXRBdWRpb0Rl
Y2lzaW9uOihfV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb247Ci0tKHZvaWQpc2V0VmlkZW9E
ZWNpc2lvbjooX1dLUGVybWlzc2lvbkRlY2lzaW9uKWRlY2lzaW9uOworLSh2b2lkKXNldEF1ZGlv
RGVjaXNpb246KFdLUGVybWlzc2lvbkRlY2lzaW9uKWRlY2lzaW9uOworLSh2b2lkKXNldFZpZGVv
RGVjaXNpb246KFdLUGVybWlzc2lvbkRlY2lzaW9uKWRlY2lzaW9uOwogCiAvLyBXS1VJRGVsZWdh
dGUKLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2Fw
dHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlh
dGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBhdWRpbzooQk9PTClhdWRpbyB2aWRlbzoo
Qk9PTCl2aWRlbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1Blcm1pc3Npb25EZWNpc2lv
biBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3Vy
aXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
dHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JV
Ukw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJ
ZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcjsK
IAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZVVJRGVsZWdhdGUubW0KaW5kZXggZWE1OTUzYTgyMmExOTJmZTg5ZWVmMDhjZDExZmU3
NDYxYWI3Yjg1MS4uYTI5NGQxMGFjY2JjOTAxYmVmMWNmMjVkMjM4MzllZGU5YjNjYTVkNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxl
Z2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVV
SURlbGVnYXRlLm1tCkBAIC0zOSw4ICszOSw4IEBACiAgICAgaWYgKHNlbGYgIT0gbmlsKSB7CiAg
ICAgICAgIF93YXNQcm9tcHRlZCA9IGZhbHNlOwogICAgICAgICBfbnVtYmVyT2ZQcm9tcHRzID0g
MDsKLSAgICAgICAgX2F1ZGlvRGVjaXNpb24gPSBfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDsK
LSAgICAgICAgX3ZpZGVvRGVjaXNpb24gPSBfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudDsKKyAg
ICAgICAgX2F1ZGlvRGVjaXNpb24gPSBXS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50OworICAgICAg
ICBfdmlkZW9EZWNpc2lvbiA9IFdLUGVybWlzc2lvbkRlY2lzaW9uR3JhbnQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHNlbGY7CkBAIC01OSwzNCArNTksMzggQEAKICAgICBfd2FzUHJvbXB0ZWQgPSBm
YWxzZTsKIH0KIAotLSh2b2lkKXNldEF1ZGlvRGVjaXNpb246KF9XS1Blcm1pc3Npb25EZWNpc2lv
bilkZWNpc2lvbiB7CistKHZvaWQpc2V0QXVkaW9EZWNpc2lvbjooV0tQZXJtaXNzaW9uRGVjaXNp
b24pZGVjaXNpb24gewogICAgIF9hdWRpb0RlY2lzaW9uID0gZGVjaXNpb247CiB9CiAKLS0odm9p
ZClzZXRWaWRlb0RlY2lzaW9uOihfV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb24geworLSh2
b2lkKXNldFZpZGVvRGVjaXNpb246KFdLUGVybWlzc2lvbkRlY2lzaW9uKWRlY2lzaW9uIHsKICAg
ICBfdmlkZW9EZWNpc2lvbiA9IGRlY2lzaW9uOwogfQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUgYXVkaW86KEJPT0wpYXVkaW8gdmlkZW86KEJPT0wpdmlkZW8gZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShfV0tQZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxl
ciB7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE1lZGlhQ2Fw
dHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gaW5pdGlh
dGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB0eXBlOihXS01lZGlhQ2FwdHVyZVR5cGUp
dHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lz
aW9uKSlkZWNpc2lvbkhhbmRsZXIgewogICAgICsrX251bWJlck9mUHJvbXB0czsKICAgICBfd2Fz
UHJvbXB0ZWQgPSB0cnVlOwotICAgIGlmIChhdWRpbyAmJiBfYXVkaW9EZWNpc2lvbiA9PSBfV0tQ
ZXJtaXNzaW9uRGVjaXNpb25EZW55KSB7Ci0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJt
aXNzaW9uRGVjaXNpb25EZW55KTsKLSAgICAgICAgcmV0dXJuOworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgV0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhOgorICAgICAgICBpZiAoX3ZpZGVv
RGVjaXNpb24gPT0gV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KSB7CisgICAgICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdLTWVkaWFDYXB0dXJlVHlw
ZU1pY3JvcGhvbmU6CisgICAgICAgIGlmIChfYXVkaW9EZWNpc2lvbiA9PSBXS1Blcm1pc3Npb25E
ZWNpc2lvbkRlbnkpIHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25E
ZWNpc2lvbkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV0tNZWRpYUNhcHR1cmVUeXBlQ2FtZXJhQW5kTWljcm9waG9uZToKKyAg
ICAgICAgaWYgKF9hdWRpb0RlY2lzaW9uID09IFdLUGVybWlzc2lvbkRlY2lzaW9uRGVueSB8fCBf
dmlkZW9EZWNpc2lvbiA9PSBXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpIHsKKyAgICAgICAgICAg
IGRlY2lzaW9uSGFuZGxlcihXS1Blcm1pc3Npb25EZWNpc2lvbkRlbnkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAodmlkZW8g
JiYgX3ZpZGVvRGVjaXNpb24gPT0gX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSkgewotICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGF1ZGlvICYmIF9hdWRpb0RlY2lzaW9uID09IF9XS1Blcm1p
c3Npb25EZWNpc2lvblByb21wdCkgewotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLUGVybWlz
c2lvbkRlY2lzaW9uUHJvbXB0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodmlk
ZW8gJiYgX3ZpZGVvRGVjaXNpb24gPT0gX1dLUGVybWlzc2lvbkRlY2lzaW9uUHJvbXB0KSB7Ci0g
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVjaXNpb25Qcm9tcHQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tQZXJtaXNzaW9uRGVj
aXNpb25HcmFudCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLUGVybWlzc2lvbkRlY2lzaW9uR3Jh
bnQpOwogfQogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNl
ck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAq
KW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVy
IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXpl
ZCkpZGVjaXNpb25IYW5kbGVyIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>