<?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>196839</bug_id>
          
          <creation_ts>2019-04-11 17:11:42 -0700</creation_ts>
          <short_desc>UI↔Web deadlock when printing with a JavaScript alert visible</short_desc>
          <delta_ts>2019-05-09 12:17:57 -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>REOPENED</bug_status>
          <resolution></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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1526547</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-11 17:11:42 -0700</bug_when>
    <thetext>UI↔Web deadlock when printing with a JavaScript alert visible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526548</commentid>
    <comment_count>1</comment_count>
      <attachid>367265</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-11 17:12:38 -0700</bug_when>
    <thetext>Created attachment 367265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526549</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-11 17:12:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/49157642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526561</commentid>
    <comment_count>3</comment_count>
      <attachid>367265</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-04-11 17:44:12 -0700</bug_when>
    <thetext>Comment on attachment 367265
Patch

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

This is all SPI and the only caller of _webViewPrintFormatter doesn&apos;t cache the return value, so I think this is ok as-is, but I do think the design of -_webViewPrintFormatter is weird.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:6318
&gt; +    if (_page-&gt;process().connection()-&gt;hasOutstandingOutgoingSynchronousReplies())
&gt; +        return nil;

What if a client happens to call this while there are outstanding synchronous replies but doesn&apos;t plan to start printing until later?

What about always returning a _WKWebViewPrintFormatter but giving it a new boolean property that clients can check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526609</commentid>
    <comment_count>4</comment_count>
      <attachid>367265</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-04-11 20:18:39 -0700</bug_when>
    <thetext>Comment on attachment 367265
Patch

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

&gt; Source/WebKit/ChangeLog:23
&gt; +        synchronous message (like, say, an alert()) results in an app-destroying deadlock.

Is this a regression from switching to delayed reply messages? It used to be that sync messages were handled while waiting for responses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526613</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-11 20:34:35 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #4)
&gt; Comment on attachment 367265 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367265&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:23
&gt; &gt; +        synchronous message (like, say, an alert()) results in an app-destroying deadlock.
&gt; 
&gt; Is this a regression from switching to delayed reply messages? It used to be
&gt; that sync messages were handled while waiting for responses.

More likely from http://trac.webkit.org/changeset/236546/webkit, which has had an endless tail of similar regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526867</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-04-12 12:04:18 -0700</bug_when>
    <thetext>Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528247</commentid>
    <comment_count>7</comment_count>
      <attachid>367265</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-17 13:20:46 -0700</bug_when>
    <thetext>Comment on attachment 367265
Patch

Clearing flags on attachment: 367265

Committed r244400: &lt;https://trac.webkit.org/changeset/244400&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528248</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-17 13:20:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528319</commentid>
    <comment_count>9</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-04-17 16:06:23 -0700</bug_when>
    <thetext>Reverted r244400 for reason:

Caused testing to exit early with assertionon Debug WK2

Committed r244407: &lt;https://trac.webkit.org/changeset/244407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530999</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-27 14:03:36 -0700</bug_when>
    <thetext>dispatchSyncMessage 1
sendSyncReply 1
dispatchSyncMessage 1
sendSyncReply 1
sendSyncReply 0
sendSyncReply -1
sendSyncReply -2
sendSyncReply -3
sendSyncReply -4

welp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531034</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-27 23:12:53 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #10)
&gt; dispatchSyncMessage 1
&gt; sendSyncReply 1
&gt; dispatchSyncMessage 1
&gt; sendSyncReply 1
&gt; sendSyncReply 0
&gt; sendSyncReply -1
&gt; sendSyncReply -2
&gt; sendSyncReply -3
&gt; sendSyncReply -4
&gt; 
&gt; welp

