<?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>212795</bug_id>
          
          <creation_ts>2020-06-04 18:04:42 -0700</creation_ts>
          <short_desc>Add WKUIDelegate SPI to confirm before opening a PDF</short_desc>
          <delta_ts>2020-06-05 13:16:30 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1659439</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-04 18:04:42 -0700</bug_when>
    <thetext>Add WKUIDelegate SPI to confirm before opening a PDF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659440</commentid>
    <comment_count>1</comment_count>
      <attachid>401106</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-04 18:05:38 -0700</bug_when>
    <thetext>Created attachment 401106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659441</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-04 18:05:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/58715847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659442</commentid>
    <comment_count>3</comment_count>
      <attachid>401106</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-04 18:12:29 -0700</bug_when>
    <thetext>Comment on attachment 401106
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:118
&gt; +- (void)_webView:(WKWebView *)webView confirmPDFOpeningFromFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

I don&apos;t love the name. I don&apos;t have a great alternative.

shouldAllowPDFToOpenFromFrame? canOpenPDFFromFrame?

&gt; Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:510
&gt; +    FileSystem::setMetadataURL(nsPath.get(), originatingURLString);

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659456</commentid>
    <comment_count>4</comment_count>
      <attachid>401110</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-04 20:00:47 -0700</bug_when>
    <thetext>Created attachment 401110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659463</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-04 20:28:50 -0700</bug_when>
    <thetext>Committed r262592: &lt;https://trac.webkit.org/changeset/262592&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401110.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659749</commentid>
    <comment_count>6</comment_count>
      <attachid>401110</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-05 12:49:00 -0700</bug_when>
    <thetext>Comment on attachment 401110
Patch

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

&gt; Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:517
&gt; +        if (allowed)
&gt; +            return;
&gt; +        [[NSWorkspace sharedWorkspace] openURL:[NSURL fileURLWithPath:nsPath.get() isDirectory:NO]];

This reads as if it’s backwards.

&gt; Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:533
&gt; +        if (allowed)
&gt; +            return;
&gt; +        [[NSWorkspace sharedWorkspace] openURL:[NSURL fileURLWithPath:pdfFilename isDirectory:NO]];

This reads as if it’s backwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659751</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-05 12:51:52 -0700</bug_when>
    <thetext>Oh no, I must need glasses :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659767</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-05 13:16:30 -0700</bug_when>
    <thetext>Oops!  That&apos;s what I get for making the code look nicer after verifying it works.
http://trac.webkit.org/r262649</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401106</attachid>
            <date>2020-06-04 18:05:38 -0700</date>
            <delta_ts>2020-06-04 20:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212795-20200604180537.patch</filename>
            <type>text/plain</type>
            <size>17585</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI1OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA2LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZSBTUEkgdG8gY29uZmlybSBiZWZvcmUgb3BlbmluZyBhIFBERgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzk1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81ODcxNTg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
