<?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>217104</bug_id>
          
          <creation_ts>2020-09-29 13:43:33 -0700</creation_ts>
          <short_desc>Prevent media capture unless the application has correct data for system permission prompt</short_desc>
          <delta_ts>2020-10-01 11:28:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly 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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693118</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-29 13:43:33 -0700</bug_when>
    <thetext>The system will terminate an app that doesn&apos;t have the appropriate key(s) in its Info.plist when it tries to use a capture device, so don&apos;t allow that to happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693119</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-29 13:43:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/69761929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693146</commentid>
    <comment_count>2</comment_count>
      <attachid>410050</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-29 14:19:45 -0700</bug_when>
    <thetext>Created attachment 410050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693207</commentid>
    <comment_count>3</comment_count>
      <attachid>410050</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-29 16:13:11 -0700</bug_when>
    <thetext>Comment on attachment 410050
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:988
&gt; +    AVAuthorizationStatus microphoneAuthorizationStatus = usingMockCaptureDevices || !requiresAudioCapture ? AVAuthorizationStatusAuthorized : [PAL::getAVCaptureDeviceClass() authorizationStatusForMediaType:AVMediaTypeAudio];

auto

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:994
&gt; +    AVAuthorizationStatus cameraAuthorizationStatus = usingMockCaptureDevices || !requiresVideoCapture ? AVAuthorizationStatusAuthorized : [PAL::getAVCaptureDeviceClass() authorizationStatusForMediaType:AVMediaTypeVideo];

auto

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:41
&gt; +    static std::once_flag onceFlag;
&gt; +    static bool validUsageString;
&gt; +    std::call_once(onceFlag, [] {
&gt; +        NSString *usageString = NSBundle.mainBundle.infoDictionary[@&quot;NSMicrophoneUsageDescription&quot;];
&gt; +        validUsageString = usageString.length;
&gt; +    });
&gt; +
&gt; +    return validUsageString;

Does this need to be thread-safe? If not, it can be a two-liner:

    static bool isPermiitted = NSBundle.mainBundle.infoDictionary[@&quot;NSMicrophoneUsageDescription&quot;].length;
    return isPermitted;

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:57
&gt; +    static std::once_flag onceFlag;
&gt; +    static bool validUsageString;
&gt; +    std::call_once(onceFlag, [] {
&gt; +        NSString *usageString = NSBundle.mainBundle.infoDictionary[@&quot;NSCameraUsageDescription&quot;];
&gt; +        validUsageString = usageString.length;
&gt; +    });
&gt; +
&gt; +    return validUsageString;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693239</commentid>
    <comment_count>4</comment_count>
      <attachid>410050</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-29 17:21:13 -0700</bug_when>
    <thetext>Comment on attachment 410050
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:988
&gt;&gt; +    AVAuthorizationStatus microphoneAuthorizationStatus = usingMockCaptureDevices || !requiresAudioCapture ? AVAuthorizationStatusAuthorized : [PAL::getAVCaptureDeviceClass() authorizationStatusForMediaType:AVMediaTypeAudio];
&gt; 
&gt; auto

Why do I have so much trouble remembering to use `auto`?

Fixed.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:994
&gt;&gt; +    AVAuthorizationStatus cameraAuthorizationStatus = usingMockCaptureDevices || !requiresVideoCapture ? AVAuthorizationStatusAuthorized : [PAL::getAVCaptureDeviceClass() authorizationStatusForMediaType:AVMediaTypeVideo];
&gt; 
&gt; auto

Fixed.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:41
&gt;&gt; +    return validUsageString;
&gt; 
&gt; Does this need to be thread-safe? If not, it can be a two-liner:
&gt; 
&gt;     static bool isPermiitted = NSBundle.mainBundle.infoDictionary[@&quot;NSMicrophoneUsageDescription&quot;].length;
&gt;     return isPermitted;

Good idea, changed.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:57
&gt;&gt; +    return validUsageString;
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693241</commentid>
    <comment_count>5</comment_count>
      <attachid>410072</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-29 17:31:16 -0700</bug_when>
    <thetext>Created attachment 410072
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693805</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-01 11:28:22 -0700</bug_when>
    <thetext>Committed r267844: &lt;https://trac.webkit.org/changeset/267844&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410072.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410050</attachid>
            <date>2020-09-29 14:19:45 -0700</date>
            <delta_ts>2020-09-29 17:31:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217104-20200929141944.patch</filename>
            <type>text/plain</type>
            <size>20474</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3MjVmZmRjYmM3MWUyMWM1