1   0x10fcde076 IPC::Connection::sendSyncReply(std::__1::unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;)
2   0x10fdf649d Messages::NetworkProcess::ResetParametersToDefaultValues::send(std::__1::unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;&amp;&amp;, IPC::Connection&amp;)
3   0x10fe452ea auto void IPC::handleMessageAsync&lt;Messages::NetworkProcess::ResetParametersToDefaultValues, WebKit::NetworkProcess, void (WebKit::NetworkProcess::*)(PAL::SessionID, WTF::CompletionHandler&lt;void ()&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, WebKit::NetworkProcess*, void (WebKit::NetworkProcess::*)(PAL::SessionID, WTF::CompletionHandler&lt;void ()&gt;&amp;&amp;))::&apos;lambda&apos;(auto&amp;&amp;...)::operator()&lt;&gt;(auto&amp;&amp;...)

I guess async messages use sendSyncReply too? Confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1531035</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-27 23:24:14 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #11)
&gt; (In reply to Tim Horton from comment #10)
&gt; &gt; dispatchSyncMessage 1
&gt; &gt; sendSyncReply 1
&gt; &gt; dispatchSyncMessage 1
&gt; &gt; sendSyncReply 1
&gt; &gt; sendSyncReply 0
&gt; &gt; sendSyncReply -1
&gt; &gt; sendSyncReply -2
&gt; &gt; sendSyncReply -3
&gt; &gt; sendSyncReply -4
&gt; &gt; 
&gt; &gt; welp
&gt; 
&gt; 1   0x10fcde076
&gt; IPC::Connection::sendSyncReply(std::__1::unique_ptr&lt;IPC::Encoder,
&gt; std::__1::default_delete&lt;IPC::Encoder&gt; &gt;)
&gt; 2   0x10fdf649d
&gt; Messages::NetworkProcess::ResetParametersToDefaultValues::send(std::__1::
&gt; unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;&amp;&amp;,
&gt; IPC::Connection&amp;)
&gt; 3   0x10fe452ea auto void
&gt; IPC::handleMessageAsync&lt;Messages::NetworkProcess::
&gt; ResetParametersToDefaultValues, WebKit::NetworkProcess, void
&gt; (WebKit::NetworkProcess::*)(PAL::SessionID, WTF::CompletionHandler&lt;void
&gt; ()&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, WebKit::NetworkProcess*, void
&gt; (WebKit::NetworkProcess::*)(PAL::SessionID, WTF::CompletionHandler&lt;void
&gt; ()&gt;&amp;&amp;))::&apos;lambda&apos;(auto&amp;&amp;...)::operator()&lt;&gt;(auto&amp;&amp;...)
&gt; 
&gt; I guess async messages use sendSyncReply too? Confused.

Also this is all happening on a variety of threads, too, so it wasn&apos;t safe anyway</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367265</attachid>
            <date>2019-04-11 17:12:38 -0700</date>
            <delta_ts>2019-04-17 13:20:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196839-20190411171237.patch</filename>
            <type>text/plain</type>
            <size>14711</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NzQxNzcxNzgwZDNjODFk
M2U0ZDdiZWI0NzM5ZTFjMTMzN2RhODQuLmJmN2ZjMWM3NTZlYzIzNmJmMGI1Y2I2N2EwY2Y2YmY1
NzllZmI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTktMDQtMTEgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVUnihpRXZWIgZGVhZGxv
Y2sgd2hlbiBwcmludGluZyB3aXRoIGEgSmF2YVNjcmlwdCBhbGVydCB2aXNpYmxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY4MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ5MTU3NjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3Nh
Z2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aGFzT3V0c3Rh
bmRpbmdPdXRnb2luZ1N5bmNocm9ub3VzUmVwbGllcyBjb25zdCk6CisgICAgICAgIEtlZXAgdHJh
Y2sgb2Ygd2hldGhlciB3ZSBvd2UgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGNvbm5lY3Rpb24gYW55
CisgICAgICAgIGRlbGF5ZWQgc3luYyByZXBsaWVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfd2ViVmlld1ByaW50
Rm9ybWF0dGVyXSk6CisgICAgICAgIE1vc3QgYWN0aW9ucyBvbmUgY2FuIHRha2Ugd2l0aCBhIF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlciBpbnZvbHZlCisgICAgICAgIHN5bmNocm9ub3VzbHkgbWVz
c2FnaW5nIHRoZSBXZWIgQ29udGVudCBwcm9jZXNzIHdpdGggYW4gaW5maW5pdGUgdGltZW91dC4K
KyAgICAgICAgRG9pbmcgc28gd2hpbGUgdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgaXMgYXdhaXRp
bmcgYSByZXBseSB0byBhIGRlZmVycmVkLXJlcGx5CisgICAgICAgIHN5bmNocm9ub3VzIG1lc3Nh
Z2UgKGxpa2UsIHNheSwgYW4gYWxlcnQoKSkgcmVzdWx0cyBpbiBhbiBhcHAtZGVzdHJveWluZyBk
ZWFkbG9jay4KKyAgICAgICAgSW5zdGVhZCBvZiB0aGF0LCByZXR1cm4gYSBuaWwgX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyLCBpbmRpY2F0aW5nIHRvIHRoZSBjbGllbnQKKyAgICAgICAgdGhhdCB3
ZSBjYW4ndCBwcmludCByaWdodCBub3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VDb3VudEZvclBy
aW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wcmludGVkRG9j
dW1lbnRdKToKKyAgICAgICAgVGhlIGFib3ZlIGlzbid0IHN1ZmZpY2llbnQsIHRob3VnaCwgYmVj
YXVzZSBhIHN5bmMgbWVzc2FnZSBjb3VsZCBhcnJpdmUgYW5kCisgICAgICAgIGJlIGhhbmRsZWQg
YmV0d2VlbiBjcmVhdGlvbiBhbmQgdXNlIG9mIHRoZSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIu
CisgICAgICAgIFNvLCB3ZSBhbHNvIGJhaWwgd2l0aCBhIHplcm8gcGFnZSBjb3VudCBhbmQgbnVs
bCBDR1BERkRvY3VtZW50IGltbWVkaWF0ZWx5CisgICAgICAgIGJlZm9yZSB3ZSB3b3VsZCBzZW5k
IGEgc3luYyBtZXNzYWdlIHRvIHRoZSBXZWIgQ29udGVudCBwcm9jZXNzLiBDbGllbnRzCisgICAg
ICAgIGhhbmRsZSB0aGlzIGxlc3MgZ3JhY2VmdWxseSAoZS5nLiBzaG93aW5nIGEgemVybyBwYWdl
IFBERiksIGJ1dCBpdCBpcworICAgICAgICB2ZXJ5IHJhcmUgY29tcGFyZWQgdG8gdGhlIGFib3Zl
IGNhc2UuCisKIDIwMTktMDQtMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEV4dHJhY3QgVVRJIG1hcHBpbmcgYW5kIGFsbG93IGZvciBhZGRpdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggZTJlZTE0ODU4NzhkOTkx
OGJhYWIzNzM1OTAyOGI2MGU3YmU4MmYyYy4uN2Y3MzZjNmRjNzM2NjM0NDA4NmQ5MWYyZDQxNmEz
NjYyNWMyOTJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
QEAgLTM0MSw2ICszNDEsOCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZQogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgbV9vdXRzdGFuZGluZ091dGdvaW5nU3luY2hyb25vdXNSZXBseUNv
dW50Kys7CisKICAgICBhdXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rl
cj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBI
YW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1l
c3NhZ2UgcmVjZWl2ZXIuCkBAIC00NTgsNiArNDYwLDkgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZVdpdGhSZXBseSh1aW50NjRfdCByZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGUKIAogYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVyPiBlbmNvZGVyKQogeworICAgIEFTU0VSVChtX291dHN0YW5kaW5nT3V0Z29pbmdTeW5jaHJv
bm91c1JlcGx5Q291bnQpOworICAgIG1fb3V0c3RhbmRpbmdPdXRnb2luZ1N5bmNocm9ub3VzUmVw
bHlDb3VudC0tOworCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHsg
fSk7CiB9CiAKQEAgLTg4OCw2ICs4OTMsOCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3lu
Y01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IG1fb3V0c3RhbmRpbmdPdXRnb2luZ1N5bmNocm9ub3VzUmVwbHlDb3VudCsrOworCiAgICAgYXV0
byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01l
c3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBl
ZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggMzZiZDkxMmUwYmNlNGFhOGNiMThhZDkwMWJiYjNmZTkwYTczYzgwMy4u
NTE2N2M5NWNiOWJkZDZlZmE5YThmNGI1ZGM0MDQ1ZWI0NDE1NWJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTk2LDYgKzE5Niw4IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaW5TZW5kU3luYygpIGNvbnN0IHsgcmV0dXJuIG1faW5TZW5kU3luY0NvdW50OyB9
CiAKKyAgICBib29sIGhhc091dHN0YW5kaW5nT3V0Z29pbmdTeW5jaHJvbm91c1JlcGxpZXMoKSBj
b25zdCB7IHJldHVybiBtX291dHN0YW5kaW5nT3V0Z29pbmdTeW5jaHJvbm91c1JlcGx5Q291bnQ7
IH0KKwogICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC0yOTcsNiArMjk5LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2luRGlz
cGF0Y2hNZXNzYWdlQ291bnQ7CiAgICAgdW5zaWduZWQgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtl
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlDb3VudDsKICAgICB1bnNpZ25lZCBtX2lu
RGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3Rpbmcg
eyAwIH07CisgICAgdW5zaWduZWQgbV9vdXRzdGFuZGluZ091dGdvaW5nU3luY2hyb25vdXNSZXBs
eUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZv
clRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3Rpbmcg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyNTQ1ZjBl
ZTEzM2U5YWVjYzNiYzVhZjBhOGQ4ZWZkMTkwNzUyM2FmLi5mYzYyNGY0NDdjMTg5NDQ2Zjg5ZWIw
ZWMwZGI5NWZlNjNmYWZhYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTYzMTQsNiArNjMxNCw5IEBAIC0gKE5TU3RyaW5nICopX3N1
Z2dlc3RlZEZpbGVuYW1lRm9yRGlzcGxheWVkUERGCiAtIChfV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIgKilfd2ViVmlld1ByaW50Rm9ybWF0dGVyCiB7CiAjaWYgIVBMQVRGT1JNKElPU01BQykKKyAg
ICBpZiAoX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmhhc091dHN0YW5kaW5nT3V0Z29p
bmdTeW5jaHJvbm91c1JlcGxpZXMoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIFVJVmll
d1ByaW50Rm9ybWF0dGVyICp2aWV3UHJpbnRGb3JtYXR0ZXIgPSBzZWxmLnZpZXdQcmludEZvcm1h
dHRlcjsKICAgICBBU1NFUlQoW3ZpZXdQcmludEZvcm1hdHRlciBpc0tpbmRPZkNsYXNzOltfV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIgY2xhc3NdXSk7CiAgICAgcmV0dXJuIChfV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIgKil2aWV3UHJpbnRGb3JtYXR0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDZiMmQ5Zjk2NDRmN2I5MzRkNzFiZjE3YzNh
ZTU4OGM3YzIzOGI0MzkuLmQ0ZjRlYTdlYTczNjgwZDllNWQyYzgwMTdiM2MxZGYxNGI0NGRmNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03
MjYsNiArNzI2LDkgQEAgLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0
ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm8KICAgICBpZiAoX2lzUHJpbnRp
bmdUb1BERikKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAoX3BhZ2UtPnByb2Nlc3MoKS5j
b25uZWN0aW9uKCktPmhhc091dHN0YW5kaW5nT3V0Z29pbmdTeW5jaHJvbm91c1JlcGxpZXMoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgIGlmIChfV0tG
cmFtZUhhbmRsZSAqaGFuZGxlID0gcHJpbnRGb3JtYXR0ZXIuZnJhbWVUb1ByaW50KQogICAgICAg
ICBmcmFtZUlEID0gaGFuZGxlLl9mcmFtZUlEOwpAQCAtNzY5LDYgKzc3Miw5IEBAIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvCiAKIC0gKENHUERGRG9jdW1lbnRSZWYpX3drX3ByaW50ZWREb2N1bWVu
dAogeworICAgIGlmIChfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+aGFzT3V0c3RhbmRp
bmdPdXRnb2luZ1N5bmNocm9ub3VzUmVwbGllcygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KwogICAgIGlmIChfaXNQcmludGluZ1RvUERGKSB7CiAgICAgICAgIGlmICghX3BhZ2UtPnByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrPihfcGFnZS0+cGFnZUlEKCksIFNlY29u
ZHM6OmluZmluaXR5KCkpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZWNmZTEx
YzZmNThkYTNjYzUyZTJiM2I0ODA5YzJjMmVlMjlhOGMwLi40MDEzODNkMDM4MWUxMTZkNzE0M2M3
YzlmY2I1NzJkMjA4NTYxNzZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDQtMTEgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVUnihpRXZWIgZGVhZGxvY2sgd2hl
biBwcmludGluZyB3aXRoIGEgSmF2YVNjcmlwdCBhbGVydCB2aXNpYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY4MzkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ5MTU3NjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTogQWRkZWQuCisgICAgICAgICgtW1ByaW50T25BbGVy
dFVJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKwog
MjAxOS0wNC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlLl9kb3dubG9hZEF0dHJpYnV0ZSBzaG91bGQg
YmUgbmlsIHdoZW4gbm8gZG93bmxvYWQgYXR0cmlidXRlIGlzIHByZXNlbnQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMmVmMzZjNDA3YWYzZTliMjE3OGIyZDliZWRkZWQ0NmJkY2U5NjBmNi4u
NWE5YmRiYWE5YTA1MTUxNGU3OWNhYjdlNTU0YjRlMTk2YTIzZWM5OCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTk0LDYgKzk0LDcgQEAKIAkJMkQyMUZFNTkxRjA0NjQyOTAwQjU4RTdEIC8q
IFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyMUZFNTgxRjA0NjQyODAwQjU4
RTdEIC8qIFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVwZGF0ZUNhbGxiYWNrLm1tICovOyB9
OwogCQkyRDJCRUIyRDIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJCRUIy
QzIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi87IH07CiAJ
CTJEM0NBM0E4MjIxREY0QjQwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0NBM0E0MjIxREYyMzkw
MDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSAqLzsgfTsKKwkJMkQ0MUNGQjkyMjYwMDE0
RjAwRkZGMzM1IC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MUNGQjgyMjYwMDE0RTAwRkZGMzM1IC8q
IFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tICovOyB9OwogCQkyRDRDRjhCRDFEODM2MENDMDAw
MUNFOEQgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ0Q0Y4QkMxRDgzNjBDQzAwMDFDRThEIC8qIFdLVGh1bWJuYWls
Vmlldy5tbSAqLzsgfTsKIAkJMkQ1MUEwQzcxQzhCRjAwQzAwNzY1QzQ1IC8qIERPTUhUTUxWaWRl
b0VsZW1lbnRXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ1MUEwQzUxQzhCRjAwNDAwNzY1QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRX
cmFwcGVyLm1tICovOyB9OwogCQkyRDcwMDU5NjIxRURBMEM2MDAzNDYzQ0IgLyogVGFiT3V0T2ZX
ZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ3MDA1OTUyMUVEQTBDNjAwMzQ2M0NCIC8qIFRhYk91dE9mV2ViVmlldy5tbSAqLzsgfTsKQEAg
LTE0NDgsNiArMTQ0OSw3IEBACiAJCTJEMjFGRTU4MUYwNDY0MjgwMEI1OEU3RCAvKiBXS1BERlZp
ZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVwZGF0ZUNh
bGxiYWNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJCRUIyQzIyMzI0RTVG
MDA1NTQ0Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBhZ2VP
dmVybGF5UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UGFnZU92ZXJsYXlQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENDFD
RkI4MjI2MDAxNEUwMEZGRjMzNSAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1ByaW50Rm9ybWF0dGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDRDRjhCQzFEODM2MENDMDAwMUNF
OEQgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tUaHVtYm5haWxWaWV3Lm1tOyBwYXRoID0gV2ViS2l0L1dLVGh1bWJuYWlsVmll
dy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1MUEwQzUxQzhCRjAwNDAwNzY1
QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRXcmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBwZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENjFFQzMwMjFCMEI3NUMwMEE3RDFDQiAvKiBQZW5j
aWxLaXRUZXN0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlbmNpbEtpdFRlc3RTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTEsNiArMjcxMyw3IEBACiAJCQkJQ0U0NDlFMTAy
MUFFMEY3MjAwRTdBREExIC8qIFdLV2ViVmlld0ZpbmRTdHJpbmcubW0gKi8sCiAJCQkJRjQxMDZD
NjgyMUFDQkY4NDAwNEI4OUExIC8qIFdLV2ViVmlld0ZpcnN0UmVzcG9uZGVyVGVzdHMubW0gKi8s
CiAJCQkJRDNCRTVFMzQxRTRDRTg1RTAwRkQ1NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1t
ICovLAorCQkJCTJENDFDRkI4MjI2MDAxNEUwMEZGRjMzNSAvKiBXS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSAqLywKIAkJCQkzN0E5REJFNzIxM0I0QzkzMDBEMjYxQTIgLyogV0tXZWJWaWV3U2Vy
dmVyVHJ1c3RLVkMubW0gKi8sCiAJCQkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2Vi
Vmlld1NuYXBzaG90Lm1tICovLAogCQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dl
YlZpZXdUZXh0SW5wdXQubW0gKi8sCkBAIC00NDQyLDYgKzQ0NDUsNyBAQAogCQkJCUY0MTA2QzY5
MjFBQ0JGODQwMDRCODlBMSAvKiBXS1dlYlZpZXdGaXJzdFJlc3BvbmRlclRlc3RzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRDM0RTA4NzYxRTRFNDJFMTAwNUZGMTRBIC8qIFdLV2ViVmlld0dldENv
bnRlbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRGQTkxODExRTYxODQ5QjAwN0I4QzFEIC8q
IFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJENDFDRkI5
MjI2MDAxNEYwMEZGRjMzNSAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3QTlEQkU5MjEzQjRDOTMwMEQyNjFBMiAvKiBXS1dlYlZpZXdTZXJ2ZXJUcnVz
dEtWQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBX
S1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5ODRGQUNDMUNGRkFGNjAw
MDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YmNkY2NlNjQyZGFmNTRlYThhZGQ0
NGQ0NmZkYjgxZjRiZjc4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0
LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9vbCBkb25lOworCitAaW50ZXJmYWNlIFByaW50T25B
bGVydFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gUHJpbnRPbkFsZXJ0VUlEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJp
bmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgRVhQ
RUNUX05VTEwoW3dlYlZpZXcgX3dlYlZpZXdQcmludEZvcm1hdHRlcl0pOworCisgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgRVhQRUNUX05V
TEwoW3dlYlZpZXcgX3dlYlZpZXdQcmludEZvcm1hdHRlcl0pOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9KTsKK30KKworQGVuZAorCitU
RVNUKFdlYktpdCwgV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJKYXZhU2NyaXB0QWxlcnREZWFkbG9j
aykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbUHJpbnRPbkFsZXJ0VUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1w
cyBvdmVyIHRoZSBsYXp5IGRvZy4iXTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoW3dlYlZpZXcgX3dl
YlZpZXdQcmludEZvcm1hdHRlcl0pOworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0
OkAiYWxlcnQoJ2hlbGxvJykiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9OT1RfTlVMTChbd2ViVmlldyBf
d2ViVmlld1ByaW50Rm9ybWF0dGVyXSk7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>