VUlDbGllbnQ6OmNvbmZpcm1QREZPcGVuaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpjb25maXJtUERGT3BlbmluZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0
aXZlQXBwbGljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om9wZW5QREZG
cm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNhdmVQREZUb1Rl
bXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMjAtMDYtMDQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVSVByb2Nlc3MgbWF5IGNyYXNoIGFmdGVyIGl0
cyBwcmV3YXJtZWQgV2ViUHJvY2VzcyBnZXRzIHRlcm1pbmF0ZWQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjI1NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5NSw4ICsx
Mjk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nJiYgbWltZVR5cGUsIFVSTCYmIG9y
aWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmKTsKICAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMJiYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlv
bihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0
aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIHBk
ZlVVSUQpOwotICAgIHZvaWQgb3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBw
bGljYXRpb24oY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKKyAgICB2b2lkIHNhdmVQREZUb1RlbXBv
cmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOworICAgIHZvaWQgb3BlblBERkZyb21UZW1wb3JhcnlG
b2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24oRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcm
IHBkZlVVSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDQwLDggKzQ0MCw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMIG9yaWdpbmF0aW5nVVJMLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFNhdmVQREZUb1RlbXBvcmFyeUZv
bGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
LCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBT
dHJpbmcgcGRmVVVJRCkKLSAgICBPcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVB
cHBsaWNhdGlvbihTdHJpbmcgcGRmVVVJRCkKKyAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJB
bmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBzb3VyY2VGcmFtZUluZm8sIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhLCBTdHJpbmcgcGRmVVVJRCkKKyAgICBPcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRl
cldpdGhOYXRpdmVBcHBsaWNhdGlvbihzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIHNvdXJj
ZUZyYW1lSW5mbywgU3RyaW5nIHBkZlVVSUQpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQREZLSVRf
UExVR0lOKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJ
KHJldmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDggQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIHsgfQogCisgICAg
dmlydHVhbCB2b2lkIGNvbmZpcm1QREZPcGVuaW5nKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KKwogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiAgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgJKHJl
dmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsNyBAQCBzdHJ1
Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlld0RpZFNob3dTYWZlQnJvd3NpbmdXYXJu
aW5nOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCks
IGlvcygxMi4yKSk7CiAtICh2b2lkKV93ZWJWaWV3RGlkTG9zZVBvaW50ZXJMb2NrOihXS1dlYlZp
ZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIuMykpOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURp
ZENoYW5nZTooQk9PTCloYXNWaWRlb0luUGljdHVyZUluUGljdHVyZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29uZmlybVBERk9wZW5pbmdGcm9tRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXpl
Q2hhbmdlZDooQ0dTaXplKXNpemUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygx
MC4wKSk7CiAtIChOU0RpY3Rpb25hcnkgKilfZGF0YURldGVjdGlvbkNvbnRleHRGb3JXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aAkocmV2aXNpb24gMjYyNTQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJu
aW5nKCkgZmluYWw7CisgICAgICAgIHZvaWQgY29uZmlybVBERk9wZW5pbmcoV2ViUGFnZVByb3h5
JiwgRnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5h
bDsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2Vi
RnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKQEAgLTIzOCw2ICsy
MzksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIGJvb2wgd2ViVmlld0hhc1ZpZGVvSW5Q
aWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU2hv
d1NhZmVCcm93c2luZ1dhcm5pbmcgOiAxOworICAgICAgICBib29sIHdlYlZpZXdDb25maXJtUERG
T3BlbmluZ0Zyb21GcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQogICAgICAgICBib29sIHdlYlZpZXdSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsSW5pdGlh
dGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjI1NDgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzEsNiArMTcxLDggQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8
V0tVSURlbAogICAgIAogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYXNWaWRlb0luUGlj
dHVyZUluUGljdHVyZURpZENoYW5nZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3Omhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOildOwog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZyA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkU2hvd1Nh
ZmVCcm93c2luZ1dhcm5pbmc6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZp
cm1QREZPcGVuaW5nRnJvbUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb25maXJtUERGT3BlbmluZ0Zyb21GcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbml0aWF0ZWRC
eUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJh
bWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAjZW5kaWYKQEAgLTEyNjgsNiArMTI3MCwyNCBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRTaG93U2FmZUJyCiAgICAgW3N0YXRpY19jYXN0
PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3RGlkU2hvd1NhZmVC
cm93c2luZ1dhcm5pbmc6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiB9CiAKK3ZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmNvbmZpcm1QREZPcGVuaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3Q29uZmlybVBERk9wZW5pbmdGcm9tRnJhbWVDb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworCisgICAgYXV0byBkZWxl
Z2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUp
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKworICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKF93ZWJWaWV3OmNvbmZpcm1QREZPcGVuaW5nRnJvbUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOikpOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+
KGRlbGVnYXRlKSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNvbmZpcm1QREZPcGVu
aW5nRnJvbUZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1l
SW5mbyksICZwYWdlKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNv
bXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICB9KS5nZXQoKV07Cit9CisKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogCiBzdGF0aWMgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCB3ZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0KF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCShyZXZpc2lvbiAyNjI1NDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg3LDEyICsxMDg3LDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUwKICAgICBwYWdlQ2xpZW50KCku
ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBvcHVwSW5mbyk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2
ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRv
VGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcm
LCBGcmFtZUluZm9EYXRhJiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Om9w
ZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYpCit2b2lkIFdlYlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0
aXZlQXBwbGljYXRpb24oRnJhbWVJbmZvRGF0YSYmLCBjb25zdCBTdHJpbmcmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRl
LmgiCiAjaW1wb3J0ICJGb250SW5mby5oIgorI2ltcG9ydCAiRnJhbWVJbmZvRGF0YS5oIgogI2lt
cG9ydCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKICNpbXBvcnQgIk1lbnVVdGlsaXRpZXMuaCIKICNp
bXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTQ3NywxMyArNDc4LDEwIEBAIHN0
YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFMKICAgICByZXR1cm4gcGF0aDsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5X
aXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBE
RlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsKICAgICBN
RVNTQUdFX0NIRUNLKFRlbXBvcmFyeVBERkZpbGVNYXA6OmlzVmFsaWRLZXkocGRmVVVJRCkpOwog
Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mg
b3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRh
VVJMKCk/KS4KLSAgICBVTlVTRURfUEFSQU0ob3JpZ2luYXRpbmdVUkxTdHJpbmcpOwotCiAgICAg
aWYgKGRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IHNhdmUg
ZW1wdHkgUERGIGZpbGUgdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkuIik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTQ5NSwyOCArNDkzLDMyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9U
ZW1wb3JhcnlGb2wKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE5TU3RyaW5nICpuc1Bh
dGggPSBwYXRoVG9QREZPbkRpc2soc2FuaXRpemVkRmlsZW5hbWUpOworICAgIGF1dG8gbnNQYXRo
ID0gcmV0YWluUHRyKHBhdGhUb1BERk9uRGlzayhzYW5pdGl6ZWRGaWxlbmFtZSkpOwogCiAgICAg
aWYgKCFuc1BhdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxOU051bWJlcj4g
cGVybWlzc2lvbnMgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50OlNfSVJV
U1JdKTsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmaWxlQXR0cmlidXRlcyA9IGFkb3B0
TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6cGVybWlzc2lv
bnMuZ2V0KCksIE5TRmlsZVBvc2l4UGVybWlzc2lvbnMsIG5pbF0pOwotICAgIFJldGFpblB0cjxO
U0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0Nv
cHk6KHZvaWQqKWRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKSBmcmVlV2hlbkRvbmU6Tk9d
KTsKKyAgICBhdXRvIHBlcm1pc3Npb25zID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0
V2l0aEludDpTX0lSVVNSXSk7CisgICAgYXV0byBmaWxlQXR0cmlidXRlcyA9IGFkb3B0TlMoW1tO
U0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6cGVybWlzc2lvbnMuZ2V0
KCksIE5TRmlsZVBvc2l4UGVybWlzc2lvbnMsIG5pbF0pOworICAgIGF1dG8gbnNEYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YS5kYXRh
KCkgbGVuZ3RoOmRhdGEuc2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwogCi0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZUZpbGVBdFBhdGg6bnNQYXRoIGNvbnRl
bnRzOm5zRGF0YS5nZXQoKSBhdHRyaWJ1dGVzOmZpbGVBdHRyaWJ1dGVzLmdldCgpXSkgeworICAg
IGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVGaWxlQXRQYXRoOm5z
UGF0aC5nZXQoKSBjb250ZW50czpuc0RhdGEuZ2V0KCkgYXR0cmlidXRlczpmaWxlQXR0cmlidXRl
cy5nZXQoKV0pIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3QgY3JlYXRlIFBERiBmaWxl
IGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICglcykuIiwgc2FuaXRpemVkRmlsZW5hbWUudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgYXV0byBvcmlnaW5hdGlu
Z1VSTFN0cmluZyA9IGZyYW1lSW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpOworICAgIEZpbGVT
eXN0ZW06OnNldE1ldGFkYXRhVVJMKG5zUGF0aC5nZXQoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcp
OwogCi0gICAgbV90ZW1wb3JhcnlQREZGaWxlcy5hZGQocGRmVVVJRCwgbnNQYXRoKTsKKyAgICBt
X3RlbXBvcmFyeVBERkZpbGVzLmFkZChwZGZVVUlELCBuc1BhdGguZ2V0KCkpOwogCi0gICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbW05TV29ya3NwYWNlIHNoYXJl
ZFdvcmtzcGFjZV0gb3BlbkZpbGU6bnNQYXRoXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKKyAgICBtX3VpQ2xpZW50LT5jb25maXJtUERGT3BlbmluZygqdGhpcywgV1RG
TW92ZShmcmFtZUluZm8pLCBbbnNQYXRoID0gV1RGTW92ZShuc1BhdGgpXSAoYm9vbCBhbGxvd2Vk
KSB7CisgICAgICAgIGlmIChhbGxvd2VkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBb
W05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOm5zUGF0aC5nZXQoKSBpc0RpcmVjdG9yeTpOT11dOworICAgIH0pOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRp
b24oY29uc3QgU3RyaW5nJiBwZGZVVUlEKQordm9pZCBXZWJQYWdlUHJveHk6Om9wZW5QREZGcm9t
VGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm8sIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKFRlbXBv
cmFyeVBERkZpbGVNYXA6OmlzVmFsaWRLZXkocGRmVVVJRCkpOwogCkBAIC01MjUsOSArNTI3LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFyeUYKICAgICBpZiAoIXBk
ZkZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5wZGYiKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbW05T
V29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlbkZpbGU6cGRmRmlsZW5hbWVdOwotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgIG1fdWlDbGllbnQtPmNvbmZpcm1Q
REZPcGVuaW5nKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFtwZGZGaWxlbmFtZSA9IFdURk1v
dmUocGRmRmlsZW5hbWUpXSAoYm9vbCBhbGxvd2VkKSB7CisgICAgICAgIGlmIChhbGxvd2VkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFj
ZV0gb3BlblVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBkZkZpbGVuYW1lIGlzRGlyZWN0b3J5
Ok5PXV07CisgICAgfSk7CiB9CiAKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQko
cmV2aXNpb24gMjYyNTQ4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0
ICJBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAi
RnJhbWVJbmZvRGF0YS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUERGQW5ub3Rh
dGlvblRleHRXaWRnZXREZXRhaWxzLmgiCiAjaW1wb3J0ICJQREZDb250ZXh0TWVudS5oIgpAQCAt
MjM5OCwxMSArMjM5OSwxMSBAQCB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNh
dGlvCiAgICAgICAgIG1fdGVtcG9yYXJ5UERGVVVJRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKTsKICAgICAgICAgQVNTRVJUKG1fdGVtcG9yYXJ5UERGVVVJRCk7CiAKLSAgICAgICAgbV9m
cmFtZS5wYWdlKCktPnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBw
bGljYXRpb24obV9zdWdnZXN0ZWRGaWxlbmFtZSwgbV9mcmFtZS51cmwoKS5zdHJpbmcoKSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5n
dGhdLCBtX3RlbXBvcmFyeVBERlVVSUQpOworICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+c2F2ZVBE
RlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3Rl
ZEZpbGVuYW1lLCBtX2ZyYW1lLmluZm8oKSwgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
ciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdLCBtX3RlbXBvcmFyeVBERlVVSUQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBw
bGljYXRpb24obV90ZW1wb3JhcnlQREZVVUlEKSk7CisgICAgbV9mcmFtZS5wYWdlKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0
aXZlQXBwbGljYXRpb24obV9mcmFtZS5pbmZvKCksIG1fdGVtcG9yYXJ5UERGVVVJRCkpOwogfQog
CiB2b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVi
b2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1zLCBOU0FycmF5ICp0eXBlcykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjI1NDgp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA1NCw5ICs1MDU0LDkgQEAgdm9pZCBXZWJQYWdlOjpzYXZlUERGVG9GaWxl
SW5Eb3dubG9hZHNGbwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OnNh
dmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0
cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJp
bmcmIHBkZlVVSUQpCit2b2lkIFdlYlBhZ2U6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9w
ZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFw
cGxpY2F0aW9uKHN1Z2dlc3RlZEZpbGVuYW1lLCBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpE
YXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpLCBwZGZVVUlEKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFw
cGxpY2F0aW9uKHN1Z2dlc3RlZEZpbGVuYW1lLCBmcmFtZUluZm8sIElQQzo6RGF0YVJlZmVyZW5j
ZShkYXRhLCBzaXplKSwgcGRmVVVJRCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2MjU0OCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA2OCw3ICsxMDY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFVSTCYg
b3JpZ2luYXRpbmdVUkwsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRl
ckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOworICAgIHZv
aWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGcmFtZUluZm9EYXRhJiYsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsK
ICNlbmRpZgogCiAgICAgYm9vbCBtYWluRnJhbWVJc1Njcm9sbGFibGUoKSBjb25zdCB7IHJldHVy
biBtX21haW5GcmFtZUlzU2Nyb2xsYWJsZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401110</attachid>
            <date>2020-06-04 20:00:47 -0700</date>
            <delta_ts>2020-06-04 20:28:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212795-20200604200047.patch</filename>
            <type>text/plain</type>
            <size>17602</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjI1OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA2LTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZSBTUEkgdG8gY29uZmlybSBiZWZvcmUgb3BlbmluZyBhIFBERgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzk1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81ODcxNTg0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNs
aWVudDo6Y29uZmlybVBERk9wZW5pbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAg
IChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNvbmZpcm1QREZPcGVuaW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRP
cGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpvcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVB
cHBsaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6b3BlblBERkZyb21U
ZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2F2ZVBERlRvVGVtcG9y
YXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAyMC0wNi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVJUHJvY2VzcyBtYXkgY3Jhc2ggYWZ0ZXIgaXRzIHBy
ZXdhcm1lZCBXZWJQcm9jZXNzIGdldHMgdGVybWluYXRlZApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk1LDggKzEyOTUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0
cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1lVHlwZSwgVVJMJiYgb3JpZ2lu
YXRpbmdVUkwsIEFQSTo6RGF0YSYpOwogICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgcGRmVVVJ
RCk7Ci0gICAgdm9pZCBvcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNh
dGlvbihjb25zdCBTdHJpbmcmIHBkZlVVSUQpOworICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5
Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBGcmFtZUluZm9EYXRhJiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNv
bnN0IFN0cmluZyYgcGRmVVVJRCk7CisgICAgdm9pZCBvcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRl
cldpdGhOYXRpdmVBcHBsaWNhdGlvbihGcmFtZUluZm9EYXRhJiYsIGNvbnN0IFN0cmluZyYgcGRm
VVVJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjYyNTQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsOCArNDQwLDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lLCBVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgU2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0
cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmlu
ZyBwZGZVVUlEKQotICAgIE9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKFN0cmluZyBwZGZVVUlEKQorICAgIFNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9w
ZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIHNvdXJjZUZyYW1lSW5mbywgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEsIFN0cmluZyBwZGZVVUlEKQorICAgIE9wZW5QREZGcm9tVGVtcG9yYXJ5Rm9sZGVyV2l0
aE5hdGl2ZUFwcGxpY2F0aW9uKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgc291cmNlRnJh
bWVJbmZvLCBTdHJpbmcgcGRmVVVJRCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBERktJVF9QTFVH
SU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkocmV2
aXNpb24gMjYyNTQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgeyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgY29uZmlybVBERk9wZW5pbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQorCiAjaWYgRU5BQkxFKFdF
Ql9BVVRITikKICAgICB2aXJ0dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNp
b24gMjYyNTQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIHN0cnVjdCBV
SUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3RGlkU2hvd1NhZmVCcm93c2luZ1dhcm5pbmc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9z
KDEyLjIpKTsKIC0gKHZvaWQpX3dlYlZpZXdEaWRMb3NlUG9pbnRlckxvY2s6KFdLV2ViVmlldyAq
KXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSk7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hh
bmdlOihCT09MKWhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMpLCBpb3MoMTEuMCkpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzaG91bGRBbGxvd1BERlRvT3BlbkZyb21GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVD
aGFuZ2VkOihDR1NpemUpc2l6ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEw
LjApKTsKIC0gKE5TRGljdGlvbmFyeSAqKV9kYXRhRGV0ZWN0aW9uQ29udGV4dEZvcldlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygx
MC4wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CShyZXZpc2lvbiAyNjI1NDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIHZvaWQgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU2hvd1NhZmVCcm93c2luZ1dhcm5p
bmcoKSBmaW5hbDsKKyAgICAgICAgdm9pZCBjb25maXJtUERGT3BlbmluZyhXZWJQYWdlUHJveHkm
LCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJG
cmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRpZgpAQCAtMjM4LDYgKzIz
OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgYm9vbCB3ZWJWaWV3SGFzVmlkZW9JblBp
Y3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRTaG93
U2FmZUJyb3dzaW5nV2FybmluZyA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld1Nob3VsZEFsbG93
UERGVG9PcGVuRnJvbUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAgICAgICAgIGJvb2wgd2ViVmlld1J1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbml0
aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2MjU0OCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE3MSw2ICsxNzEsOCBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlk
IDxXS1VJRGVsCiAgICAgCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hhc1ZpZGVvSW5Q
aWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2U6KV07
CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5n
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRTaG93
U2FmZUJyb3dzaW5nV2FybmluZzopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hv
dWxkQWxsb3dQREZUb09wZW5Gcm9tRnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZEFsbG93UERGVG9PcGVu
RnJvbUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOworCiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuV2ViQXV0aGVudGljYXRpb25QYW5lbElu
aXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6aW5pdGlh
dGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKICNlbmRpZgpAQCAtMTI2OCw2ICsxMjcw
LDI0IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZFNob3dTYWZlQnIKICAgICBbc3Rh
dGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXdEaWRT
aG93U2FmZUJyb3dzaW5nV2FybmluZzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KIAordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlybVBERk9wZW5pbmcoV2ViUGFnZVByb3h5JiBw
YWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdTaG91bGRBbGxvd1BERlRvT3BlbkZyb21GcmFtZUNvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisKKyAg
ICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYg
KCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworCisg
ICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRl
bGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6c2hvdWxkQWxsb3dQREZUb09wZW5Gcm9t
RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
c2hvdWxkQWxsb3dQREZUb09wZW5Gcm9tRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNo
ZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworICAgIH0pLmdldCgpXTsKK30K
KwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKIHN0YXRpYyBXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQoX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdCByZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwODcs
MTIgKzEwODcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TAog
ICAgIHBhZ2VDbGllbnQoKS5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChkaWN0aW9uYXJ5UG9w
dXBJbmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRl
ckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0
aW9uKGNvbnN0IFN0cmluZyYsIEZyYW1lSW5mb0RhdGEmJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGlj
YXRpb24oY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBv
cmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihGcmFtZUluZm9EYXRhJiYsIGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkocmV2aXNpb24gMjYyNTQ4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2lt
cG9ydCAiRWRpdG9yU3RhdGUuaCIKICNpbXBvcnQgIkZvbnRJbmZvLmgiCisjaW1wb3J0ICJGcmFt
ZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTWVu
dVV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtNDc3
LDEzICs0NzgsMTAgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgUwog
ICAgIHJldHVybiBwYXRoOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9y
YXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBw
ZGZVVUlEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soVGVtcG9yYXJ5UERGRmlsZU1hcDo6aXNWYWxp
ZEtleShwZGZVVUlEKSk7CiAKLSAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJp
bmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgRmlsZVN5
c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgotICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VS
TFN0cmluZyk7Ci0KICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgV1RGTG9nQWx3
YXlzKCJDYW5ub3Qgc2F2ZSBlbXB0eSBQREYgZmlsZSB0byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9y
eS4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDk1LDI4ICs0OTMsMzIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgTlNTdHJpbmcgKm5zUGF0aCA9IHBhdGhUb1BERk9uRGlzayhzYW5pdGl6ZWRGaWxlbmFtZSk7
CisgICAgYXV0byBuc1BhdGggPSByZXRhaW5QdHIocGF0aFRvUERGT25EaXNrKHNhbml0aXplZEZp
bGVuYW1lKSk7CiAKICAgICBpZiAoIW5zUGF0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0
YWluUHRyPE5TTnVtYmVyPiBwZXJtaXNzaW9ucyA9IGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10g
aW5pdFdpdGhJbnQ6U19JUlVTUl0pOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGZpbGVB
dHRyaWJ1dGVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
QW5kS2V5czpwZXJtaXNzaW9ucy5nZXQoKSwgTlNGaWxlUG9zaXhQZXJtaXNzaW9ucywgbmlsXSk7
Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgp
IGZyZWVXaGVuRG9uZTpOT10pOworICAgIGF1dG8gcGVybWlzc2lvbnMgPSBhZG9wdE5TKFtbTlNO
dW1iZXIgYWxsb2NdIGluaXRXaXRoSW50OlNfSVJVU1JdKTsKKyAgICBhdXRvIGZpbGVBdHRyaWJ1
dGVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5
czpwZXJtaXNzaW9ucy5nZXQoKSwgTlNGaWxlUG9zaXhQZXJtaXNzaW9ucywgbmlsXSk7CisgICAg
YXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5
Oih2b2lkKilkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7
CiAKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRmlsZUF0
UGF0aDpuc1BhdGggY29udGVudHM6bnNEYXRhLmdldCgpIGF0dHJpYnV0ZXM6ZmlsZUF0dHJpYnV0
ZXMuZ2V0KCldKSB7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZUZpbGVBdFBhdGg6bnNQYXRoLmdldCgpIGNvbnRlbnRzOm5zRGF0YS5nZXQoKSBhdHRyaWJ1
dGVzOmZpbGVBdHRyaWJ1dGVzLmdldCgpXSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5v
dCBjcmVhdGUgUERGIGZpbGUgaW4gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgKCVzKS4iLCBzYW5p
dGl6ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBhdXRvIG9yaWdpbmF0aW5nVVJMU3RyaW5nID0gZnJhbWVJbmZvLnJlcXVlc3QudXJsKCkuc3Ry
aW5nKCk7CisgICAgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwobnNQYXRoLmdldCgpLCBvcmln
aW5hdGluZ1VSTFN0cmluZyk7CiAKLSAgICBtX3RlbXBvcmFyeVBERkZpbGVzLmFkZChwZGZVVUlE
LCBuc1BhdGgpOworICAgIG1fdGVtcG9yYXJ5UERGRmlsZXMuYWRkKHBkZlVVSUQsIG5zUGF0aC5n
ZXQoKSk7CiAKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFtb
TlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuRmlsZTpuc1BhdGhdOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgIG1fdWlDbGllbnQtPmNvbmZpcm1QREZP
cGVuaW5nKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFtuc1BhdGggPSBXVEZNb3ZlKG5zUGF0
aCldIChib29sIGFsbG93ZWQpIHsKKyAgICAgICAgaWYgKGFsbG93ZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuVVJMOltO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6bnNQYXRoLmdldCgpIGlzRGlyZWN0b3J5Ok5PXV07CisgICAg
fSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldp
dGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHBkZlVVSUQpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24oRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgU3RyaW5nJiBwZGZVVUlEKQogewogICAgIE1F
U1NBR0VfQ0hFQ0soVGVtcG9yYXJ5UERGRmlsZU1hcDo6aXNWYWxpZEtleShwZGZVVUlEKSk7CiAK
QEAgLTUyNSw5ICs1MjcsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om9wZW5QREZGcm9tVGVtcG9y
YXJ5RgogICAgIGlmICghcGRmRmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLnBk
ZiIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuRmlsZTpwZGZG
aWxlbmFtZV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgbV91
aUNsaWVudC0+Y29uZmlybVBERk9wZW5pbmcoKnRoaXMsIFdURk1vdmUoZnJhbWVJbmZvKSwgW3Bk
ZkZpbGVuYW1lID0gV1RGTW92ZShwZGZGaWxlbmFtZSldIChib29sIGFsbG93ZWQpIHsKKyAgICAg
ICAgaWYgKGFsbG93ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFtbTlNXb3Jrc3Bh
Y2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGRmRmls
ZW5hbWUgaXNEaXJlY3Rvcnk6Tk9dXTsKKyAgICB9KTsKIH0KIAogI2lmIEVOQUJMRShQREZLSVRf
UExVR0lOKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyNjI1NDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCisjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJQREZBbm5vdGF0aW9uVGV4dFdpZGdldERldGFpbHMuaCIKICNpbXBvcnQgIlBERkNv
bnRleHRNZW51LmgiCkBAIC0yMzk4LDExICsyMzk5LDExIEBAIHZvaWQgUERGUGx1Z2luOjpvcGVu
V2l0aE5hdGl2ZUFwcGxpY2F0aW8KICAgICAgICAgbV90ZW1wb3JhcnlQREZVVUlEID0gY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpOwogICAgICAgICBBU1NFUlQobV90ZW1wb3JhcnlQREZVVUlE
KTsKIAotICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5k
T3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLnVy
bCgpLnN0cmluZygpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5
dGVzXSksIFtkYXRhIGxlbmd0aF0sIG1fdGVtcG9yYXJ5UERGVVVJRCk7CisgICAgICAgIG1fZnJh
bWUucGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUuaW5mbygpLCBzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0sIG1fdGVt
cG9yYXJ5UERGVVVJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLnBh
Z2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpPcGVuUERGRnJvbVRlbXBvcmFyeUZv
bGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3RlbXBvcmFyeVBERlVVSUQpKTsKKyAgICBtX2Zy
YW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpPcGVuUERGRnJvbVRlbXBv
cmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX2ZyYW1lLmluZm8oKSwgbV90ZW1wb3Jh
cnlQREZVVUlEKSk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJk
KE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVz
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDI2MjU0OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDU0LDkgKzUwNTQsOSBAQCB2b2lkIFdlYlBh
Z2U6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LXZvaWQgV2ViUGFnZTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVB
cHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25n
IHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKK3ZvaWQgV2ViUGFnZTo6c2F2ZVBERlRvVGVt
cG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFu
ZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oc3VnZ2VzdGVkRmlsZW5hbWUsIG9yaWdpbmF0aW5n
VVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgc2l6ZSksIHBkZlVVSUQpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFu
ZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oc3VnZ2VzdGVkRmlsZW5hbWUsIGZyYW1lSW5mbywg
SVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIHNpemUpLCBwZGZVVUlEKSk7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gMjYyNTQ4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
YXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbG9uZyBzaXplKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2F2ZVBE
RlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5n
LCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYg
cGRmVVVJRCk7CisgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5h
dGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZyYW1lSW5m
b0RhdGEmJiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBT
dHJpbmcmIHBkZlVVSUQpOwogI2VuZGlmCiAKICAgICBib29sIG1haW5GcmFtZUlzU2Nyb2xsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSXNTY3JvbGxhYmxlOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>