ZjFjYmRkODUzNDAxZDYwNDFjZDQ5M2YuLmNlOGY3MTBjYTBmMzY5NmFmMTAxMTFmNzI3ZmYxZTZi
ZDAwN2IxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMDktMjkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBtZWRpYSBj
YXB0dXJlIHVubGVzcyB0aGUgYXBwbGljYXRpb24gaGFzIGNvcnJlY3QgZGF0YSBmb3Igc3lzdGVt
IHBlcm1pc3Npb24gcHJvbXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcxMDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzYxOTI5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBtYW51
YWxseSB3aXRoIE1pbmlCcm93c2VyLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
cmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0
QWNjZXNzRm9yTWVkaWFUeXBlLgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOiBEZW55CisgICAg
ICAgIHJlcXVlc3RzIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBub3QgcGVybWl0dGVkIHRvIGNhcHR1
cmUuIFJlc3RydWN0dXJlIGxvZ2ljIHRvCisgICAgICAgIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVy
c3RhbmQuCisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxl
dGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKTogQ2hl
Y2sKKyAgICAgICAgZm9yIHJlcXVpcmVkIEluZm8ucGxpc3Qgc3RyaW5nLgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9D
YXB0dXJlVmlkZW8pOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbTogVXBkYXRlIGZvciB1bmlmaWVkIGJ1aWxkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1p
dHRlZFRvQ2FwdHVyZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVvKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wOS0yOSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBwbGlzdC1iYXNlZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0b3JhZ2UsIHdoaWNoIGhh
cyBiZWVuIHJlcGxhY2VkIGJ5IGRhdGFiYXNlLWJhc2VkIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAppbmRleCBhNWEwMWMzMGU0NGVkYmUwYWViY2E2ZDJkYWI1ZGQ5YzM0Mjg4NjNkLi5lMTZj
MjRmNTYyYzRkZWJmOTViMzFhOTY3YTM2ZDNiZTc3N2M1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC0zODYsNiArMzg2LDcgQEAgVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2Ev
VUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcAorVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDNjODhhZDY1Y2JlZWViZGRhYjRh
MDQ0ZmRkNWVkNTE1ZGVkYTAxYmIuLmU5M2JkN2ExM2YzOTU5ZDFiYWMwNjBmNmRlNDllNGUxOTM0
ODgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpA
QCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2ltcG9y
dCAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25D
aGVja1Byb3h5LmgiCisjaW1wb3J0ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oIgogI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogI2lt
cG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKQEAgLTk0
MCw3ICs5NDEsNyBAQCBzdGF0aWMgdm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZv
ckZyYW1lKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUAogICAgIFtkZWxlZ2F0ZSBfd2Vi
Vmlldzomd2ViVmlldyByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6ZGV2
aWNlcyB1cmw6cmVxdWVzdEZyYW1lVVJMIG1haW5GcmFtZVVSTDptYWluRnJhbWVVUkwgZGVjaXNp
b25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CiB9CiAKLXN0YXRpYyB2b2lkIHJlcXVl
c3RBY2Nlc3NGb3JNZWRpYVR5cGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBVk1lZGlhVHlwZSB0eXBlKQorc3RhdGljIHZvaWQg
cmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEJPT0wgYXV0aG9yaXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUp
CiB7CiAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKQEAgLTk3Myw2MSArOTc0LDY2
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgfQogCiAgICAgYm9vbCB1c2luZ01vY2tD
YXB0dXJlRGV2aWNlcyA9IHBhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkKCk7Ci0gICAgYXV0byByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbiA9IFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBwcm90ZWN0ZWRSZXF1
ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgd2ViVmlldyA9IFJldGFpblB0cjxXS1dlYlZpZXc+KG1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcpLCB0b3BMZXZlbE9yaWdpbiA9IG1ha2VSZWYodG9wTGV2ZWxP
cmlnaW4pLCB1c2luZ01vY2tDYXB0dXJlRGV2aWNlc10oKSBtdXRhYmxlIHsKKyAgICBpZiAoIXVz
aW5nTW9ja0NhcHR1cmVEZXZpY2VzKSB7CisgICAgICAgIGlmIChyZXF1aXJlc0F1ZGlvQ2FwdHVy
ZSAmJiAhVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRv
Q2FwdHVyZUF1ZGlvKCkpIHsKKyAgICAgICAgICAgIHJlcXVlc3QuZGVueShVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Np
b25EZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChy
ZXF1aXJlc1ZpZGVvQ2FwdHVyZSAmJiAhVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVvKCkpIHsKKyAgICAgICAgICAgIHJlcXVlc3Qu
ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5p
YWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgQVZBdXRob3JpemF0aW9uU3RhdHVzIG1pY3JvcGhvbmVBdXRob3Jp
emF0aW9uU3RhdHVzID0gdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgfHwgIXJlcXVpcmVzQXVkaW9D
YXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCA6IFtQQUw6OmdldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTpBVk1lZGlh
VHlwZUF1ZGlvXTsKKyAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZB
dXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVz
ID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAgICAgcmVxdWVzdC5k
ZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0Rlbmlh
bFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgQVZBdXRob3JpemF0aW9uU3RhdHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSB1
c2luZ01vY2tDYXB0dXJlRGV2aWNlcyB8fCAhcmVxdWlyZXNWaWRlb0NhcHR1cmUgPyBBVkF1dGhv
cml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dOworICAg
IGlmIChjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0Rl
bmllZCB8fCBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1
c1Jlc3RyaWN0ZWQpIHsKKyAgICAgICAgcmVxdWVzdC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmll
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXV0byByZXF1ZXN0Q2FtZXJh
QXV0aG9yaXphdGlvbiA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBmcmFtZSA9IG1h
a2VSZWYoZnJhbWUpLCBwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgd2ViVmll
dyA9IFJldGFpblB0cjxXS1dlYlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpLCB0b3BMZXZl
bE9yaWdpbiA9IG1ha2VSZWYodG9wTGV2ZWxPcmlnaW4pLCBjYW1lcmFBdXRob3JpemF0aW9uU3Rh
dHVzXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVz
ZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFwcm90ZWN0ZWRSZXF1ZXN0LT5yZXF1
aXJlc1ZpZGVvQ2FwdHVyZSgpKSB7CisgICAgICAgIGlmICghcHJvdGVjdGVkUmVxdWVzdC0+cmVx
dWlyZXNWaWRlb0NhcHR1cmUoKSB8fCBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0
aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKICAgICAgICAgICAgIHJlcXVlc3RVc2VyTWVk
aWFBdXRob3JpemF0aW9uRm9yRnJhbWUoZnJhbWUsIHRvcExldmVsT3JpZ2luLCBwcm90ZWN0ZWRS
ZXF1ZXN0LCAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KXdlYWtUaGlzLT5tX3VpRGVsZWdhdGUu
bV9kZWxlZ2F0ZS5nZXQoKSwgKndlYlZpZXcuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIEFWQXV0aG9yaXphdGlvblN0YXR1cyBjYW1lcmFBdXRob3JpemF0
aW9uU3RhdHVzID0gdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPyBBVkF1dGhvcml6YXRpb25TdGF0
dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0
aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dOwotICAgICAgICBzd2l0Y2gg
KGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMpIHsKLSAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkOgorCisgICAgICAgIGF1dG8gdGNjUHJvbXB0Q29tcGxldGlvbkhh
bmRsZXIgPSBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZnJhbWUgPSBXVEZNb3ZlKGZy
YW1lKSwgcHJvdGVjdGVkUmVxdWVzdCA9IFdURk1vdmUocHJvdGVjdGVkUmVxdWVzdCksIHdlYlZp
ZXcgPSBXVEZNb3ZlKHdlYlZpZXcpLCB0b3BMZXZlbE9yaWdpbiA9IFdURk1vdmUodG9wTGV2ZWxP
cmlnaW4pXShCT09MIGF1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgIGlmICghYXV0aG9yaXplZCB8
fCAhd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNv
bjo6UGVybWlzc2lvbkRlbmllZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JGcmFtZShm
cmFtZSwgdG9wTGV2ZWxPcmlnaW4sIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRl
UHJpdmF0ZT4pd2Vha1RoaXMtPm1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmll
dy5nZXQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRp
b25TdGF0dXNEZW5pZWQ6Ci0gICAgICAgIGNhc2UgQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJp
Y3RlZDoKLSAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9u
RGVuaWVkKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRp
b25TdGF0dXNOb3REZXRlcm1pbmVkOgotICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUp
LCBwcm90ZWN0ZWRSZXF1ZXN0ID0gV1RGTW92ZShwcm90ZWN0ZWRSZXF1ZXN0KSwgd2ViVmlldyA9
IFdURk1vdmUod2ViVmlldyksIHRvcExldmVsT3JpZ2luID0gV1RGTW92ZSh0b3BMZXZlbE9yaWdp
bildKEJPT0wgYXV0aG9yaXplZCkgewotICAgICAgICAgICAgICAgIGlmICghYXV0aG9yaXplZCB8
fCAhd2Vha1RoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+ZGVu
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxS
ZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVlc3RVc2VyTWVkaWFBdXRob3Jp
emF0aW9uRm9yRnJhbWUoZnJhbWUsIHRvcExldmVsT3JpZ2luLCBwcm90ZWN0ZWRSZXF1ZXN0LCAo
aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KXdlYWtUaGlzLT5tX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKSwgKndlYlZpZXcuZ2V0KCkpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJl
cXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIEFWTWVk
aWFUeXBlVmlkZW8pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBBU1NFUlQoY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6
YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKTsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZShXVEZNb3ZlKHRjY1Byb21wdENvbXBsZXRpb25IYW5kbGVyKSwgQVZNZWRp
YVR5cGVWaWRlbyk7CiAgICAgfTsKIAotICAgIGlmIChyZXF1aXJlc0F1ZGlvQ2FwdHVyZSkgewot
ICAgICAgICBBVkF1dGhvcml6YXRpb25TdGF0dXMgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0
dXMgPSB1c2luZ01vY2tDYXB0dXJlRGV2aWNlcyA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhv
cml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0
dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107Ci0gICAgICAgIHN3aXRjaCAobWljcm9w
aG9uZUF1dGhvcml6YXRpb25TdGF0dXMpIHsKLSAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25T
dGF0dXNBdXRob3JpemVkOgotICAgICAgICAgICAgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb24o
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1
c0RlbmllZDoKLSAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgot
ICAgICAgICAgICAgcmVxdWVzdC5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJt
aW5lZDoKLSAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbcHJvdGVjdGVkUmVx
dWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uID0gV1RG
TW92ZShyZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbigpOwotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IEFWTWVkaWFUeXBlVmlkZW8pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBp
ZiAoIXJlcXVpcmVzQXVkaW9DYXB0dXJlIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVz
ID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAgcmVxdWVzdENh
bWVyYUF1dGhvcml6YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0
Q2FtZXJhQXV0aG9yaXphdGlvbigpOworCisgICAgYXV0byB0Y2NQcm9tcHRDb21wbGV0aW9uSGFu
ZGxlciA9IFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgcmVxdWVzdENhbWVy
YUF1dGhvcml6YXRpb24gPSBXVEZNb3ZlKHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uKV0oQk9P
TCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAg
ICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHk6OlVzZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3RDYW1lcmFBdXRo
b3JpemF0aW9uKCk7CisgICAgfTsKKworICAgIEFTU0VSVChtaWNyb3Bob25lQXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKTsKKyAgICByZXF1
ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUodGNjUHJvbXB0Q29tcGxldGlv
bkhhbmRsZXIpLCBBVk1lZGlhVHlwZUF1ZGlvKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMTViNmMxMzRiMGQ1
N2YwMmNkMmRiMzllYmY1NjNkY2E4NTY4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5tbQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6cGVybWl0dGVkVG9DYXB0dXJlQXVkaW8oKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0YXRpYyBib29s
IHZhbGlkVXNhZ2VTdHJpbmc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAg
ICAgICAgTlNTdHJpbmcgKnVzYWdlU3RyaW5nID0gTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGlj
dGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXTsKKyAgICAgICAgdmFsaWRV
c2FnZVN0cmluZyA9IHVzYWdlU3RyaW5nLmxlbmd0aDsKKyAgICB9KTsKKworICAgIHJldHVybiB2
YWxpZFVzYWdlU3RyaW5nOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwor
Ym9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9D
YXB0dXJlVmlkZW8oKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0YXRpYyBib29sIHZhbGlkVXNhZ2VTdHJpbmc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgTlNTdHJpbmcgKnVz
YWdlU3RyaW5nID0gTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TQ2FtZXJh
VXNhZ2VEZXNjcmlwdGlvbiJdOworICAgICAgICB2YWxpZFVzYWdlU3RyaW5nID0gdXNhZ2VTdHJp
bmcubGVuZ3RoOworICAgIH0pOworCisgICAgcmV0dXJuIHZhbGlkVXNhZ2VTdHJpbmc7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW0KaW5kZXggYWM5ZjNjYTRhMzc5MmVjZmMyNTU5ZWUxMTg3ZWZjZTVkNmI0NWU2NC4uMWI5OGNj
MGRlMzhkZjA5YzZjZTA5NzczOWVhMjJjOTk3NDc0NGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIK
KyNpbXBvcnQgIkNvY29hSW1hZ2UuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQg
IkRhdGFEZXRlY3Rpb25SZXN1bHQuaCIKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCkBA
IC02MCw2ICs2MSwxMiBAQAogI2ltcG9ydCAiTWVkaWFVc2FnZU1hbmFnZXJDb2NvYS5oIgogI2Vu
ZGlmCiAKKyNpZiBVU0UoQVBQS0lUKQorI2ltcG9ydCA8QXBwS2l0L05TSW1hZ2UuaD4KKyNlbHNl
CisjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykK
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjZjQ1YWRhNjQ1M2U2YjE5YTUzMjEw
NGQwODBlYTRjMWUyNDQzN2Y2Li4wM2IzOGQzZjE0MGY5OWI0Yzg2Njc0MzNjODRiNTAxYTRmYTI2
NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC03Miw2ICs3Miwx
OCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpmb3JFYWNo
KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChVcwogfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0o
Q09DT0EpCitib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJt
aXR0ZWRUb0NhcHR1cmVBdWRpbygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZp
ZGVvKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX3Jl
amVjdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OjpyZWplY3Rpb25UaW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmgKaW5kZXggOTU4YTE2ZDA1ZWMyNDEwNzBjNjc3YzQxYjExYjI0OTkxM2Rl
N2E1Yi4uMGM4NzI5ZTdmY2ZhYWIzYWY5MDE1NmM4NGQzMDM2MDllZmUxZDJlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHN0YXRpYyB2b2lkIGZvckVhY2goY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik+Jik7
CiAjZW5kaWYKKyAgICBzdGF0aWMgYm9vbCBwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbygpOworICAg
IHN0YXRpYyBib29sIHBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVvKCk7CiAKICAgICB2b2lkIGludmFs
aWRhdGVQZW5kaW5nUmVxdWVzdHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWU3M2ZiYjkzMDQ0YjAxYzU2MjM1NGIyNmI1OTE0
OGQ4NzkwZjNjNS4uYzYwMDEwNTNjNDk2NjAwODQzYmU5MTQ0YTZiYzI0NjI4MWI5MGE1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTI5LDYgKzIxMjksNyBAQAogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDE3ODlCMjNCQUUyNjEwMDVGMEZBQSAvKiBSZW1v
dGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcwMTc4OUMyM0JBRTI2MjAwNUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVD
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwMjU5QkUyNTIyODQxQzAwMTUzNDA1IC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MUJDNTc3MjNDOTNCQjcwMDY4MEQ3QyAvKiBBdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzFCQzU3OTIzQzkzQkI5MDA2
ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzFCQzU3QjIzQ0E1MzI0MDA2ODBEN0MgLyogVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzU1LDYgKzYzNTYsNyBAQAogCQkJCTFB
RkU0MzYzMThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLm1tICovLAogCQkJCTQ2MzIzNjg2
MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcCAqLywKIAkJCQk0
NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovLAor
CQkJCTA3MDI1OUJFMjUyMjg0MUMwMDE1MzQwNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5tbSAqLywKIAkJCQk0MTFBOUE5QTI1MURFOTNFMDA4MDdEN0UgLyogVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5tbSAqLywKIAkJCQlFNEU4NjQ4RTFCMTY3M0ZC
MDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5oICovLAogCQkJCUU0RTg2NDhGMUIxNjczRkIwMEM4
MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLm1tICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRkY2U4YjM5Y2RhMzk5ZWNlYjYzOTQ0M2QzYzc0OTFm
Mjg4YzNmNjcuLmVlN2I2Y2VmMDhlYjQ1MmQ5YWZjYjZlNTNiNDUzNDdmN2JlOTQ1ZjMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMC0wOS0yOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBQcmV2ZW50IG1lZGlhIGNhcHR1cmUgdW5sZXNzIHRoZSBhcHBsaWNhdGlvbiBo
YXMgY29ycmVjdCBkYXRhIGZvciBzeXN0ZW0gcGVybWlzc2lvbiBwcm9tcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzEwNAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjk3NjE5Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdDogQWRkIG5lY2Vzc2Fy
eSBlbnRpdGxlbWVudHMgYW5kIHVzYWdlIHN0cmluZ3MuCisKKyAgICAgICAgKiBNb2JpbGVNaW5p
QnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3NlckZyYW1ld29yay9XZWJWaWV3Q29udHJvbGxlci5tOgor
ICAgICAgICAoLVtXZWJWaWV3Q29udHJvbGxlciBjcmVhdGVXZWJWaWV3XSk6IFNldHRpbmcgdGhl
IHByaXZhdGUgY2FwdHVyZSBwcmVmZXJlbmNlIGlzCisgICAgICAgIG5vdCBuZWNlc3NhcnkgYmVj
YXVzZSB3ZSBzZXQgY29uZmlndXJhdGlvbi5fbWVkaWFDYXB0dXJlRW5hYmxlZC4KKwogMjAyMC0w
OS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJbmRleGVk
REIgSW5kZXggQ29ycnVwdGlvbiBhZnRlciB1cGdyYWRlIGZyb20gaU9TIDEzIHRvIGlPUyAxNApk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvSW5mby5wbGlzdAppbmRleCAwMjMyYjE4MGY0ODQxY2NlYTQyOTNlMDQ5NjU1
MzNlMWE2OTkwNzQ3Li41M2Q2Mzg3NDYxZTc3YTllMTViZDAwNmRjYjU3N2Y5MmIzYmVhYmNmIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdApAQCAtNTIsNSArNTIsMTMgQEAKIAkJCTxzdHJpbmc+
RWRpdG9yPC9zdHJpbmc+CiAJCTwvZGljdD4KIAk8L2FycmF5PgorICAgIDxrZXk+Y29tLmFwcGxl
LnNlY3VyaXR5LmRldmljZS5jYW1lcmE8L2tleT4KKyAgICA8dHJ1ZS8+CisgICAgPGtleT5jb20u
YXBwbGUuc2VjdXJpdHkuZGV2aWNlLm1pY3JvcGhvbmU8L2tleT4KKyAgICA8dHJ1ZS8+CisgICAg
PGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKyAgICA8c3RyaW5nPlJlY29yZGlu
ZyByYW5kb20gdmlkZW9zPC9zdHJpbmc+CisgICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2Ny
aXB0aW9uPC9rZXk+CisgICAgPHN0cmluZz5SZWNvcmRpbmcgcmFuZG9tIGF1ZGlvPC9zdHJpbmc+
CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIv
TW9iaWxlTWluaUJyb3dzZXJGcmFtZXdvcmsvV2ViVmlld0NvbnRyb2xsZXIubSBiL1Rvb2xzL01v
YmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyRnJhbWV3b3JrL1dlYlZpZXdDb250cm9s
bGVyLm0KaW5kZXggOTQ3ZGY4ZmIxZTNiZTBlODQ5MmU3ZjQwNGQ5MmE5ZDI0OTRkNmY5Yi4uMzNh
YjAzN2U1ZGE0NzZkODJkYmMyMzUxY2ZhMmNmYWVjYzkwMDU3MiAxMDA2NDQKLS0tIGEvVG9vbHMv
TW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXJGcmFtZXdvcmsvV2ViVmlld0NvbnRy
b2xsZXIubQorKysgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3NlckZy
YW1ld29yay9XZWJWaWV3Q29udHJvbGxlci5tCkBAIC0xNzcsNyArMTc3LDYgQEAgLSAoV0tXZWJW
aWV3ICopY3JlYXRlV2ViVmlldwogewogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwogCi0gICAg
Y29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcy5fbWVkaWFEZXZpY2VzRW5hYmxlZCA9IFlFUzsKICAg
ICBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0g
WUVTOwogCiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6c2VsZi53ZWJWaWV3Q29udGFpbmVyLmJvdW5kcyBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410072</attachid>
            <date>2020-09-29 17:31:16 -0700</date>
            <delta_ts>2020-10-01 11:28:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217104-20200929173115.patch</filename>
            <type>text/plain</type>
            <size>20160</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3MjVmZmRjYmM3MWUyMWM1
