<?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>209011</bug_id>
          
          <creation_ts>2020-03-12 12:40:45 -0700</creation_ts>
          <short_desc>WKWebView._negotiatedLegacyTLS should be correct after back/forward navigations</short_desc>
          <delta_ts>2020-03-13 19:11:16 -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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1629309</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-12 12:40:45 -0700</bug_when>
    <thetext>WKWebView._negotiatedLegacyTLS should be correct after back/forward navigations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629310</commentid>
    <comment_count>1</comment_count>
      <attachid>393396</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-12 12:41:12 -0700</bug_when>
    <thetext>Created attachment 393396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629339</commentid>
    <comment_count>2</comment_count>
      <attachid>393409</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-12 13:41:16 -0700</bug_when>
    <thetext>Created attachment 393409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629547</commentid>
    <comment_count>3</comment_count>
      <attachid>393409</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-13 03:03:15 -0700</bug_when>
    <thetext>Comment on attachment 393409
Patch

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

&gt; Source/WebCore/history/CachedFrame.cpp:322
&gt; +        if (cachedFrame &amp;&amp; cachedFrame-&gt;usedLegacyTLS() == UsedLegacyTLS::Yes)

s/cachedFrame &amp;&amp;// as probably we cannot have null child frames.
We could use a Vector&lt;UniqueRef&gt; to make it clearer.

&gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:114
&gt; +    response.setSource(ResourceResponse::Source::Network);

Why do we need this change?
We are still setting the source for redirections in NetworkLoad.
It seems better to keep everything in one place.