ZjFjYmRkODUzNDAxZDYwNDFjZDQ5M2YuLmE3ZGZjODU2OTNiZTJhNzI0NzQ4Yjg4MGVkNzBmMmNm
MmRiNzg5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMDktMjkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBtZWRpYSBj
YXB0dXJlIHVubGVzcyB0aGUgYXBwbGljYXRpb24gaGFzIGNvcnJlY3QgZGF0YSBmb3Igc3lzdGVt
IHBlcm1pc3Npb24gcHJvbXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcxMDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzYxOTI5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRlc3RlZCBtYW51YWxs
eSB3aXRoIE1pbmlCcm93c2VyLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6cmVx
dWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0QWNj
ZXNzRm9yTWVkaWFUeXBlLgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpOiBEZW55CisgICAgICAg
IHJlcXVlc3RzIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBub3QgcGVybWl0dGVkIHRvIGNhcHR1cmUu
IFJlc3RydWN0dXJlIGxvZ2ljIHRvCisgICAgICAgIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3Rh
bmQuCisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKTogQ2hlY2sK
KyAgICAgICAgZm9yIHJlcXVpcmVkIEluZm8ucGxpc3Qgc3RyaW5nLgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0
dXJlVmlkZW8pOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbTogVXBkYXRlIGZvciB1bmlmaWVkIGJ1aWxkLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRl
ZFRvQ2FwdHVyZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVvKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wOS0yOSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92
ZSBwbGlzdC1iYXNlZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0b3JhZ2UsIHdoaWNoIGhhcyBi
ZWVuIHJlcGxhY2VkIGJ5IGRhdGFiYXNlLWJhc2VkIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCBhNWEwMWMzMGU0NGVkYmUwYWViY2E2ZDJkYWI1ZGQ5YzM0Mjg4NjNkLi5lMTZjMjRm
NTYyYzRkZWJmOTViMzFhOTY3YTM2ZDNiZTc3N2M1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0zODYsNiArMzg2LDcgQEAgVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXIubW0KIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvVUlS
ZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcAorVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1ZlcnNpb25DaGVja3MubW0KIFVJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDNjODhhZDY1Y2JlZWViZGRhYjRhMDQ0
ZmRkNWVkNTE1ZGVkYTAxYmIuLjBlNzI5NDA4ZmMwZThmNDIwZTJjMWJhNjQ3MWE4N2VkY2JiYTA5
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
MzQsNiArMzQsNyBAQAogI2ltcG9ydCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2ltcG9ydCAi
TmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25DaGVj
a1Byb3h5LmgiCisjaW1wb3J0ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oIgogI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogI2ltcG9y
dCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKQEAgLTk0MCw3
ICs5NDEsNyBAQCBzdGF0aWMgdm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckZy
YW1lKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUAogICAgIFtkZWxlZ2F0ZSBfd2ViVmll
dzomd2ViVmlldyByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6ZGV2aWNl
cyB1cmw6cmVxdWVzdEZyYW1lVVJMIG1haW5GcmFtZVVSTDptYWluRnJhbWVVUkwgZGVjaXNpb25I
YW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CiB9CiAKLXN0YXRpYyB2b2lkIHJlcXVlc3RB
Y2Nlc3NGb3JNZWRpYVR5cGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBVk1lZGlhVHlwZSB0eXBlKQorc3RhdGljIHZvaWQgcmVx
dWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEJP
T0wgYXV0aG9yaXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUpCiB7
CiAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKQEAgLTk3Myw2MSArOTc0LDY2IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgfQogCiAgICAgYm9vbCB1c2luZ01vY2tDYXB0
dXJlRGV2aWNlcyA9IHBhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
KCk7Ci0gICAgYXV0byByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbiA9IFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBwcm90ZWN0ZWRSZXF1ZXN0
ID0gbWFrZVJlZihyZXF1ZXN0KSwgd2ViVmlldyA9IFJldGFpblB0cjxXS1dlYlZpZXc+KG1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcpLCB0b3BMZXZlbE9yaWdpbiA9IG1ha2VSZWYodG9wTGV2ZWxPcmln
aW4pLCB1c2luZ01vY2tDYXB0dXJlRGV2aWNlc10oKSBtdXRhYmxlIHsKKyAgICBpZiAoIXVzaW5n
TW9ja0NhcHR1cmVEZXZpY2VzKSB7CisgICAgICAgIGlmIChyZXF1aXJlc0F1ZGlvQ2FwdHVyZSAm
JiAhVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2Fw
dHVyZUF1ZGlvKCkpIHsKKyAgICAgICAgICAgIHJlcXVlc3QuZGVueShVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25E
ZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyZXF1
aXJlc1ZpZGVvQ2FwdHVyZSAmJiAhVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVvKCkpIHsKKyAgICAgICAgICAgIHJlcXVlc3QuZGVu
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxS
ZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9IHVzaW5n
TW9ja0NhcHR1cmVEZXZpY2VzIHx8ICFyZXF1aXJlc0F1ZGlvQ2FwdHVyZSA/IEFWQXV0aG9yaXph
dGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1
dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107CisgICAgaWYg
KG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0Rl
bmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25T
dGF0dXNSZXN0cmljdGVkKSB7CisgICAgICAgIHJlcXVlc3QuZGVueShVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25E
ZW5pZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gY2FtZXJhQXV0
aG9yaXphdGlvblN0YXR1cyA9IHVzaW5nTW9ja0NhcHR1cmVEZXZpY2VzIHx8ICFyZXF1aXJlc1Zp
ZGVvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZN
ZWRpYVR5cGVWaWRlb107CisgICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZB
dXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICByZXF1ZXN0LmRlbnko
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVh
c29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBhdXRvIHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHByb3RlY3RlZFJlcXVlc3QgPSBtYWtl
UmVmKHJlcXVlc3QpLCB3ZWJWaWV3ID0gUmV0YWluUHRyPFdLV2ViVmlldz4obV91aURlbGVnYXRl
Lm1fd2ViVmlldyksIHRvcExldmVsT3JpZ2luID0gbWFrZVJlZih0b3BMZXZlbE9yaWdpbiksIGNh
bWVyYUF1dGhvcml6YXRpb25TdGF0dXNdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1Ro
aXMpIHsKICAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9u
RGVuaWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoIXBy
b3RlY3RlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkpIHsKKyAgICAgICAgaWYgKCFw
cm90ZWN0ZWRSZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpIHx8IGNhbWVyYUF1dGhvcml6
YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkgewogICAgICAg
ICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JGcmFtZShmcmFtZSwgdG9wTGV2
ZWxPcmlnaW4sIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pd2Vh
a1RoaXMtPm1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgQVZBdXRob3JpemF0aW9uU3Rh
dHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSB1c2luZ01vY2tDYXB0dXJlRGV2aWNlcyA/
IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZp
Y2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRl
b107Ci0gICAgICAgIHN3aXRjaCAoY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cykgewotICAgICAg
ICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ6CisKKyAgICAgICAgYXV0byB0
Y2NQcm9tcHRDb21wbGV0aW9uSGFuZGxlciA9IFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
LCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpLCBwcm90ZWN0ZWRSZXF1ZXN0ID0gV1RGTW92ZShwcm90
ZWN0ZWRSZXF1ZXN0KSwgd2ViVmlldyA9IFdURk1vdmUod2ViVmlldyksIHRvcExldmVsT3JpZ2lu
ID0gV1RGTW92ZSh0b3BMZXZlbE9yaWdpbildKEJPT0wgYXV0aG9yaXplZCkgeworICAgICAgICAg
ICAgaWYgKCFhdXRob3JpemVkIHx8ICF3ZWFrVGhpcykgeworICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFJlcXVlc3QtPmRlbnkoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1l
ZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXF1ZXN0VXNlck1lZGlhQXV0
aG9yaXphdGlvbkZvckZyYW1lKGZyYW1lLCB0b3BMZXZlbE9yaWdpbiwgcHJvdGVjdGVkUmVxdWVz
dCwgKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPil3ZWFrVGhpcy0+bV91aURlbGVnYXRlLm1fZGVs
ZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZDoKLSAgICAgICAgY2FzZSBBVkF1dGhv
cml6YXRpb25TdGF0dXNSZXN0cmljdGVkOgotICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+
ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5p
YWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBjYXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ6Ci0gICAgICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGZy
YW1lID0gV1RGTW92ZShmcmFtZSksIHByb3RlY3RlZFJlcXVlc3QgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFJlcXVlc3QpLCB3ZWJWaWV3ID0gV1RGTW92ZSh3ZWJWaWV3KSwgdG9wTGV2ZWxPcmlnaW4gPSBX
VEZNb3ZlKHRvcExldmVsT3JpZ2luKV0oQk9PTCBhdXRob3JpemVkKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFhdXRob3JpemVkIHx8ICF3ZWFrVGhpcykgewotICAgICAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRSZXF1ZXN0LT5kZW55KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVz
ZXJNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVx
dWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JGcmFtZShmcmFtZSwgdG9wTGV2ZWxPcmlnaW4s
IHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pd2Vha1RoaXMtPm1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5nZXQoKSk7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIEFTU0VSVChjYW1lcmFBdXRob3JpemF0aW9u
U3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpOworICAgICAgICBy
ZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUodGNjUHJvbXB0Q29tcGxl
dGlvbkhhbmRsZXIpLCBBVk1lZGlhVHlwZVZpZGVvKTsKICAgICB9OwogCi0gICAgaWYgKHJlcXVp
cmVzQXVkaW9DYXB0dXJlKSB7Ci0gICAgICAgIEFWQXV0aG9yaXphdGlvblN0YXR1cyBtaWNyb3Bo
b25lQXV0aG9yaXphdGlvblN0YXR1cyA9IHVzaW5nTW9ja0NhcHR1cmVEZXZpY2VzID8gQVZBdXRo
b3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCA6IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNz
KCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKLSAg
ICAgICAgc3dpdGNoIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cykgewotICAgICAgICBj
YXNlIEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ6Ci0gICAgICAgICAgICByZXF1ZXN0
Q2FtZXJhQXV0aG9yaXphdGlvbigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
QVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkOgotICAgICAgICBjYXNlIEFWQXV0aG9yaXphdGlv
blN0YXR1c1Jlc3RyaWN0ZWQ6Ci0gICAgICAgICAgICByZXF1ZXN0LmRlbnkoVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNz
aW9uRGVuaWVkKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBVkF1dGhvcml6
YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOgotICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgcmVxdWVzdENhbWVy
YUF1dGhvcml6YXRpb24gPSBXVEZNb3ZlKHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uKV0oQk9P
TCBhdXRob3JpemVkKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1p
c3Npb25EZW5pZWQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uKCk7Ci0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQorICAgIGlmICghcmVxdWlyZXNBdWRpb0NhcHR1cmUgfHwgbWljcm9waG9u
ZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkg
eworICAgICAgICByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHJlcXVlc3RDYW1lcmFBdXRob3JpemF0aW9uKCk7CisKKyAgICBhdXRvIHRj
Y1Byb21wdENvbXBsZXRpb25IYW5kbGVyID0gW3Byb3RlY3RlZFJlcXVlc3QgPSBtYWtlUmVmKHJl
cXVlc3QpLCByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbiA9IFdURk1vdmUocmVxdWVzdENhbWVy
YUF1dGhvcml6YXRpb24pXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAo
IWF1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPmRlbnkoVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQ
ZXJtaXNzaW9uRGVuaWVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfTsKKyAgICAg
ICAgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb24oKTsKKyAgICB9OworCisgICAgQVNTRVJUKG1p
Y3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERl
dGVybWluZWQpOworICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoV1RGTW92
ZSh0Y2NQcm9tcHRDb21wbGV0aW9uSGFuZGxlciksIEFWTWVkaWFUeXBlQXVkaW8pOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWMyOGQ3MWY0OTE0ZmZhYWJiMDQwZWMzZTE1ODUwODRjNzMzM2I4NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbygpCit7Cisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBzdGF0aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5
bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9u
YXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGg7CisgICAgcmV0dXJu
IGlzUGVybWl0dGVkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9v
bCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0
dXJlVmlkZW8oKQoreworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgc3RhdGljIGJvb2wg
aXNQZXJtaXR0ZWQgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1
bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGg7
CisgICAgcmV0dXJuIGlzUGVybWl0dGVkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGFjOWYzY2E0YTM3OTJlY2Zj
MjU1OWVlMTE4N2VmY2U1ZDZiNDVlNjQuLjFiOThjYzBkZTM4ZGYwOWM2Y2UwOTc3MzllYTIyYzk5
NzQ3NDRiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkFQSUF0dGFjaG1l
bnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0ICJDb2NvYUltYWdlLmgiCiAj
aW1wb3J0ICJDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAj
aW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgpAQCAtNjAsNiArNjEsMTIgQEAKICNpbXBvcnQg
Ik1lZGlhVXNhZ2VNYW5hZ2VyQ29jb2EuaCIKICNlbmRpZgogCisjaWYgVVNFKEFQUEtJVCkKKyNp
bXBvcnQgPEFwcEtpdC9OU0ltYWdlLmg+CisjZWxzZQorI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5o
PgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1dl
YkZpbHRlckV2YWx1YXRvclNQSS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKaW5kZXggY2Y0NWFkYTY0NTNlNmIxOWE1MzIxMDRkMDgwZWE0YzFlMjQ0MzdmNi4uMDNiMzhk
M2YxNDBmOTliNGM4NjY3NDMzYzg0YjUwMWE0ZmEyNjU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcApAQCAtNzIsNiArNzIsMTggQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Zm9yRWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
VXMKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorYm9vbCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlQXVkaW8oKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbygpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisjZW5kaWYKKwogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkK
ICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9yZWplY3Rpb25UaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVqZWN0
aW9uVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IDk1OGEx
NmQwNWVjMjQxMDcwYzY3N2M0MWIxMWIyNDk5MTNkZTdhNWIuLjBjODcyOWU3ZmNmYWFiM2FmOTAx
NTZjODRkMzAzNjA5ZWZlMWQyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApA
QCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBz
dGF0aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYpPiYpOwogI2VuZGlmCisgICAgc3RhdGljIGJvb2wg
cGVybWl0dGVkVG9DYXB0dXJlQXVkaW8oKTsKKyAgICBzdGF0aWMgYm9vbCBwZXJtaXR0ZWRUb0Nh
cHR1cmVWaWRlbygpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3RzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGFlNzNmYmI5MzA0NGIwMWM1NjIzNTRiMjZiNTkxNDhkODc5MGYzYzUuLmM2MDAxMDUzYzQ5NjYw
MDg0M2JlOTE0NGE2YmMyNDYyODFiOTBhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEyOSw2ICsyMTI5LDcgQEAKIAkJMDBCOTY2
MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzAxNzg5QjIzQkFFMjYxMDA1RjBGQUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDE3ODlDMjNCQUUyNjIwMDVGMEZB
QSAvKiBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVt
b3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3MDI1OUJFMjUyMjg0MUMwMDE1MzQwNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzFCQzU3NzIzQzkzQkI3MDA2ODBEN0MgLyogQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcxQkM1NzkyM0M5M0JCOTAwNjgwRDdDIC8qIEF1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcxQkM1N0IyM0NBNTMyNDAwNjgwRDdD
IC8qIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjM1NSw2ICs2MzU2LDcgQEAKIAkJCQkxQUZFNDM2MzE4QjZDMDgxMDA5QzdBNDggLyog
VUlEZWxlZ2F0ZS5tbSAqLywKIAkJCQk0NjMyMzY4NjIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1v
dGVPYmplY3RSZWdpc3RyeS5jcHAgKi8sCiAJCQkJNDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8q
IFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLywKKwkJCQkwNzAyNTlCRTI1MjI4NDFDMDAxNTM0
MDUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0gKi8sCiAJCQkJ
NDExQTlBOUEyNTFERTkzRTAwODA3RDdFIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkubW0gKi8sCiAJCQkJRTRFODY0OEUxQjE2NzNGQjAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3Mu
aCAqLywKIAkJCQlFNEU4NjQ4RjFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5tbSAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBk
ZGNlOGIzOWNkYTM5OWVjZWI2Mzk0NDNkM2M3NDkxZjI4OGMzZjY3Li41NjVhNDE4MWVkMzZhMDhl
YjM3YTgwNWYxN2FlMmYzNjQwYzY5YTIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDktMjkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJldmVudCBtZWRpYSBj
YXB0dXJlIHVubGVzcyB0aGUgYXBwbGljYXRpb24gaGFzIGNvcnJlY3QgZGF0YSBmb3Igc3lzdGVt
IHBlcm1pc3Npb24gcHJvbXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTcxMDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzYxOTI5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
bWFjL0luZm8ucGxpc3Q6IEFkZCBuZWNlc3NhcnkgZW50aXRsZW1lbnRzIGFuZCB1c2FnZSBzdHJp
bmdzLgorCisgICAgICAgICogTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXJGcmFt
ZXdvcmsvV2ViVmlld0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV2ViVmlld0NvbnRyb2xsZXIg
Y3JlYXRlV2ViVmlld10pOiBTZXR0aW5nIHRoZSBwcml2YXRlIGNhcHR1cmUgcHJlZmVyZW5jZSBp
cworICAgICAgICBub3QgbmVjZXNzYXJ5IGJlY2F1c2Ugd2Ugc2V0IGNvbmZpZ3VyYXRpb24uX21l
ZGlhQ2FwdHVyZUVuYWJsZWQuCisKIDIwMjAtMDktMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCIEluZGV4IENvcnJ1cHRpb24gYWZ0ZXIgdXBn
cmFkZSBmcm9tIGlPUyAxMyB0byBpT1MgMTQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9JbmZvLnBsaXN0IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKaW5kZXgg
MDIzMmIxODBmNDg0MWNjZWE0MjkzZTA0OTY1NTMzZTFhNjk5MDc0Ny4uNTNkNjM4NzQ2MWU3N2E5
ZTE1YmQwMDZkY2I1NzdmOTJiM2JlYWJjZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKQEAg
LTUyLDUgKzUyLDEzIEBACiAJCQk8c3RyaW5nPkVkaXRvcjwvc3RyaW5nPgogCQk8L2RpY3Q+CiAJ
PC9hcnJheT4KKyAgICA8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5kZXZpY2UuY2FtZXJhPC9rZXk+
CisgICAgPHRydWUvPgorICAgIDxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmRldmljZS5taWNyb3Bo
b25lPC9rZXk+CisgICAgPHRydWUvPgorICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
PC9rZXk+CisgICAgPHN0cmluZz5SZWNvcmRpbmcgcmFuZG9tIHZpZGVvczwvc3RyaW5nPgorICAg
IDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorICAgIDxzdHJpbmc+UmVj
b3JkaW5nIHJhbmRvbSBhdWRpbzwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyRnJhbWV3b3JrL1dl
YlZpZXdDb250cm9sbGVyLm0gYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJv
d3NlckZyYW1ld29yay9XZWJWaWV3Q29udHJvbGxlci5tCmluZGV4IDk0N2RmOGZiMWUzYmUwZTg0
OTJlN2Y0MDRkOTJhOWQyNDk0ZDZmOWIuLjMzYWIwMzdlNWRhNDc2ZDgyZGJjMjM1MWNmYTJjZmFl
Y2M5MDA1NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlC
cm93c2VyRnJhbWV3b3JrL1dlYlZpZXdDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTW9iaWxlTWlu
aUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXJGcmFtZXdvcmsvV2ViVmlld0NvbnRyb2xsZXIubQpA
QCAtMTc3LDcgKzE3Nyw2IEBAIC0gKFdLV2ViVmlldyAqKWNyZWF0ZVdlYlZpZXcKIHsKICAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XTsKIAotICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMuX21l
ZGlhRGV2aWNlc0VuYWJsZWQgPSBZRVM7CiAgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcy5f
bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKIAogICAgIFdLV2ViVmlldyAqd2ViVmll
dyA9IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnNlbGYud2ViVmlld0NvbnRhaW5l
ci5ib3VuZHMgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>