&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:136
&gt; +    if (response.usedLegacyTLS()) {

You probably also want to check the source, like if (response.usedLegacyTLS() &amp;&amp; response.source() == Network).
If it is from the network cache or service worker, we probably do not want to take that into account, as I understand the current implementation.

If we wanted to take into account appcache/memorycache, the check should be done inside DocumentLoader.
Service worker case is interesting since if a document is using it, it will never have usedLegacyTLS currently.
Maybe we should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629705</commentid>
    <comment_count>4</comment_count>
      <attachid>393409</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-13 10:54:03 -0700</bug_when>
    <thetext>Comment on attachment 393409
Patch

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

&gt;&gt; Source/WebCore/history/CachedFrame.cpp:322
&gt;&gt; +        if (cachedFrame &amp;&amp; cachedFrame-&gt;usedLegacyTLS() == UsedLegacyTLS::Yes)
&gt; 
&gt; s/cachedFrame &amp;&amp;// as probably we cannot have null child frames.
&gt; We could use a Vector&lt;UniqueRef&gt; to make it clearer.

Good idea.  Done.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:114
&gt;&gt; +    response.setSource(ResourceResponse::Source::Network);
&gt; 
&gt; Why do we need this change?
&gt; We are still setting the source for redirections in NetworkLoad.
&gt; It seems better to keep everything in one place.

NetworkLoad is an unneeded abstraction that was originally representing either an NSURLSession load or an NSURLConnection load.  Since we don&apos;t use NSURLConnection in modern WebKit anymore, we should move everything from it and remove it.  As long as I&apos;m changing the didReceiveResponse code and putting things here, This may as well go as well.

&gt;&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:136
&gt;&gt; +    if (response.usedLegacyTLS()) {
&gt; 
&gt; You probably also want to check the source, like if (response.usedLegacyTLS() &amp;&amp; response.source() == Network).
&gt; If it is from the network cache or service worker, we probably do not want to take that into account, as I understand the current implementation.
&gt; 
&gt; If we wanted to take into account appcache/memorycache, the check should be done inside DocumentLoader.
&gt; Service worker case is interesting since if a document is using it, it will never have usedLegacyTLS currently.
&gt; Maybe we should fix this.

Good idea, but moving it to DocumentLoader doesn&apos;t fix this.  Moving it to ResourceLoader does.  That looks like a better place for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629706</commentid>
    <comment_count>5</comment_count>
      <attachid>393506</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-13 10:55:31 -0700</bug_when>
    <thetext>Created attachment 393506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629732</commentid>
    <comment_count>6</comment_count>
      <attachid>393506</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-13 11:34:39 -0700</bug_when>
    <thetext>Comment on attachment 393506
Patch

lgtm
As of setSource, it does not look great to have it in two places. I would leave that for a future refactoring that would add a platform independent redirection handler in NetworkDataTask so that setSource is no longer called in NetworkLoad.
Also, I am not sure NetworkTask is the right place. Source is only useful for WebProcess so this seems more a NetworkResourceLoader thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629988</commentid>
    <comment_count>7</comment_count>
      <attachid>393506</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-13 19:10:59 -0700</bug_when>
    <thetext>Comment on attachment 393506
Patch

Clearing flags on attachment: 393506

Committed r258458: &lt;https://trac.webkit.org/changeset/258458&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629989</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-13 19:11:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629990</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-13 19:11:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/60443735&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393396</attachid>
            <date>2020-03-12 12:41:12 -0700</date>
            <delta_ts>2020-03-12 13:41:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209011-20200312124111.patch</filename>
            <type>text/plain</type>
            <size>2596</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1ODM1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAzLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgV0tXZWJWaWV3Ll9uZWdvdGlhdGVkTGVnYWN5VExTIHNob3Vs
ZCBiZSBjb3JyZWN0IGFmdGVyIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMjAtMDMtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgcnVuLXdlYmtpdC10ZXN0cyAtLXVzZS1ncHUtcHJvY2VzcyBzaG91bGQg
ZW5hYmxlIEdQVSBQcm9jZXNzIGZvciBjYW52YXMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQkocmV2aXNp
b24gMjU4MzM3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNE
ZXByZWNhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw0MiBAQCBURVNUKFRM
U1ZlcnNpb24sIE5hdmlnYXRlQmFjaykKICAgICBbd2ViVmlldyByZW1vdmVPYnNlcnZlcjpvYnNl
cnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiX25lZ290aWF0ZWRMZWdhY3lUTFMiXTsKIH0KIAorVEVT
VChUTFNWZXJzaW9uLCBCYWNrRm9yd2FyZE5lZ290aWF0ZWRMZWdhY3lUTFMpCit7CisgICAgSFRU
UFNlcnZlciBzZWN1cmVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiaGVsbG8iIH19CisgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBIVFRQU2VydmVyIGluc2VjdXJl
U2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9IH0KKyAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKKyAgICBIVFRQU2VydmVyIG1peGVkQ29u
dGVudFNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IHt7ICJDb250ZW50LVR5cGUiLCAidGV4dC9o
dG1sIiB9fSwgbWFrZVN0cmluZygiPGltZyBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbnNlY3VyZVNlcnZlci5wb3J0KCkpLCAiLyc+PC9pbWc+IikgfSB9
LAorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAgICBhdXRvIFt3ZWJW
aWV3LCBkZWxlZ2F0ZV0gPSB3ZWJWaWV3V2l0aE5hdmlnYXRpb25EZWxlZ2F0ZSgpOworICAgIEVY
UEVDVF9GQUxTRShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VjdXJlU2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25l
Z290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwczovL2xvY2FsaG9zdDolZC8iLCBtaXhlZENvbnRlbnRTZXJ2ZXIu
cG9ydCgpXV1dXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwor
ICAgIHdoaWxlICghW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtk
ZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyBnb0ZvcndhcmRd
OworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgd2hpbGUg
KCFbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX25lZ290aWF0
ZWRMZWdhY3lUTFNdKTsKK30KKwogVEVTVChUTFNWZXJzaW9uLCBTdWJyZXNvdXJjZSkKIHsKICAg
ICBIVFRQU2VydmVyIGxlZ2FjeVRMU1NlcnZlcih7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393409</attachid>
            <date>2020-03-12 13:41:16 -0700</date>
            <delta_ts>2020-03-13 10:55:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209011-20200312134115.patch</filename>
            <type>text/plain</type>
            <size>16559</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV0tXZWJWaWV3
Ll9uZWdvdGlhdGVkTGVnYWN5VExTIHNob3VsZCBiZSBjb3JyZWN0IGFmdGVyIGJhY2svZm9yd2Fy
ZCBuYXZpZ2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MDU4OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGJhc2ljYWxs
eSByMjU4MzQzIGJ1dCBmb3IgbGVnYWN5IFRMUyBuZWdvdGlhdGlvbiBpbnN0ZWFkIG9mIHBsYWlu
dGV4dCBIVFRQIHVzZS4KKworICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OnNldFVzZWRMZWdhY3lUTFMpOgorICAgICAg
ICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJh
bWU6OnVzZWRMZWdhY3lUTFMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6
OnNldFVzZWRMZWdhY3lUTFMpOiBEZWxldGVkLgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJh
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjp1c2VkTGVnYWN5VExTIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVzZWRMZWdhY3lUTFMpOgor
CiAyMDIwLTAzLTEyICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdHRyaWJ1dGVzIFNlbGVjdGlvblRleHRNYXJrZXJSYW5nZSBhbmQgU3RhcnQvRW5k
VGV4dE1hcmtlciBuZWVkIHRvIHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDgg
QEAgcHVibGljOgogICAgICAgICBBY3RpdmUgPSAxIDw8IDEsCiAgICAgfTsKIAorICAgIGJvb2wg
dXNlZExlZ2FjeVRMUygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZExlZ2FjeVRMUzsgfQorICAgIHZv
aWQgc2V0VXNlZExlZ2FjeVRMUyhib29sIHVzZWQpIHsgbV91c2VkTGVnYWN5VExTID0gdXNlZDsg
fQogICAgIGNvbnN0IE9wdGlvblNldDxNaXhlZENvbnRlbnRUeXBlPiYgZm91bmRNaXhlZENvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX21peGVkQ29udGVudFR5cGVzOyB9CiAgICAgdm9pZCBzZXRG
b3VuZE1peGVkQ29udGVudChNaXhlZENvbnRlbnRUeXBlIHR5cGUpIHsgbV9taXhlZENvbnRlbnRU
eXBlcy5hZGQodHlwZSk7IH0KICAgICBib29sIGdlb2xvY2F0aW9uQWNjZXNzZWQoKSBjb25zdCB7
IHJldHVybiBtX2dlb2xvY2F0aW9uQWNjZXNzZWQ7IH0KQEAgLTEyNiw2ICsxMjgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9nZW9sb2NhdGlvbkFjY2Vzc2VkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2VjdXJlQ29va2llc0FjY2Vzc2VkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdHJpY3RN
aXhlZENvbnRlbnRNb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXNlZExlZ2FjeVRMUyB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAkocmV2aXNpb24gMjU4MzQ5KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiwxMSArMzAy
LDYgQEAgQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEqIENhY2hlZEZyYW1lOjpjYQogICAgIHJldHVy
biBtX2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi12b2lkIENhY2hlZEZyYW1l
OjpzZXRVc2VkTGVnYWN5VExTKFVzZWRMZWdhY3lUTFMgdXNlZExlZ2FjeVRMUykKLXsKLSAgICBt
X3VzZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwotfQotCiBpbnQgQ2FjaGVkRnJhbWU6OmRl
c2NlbmRhbnRGcmFtZUNvdW50KCkgY29uc3QKIHsKICAgICBpbnQgY291bnQgPSBtX2NoaWxkRnJh
bWVzLnNpemUoKTsKQEAgLTMxNiw2ICszMTEsMjEgQEAgaW50IENhY2hlZEZyYW1lOjpkZXNjZW5k
YW50RnJhbWVDb3VudCgpIAogICAgIHJldHVybiBjb3VudDsKIH0KIAorVXNlZExlZ2FjeVRMUyBD
YWNoZWRGcmFtZTo6dXNlZExlZ2FjeVRMUygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoZG9jdW1lbnQtPnVzZWRMZWdh
Y3lUTFMoKSkKKyAgICAgICAgICAgIHJldHVybiBVc2VkTGVnYWN5VExTOjpZZXM7CisgICAgfQor
ICAgIAorICAgIGZvciAoY29uc3QgYXV0byYgY2FjaGVkRnJhbWUgOiBtX2NoaWxkRnJhbWVzKSB7
CisgICAgICAgIGlmIChjYWNoZWRGcmFtZSAmJiBjYWNoZWRGcmFtZS0+dXNlZExlZ2FjeVRMUygp
ID09IFVzZWRMZWdhY3lUTFM6OlllcykKKyAgICAgICAgICAgIHJldHVybiBVc2VkTGVnYWN5VExT
OjpZZXM7CisgICAgfQorICAgIAorICAgIHJldHVybiBVc2VkTGVnYWN5VExTOjpObzsKK30KKwog
SGFzSW5zZWN1cmVDb250ZW50IENhY2hlZEZyYW1lOjpoYXNJbnNlY3VyZUNvbnRlbnQoKSBjb25z
dAogewogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgJKHJldmlzaW9uIDI1ODM0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdENhY2hlZEZy
YW1lRGF0YT4gbV9jYWNoZWRGcmFtZVNjcmlwdERhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhPiBtX2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhOwogICAgIGJv
b2wgbV9pc01haW5GcmFtZTsKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5VExTPiBtX3VzZWRMZWdh
Y3lUTFM7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhY2hlZEZyYW1lPj4gbV9jaGls
ZEZyYW1lczsKIH07CkBAIC04MCw5ICs3OSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YT4pOwogICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhKiBjYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRVc2VkTGVnYWN5VExTKFVzZWRMZWdhY3lUTFMpOwogICAgIEhhc0luc2VjdXJlQ29u
dGVudCBoYXNJbnNlY3VyZUNvbnRlbnQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5
VExTPiB1c2VkTGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91c2VkTGVnYWN5VExTOyB9Cisg
ICAgVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKCkgY29uc3Q7CiAKICAgICB1c2luZyBDYWNo
ZWRGcmFtZUJhc2U6OmRvY3VtZW50OwogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6dmlldzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjU4MzQ5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA3Niw3ICsyMDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9u
YWxMb2FkKAogICAgICAgICBub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGNh
Y2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIGNhY2hl
ZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCiAgICAgICAgIGF1dG8gaGFz
SW5zZWN1cmVDb250ZW50ID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPmhhc0luc2Vj
dXJlQ29udGVudCgpOwotICAgICAgICBPcHRpb25hbDxVc2VkTGVnYWN5VExTPiB1c2VkTGVnYWN5
VExTID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPnVzZWRMZWdhY3lUTFMoKTsKKyAg
ICAgICAgYXV0byB1c2VkTGVnYWN5VExTID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCkt
PnVzZWRMZWdhY3lUTFMoKTsKIAogICAgICAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoaGFzSW5z
ZWN1cmVDb250ZW50LCB1c2VkTGVnYWN5VExTKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJl
dmlzaW9uIDI1ODM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksMTIgKzI3OSwxMSBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUeXBlKFR5cGUgCiAgICAgbV90eXBlID0gdHlw
ZTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5m
byhVc2VkTGVnYWN5VExTIHVzZWRMZWdhY3lUTFMpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVzcG9u
c2VCYXNlOjppbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsKICAgICBpZiAobV9jZXJ0
aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVybjsKICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHN0
YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKS0+cGxhdGZvcm1DZXJ0aWZp
Y2F0ZUluZm8oKTsKLSAgICBtX3VzZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogfQogCiBT
dHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDI1ODM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0
LDkgKzEzNCwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBzYW5p
dGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKFVzZWRMZWdhY3lUTFMgPSBVc2VkTGVnYWN5
VExTOjpObykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNh
dGVJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2Vy
dGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH07CiAgICAg
Ym9vbCB1c2VkTGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91c2VkTGVnYWN5VExTID09IFVz
ZWRMZWdhY3lUTFM6OlllczsgfQorICAgIHZvaWQgc2V0VXNlZExlZ2FjeVRMUyhVc2VkTGVnYWN5
VExTIHVzZWQpIHsgbV91c2VkTGVnYWN5VExTID0gdXNlZDsgfQogICAgIAogICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNw
b25zZSBoZWFkZXJzLgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFp
bnNOb0NhY2hlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU4MzQ5KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAy
MC0wMy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFdLV2ViVmlldy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBzaG91bGQgYmUgY29ycmVjdCBh
ZnRlciBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTAxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkz
NzA1ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6bm90
aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1c2VkTGVnYWN5VExTKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKwogMjAy
MC0wMy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFdLV2ViVmlldy5oYXNPbmx5U2VjdXJlQ29udGVudCBzaG91bGQgYmUgY29ycmVjdCBh
ZnRlciBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHJldmlzaW9uIDI1ODM0OSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEwLDYgKzExMCwxMSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisKKyAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsK
KyAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMp
CisgICAgICAgIHJlc3BvbnNlLnNldFVzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRMUzo6WWVzKTsK
KwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDkg
KzIzMSw4IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb24KIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcmVzcG9uc2Uuc2V0U291cmNlKFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRl
SW5mbyhuZWdvdGlhdGVkTGVnYWN5VExTID09IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcyA/IFVz
ZWRMZWdhY3lUTFM6OlllcyA6IFVzZWRMZWdhY3lUTFM6Ok5vKTsKKyAgICAgICAgcmVzcG9uc2Uu
aW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwogCiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDI1ODM0OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyOTMsMTEgKzQyOTMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJlY29ubmVjdFRvKGNvbnN0IFVSCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5wcmVjb25uZWN0
VG8oc2Vzc2lvbklEKCksIHVybCwgdXNlckFnZW50KCksIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpVc2UpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXNlZExlZ2FjeVRMUyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlVzZWRMZWdhY3lUTFMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fcGFnZUxvYWRTdGF0ZS5oYXNO
ZWdvdGlhdGVkTGVnYWN5VExTKCkgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExT
OjpObyk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbih1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5MSw4ICsxNzkxLDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYpOwogCi0gICAgdm9pZCB1c2VkTGVnYWN5VExT
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VXNlZExlZ2FjeVRMUyk+JiYpOwotCiAg
ICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvLApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU4MzQ5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCAr
MTQyLDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRFeHBsaWNpdE9wZW5G
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgVVJMIHVybCwgU3RyaW5n
IG1pbWVUeXBlKQogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkKIAotICAgIFVzZWRMZWdhY3lUTFMoKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlVzZWRMZWdh
Y3lUTFMgdXNlZExlZ2FjeVRMUykgU3luY2hyb25vdXMKLQogICAgIE1haW5GcmFtZVBsdWdpbkhh
bmRsZXNQYWdlU2NhbGVHZXN0dXJlRGlkQ2hhbmdlKGJvb2wgbWFpbkZyYW1lUGx1Z2luSGFuZGxl
c1BhZ2VTY2FsZUdlc3R1cmUpCiAKICAgICBGcmFtZURpZEJlY29tZUZyYW1lU2V0KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIHZhbHVlKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjU4MzQ5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDE1IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb24KIAogICAgIFJlZjxXZWJSZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZSkpIHsKKyAgICBhdXRv
JiBkb2N1bWVudExvYWRlciA9ICptX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCk7CisgICAg
aWYgKHJlc3BvbnNlLnVzZWRMZWdhY3lUTFMoKSkgeworICAgICAgICBpZiAoYXV0byogZnJhbWUg
PSBkb2N1bWVudExvYWRlci5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0VXNl
ZExlZ2FjeVRMUyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVudExv
YWRlci5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2Uo
bV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ug
dGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjU4MzQ5KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2NCwxNiArMTQ2NCw4IEBAIFN0cmluZyBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6b3ZlcnJpZGVDb24KICAgICByZXR1cm4gd2ViUGFnZS0+b3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZy
YW1lKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoQ2FjaGVkRnJhbWUqKQogewotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7Ci0gICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhN
RTogUmVtZW1iZXIgaW4gdGhlIHdlYiBwcm9jZXNzIHJhdGhlciB0aGFuIHNlbmQgdGhpcyBzeW5j
IG1lc3NhZ2UuCi0gICAgVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTOwotICAgIGlmICh3ZWJQ
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVc2VkTGVnYWN5VExTKCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVzZWRMZWdhY3lUTFM6OlJlcGx5KHVzZWRMZWdhY3lUTFMp
KSkKLSAgICAgICAgY2FjaGVkRnJhbWUtPnNldFVzZWRMZWdhY3lUTFModXNlZExlZ2FjeVRMUyk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZy
b21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTgzNDkpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFdLV2ViVmll
dy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBzaG91bGQgYmUgY29ycmVjdCBhZnRlciBiYWNrL2Zvcndh
cmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTAxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzA1ODg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMjAtMDMtMTIgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIGZsYXRwYWNrIGltcG9ydCBmb3IgcnVuLXdlYmtpdC10ZXN0cyBv
bmx5IGhhcHBlbiBvbiBsaW51eCBzeXN0ZW1zCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHJldmlzaW9u
IDI1ODM0OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVw
cmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNDIgQEAgVEVTVChUTFNW
ZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6b2JzZXJ2
ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9CiAKK1RFU1Qo
VExTVmVyc2lvbiwgQmFja0ZvcndhcmROZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAgIEhUVFBT
ZXJ2ZXIgc2VjdXJlU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9fQorICAgIH0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgSFRUUFNlcnZlciBpbnNlY3VyZVNl
cnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9CisgICAgfSwgSFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisgICAgSFRUUFNlcnZlciBtaXhlZENvbnRl
bnRTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRt
bCIgfX0sIG1ha2VTdHJpbmcoIjxpbWcgc3JjPSdodHRwczovLzEyNy4wLjAuMToiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5zZWN1cmVTZXJ2ZXIucG9ydCgpKSwgIi8nPjwvaW1nPiIpIH0gfSwK
KyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlY3VyZVNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IF9uZWdv
dGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiaHR0cHM6Ly9sb2NhbGhvc3Q6JWQvIiwgbWl4ZWRDb250ZW50U2VydmVyLnBv
cnQoKV1dXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAg
ICB3aGlsZSAoIVt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSkKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBf
bmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgZ29CYWNrXTsKKyAgICBbZGVs
ZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9GQUxTRShbd2Vi
VmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgZ29Gb3J3YXJkXTsK
KyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIHdoaWxlICgh
W3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9uZWdvdGlhdGVk
TGVnYWN5VExTXSk7Cit9CisKIFRFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCiB7CiAgICAg
SFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393506</attachid>
            <date>2020-03-13 10:55:31 -0700</date>
            <delta_ts>2020-03-13 19:10:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209011-20200313105530.patch</filename>
            <type>text/plain</type>
            <size>18275</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV0tXZWJWaWV3
Ll9uZWdvdGlhdGVkTGVnYWN5VExTIHNob3VsZCBiZSBjb3JyZWN0IGFmdGVyIGJhY2svZm9yd2Fy
ZCBuYXZpZ2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM3MDU4OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGJhc2ljYWxs
eSByMjU4MzQzIGJ1dCBmb3IgbGVnYWN5IFRMUyBuZWdvdGlhdGlvbiBpbnN0ZWFkIG9mIHBsYWlu
dGV4dCBIVFRQIHVzZS4KKworICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6dXNlZExlZ2FjeVRMUyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OnNldFVzZWRMZWdhY3lUTFMpOgorICAgICAg
ICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJh
bWU6OnVzZWRMZWdhY3lUTFMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6
OnNldFVzZWRMZWdhY3lUTFMpOiBEZWxldGVkLgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJh
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjp1c2VkTGVnYWN5VExTIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbyBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVzZWRMZWdhY3lUTFMpOgor
CiAyMDIwLTAzLTEyICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBdHRyaWJ1dGVzIFNlbGVjdGlvblRleHRNYXJrZXJSYW5nZSBhbmQgU3RhcnQvRW5k
VGV4dE1hcmtlciBuZWVkIHRvIHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDgg
QEAgcHVibGljOgogICAgICAgICBBY3RpdmUgPSAxIDw8IDEsCiAgICAgfTsKIAorICAgIGJvb2wg
dXNlZExlZ2FjeVRMUygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZExlZ2FjeVRMUzsgfQorICAgIHZv
aWQgc2V0VXNlZExlZ2FjeVRMUyhib29sIHVzZWQpIHsgbV91c2VkTGVnYWN5VExTID0gdXNlZDsg
fQogICAgIGNvbnN0IE9wdGlvblNldDxNaXhlZENvbnRlbnRUeXBlPiYgZm91bmRNaXhlZENvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX21peGVkQ29udGVudFR5cGVzOyB9CiAgICAgdm9pZCBzZXRG
b3VuZE1peGVkQ29udGVudChNaXhlZENvbnRlbnRUeXBlIHR5cGUpIHsgbV9taXhlZENvbnRlbnRU
eXBlcy5hZGQodHlwZSk7IH0KICAgICBib29sIGdlb2xvY2F0aW9uQWNjZXNzZWQoKSBjb25zdCB7
IHJldHVybiBtX2dlb2xvY2F0aW9uQWNjZXNzZWQ7IH0KQEAgLTEyNiw2ICsxMjgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9nZW9sb2NhdGlvbkFjY2Vzc2VkIHsgZmFsc2UgfTsKICAgICBib29s
IG1fc2VjdXJlQ29va2llc0FjY2Vzc2VkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTdHJpY3RN
aXhlZENvbnRlbnRNb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXNlZExlZ2FjeVRMUyB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAkocmV2aXNpb24gMjU4MzQ5KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEzICs4MCwx
MiBAQCBDYWNoZWRGcmFtZUJhc2U6On5DYWNoZWRGcmFtZUJhc2UoKQogCiB2b2lkIENhY2hlZEZy
YW1lQmFzZTo6cHJ1bmVEZXRhY2hlZENoaWxkRnJhbWVzKCkKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gbV9jaGlsZEZyYW1lcy5zaXplKCk7IGk7KSB7Ci0gICAgICAgIC0taTsKLSAgICAgICAgaWYg
KG1fY2hpbGRGcmFtZXNbaV0tPnZpZXcoKS0+ZnJhbWUoKS5wYWdlKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgbV9jaGlsZEZyYW1lc1tpXS0+ZGVzdHJveSgpOwotICAgICAgICBt
X2NoaWxkRnJhbWVzLnJlbW92ZShpKTsKLSAgICB9CisgICAgbV9jaGlsZEZyYW1lcy5yZW1vdmVB
bGxNYXRjaGluZyhbXSAoYXV0byYgY2hpbGRGcmFtZSkgeworICAgICAgICBpZiAoY2hpbGRGcmFt
ZS0+dmlldygpLT5mcmFtZSgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY2hpbGRGcmFtZS0+ZGVzdHJveSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
KTsKIH0KIAogdm9pZCBDYWNoZWRGcmFtZUJhc2U6OnJlc3RvcmUoKQpAQCAtMTYzLDcgKzE2Miw3
IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAKICAgICAvLyBDcmVh
dGUgdGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUgRnJhbWVUcmVlLgogICAg
IGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQotICAgICAgICBtX2NoaWxkRnJhbWVz
LmFwcGVuZChtYWtlVW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKKyAgICAgICAgbV9jaGls
ZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CiAKICAg
ICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7CkBAIC0zMDIsMTggKzMwMSwyNyBAQCBDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YSogQ2FjaGVkRnJhbWU6OmNhCiAgICAgcmV0dXJuIG1fY2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXZvaWQgQ2FjaGVkRnJhbWU6OnNldFVzZWRMZWdh
Y3lUTFMoVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKQorc2l6ZV90IENhY2hlZEZyYW1lOjpk
ZXNjZW5kYW50RnJhbWVDb3VudCgpIGNvbnN0CiB7Ci0gICAgbV91c2VkTGVnYWN5VExTID0gdXNl
ZExlZ2FjeVRMUzsKKyAgICBzaXplX3QgY291bnQgPSBtX2NoaWxkRnJhbWVzLnNpemUoKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkRnJhbWUgOiBtX2NoaWxkRnJhbWVzKQorICAgICAgICBj
b3VudCArPSBjaGlsZEZyYW1lLT5kZXNjZW5kYW50RnJhbWVDb3VudCgpOworICAgIHJldHVybiBj
b3VudDsKIH0KIAotaW50IENhY2hlZEZyYW1lOjpkZXNjZW5kYW50RnJhbWVDb3VudCgpIGNvbnN0
CitVc2VkTGVnYWN5VExTIENhY2hlZEZyYW1lOjp1c2VkTGVnYWN5VExTKCkgY29uc3QKIHsKLSAg
ICBpbnQgY291bnQgPSBtX2NoaWxkRnJhbWVzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fY2hpbGRGcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvdW50ICs9IG1fY2hp
bGRGcmFtZXNbaV0tPmRlc2NlbmRhbnRGcmFtZUNvdW50KCk7CisgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoZG9jdW1lbnQtPnVzZWRMZWdh
Y3lUTFMoKSkKKyAgICAgICAgICAgIHJldHVybiBVc2VkTGVnYWN5VExTOjpZZXM7CisgICAgfQog
ICAgIAotICAgIHJldHVybiBjb3VudDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNhY2hlZEZyYW1l
IDogbV9jaGlsZEZyYW1lcykgeworICAgICAgICBpZiAoY2FjaGVkRnJhbWUtPnVzZWRMZWdhY3lU
TFMoKSA9PSBVc2VkTGVnYWN5VExTOjpZZXMpCisgICAgICAgICAgICByZXR1cm4gVXNlZExlZ2Fj
eVRMUzo6WWVzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gVXNlZExlZ2FjeVRMUzo6Tm87CiB9
CiAKIEhhc0luc2VjdXJlQ29udGVudCBDYWNoZWRGcmFtZTo6aGFzSW5zZWN1cmVDb250ZW50KCkg
Y29uc3QKQEAgLTMyNCw3ICszMzIsNyBAQCBIYXNJbnNlY3VyZUNvbnRlbnQgQ2FjaGVkRnJhbWU6
Omhhc0luc2VjCiAgICAgfQogICAgIAogICAgIGZvciAoY29uc3QgYXV0byYgY2FjaGVkRnJhbWUg
OiBtX2NoaWxkRnJhbWVzKSB7Ci0gICAgICAgIGlmIChjYWNoZWRGcmFtZSAmJiBjYWNoZWRGcmFt
ZS0+aGFzSW5zZWN1cmVDb250ZW50KCkgPT0gSGFzSW5zZWN1cmVDb250ZW50OjpZZXMpCisgICAg
ICAgIGlmIChjYWNoZWRGcmFtZS0+aGFzSW5zZWN1cmVDb250ZW50KCkgPT0gSGFzSW5zZWN1cmVD
b250ZW50OjpZZXMpCiAgICAgICAgICAgICByZXR1cm4gSGFzSW5zZWN1cmVDb250ZW50OjpZZXM7
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAkocmV2
aXNpb24gMjU4MzQ5KQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjMsOSArNjQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdENhY2hl
ZEZyYW1lRGF0YT4gbV9jYWNoZWRGcmFtZVNjcmlwdERhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPiBtX2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhOwogICAg
IGJvb2wgbV9pc01haW5GcmFtZTsKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5VExTPiBtX3VzZWRM
ZWdhY3lUTFM7CiAKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhY2hlZEZyYW1lPj4gbV9j
aGlsZEZyYW1lczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPENhY2hlZEZyYW1lPj4gbV9jaGlsZEZy
YW1lczsKIH07CiAKIGNsYXNzIENhY2hlZEZyYW1lIDogcHJpdmF0ZSBDYWNoZWRGcmFtZUJhc2Ug
ewpAQCAtODAsMTYgKzgwLDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YT4pOwogICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKiBj
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRV
c2VkTGVnYWN5VExTKFVzZWRMZWdhY3lUTFMpOwogICAgIEhhc0luc2VjdXJlQ29udGVudCBoYXNJ
bnNlY3VyZUNvbnRlbnQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxVc2VkTGVnYWN5VExTPiB1c2Vk
TGVnYWN5VExTKCkgY29uc3QgeyByZXR1cm4gbV91c2VkTGVnYWN5VExTOyB9CisgICAgVXNlZExl
Z2FjeVRMUyB1c2VkTGVnYWN5VExTKCkgY29uc3Q7CiAKICAgICB1c2luZyBDYWNoZWRGcmFtZUJh
c2U6OmRvY3VtZW50OwogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6dmlldzsKICAgICB1c2lu
ZyBDYWNoZWRGcmFtZUJhc2U6OnVybDsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyB9CiAKLSAgICBpbnQg
ZGVzY2VuZGFudEZyYW1lQ291bnQoKSBjb25zdDsKKyAgICBzaXplX3QgZGVzY2VuZGFudEZyYW1l
Q291bnQoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjU4MzQ5KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3Niw3
ICsyMDc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKAogICAg
ICAgICBub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGNhY2hlZFBhZ2UtPmRv
Y3VtZW50TG9hZGVyKCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIGNhY2hlZFBhZ2UtPmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCiAgICAgICAgIGF1dG8gaGFzSW5zZWN1cmVDb250
ZW50ID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgp
OwotICAgICAgICBPcHRpb25hbDxVc2VkTGVnYWN5VExTPiB1c2VkTGVnYWN5VExTID0gY2FjaGVk
UGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPnVzZWRMZWdhY3lUTFMoKTsKKyAgICAgICAgYXV0byB1
c2VkTGVnYWN5VExTID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPnVzZWRMZWdhY3lU
TFMoKTsKIAogICAgICAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoaGFzSW5zZWN1cmVDb250ZW50
LCB1c2VkTGVnYWN5VExTKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsNiArNTAwLDEzIEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSgKICAgICAvLyBhbnl0aGluZyBpbmNs
dWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRh
ciAzMjY2MjE2LgogICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKKyAgICBpZiAoci51c2VkTGVnYWN5VExTKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gbV9mcmFtZS5nZXQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0VXNlZExlZ2Fj
eVRMUyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGxvZ1Jlc291cmNlUmVzcG9uc2VT
b3VyY2UobV9mcmFtZS5nZXQoKSwgci5zb3VyY2UoKSk7CiAKICAgICBtX3Jlc3BvbnNlID0gcjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc5LDEyICsyNzksMTEgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VHlw
ZShUeXBlIAogICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTKSBj
b25zdAordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aW5jbHVkZUNlcnRpZmljYXRlSW5mbygp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Kj4odGhpcyktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7Ci0gICAgbV91c2VkTGVnYWN5VExT
ID0gdXNlZExlZ2FjeVRMUzsKIH0KIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdn
ZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAyNTgzNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw5ICsxMzQsMTAgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbyhV
c2VkTGVnYWN5VExTID0gVXNlZExlZ2FjeVRMUzo6Tm8pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwogICAgIGNvbnN0IE9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2VydGlmaWNhdGVJbmZvOyB9OwogICAgIGJvb2wgdXNlZExlZ2FjeVRMUygpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlZExlZ2FjeVRMUyA9PSBVc2VkTGVnYWN5VExTOjpZZXM7IH0KKyAgICB2b2lkIHNl
dFVzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRMUyB1c2VkKSB7IG1fdXNlZExlZ2FjeVRMUyA9IHVz
ZWQ7IH0KICAgICAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMg
b2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI1ODM0OSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDMtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXS1dlYlZpZXcuX25lZ290aWF0ZWRMZWdh
Y3lUTFMgc2hvdWxkIGJlIGNvcnJlY3QgYWZ0ZXIgYmFjay9mb3J3YXJkIG5hdmlnYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkwMTEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzcwNTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXNlZExlZ2FjeVRMUyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1E
YXRhVG9DYWNoZWRGcmFtZSk6CisKIDIwMjAtMDMtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXS1dlYlZpZXcuaGFzT25seVNlY3VyZUNv
bnRlbnQgc2hvdWxkIGJlIGNvcnJlY3QgYWZ0ZXIgYmFjay9mb3J3YXJkIG5hdmlnYXRpb25zCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsMTEgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQorCisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVz
cG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CisgICAgaWYgKG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0g
TmVnb3RpYXRlZExlZ2FjeVRMUzo6WWVzKQorICAgICAgICByZXNwb25zZS5zZXRVc2VkTGVnYWN5
VExTKFVzZWRMZWdhY3lUTFM6Olllcyk7CisKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24g
MjU4MzQ5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMSw5ICsyMzEsOCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3Rp
ZnlEaWRSZWNlaXZlUmVzcG9uCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmsp
OwogICAgIGlmIChtX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgIHJl
c3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8obmVnb3RpYXRlZExlZ2FjeVRMUyA9PSBOZWdv
dGlhdGVkTGVnYWN5VExTOjpZZXMgPyBVc2VkTGVnYWN5VExTOjpZZXMgOiBVc2VkTGVnYWN5VExT
OjpObyk7CisgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKIAogICAg
IG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTgzNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjkzLDExICs0Mjkz
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUgogICAgICAgICBu
ZXR3b3JrUHJvY2Vzcy0+cHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCB1cmwsIHVzZXJBZ2VudCgp
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnVzZWRMZWdhY3lUTFMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpV
c2VkTGVnYWN5VExTKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX3BhZ2VMb2FkU3RhdGUuaGFzTmVnb3RpYXRlZExlZ2FjeVRMUygpID8gVXNlZExlZ2Fj
eVRMUzo6WWVzIDogVXNlZExlZ2FjeVRMUzo6Tm8pOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjU4MzQ5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OTEsOCAr
MTc5MSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwmKTsK
IAotICAgIHZvaWQgdXNlZExlZ2FjeVRMUyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlVzZWRMZWdhY3lUTFMpPiYmKTsKLQogICAgIHZvaWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWlu
dDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZy
YW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1ODM0
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTQyLDggKzE0Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgRGlkRXhwbGljaXRPcGVuRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFVSTCB1cmwsIFN0cmluZyBtaW1lVHlwZSkKICAgICBEaWREZXN0cm95TmF2aWdh
dGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiAKLSAgICBVc2VkTGVnYWN5VExTKCkgLT4gKGVu
dW06Ym9vbCBXZWJDb3JlOjpVc2VkTGVnYWN5VExTIHVzZWRMZWdhY3lUTFMpIFN5bmNocm9ub3Vz
Ci0KICAgICBNYWluRnJhbWVQbHVnaW5IYW5kbGVzUGFnZVNjYWxlR2VzdHVyZURpZENoYW5nZShi
b29sIG1haW5GcmFtZVBsdWdpbkhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKQogCiAgICAgRnJhbWVE
aWRCZWNvbWVGcmFtZVNldChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCB2
YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjU4
MzQ5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2NCwxNiArMTQ2NCw4IEBAIFN0
cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6b3ZlcnJpZGVDb24KICAgICByZXR1cm4gd2ViUGFn
ZS0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNh
Y2hlZEZyYW1lKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQogewotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7Ci0gICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBGSVhNRTogUmVtZW1iZXIgaW4gdGhlIHdlYiBwcm9jZXNzIHJhdGhlciB0aGFuIHNlbmQgdGhp
cyBzeW5jIG1lc3NhZ2UuCi0gICAgVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTOwotICAgIGlm
ICh3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVc2VkTGVnYWN5VExT
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVzZWRMZWdhY3lUTFM6OlJlcGx5KHVzZWRMZWdh
Y3lUTFMpKSkKLSAgICAgICAgY2FjaGVkRnJhbWUtPnNldFVzZWRMZWdhY3lUTFModXNlZExlZ2Fj
eVRMUyk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTgzNDkpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFdL
V2ViVmlldy5fbmVnb3RpYXRlZExlZ2FjeVRMUyBzaG91bGQgYmUgY29ycmVjdCBhZnRlciBiYWNr
L2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTAxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTkzNzA1ODg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDMtMTIgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIGZsYXRwYWNrIGltcG9ydCBmb3IgcnVuLXdlYmtpdC10
ZXN0cyBvbmx5IGhhcHBlbiBvbiBsaW51eCBzeXN0ZW1zCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0JKHJl
dmlzaW9uIDI1ODM0OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VExTRGVwcmVjYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNDIgQEAgVEVT
VChUTFNWZXJzaW9uLCBOYXZpZ2F0ZUJhY2spCiAgICAgW3dlYlZpZXcgcmVtb3ZlT2JzZXJ2ZXI6
b2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAIl9uZWdvdGlhdGVkTGVnYWN5VExTIl07CiB9CiAK
K1RFU1QoVExTVmVyc2lvbiwgQmFja0ZvcndhcmROZWdvdGlhdGVkTGVnYWN5VExTKQoreworICAg
IEhUVFBTZXJ2ZXIgc2VjdXJlU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImhlbGxvIiB9fQor
ICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgSFRUUFNlcnZlciBpbnNl
Y3VyZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJoZWxsbyIgfSB9CisgICAgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisgICAgSFRUUFNlcnZlciBtaXhl
ZENvbnRlbnRTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgInRl
eHQvaHRtbCIgfX0sIG1ha2VTdHJpbmcoIjxpbWcgc3JjPSdodHRwczovLzEyNy4wLjAuMToiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5zZWN1cmVTZXJ2ZXIucG9ydCgpKSwgIi8nPjwvaW1nPiIp
IH0gfSwKKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gd2ViVmlld1dpdGhOYXZpZ2F0aW9uRGVsZWdhdGUoKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlY3VyZVNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0
ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3
IF9uZWdvdGlhdGVkTGVnYWN5VExTXSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly9sb2NhbGhvc3Q6JWQvIiwgbWl4ZWRDb250ZW50U2Vy
dmVyLnBvcnQoKV1dXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKyAgICB3aGlsZSAoIVt3ZWJWaWV3IF9uZWdvdGlhdGVkTGVnYWN5VExTXSkKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgZ29CYWNrXTsKKyAg
ICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBfbmVnb3RpYXRlZExlZ2FjeVRMU10pOworCisgICAgW3dlYlZpZXcgZ29Gb3J3
YXJkXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIHdo
aWxlICghW3dlYlZpZXcgX25lZ290aWF0ZWRMZWdhY3lUTFNdKQorICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9uZWdv
dGlhdGVkTGVnYWN5VExTXSk7Cit9CisKIFRFU1QoVExTVmVyc2lvbiwgU3VicmVzb3VyY2UpCiB7
CiAgICAgSFRUUFNlcnZlciBsZWdhY3lUTFNTZXJ2ZXIoewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>