<?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>61328</bug_id>
          
          <creation_ts>2011-05-23 17:40:45 -0700</creation_ts>
          <short_desc>[Qt] QtWebkit never finishes loading sites when they are loaded after an initial QUrl fails to load.</short_desc>
          <delta_ts>2011-07-29 08:41:24 -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>WebKit Qt</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63490</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>usaman2010us</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>abarth</cc>
    
    <cc>ademar</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>kling</cc>
    
    <cc>luiz</cc>
    
    <cc>pierre.rossi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>408512</commentid>
    <comment_count>0</comment_count>
    <who name="">usaman2010us</who>
    <bug_when>2011-05-23 17:40:45 -0700</bug_when>
    <thetext>The problem is hard to explain. So let me give you an example as to where this problem would occur:

My user enters in a non-existant or badly-written URL, that has no valid host. They click the Go button, and a QWebView then parses the QString as a QUrl and uses the setUrl method to navigate there.
Upon the loadFinished signal activating the connected slot, the slot then see&apos;s, thanks to the passed boolean variable, that the attempted URL failed to load, and thus, it fallsback on perhaps a google search that contains the bad term.
The google search is started via the setUrl method inside the loadFinished signal&apos;s slot. It activates the loadStarted and loadProgress signals, but never gets to past ~50% load progress, and therefore never activates the loadFinished signal, and therefore never finishes loading.. causing the user to see a blank white page.


Attempting to go to any page through the loadFinished signal&apos;s slot appears to not work. As in the above example, even a simple URL like http://google.com passed to the setUrl method in loadFinished signal&apos;s slot appears to never finish loading.

The attached file is a testcase. Attach it to a simple project with a project file that contains &quot;QT += core gui webkit&quot; and compiles the app as a GUI binary. Clean the project, run qmake, and then build and run the application.
You will see a QTextEdit and a QPushButton side by side. Below it, you will see a QWebView. Enter your desired URL in to the QTextEdit and press the QPushButton(says &quot;Go&quot;). 
The QWebView will then load to the desired URL, with debugging occurring from the first time the user hits the QPushButton, all the way through all 3 loading signals [start, progress, finish] in the QWebView. The debugging occurs through qDebug(), so make sure you check the console.

To test for the stated bug, enter in a bad URL. I usually use:
http://google./com


You will see that the URL will fail to load, fallback on the google search, and never finish loading from there. It will stop loading at around 50-55% progress - for no apparent reason.

This is a major bug in my opinion that makes it impossible to do anything along the lines of a fallback search.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408513</commentid>
    <comment_count>1</comment_count>
      <attachid>94525</attachid>
    <who name="">usaman2010us</who>
    <bug_when>2011-05-23 17:41:25 -0700</bug_when>
    <thetext>Created attachment 94525
The testcase.

This is the testcase. Make sure to attach it to a correct .pro file. See the description of this bug for more info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408514</commentid>
    <comment_count>2</comment_count>
    <who name="">usaman2010us</who>
    <bug_when>2011-05-23 17:43:36 -0700</bug_when>
    <thetext>Also, some information I left out:
I have tested this problem and it occurs in the same way on both QtWebkit 2.0.2[as delivered with Qt 4.7.3], and the latest version of QtWebkit 2.2[as seen on http://trac.webkit.org/wiki/QtWebKitRelease22].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408554</commentid>
    <comment_count>3</comment_count>
    <who name="">usaman2010us</who>
    <bug_when>2011-05-23 18:39:35 -0700</bug_when>
    <thetext>Erm, I&apos;m not sure how to say this...
I am going to modify a discussion I had [mainly with myself] just now, which will say everything you need to know:

In this bug report, I claimed to have tested it on both QtWebkit 2.0.2[default for Qt 4.7.3] and QtWebkit2.2[in beta, will be in next release of Qt]. I soon remembered I only compiled my testcase only with QtWebkit 2.0.2.
So I then went to my actual project [not this testcase], which uses QtWebkit 2.2. I changed a few things around to make it act like the testcase.
Now, although the testcase stopped loading the fallback URL 50% of the way through, my QtWebkit2.2 application loaded it perfectly when using my testcase&apos;s exact methods and such.
So I was like &quot;Wow... I have been trying to fix this crash for several days...&quot;. I then changed my testcase compiler around to use QtWebkit2.2, as my [now working] application uses it.
I compiled my testcase and tested the bug. Now, instead of just failing to load halfway through, it crashed the entire application.

In other words:
Testcase doesn&apos;t crash when using QtWebkit 2.0.2 (although it does show a bug) --&gt; Modify application, which uses QtWebkit 2.2, which crashed in the past, to use testcase methods --&gt; Application works perfectly --&gt; Modify testcase compiler to use same QtWebkit as my application [QtWebkit 2.0.2 to QtWebkit 2.2] -&gt; Testcase gets WORSE, and crashes.

In OTHER words, I completely fixed my application using my testcase&apos;s methods. (0 bugs) I then tried to run my testcase with the same version of QtWebkit (which was 2.2) as my application, and the testcase now crashes.

If this is a bug, then... I am not really sure what is going on. I am quite confused myself. I hope to see some interesting comments from Webkit staff soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408557</commentid>
    <comment_count>4</comment_count>
    <who name="">usaman2010us</who>
    <bug_when>2011-05-23 18:50:36 -0700</bug_when>
    <thetext>Ignore this whole comment please.

I wasn&apos;t thinking, and completely forgot that my original application used a workaround this bug, which is why it didn&apos;t crash. Testing my application (which uses QtWebkit 2.2) using the same methods as my testcase - without my workaround - causes my application to crash, which is the same result as when the testcase uses QtWebkit 2.2.
I am terribly sorry for the confusion.

(In reply to comment #3)
&gt; Erm, I&apos;m not sure how to say this...
&gt; I am going to modify a discussion I had [mainly with myself] just now, which will say everything you need to know:
&gt; 
&gt; In this bug report, I claimed to have tested it on both QtWebkit 2.0.2[default for Qt 4.7.3] and QtWebkit2.2[in beta, will be in next release of Qt]. I soon remembered I only compiled my testcase only with QtWebkit 2.0.2.
&gt; So I then went to my actual project [not this testcase], which uses QtWebkit 2.2. I changed a few things around to make it act like the testcase.
&gt; Now, although the testcase stopped loading the fallback URL 50% of the way through, my QtWebkit2.2 application loaded it perfectly when using my testcase&apos;s exact methods and such.
&gt; So I was like &quot;Wow... I have been trying to fix this crash for several days...&quot;. I then changed my testcase compiler around to use QtWebkit2.2, as my [now working] application uses it.
&gt; I compiled my testcase and tested the bug. Now, instead of just failing to load halfway through, it crashed the entire application.
&gt; 
&gt; In other words:
&gt; Testcase doesn&apos;t crash when using QtWebkit 2.0.2 (although it does show a bug) --&gt; Modify application, which uses QtWebkit 2.2, which crashed in the past, to use testcase methods --&gt; Application works perfectly --&gt; Modify testcase compiler to use same QtWebkit as my application [QtWebkit 2.0.2 to QtWebkit 2.2] -&gt; Testcase gets WORSE, and crashes.
&gt; 
&gt; In OTHER words, I completely fixed my application using my testcase&apos;s methods. (0 bugs) I then tried to run my testcase with the same version of QtWebkit (which was 2.2) as my application, and the testcase now crashes.
&gt; 
&gt; If this is a bug, then... I am not really sure what is going on. I am quite confused myself. I hope to see some interesting comments from Webkit staff soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409167</commentid>
    <comment_count>5</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-05-24 13:34:51 -0700</bug_when>
    <thetext>I could reproduce the problem in Linux too. I&apos;m looking into this.

Marking it as P1 because it is a simple (and not unusual) use of the API that is crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409485</commentid>
    <comment_count>6</comment_count>
    <who name="">usaman2010us</who>
    <bug_when>2011-05-24 23:21:31 -0700</bug_when>
    <thetext>Importance changed from P1 Major to P1 Critical, as the application does crash when it hits this &apos;bug&apos; in QtWebkit 2.2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416245</commentid>
    <comment_count>7</comment_count>
      <attachid>96184</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-06-06 19:52:53 -0700</bug_when>
    <thetext>Created attachment 96184
Patch

Just some context:

- The core of the problem is that when FrameLoaderClient makes callbacks to user code, we must be sure that the FrameLoader is in a consistent state.

- I tried enqueueing the signals, but this led to other problems like: changing order of expected signals in DRT, and ultimately, the need of enqueueing setUrl()/load() calls as well to avoid loops due to setUrl() -&gt; cancel load -&gt; enqueue loadFinished(false) -&gt; start load -&gt; process loadFinished(false) -&gt; setUrl() -&gt; ...

- I could try to manipulate FrameLoader code to make sure that state will be consistent, but I think this would be always hard to keep, specially because other APIs doesn&apos;t use progress notification for this kind of signal. This new approach is used both by Mac and Gtk. I&apos;m not really sure if the FrameLoader need to be ready for taking a new load() at every point in FrameLoaderClient. The progress notification were a gray area for me in that matter. I would be glad to hear opinions about this particular point.

- Now every frame will have its own loadStarted() and loadFinished(). We didn&apos;t emitted those for every frame before, only for the &quot;originating frame&quot;, because the progress notification only happen in the &quot;originating frame&quot;. QWebPage signals continue to be emitted only when the &quot;originating frame&quot; start/finish.

- I&apos;m assuming that: the last frame to be loaded will be the &quot;originating frame&quot;. This seems to match pieces of code I looked elsewhere.

- This commit will surface the issue reported in https://bugs.webkit.org/show_bug.cgi?id=28851. I prefer that we fix this other problem in a separate commit, since it might demand different testing. We can try to workaround at Qt level too, but I don&apos;t see why not use 28851 :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416247</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-06-06 19:57:01 -0700</bug_when>
    <thetext>Benjamin, could you take a look at this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418825</commentid>
    <comment_count>9</comment_count>
      <attachid>96184</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-10 12:01:40 -0700</bug_when>
    <thetext>Comment on attachment 96184
Patch

This looks fine w.r.t. FrameLoaderClient, as far as I can tell, but I&apos;m sure I understand everything in full detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418828</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-10 12:06:16 -0700</bug_when>
    <thetext>&gt; I&apos;m sure I understand everything in full detail.

*unsure.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423829</commentid>
    <comment_count>11</comment_count>
      <attachid>96184</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-06-20 11:59:34 -0700</bug_when>
    <thetext>Comment on attachment 96184
Patch

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

&gt; Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:1181
&gt; +
&gt; +    if (m_webFrame)
&gt; +        emitLoadFinished(false);

I *think* dispatchDidFailLoad() will only fire when there is a network-level error. At the moment QtWebKit emits loadFinished(false) even when there are 4XX errors (which don&apos;t result in a didFail()). This patch will change that behaviour.

A related bug for this problem is https://bugs.webkit.org/show_bug.cgi?id=62852. There isn&apos;t any clear definition of how didFail() should be used, as sometimes it&apos;s invoked by WebCore and sometimes by WebKit. AFAICT the Mac and Chromium ports reserve it exclusively for transport errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428396</commentid>
    <comment_count>12</comment_count>
      <attachid>96184</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-06-27 15:44:58 -0700</bug_when>
    <thetext>Comment on attachment 96184
Patch

The patch is wrong since it end up emitting more signals than necessary in the case of ErrorPageExtension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428401</commentid>
    <comment_count>13</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-06-27 15:49:13 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I *think* dispatchDidFailLoad() will only fire when there is a network-level error. At the moment QtWebKit emits loadFinished(false) even when there are 4XX errors (which don&apos;t result in a didFail()). This patch will change that behaviour.

Thanks for looking into this Robert. I tested the case for 404:

- 404 with contents will end up with a loadFinished(true).
- 404 without contents will ask for ErrorPageExtension, if it handles, then loadFinished(true), if the extension doesn&apos;t handle the error, loadFinished(false).

The current code relies on dispatchDidFailProvisionalLoad() and dispatchDidFailLoad() for getting the errors (only them fill m_loadError with something). The patch use the same functions to emit the error, so I think this will not cause a change on the behavior.

I&apos;m working on autotests to make sure of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428402</commentid>
    <comment_count>14</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-06-27 15:49:55 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 96184 [details])
&gt; The patch is wrong since it end up emitting more signals than necessary in the case of ErrorPageExtension.

More specifically, when I use the error page extension and it causes a new load, I shouldn&apos;t emit the signal again. I&apos;m working to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428420</commentid>
    <comment_count>15</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-06-27 16:08:27 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m working on autotests to make sure of that.

Robert, could you take a look at bug 63490? I&apos;ve tried to test some more cases for loadFinished(), considering that existing implementation is the correct one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439935</commentid>
    <comment_count>16</comment_count>
      <attachid>101495</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-07-20 12:39:25 -0700</bug_when>
    <thetext>Created attachment 101495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441644</commentid>
    <comment_count>17</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-25 07:41:30 -0700</bug_when>
    <thetext>Luiz, Andreas, could you have a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442223</commentid>
    <comment_count>18</comment_count>
      <attachid>101495</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-26 07:10:19 -0700</bug_when>
    <thetext>Comment on attachment 101495
Patch

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

This is a pretty cool patch!

&gt; Source/WebKit/qt/ChangeLog:36
&gt; +        (WebCore::FrameLoaderClientQt::FrameLoaderClientQt): Initialize
&gt; +        m_isOriginatingLoad().

Not sure what m_isOriginatingLoad() means here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442997</commentid>
    <comment_count>19</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-07-27 10:41:45 -0700</bug_when>
    <thetext>Committed r91855: &lt;http://trac.webkit.org/changeset/91855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443957</commentid>
    <comment_count>20</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-07-29 08:41:24 -0700</bug_when>
    <thetext>Revision r91855 cherry-picked into qtwebkit-2.2 with commit 382deba &lt;http://gitorious.org/webkit/qtwebkit/commit/382deba&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>94525</attachid>
            <date>2011-05-23 17:41:25 -0700</date>
            <delta_ts>2011-05-23 17:41:25 -0700</delta_ts>
            <desc>The testcase.</desc>
            <filename>main.cpp</filename>
            <type>text/plain</type>
            <size>2332</size>
            <attacher>usaman2010us</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPFF0R3VpL1FBcHBsaWNhdGlvbj4NCiNpbmNsdWRlIDxRdFdlYktpdC9RV2ViVmll
dz4NCiNpbmNsdWRlIDxRTWFpbldpbmRvdz4NCiNpbmNsdWRlIDxRTGluZUVkaXQ+DQojaW5jbHVk
ZSA8UVB1c2hCdXR0b24+DQojaW5jbHVkZSA8UVN0cmluZ0J1aWxkZXI+DQojaW5jbHVkZSAicWRl
YnVnLmgiDQoNCnN0cnVjdCBNYWluV2luZG93IDogcHVibGljIFFNYWluV2luZG93DQp7DQogICAg
UV9PQkpFQ1QNCg0KcHVibGljOg0KICAgIGV4cGxpY2l0IE1haW5XaW5kb3coUVdpZGdldCAqcGFy
ZW50ID0gMCk7DQogICAgUVdlYlZpZXcgKndlYlZpZXc7DQogICAgUUxpbmVFZGl0ICpsaW5lRWRp
dDsNCiAgICBRUHVzaEJ1dHRvbiAqZ29CdG47DQoNCnByaXZhdGUgc2xvdHM6DQogICAgdm9pZCBs
b2FkX3N0YXJ0KCk7DQogICAgdm9pZCBsb2FkX3dvcmtpbmcoaW50IGkpOw0KICAgIHZvaWQgbG9h
ZF9maW5pc2goYm9vbCBiKTsNCiAgICB2b2lkIGdvQnRuX2NsaWNrZWQoKTsNCn07DQoNCk1haW5X
aW5kb3c6Ok1haW5XaW5kb3coUVdpZGdldCAqcGFyZW50KQ0KICAgIDogUU1haW5XaW5kb3cocGFy
ZW50KQ0Kew0KICAgIHJlc2l6ZSg0NTAsIDYwMCk7DQogICAgbGluZUVkaXQgPSBuZXcgUUxpbmVF
ZGl0KHRoaXMpOw0KICAgIGdvQnRuID0gbmV3IFFQdXNoQnV0dG9uKCJHbyIsIHRoaXMpOw0KICAg
IGdvQnRuLT5tb3ZlKHgoKSArIGxpbmVFZGl0LT53aWR0aCgpLCB5KCkpOw0KICAgIHdlYlZpZXcg
PSBuZXcgUVdlYlZpZXcodGhpcyk7DQogICAgd2ViVmlldy0+bW92ZSh4KCksIHkoKSArIGdvQnRu
LT5oZWlnaHQoKSk7DQogICAgd2ViVmlldy0+c2V0VXJsKFFVcmwoImh0dHA6Ly9nb29nbGUuY29t
IikpOw0KICAgIHdlYlZpZXctPnJlc2l6ZSg0MDAsIDUwMCk7DQogICAgY29ubmVjdChnb0J0biwg
U0lHTkFMKGNsaWNrZWQoKSksIHRoaXMsIFNMT1QoZ29CdG5fY2xpY2tlZCgpKSk7DQogICAgY29u
bmVjdCh3ZWJWaWV3LCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1QobG9hZF9zdGFy
dCgpKSk7DQogICAgY29ubmVjdCh3ZWJWaWV3LCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpLCB0
aGlzLCBTTE9UKGxvYWRfd29ya2luZyhpbnQpKSk7DQogICAgY29ubmVjdCh3ZWJWaWV3LCBTSUdO
QUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgdGhpcywgU0xPVChsb2FkX2ZpbmlzaChib29sKSkpOw0K
fQ0KDQp2b2lkIE1haW5XaW5kb3c6OmdvQnRuX2NsaWNrZWQoKQ0Kew0KICAgIHFEZWJ1ZygpIDw8
ICJBdHRlbXB0aW5nIHRvIG5hdmlnYXRlIHRvOiAiIDw8IFFVcmwobGluZUVkaXQtPnRleHQoKSk7
DQogICAgaWYgKCEobGluZUVkaXQtPnRleHQoKS5pc0VtcHR5KCkpKQ0KICAgICAgICB3ZWJWaWV3
LT5zZXRVcmwoUVVybChsaW5lRWRpdC0+dGV4dCgpKSk7DQp9DQoNCnZvaWQgTWFpbldpbmRvdzo6
bG9hZF9zdGFydCgpDQp7DQogICAgcURlYnVnKCkgPDwgIkF0dGVtcHRpbmcgdG8gc3RhcnQgbG9h
ZGluZyBzaXRlLi4uIEN1cnJlbnQgUVdlYlZpZXcgc2l0ZSBpczogIiA8PCB3ZWJWaWV3LT51cmwo
KTsNCn0NCg0Kdm9pZCBNYWluV2luZG93Ojpsb2FkX3dvcmtpbmcoaW50IGkpDQp7DQogICAgcURl
YnVnKCkgPDwgIkxvYWRpbmcgIiA8PCB3ZWJWaWV3LT51cmwoKSA8PCAiIC0gQ3VycmVudCBQcm9n
cmVzczogIiA8PCBpOw0KfQ0KDQp2b2lkIE1haW5XaW5kb3c6OmxvYWRfZmluaXNoKGJvb2wgYikN
CnsNCiAgICBpZiAoIWIpIHsNCiAgICAgICAgcURlYnVnKCkgPDwgIkxvYWQgZmFpbGVkLiBOYXZp
Z2F0aW5nIHRvIGdvb2dsZSBzZWFyY2ggb2YgYXR0ZW1wdGVkIHdlYnNpdGUgYXQ6ICIgPDwgUVVy
bCgiaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPSIgKyBsaW5lRWRpdC0+dGV4dCgpKTsN
CiAgICAgICAgd2ViVmlldy0+c2V0VXJsKFFVcmwoUVN0cmluZygiaHR0cDovL3d3dy5nb29nbGUu
Y29tL3NlYXJjaD9xPSIgJSBsaW5lRWRpdC0+dGV4dCgpKSkpOyAvL1RoZSBsb2FkaW5nIG9mIHRo
ZSBvcmlnaW5hbCBRVXJsIGZhaWxlZC4gVGhlcmVmb3JlLCBsZXQgdXMgZ29vZ2xlIHNlYXJjaCB0
aGUgYmFkIHdlYnNpdGUuDQogICAgfQ0KICAgIGVsc2UNCiAgICAgICAgcURlYnVnKCkgPDwgIkxv
YWQgYXBwZWFycyBzdWNjZXNzZnVsLiBDdXJyZW50IFVSTDogIiA8PCB3ZWJWaWV3LT51cmwoKTsN
Cn0NCg0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCnsNCiAgICBRQXBwbGljYXRp
b24gYShhcmdjLCBhcmd2KTsNCiAgICBNYWluV2luZG93IHdpbmQ7DQogICAgd2luZC5zaG93KCk7
DQoNCiAgICByZXR1cm4gYS5leGVjKCk7DQp9DQoNCiNpbmNsdWRlICJtYWluLm1vYyINCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96184</attachid>
            <date>2011-06-06 19:52:53 -0700</date>
            <delta_ts>2011-07-20 12:39:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-QtWebkit-never-finishes-loading-sites-when-they-a.patch</filename>
            <type>text/plain</type>
            <size>19603</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">RnJvbSA4MWFmZGM4ODAwN2EzNjU0ZjI3MjllNTgxMWY3MWU1MWZhMTFhYTZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gPGNhaW8u
b2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KRGF0ZTogTW9uLCA2IEp1biAyMDExIDIzOjM3OjA3IC0w
MzAwClN1YmplY3Q6IFtQQVRDSF0gW1F0XSBRdFdlYmtpdCBuZXZlciBmaW5pc2hlcyBsb2FkaW5n
IHNpdGVzIHdoZW4gdGhleSBhcmUKIGxvYWRlZCBhZnRlciBhbiBpbml0aWFsIFFVcmwgZmFpbHMg
dG8gbG9hZC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTMyOAoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpDaGFuZ2UgdGhlIGhvb2tzIGluIEZyYW1lTG9h
ZGVyQ2xpZW50IHdlIHVzZSBmb3IgZW1pdHRpbmcgc2lnbmFscy4gSW5zdGVhZCBvZgplbWl0dGlu
ZyBzaWduYWxzIGluIHRoZSBwcm9ncmVzcyBub3RpZmljYXRpb24gZnVuY3Rpb25zLCB3ZSB1c2Ug
dGhlCmRpc3BhdGNoRGlke1N0YXJ0LEZpbmlzaCxGYWlsfSogZnVuY3Rpb25zLiBUaGUgbWFpbiBy
ZWFzb24gYmVoaW5kIHRoaXMgY2hhbmdlIGlzCnRoYXQgbG9hZGluZyBjb2RlIGlzIHByZXBhcmVk
IHRvIGhhbmRsZSBsb2FkKCkgd2hlbiBpbnNpZGUgdGhvc2UgZnVuY3Rpb25zLgoKVGhlIGNyYXNo
IHdhcyBiZWluZyBjYXVzZWQgYnkgc2V0VXJsKCkgKGFuZCBsb2FkKCkpIGJlaW5nIGNhbGxlZCB3
aGVuCmxvYWRGaW5pc2hlZChmYWxzZSkgd2FzIGVtaXR0ZWQuIFRoZSBwcm9ibGVtIGhlcmUgaXMg
dGhhdCB3aGVuCnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uIHRoZSBGcmFtZUxvYWRl
ciB3YXNuJ3QgcmVhZHkgZm9yIHRha2luZyBhIGxvYWQoKQpjYWxsIGFnYWluLCBiZWNhdXNlIGl0
IHdhcyBzdGlsbCB0aGUgUHJvdmlzaW9uYWxMb2FkU3RhdGUgYnV0IHdpdGggdGhlCnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIgYWxyZWFkeSByZW1vdmVkLgoKVG8gZW11bGF0ZSB0aGUgc2FtZSBi
ZWhhdmlvciB0aGF0IFF0V2ViS2l0IGhhZCB3aGVuIHVzaW5nCnBvc3RQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uLCB3ZSBub3cga2VlcCB0cmFjayBvZiB0aGUgZnJhbWUgb3JpZ2luYXRpbmcg
dGhlCmxvYWQsIGFuZCBlbWl0IHRoZSBzaWduYWxzIHdoZW4gdGhpcyBmcmFtZSdzIGNsaWVudCBp
cyBjYWxsZWQuCgpUaGUgcGF0Y2gga2VlcHMgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgUVdl
YlBhZ2Ugc2lnbmFscywgYnV0IHdlIG5vdyBlbWl0IHRoZQpRV2ViRnJhbWUgc2lnbmFscyBldmVy
eXRpbWUsIG5vdCBvbmx5IHdoZW4gdGhleSBhcmUgdGhlIG9yaWdpbmF0aW5nIGZyYW1lIGZvcgps
b2FkaW5nLgoKKiBBcGkvcXdlYmZyYW1lLmNwcDoKKGNsZWFyQ29yZUZyYW1lKTogRG9jdW1lbnQg
b3VyIGFzc3VtcHRpb24gdGhhdCBhY3RpdmVEb2N1bWVudExvYWRlciB3aWxsIGV4aXN0LgoKKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6IFJlbW92ZSBtX2xvYWRFcnJvciBz
aW5jZSB3ZSBkb24ndCBuZWVkIGl0CmFueW1vcmUsIGFkZCBhIGJvb2xlYW4gdG8ga2VlcCB0cmFj
ayB3aGV0aGVyIHRoZSBmcmFtZSBpcyBvcmlnaW5hdGluZyB0aGUKbG9hZC4gQWxzbyByZW1vdmUg
dGhlIHNpZ25hbHMgZnJvbSBGcmFtZUxvYWRlckNsaWVudFF0IGNsYXNzIHNpbmNlIHdlIHdpbGwg
ZW1pdApRV2ViRnJhbWUgYW5kIFFXZWJQYWdlIHNpZ25hbHMgZGlyZWN0bHkgaW4gaGVscGVyIGZ1
bmN0aW9ucy4KCiogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CihXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpGcmFtZUxvYWRlckNsaWVudFF0KTogSW5pdGlhbGl6
ZQptX2lzT3JpZ2luYXRpbmdMb2FkKCkuCgooV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
c2V0RnJhbWUpOiBEbyBub3QgY29ubmVjdCBRV2ViRnJhbWUgYW5kIFFXZWJQYWdlCnNpZ25hbHMg
dG8gb3VyIHNpZ25hbHMgZm9yIGxvYWQvZmluaXNoZWQsIHNpZ25hbCBlbWlzc2lvbiB3aWxsIGJl
IGRvbmUgbWFudWFsbHkuCgooV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6IEVtaXQKbG9hZFN0YXJ0ZWQoKSBzaWduYWwgYW5kIG1h
a2UgdGhlIGZpcnN0IG5vdGlmaWNhdGlvbiBvZiBlc3RpbWF0aW9uIGNoYW5nZSwgdGhhdApRdCBB
UEkgdGVzdHMgZXhwZWN0IHRvIGV4aXN0IGFuZCBub3RpZnkgMTAlLgoKKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZCk6IFJlbW92ZSByZWZlcmVuY2Ug
dG8KbV9sb2FkRXJyb3IgYW5kIGVtaXQgbG9hZEZpbmlzaGVkKCkgc2lnbmFsLgoKKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24pOiBS
ZW1vdmUgc2lnbmFsCmVtaXNzaW9uIGFuZCBtYXJrIHRoZSBvcmlnaW5hdGluZyBsb2FkIGFzIHRy
dWUsIHNpbmNlIG9ubHkgdGhlIG9yaWdpbmF0aW5nIGZyYW1lCmdldHMgdGhpcyBjYWxsIGluIGl0
cyBjbGllbnQuCgooV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzRmlu
aXNoZWROb3RpZmljYXRpb24pOiBSZW1vdmUgc2lnbmFsCmVtaXNzaW9uLgoKKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6IFJlbW92
ZSByZWZlcmVuY2UKdG8gbV9sb2FkRXJyb3IgYW5kIGVtaXQgZmluaXNoZWQgc2lnbmFsIGluZGlj
YXRpbmcgZXJyb3IuCihXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZh
aWxMb2FkKTogRGl0dG8uCgooV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1pdExvYWRT
dGFydGVkKTogRW1pdCB0aGUgbG9hZFN0YXJ0ZWQoKSBzaWduYWwKZm9yIHRoZSBRV2ViRnJhbWUs
IGFuZCBpZiB0aGUgb3JpZ2luYXRpbmcgbG9hZCBhbHNvIGRvIGZvciB0aGUgUVdlYlBhZ2UuCgoo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1pdExvYWRGaW5pc2hlZCk6IFNhbWUgYXMg
YmVmb3JlIGJ1dCBmb3IKbG9hZEZpbmlzaGVkKCkuIFRha2UgY2FyZSB0byByZXNldCB0aGUgb3Jp
Z2luYXRpbmcgbG9hZCBmbGFnIGJlZm9yZSB0aGUgc2lnbmFscwphcmUgZW1pdHRlZCwgc2luY2Ug
dGhleSBtaWdodCB3YW50IHRvIHNldCBpdCBiYWNrIGFnYWluLgoKKiB0ZXN0cy9xd2ViZnJhbWUv
dHN0X3F3ZWJmcmFtZS5jcHA6CihVUkxTZXR0ZXI6OlVSTFNldHRlcik6IE9iamVjdCB0aGF0IHNl
dHMgdGhlIHVybCB1c2luZyBlaXRoZXIgbG9hZCgpIG9yIHNldFVybCgpCndoZW4gYSBjZXJ0YWlu
IHNpZ25hbCBpcyBlbWl0dGVkIGluIHRoZSBmcmFtZS4KCihVUkxTZXR0ZXI6OmV4ZWN1dGUpOgoo
dHN0X1FXZWJGcmFtZTo6bG9hZEluU2lnbmFsSGFuZGxlcnNfZGF0YSk6Cih0c3RfUVdlYkZyYW1l
Ojpsb2FkSW5TaWduYWxIYW5kbGVycyk6IE5ldyB0ZXN0IGluc3BpcmVkIGJ5IHRoZSBidWcgdGVz
dCBjYXNlLiBUaGlzIHRlc3QKY3Jhc2hlcyB3aXRob3V0IHRoaXMgcGF0Y2ggYXBwbGllZC4KLS0t
CiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwICAgICAgICAgICAgICAgICB8ICAg
IDYgKy0KIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICA3NSArKysrKysrKysrKysrKysKIC4uLi9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcCAgICAgIHwgICA2MSArKysrKysrKy0tLS0tCiAuLi4vV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCB8ICAgIDggKy0KIFNvdXJjZS9XZWJL
aXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwIHwgICA5NSArKysrKysrKysr
KysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggY2MyZWYwZC4uOWQzZDk1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC04MDIsOCArODAyLDEwIEBAIFFN
dWx0aU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBRV2ViRnJhbWU6Om1ldGFEYXRhKCkgY29uc3QKIAog
c3RhdGljIGlubGluZSB2b2lkIGNsZWFyQ29yZUZyYW1lKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkK
IHsKLSAgICBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LT5iZWdpbigpOwotICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCktPmVuZCgpOworICAgIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciA9IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKKyAgICBRX0FT
U0VSVChkb2N1bWVudExvYWRlcik7CisgICAgZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5iZWdp
bigpOworICAgIGRvY3VtZW50TG9hZGVyLT53cml0ZXIoKS0+ZW5kKCk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0NvcmVGcmFtZUNsZWFyKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggYzM5YWI3Yi4uMDAwMjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
OCBAQAorMjAxMS0wNi0wNiAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5v
bGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gUXRXZWJraXQgbmV2ZXIgZmluaXNoZXMgbG9hZGluZyBzaXRl
cyB3aGVuIHRoZXkgYXJlIGxvYWRlZCBhZnRlciBhbiBpbml0aWFsIFFVcmwgZmFpbHMgdG8gbG9h
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzI4
CisKKyAgICAgICAgQ2hhbmdlIHRoZSBob29rcyBpbiBGcmFtZUxvYWRlckNsaWVudCB3ZSB1c2Ug
Zm9yIGVtaXR0aW5nIHNpZ25hbHMuIEluc3RlYWQgb2YKKyAgICAgICAgZW1pdHRpbmcgc2lnbmFs
cyBpbiB0aGUgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uIGZ1bmN0aW9ucywgd2UgdXNlIHRoZQorICAg
ICAgICBkaXNwYXRjaERpZHtTdGFydCxGaW5pc2gsRmFpbH0qIGZ1bmN0aW9ucy4gVGhlIG1haW4g
cmVhc29uIGJlaGluZCB0aGlzIGNoYW5nZSBpcworICAgICAgICB0aGF0IGxvYWRpbmcgY29kZSBp
cyBwcmVwYXJlZCB0byBoYW5kbGUgbG9hZCgpIHdoZW4gaW5zaWRlIHRob3NlIGZ1bmN0aW9ucy4K
KworICAgICAgICBUaGUgY3Jhc2ggd2FzIGJlaW5nIGNhdXNlZCBieSBzZXRVcmwoKSAoYW5kIGxv
YWQoKSkgYmVpbmcgY2FsbGVkIHdoZW4KKyAgICAgICAgbG9hZEZpbmlzaGVkKGZhbHNlKSB3YXMg
ZW1pdHRlZC4gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdoZW4KKyAgICAgICAgcG9zdFByb2dy
ZXNzRmluaXNoZWROb3RpZmljYXRpb24gdGhlIEZyYW1lTG9hZGVyIHdhc24ndCByZWFkeSBmb3Ig
dGFraW5nIGEgbG9hZCgpCisgICAgICAgIGNhbGwgYWdhaW4sIGJlY2F1c2UgaXQgd2FzIHN0aWxs
IHRoZSBQcm92aXNpb25hbExvYWRTdGF0ZSBidXQgd2l0aCB0aGUKKyAgICAgICAgcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlciBhbHJlYWR5IHJlbW92ZWQuCisKKyAgICAgICAgVG8gZW11bGF0ZSB0
aGUgc2FtZSBiZWhhdmlvciB0aGF0IFF0V2ViS2l0IGhhZCB3aGVuIHVzaW5nCisgICAgICAgIHBv
c3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uLCB3ZSBub3cga2VlcCB0cmFjayBvZiB0aGUg
ZnJhbWUgb3JpZ2luYXRpbmcgdGhlCisgICAgICAgIGxvYWQsIGFuZCBlbWl0IHRoZSBzaWduYWxz
IHdoZW4gdGhpcyBmcmFtZSdzIGNsaWVudCBpcyBjYWxsZWQuCisKKyAgICAgICAgVGhlIHBhdGNo
IGtlZXBzIHRoZSBleGlzdGluZyBzZW1hbnRpY3MgZm9yIFFXZWJQYWdlIHNpZ25hbHMsIGJ1dCB3
ZSBub3cgZW1pdCB0aGUKKyAgICAgICAgUVdlYkZyYW1lIHNpZ25hbHMgZXZlcnl0aW1lLCBub3Qg
b25seSB3aGVuIHRoZXkgYXJlIHRoZSBvcmlnaW5hdGluZyBmcmFtZSBmb3IKKyAgICAgICAgbG9h
ZGluZy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoY2xlYXJDb3Jl
RnJhbWUpOiBEb2N1bWVudCBvdXIgYXNzdW1wdGlvbiB0aGF0IGFjdGl2ZURvY3VtZW50TG9hZGVy
IHdpbGwgZXhpc3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0Lmg6IFJlbW92ZSBtX2xvYWRFcnJvciBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0CisgICAgICAg
IGFueW1vcmUsIGFkZCBhIGJvb2xlYW4gdG8ga2VlcCB0cmFjayB3aGV0aGVyIHRoZSBmcmFtZSBp
cyBvcmlnaW5hdGluZyB0aGUKKyAgICAgICAgbG9hZC4gQWxzbyByZW1vdmUgdGhlIHNpZ25hbHMg
ZnJvbSBGcmFtZUxvYWRlckNsaWVudFF0IGNsYXNzIHNpbmNlIHdlIHdpbGwgZW1pdAorICAgICAg
ICBRV2ViRnJhbWUgYW5kIFFXZWJQYWdlIHNpZ25hbHMgZGlyZWN0bHkgaW4gaGVscGVyIGZ1bmN0
aW9ucy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6RnJhbWVMb2FkZXJDbGll
bnRRdCk6IEluaXRpYWxpemUKKyAgICAgICAgbV9pc09yaWdpbmF0aW5nTG9hZCgpLgorCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRGcmFtZSk6IERvIG5vdCBjb25u
ZWN0IFFXZWJGcmFtZSBhbmQgUVdlYlBhZ2UKKyAgICAgICAgc2lnbmFscyB0byBvdXIgc2lnbmFs
cyBmb3IgbG9hZC9maW5pc2hlZCwgc2lnbmFsIGVtaXNzaW9uIHdpbGwgYmUgZG9uZSBtYW51YWxs
eS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCk6IEVtaXQKKyAgICAgICAgbG9hZFN0YXJ0ZWQoKSBzaWduYWwg
YW5kIG1ha2UgdGhlIGZpcnN0IG5vdGlmaWNhdGlvbiBvZiBlc3RpbWF0aW9uIGNoYW5nZSwgdGhh
dAorICAgICAgICBRdCBBUEkgdGVzdHMgZXhwZWN0IHRvIGV4aXN0IGFuZCBub3RpZnkgMTAlLgor
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlz
aExvYWQpOiBSZW1vdmUgcmVmZXJlbmNlIHRvCisgICAgICAgIG1fbG9hZEVycm9yIGFuZCBlbWl0
IGxvYWRGaW5pc2hlZCgpIHNpZ25hbC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbik6IFJlbW92ZSBzaWduYWwK
KyAgICAgICAgZW1pc3Npb24gYW5kIG1hcmsgdGhlIG9yaWdpbmF0aW5nIGxvYWQgYXMgdHJ1ZSwg
c2luY2Ugb25seSB0aGUgb3JpZ2luYXRpbmcgZnJhbWUKKyAgICAgICAgZ2V0cyB0aGlzIGNhbGwg
aW4gaXRzIGNsaWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOiBSZW1vdmUgc2lnbmFsCisgICAgICAg
IGVtaXNzaW9uLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOiBSZW1vdmUgcmVmZXJlbmNlCisgICAgICAgIHRv
IG1fbG9hZEVycm9yIGFuZCBlbWl0IGZpbmlzaGVkIHNpZ25hbCBpbmRpY2F0aW5nIGVycm9yLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9h
ZCk6IERpdHRvLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjplbWl0
TG9hZFN0YXJ0ZWQpOiBFbWl0IHRoZSBsb2FkU3RhcnRlZCgpIHNpZ25hbAorICAgICAgICBmb3Ig
dGhlIFFXZWJGcmFtZSwgYW5kIGlmIHRoZSBvcmlnaW5hdGluZyBsb2FkIGFsc28gZG8gZm9yIHRo
ZSBRV2ViUGFnZS4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1p
dExvYWRGaW5pc2hlZCk6IFNhbWUgYXMgYmVmb3JlIGJ1dCBmb3IKKyAgICAgICAgbG9hZEZpbmlz
aGVkKCkuIFRha2UgY2FyZSB0byByZXNldCB0aGUgb3JpZ2luYXRpbmcgbG9hZCBmbGFnIGJlZm9y
ZSB0aGUgc2lnbmFscworICAgICAgICBhcmUgZW1pdHRlZCwgc2luY2UgdGhleSBtaWdodCB3YW50
IHRvIHNldCBpdCBiYWNrIGFnYWluLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoVVJMU2V0dGVyOjpVUkxTZXR0ZXIpOiBPYmplY3QgdGhh
dCBzZXRzIHRoZSB1cmwgdXNpbmcgZWl0aGVyIGxvYWQoKSBvciBzZXRVcmwoKQorICAgICAgICB3
aGVuIGEgY2VydGFpbiBzaWduYWwgaXMgZW1pdHRlZCBpbiB0aGUgZnJhbWUuCisKKyAgICAgICAg
KFVSTFNldHRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICh0c3RfUVdlYkZyYW1lOjpsb2FkSW5TaWdu
YWxIYW5kbGVyc19kYXRhKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OmxvYWRJblNpZ25hbEhh
bmRsZXJzKTogTmV3IHRlc3QgaW5zcGlyZWQgYnkgdGhlIGJ1ZyB0ZXN0IGNhc2UuIFRoaXMgdGVz
dAorICAgICAgICBjcmFzaGVzIHdpdGhvdXQgdGhpcyBwYXRjaCBhcHBsaWVkLgorCiAyMDExLTA2
LTA0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggNzk4ZmRiMi4uYTAzOTg2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgRnJhbWVMb2FkZXJDbGllbnRRdDo6
RnJhbWVMb2FkZXJDbGllbnRRdCgpCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCiAgICAgLCBtX2hhc1JlcHJlc2VudGF0aW9uKGZh
bHNlKQotICAgICwgbV9sb2FkRXJyb3IoUmVzb3VyY2VFcnJvcigpKQorICAgICwgbV9pc09yaWdp
bmF0aW5nTG9hZChmYWxzZSkKIHsKIH0KIApAQCAtMjMwLDIyICsyMzAsMTQgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpzZXRGcmFtZShRV2ViRnJhbWUqIHdlYkZyYW1lLCBGcmFtZSogZnJh
bWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChs
b2FkU3RhcnRlZCgpKSwKLSAgICAgICAgICAgIG1fd2ViRnJhbWUtPnBhZ2UoKSwgU0lHTkFMKGxv
YWRTdGFydGVkKCkpKTsKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkU3RhcnRlZCgpKSwK
LSAgICAgICAgICAgIG1fd2ViRnJhbWUsIFNJR05BTChsb2FkU3RhcnRlZCgpKSk7CiAgICAgY29u
bmVjdCh0aGlzLCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpLAogICAgICAgICAgICAgbV93ZWJG
cmFtZS0+cGFnZSgpLCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpKTsKLSAgICBjb25uZWN0KHRo
aXMsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLAotICAgICAgICAgICAgbV93ZWJGcmFtZS0+
cGFnZSgpLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CiAKICAgICAvLyBGSVhNRTogVGhl
IHF1ZXVlZCBjb25uZWN0aW9uIGhlcmUgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgYSBwcm9ibGVtIHdp
dGggUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyLgogICAgIC8vICAgICAgICBTZWUgaHR0cDovL2J1Z3Jl
cG9ydHMucXQubm9raWEuY29tL2Jyb3dzZS9RVEJVRy0xODcxOAogICAgIGNvbm5lY3QodGhpcywg
U0lHTkFMKHVuc3VwcG9ydGVkQ29udGVudChRTmV0d29ya1JlcGx5KikpLAogICAgICAgICAgICAg
bV93ZWJGcmFtZS0+cGFnZSgpLCBTSUdOQUwodW5zdXBwb3J0ZWRDb250ZW50KFFOZXR3b3JrUmVw
bHkqKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKIAotICAgIGNvbm5lY3QodGhpcywgU0lHTkFM
KGxvYWRGaW5pc2hlZChib29sKSksCi0gICAgICAgICAgICBtX3dlYkZyYW1lLCBTSUdOQUwobG9h
ZEZpbmlzaGVkKGJvb2wpKSk7CiAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwodGl0bGVDaGFuZ2Vk
KFFTdHJpbmcpKSwKICAgICAgICAgICAgIG1fd2ViRnJhbWUsIFNJR05BTCh0aXRsZUNoYW5nZWQo
UVN0cmluZykpKTsKIH0KQEAgLTQ1Miw4ICs0NDQsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIAogICAgIG1fbGFzdFJlcXVl
c3RlZFVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1
ZXN0VVJMKCk7CiAKLSAgICBpZiAobV93ZWJGcmFtZSkKLSAgICAgICAgZW1pdCBtX3dlYkZyYW1l
LT5wcm92aXNpb25hbExvYWQoKTsKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVy
bjsKKyAgICBlbWl0TG9hZFN0YXJ0ZWQoKTsKKyAgICBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWROb3RpZmljYXRpb24oKTsKKyAgICBlbWl0IG1fd2ViRnJhbWUtPnByb3Zpc2lvbmFsTG9hZCgp
OwogfQogCiAKQEAgLTUzMCwxMiArNTI1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tz
KQogICAgICAgICBwcmludGYoIiVzIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lXG4iLCBxUHJpbnRh
YmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKLSAg
ICAvLyBDbGVhcnMgdGhlIHByZXZpb3VzIGVycm9yLgotICAgIG1fbG9hZEVycm9yID0gUmVzb3Vy
Y2VFcnJvcigpOwotCiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAgICAgICByZXR1cm47CisKICAg
ICBtX3dlYkZyYW1lLT5wYWdlKCktPmQtPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAg
ZW1pdExvYWRGaW5pc2hlZCh0cnVlKTsKIH0KIAogCkBAIC01ODMsMTIgKzU3Nyw4IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9h
ZGVyKikKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90
aWZpY2F0aW9uKCkKIHsKLSAgICBpZiAobV93ZWJGcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpIHsK
LSAgICAgICAgLy8gQXMgYSBuZXcgbG9hZCBoYXZlIHN0YXJ0ZWQsIGNsZWFyIHRoZSBwcmV2aW91
cyBlcnJvci4KLSAgICAgICAgbV9sb2FkRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7Ci0gICAgICAg
IGVtaXQgbG9hZFN0YXJ0ZWQoKTsKLSAgICAgICAgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCk7Ci0gICAgfQorICAgIGlmIChtX3dlYkZyYW1lICYmIG1fZnJhbWUtPnBh
Z2UoKSkKKyAgICAgICAgbV9pc09yaWdpbmF0aW5nTG9hZCA9IHRydWU7CiAgICAgaWYgKG1fZnJh
bWUtPnRyZWUoKS0+cGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX3dlYkZyYW1lLT5wYWdlKCktPmQtPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CkBAIC02
MTUsOSArNjA1LDYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5p
c2hlZE5vdGlmaWNhdGlvbigpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAg
ICBpZiAobV93ZWJGcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIGVtaXQgbG9hZEZp
bmlzaGVkKG1fbG9hZEVycm9yLmlzTnVsbCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCkBAIC0xMTc1LDkgKzExNjIsMTEg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2UKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
clxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2Zy
YW1lKSkpOwogCi0gICAgbV9sb2FkRXJyb3IgPSBlcnJvcjsKICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpICYmICFlcnJvci5pc0NhbmNlbGxhdGlvbigpKQogICAgICAgICBjYWxsRXJyb3JQYWdlRXh0
ZW5zaW9uKGVycm9yKTsKKworICAgIGlmIChtX3dlYkZyYW1lKQorICAgICAgICBlbWl0TG9hZEZp
bmlzaGVkKGZhbHNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTE4NSw5
ICsxMTc0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvCiAgICAgaWYgKGR1bXBGcmFtZUxv
YWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkV2l0aEVycm9y
XG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJh
bWUpKSk7CiAKLSAgICBtX2xvYWRFcnJvciA9IGVycm9yOwogICAgIGlmICghZXJyb3IuaXNOdWxs
KCkgJiYgIWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgIGNhbGxFcnJvclBhZ2VFeHRl
bnNpb24oZXJyb3IpOworCisgICAgaWYgKG1fd2ViRnJhbWUpCisgICAgICAgIGVtaXRMb2FkRmlu
aXNoZWQoZmFsc2UpOwogfQogCiBXZWJDb3JlOjpGcmFtZSogRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKQpAQCAt
MTY4Niw2ICsxNjc3LDI2IEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJh
bWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoCiAgICAgcmV0dXJuIEZy
YW1lTmV0d29ya2luZ0NvbnRleHRRdDo6Y3JlYXRlKG1fZnJhbWUsIG1fd2ViRnJhbWUsICFNSU1F
U25pZmZpbmdEaXNhYmxlZCwgbV93ZWJGcmFtZS0+cGFnZSgpLT5uZXR3b3JrQWNjZXNzTWFuYWdl
cigpKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjplbWl0TG9hZFN0YXJ0ZWQoKQor
eworICAgIFFXZWJQYWdlKiB3ZWJQYWdlID0gbV93ZWJGcmFtZS0+cGFnZSgpOworICAgIGlmICht
X2lzT3JpZ2luYXRpbmdMb2FkICYmIHdlYlBhZ2UpCisgICAgICAgIGVtaXQgd2ViUGFnZS0+bG9h
ZFN0YXJ0ZWQoKTsKKyAgICBlbWl0IG1fd2ViRnJhbWUtPmxvYWRTdGFydGVkKCk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1pdExvYWRGaW5pc2hlZChib29sIG9rKQoreworICAg
IC8vIFNpZ25hbCBoYW5kbGVycyBjYW4gbGVhZCB0byBhIG5ldyBsb2FkLCB0aGF0IHdpbGwgdXNl
IHRoZSBtZW1iZXIgYWdhaW4uCisgICAgY29uc3QgYm9vbCB3YXNPcmlnaW5hdGluZ0xvYWQgPSBt
X2lzT3JpZ2luYXRpbmdMb2FkOworICAgIG1faXNPcmlnaW5hdGluZ0xvYWQgPSBmYWxzZTsKKwor
ICAgIFFXZWJQYWdlKiB3ZWJQYWdlID0gbV93ZWJGcmFtZS0+cGFnZSgpOworICAgIGlmICh3YXNP
cmlnaW5hdGluZ0xvYWQgJiYgd2ViUGFnZSkKKyAgICAgICAgZW1pdCB3ZWJQYWdlLT5sb2FkRmlu
aXNoZWQob2spOworICAgIGVtaXQgbV93ZWJGcmFtZS0+bG9hZEZpbmlzaGVkKG9rKTsKK30KKwog
fQogCiAjaW5jbHVkZSAibW9jX0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRl
eCA2Y2ZkOWMxLi42YTYwZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApAQCAtNjgsMTAgKzY4LDkgQEAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnRRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgRnJhbWVMb2FkZXJD
bGllbnQgewogICAgIGZyaWVuZCBjbGFzcyA6OlFXZWJGcmFtZTsKICAgICB2b2lkIGNhbGxQb2xp
Y3lGdW5jdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gYWN0
aW9uKTsKICAgICB2b2lkIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24oY29uc3QgUmVzb3VyY2VFcnJv
ciYpOworCiBzaWduYWxzOgotICAgIHZvaWQgbG9hZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRQ
cm9ncmVzcyhpbnQgZCk7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoYm9vbCk7CiAgICAgdm9pZCB0
aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgdW5zdXBwb3J0ZWRD
b250ZW50KFFOZXR3b3JrUmVwbHkqKTsKIApAQCAtMjY1LDYgKzI2NCw5IEBAIHByaXZhdGUgc2xv
dHM6CiAgICAgdm9pZCBvbkljb25Mb2FkZWRGb3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmKTsKIAog
cHJpdmF0ZToKKyAgICB2b2lkIGVtaXRMb2FkU3RhcnRlZCgpOworICAgIHZvaWQgZW1pdExvYWRG
aW5pc2hlZChib29sIG9rKTsKKwogICAgIEZyYW1lICptX2ZyYW1lOwogICAgIFFXZWJGcmFtZSAq
bV93ZWJGcmFtZTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CkBAIC0yNzksNyAr
MjgxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzUmVwcmVzZW50YXRpb247CiAKICAgICBL
VVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKLSAgICBSZXNvdXJjZUVycm9yIG1fbG9hZEVycm9yOwor
ICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAKaW5kZXggYjU2Nzc4NC4u
ZmNmNzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHAKQEAgLTY1OCw2ICs2NTgsOCBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZv
aWQgc2V0VXJsU2FtZVVybCgpOwogICAgIHZvaWQgc2V0VXJsVGhlbkxvYWRzX2RhdGEoKTsKICAg
ICB2b2lkIHNldFVybFRoZW5Mb2FkcygpOworICAgIHZvaWQgbG9hZEluU2lnbmFsSGFuZGxlcnNf
ZGF0YSgpOworICAgIHZvaWQgbG9hZEluU2lnbmFsSGFuZGxlcnMoKTsKIAogcHJpdmF0ZToKICAg
ICBRU3RyaW5nICBldmFsSlMoY29uc3QgUVN0cmluZyZzKSB7CkBAIC0zNjQ4LDUgKzM2NTAsOTgg
QEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpzZXRVcmxUaGVuTG9hZHMoKQogICAgIFFDT01QQVJFKGZy
YW1lLT5iYXNlVXJsKCksIGV4dHJhY3RCYXNlVXJsKHVybFRvTG9hZDIpKTsKIH0KIAorY2xhc3Mg
VVJMU2V0dGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAg
ICBlbnVtIFNpZ25hbCB7CisgICAgICAgIExvYWRTdGFydGVkLAorICAgICAgICBMb2FkRmluaXNo
ZWQsCisgICAgICAgIFByb3Zpc2lvbmFsTG9hZAorICAgIH07CisKKyAgICBlbnVtIFR5cGUgewor
ICAgICAgICBVc2VMb2FkLAorICAgICAgICBVc2VTZXRVcmwKKyAgICB9OworCisgICAgVVJMU2V0
dGVyKFFXZWJGcmFtZSosIFNpZ25hbCwgVHlwZSwgY29uc3QgUVVybCYpOworCitwdWJsaWMgc2xv
dHM6CisgICAgdm9pZCBleGVjdXRlKCk7CisKK3NpZ25hbHM6CisgICAgdm9pZCBmaW5pc2hlZCgp
OworCitwcml2YXRlOgorICAgIFFXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBRVXJsIG1fdXJsOwor
ICAgIFR5cGUgbV90eXBlOworfTsKKworUV9ERUNMQVJFX01FVEFUWVBFKFVSTFNldHRlcjo6U2ln
bmFsKQorUV9ERUNMQVJFX01FVEFUWVBFKFVSTFNldHRlcjo6VHlwZSkKKworVVJMU2V0dGVyOjpV
UkxTZXR0ZXIoUVdlYkZyYW1lKiBmcmFtZSwgU2lnbmFsIHNpZ25hbCwgVVJMU2V0dGVyOjpUeXBl
IHR5cGUsIGNvbnN0IFFVcmwmIHVybCkKKyAgICA6IG1fZnJhbWUoZnJhbWUpLCBtX3VybCh1cmwp
LCBtX3R5cGUodHlwZSkKK3sKKyAgICBpZiAoc2lnbmFsID09IExvYWRTdGFydGVkKQorICAgICAg
ICBjb25uZWN0KG1fZnJhbWUsIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgU0xPVChleGVjdXRlKCkp
KTsKKyAgICBlbHNlIGlmIChzaWduYWwgPT0gTG9hZEZpbmlzaGVkKQorICAgICAgICBjb25uZWN0
KG1fZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCBTTE9UKGV4ZWN1dGUoKSkpOwor
ICAgIGVsc2UKKyAgICAgICAgY29ubmVjdChtX2ZyYW1lLCBTSUdOQUwocHJvdmlzaW9uYWxMb2Fk
KCkpLCBTTE9UKGV4ZWN1dGUoKSkpOworfQorCit2b2lkIFVSTFNldHRlcjo6ZXhlY3V0ZSgpCit7
CisgICAgLy8gV2UgdHJhY2sgb25seSB0aGUgZmlyc3QgZW1pc3Npb24uCisgICAgbV9mcmFtZS0+
ZGlzY29ubmVjdCh0aGlzKTsKKyAgICBpZiAobV90eXBlID09IFVSTFNldHRlcjo6VXNlTG9hZCkK
KyAgICAgICAgbV9mcmFtZS0+bG9hZChtX3VybCk7CisgICAgZWxzZQorICAgICAgICBtX2ZyYW1l
LT5zZXRVcmwobV91cmwpOworICAgIGNvbm5lY3QobV9mcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hl
ZChib29sKSksIFNJR05BTChmaW5pc2hlZCgpKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6
bG9hZEluU2lnbmFsSGFuZGxlcnNfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxVUkxT
ZXR0ZXI6OlR5cGU+KCJ0eXBlIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxVUkxTZXR0ZXI6OlNp
Z25hbD4oInNpZ25hbCIpOworICAgIFFUZXN0OjphZGRDb2x1bW48UVVybD4oInVybCIpOworCisg
ICAgY29uc3QgUVVybCB2YWxpZFVybCgicXJjOi90ZXN0Mi5odG1sIik7CisgICAgY29uc3QgUVVy
bCBpbnZhbGlkVXJsKCJxcmM6L2ludmFsaWQiKTsKKworICAgIFFUZXN0OjpuZXdSb3coImNhbGwg
bG9hZCgpIGluIGxvYWRTdGFydGVkKCkgYWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpV
c2VMb2FkIDw8IFVSTFNldHRlcjo6TG9hZFN0YXJ0ZWQgPDwgdmFsaWRVcmw7CisgICAgUVRlc3Q6
Om5ld1JvdygiY2FsbCBsb2FkKCkgaW4gbG9hZFN0YXJ0ZWQoKSBhZnRlciBpbnZhbGlkIHVybCIp
IDw8IFVSTFNldHRlcjo6VXNlTG9hZCA8PCBVUkxTZXR0ZXI6OkxvYWRTdGFydGVkIDw8IGludmFs
aWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2FsbCBsb2FkKCkgaW4gbG9hZEZpbmlzaGVkKCkg
YWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNldHRlcjo6TG9h
ZEZpbmlzaGVkIDw8IHZhbGlkVXJsOworICAgIFFUZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGlu
IGxvYWRGaW5pc2hlZCgpIGFmdGVyIGludmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VMb2Fk
IDw8IFVSTFNldHRlcjo6TG9hZEZpbmlzaGVkIDw8IGludmFsaWRVcmw7CisgICAgUVRlc3Q6Om5l
d1JvdygiY2FsbCBsb2FkKCkgaW4gcHJvdmlzaW9uYWxMb2FkKCkgYWZ0ZXIgdmFsaWQgdXJsIikg
PDwgVVJMU2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNldHRlcjo6UHJvdmlzaW9uYWxMb2FkIDw8IHZh
bGlkVXJsOworICAgIFFUZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGluIHByb3Zpc2lvbmFsTG9h
ZCgpIGFmdGVyIGludmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNldHRl
cjo6UHJvdmlzaW9uYWxMb2FkIDw8IGludmFsaWRVcmw7CisKKyAgICBRVGVzdDo6bmV3Um93KCJj
YWxsIHNldFVybCgpIGluIGxvYWRTdGFydGVkKCkgYWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0
dGVyOjpVc2VTZXRVcmwgPDwgVVJMU2V0dGVyOjpMb2FkU3RhcnRlZCA8PCB2YWxpZFVybDsKKyAg
ICBRVGVzdDo6bmV3Um93KCJjYWxsIHNldFVybCgpIGluIGxvYWRTdGFydGVkKCkgYWZ0ZXIgaW52
YWxpZCB1cmwiKSA8PCBVUkxTZXR0ZXI6OlVzZVNldFVybCA8PCBVUkxTZXR0ZXI6OkxvYWRTdGFy
dGVkIDw8IGludmFsaWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2FsbCBzZXRVcmwoKSBpbiBs
b2FkRmluaXNoZWQoKSBhZnRlciB2YWxpZCB1cmwiKSA8PCBVUkxTZXR0ZXI6OlVzZVNldFVybCA8
PCBVUkxTZXR0ZXI6OkxvYWRGaW5pc2hlZCA8PCB2YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3Um93
KCJjYWxsIHNldFVybCgpIGluIGxvYWRGaW5pc2hlZCgpIGFmdGVyIGludmFsaWQgdXJsIikgPDwg
VVJMU2V0dGVyOjpVc2VTZXRVcmwgPDwgVVJMU2V0dGVyOjpMb2FkRmluaXNoZWQgPDwgaW52YWxp
ZFVybDsKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxsIHNldFVybCgpIGluIHByb3Zpc2lvbmFsTG9h
ZCgpIGFmdGVyIHZhbGlkIHVybCIpIDw8IFVSTFNldHRlcjo6VXNlU2V0VXJsIDw8IFVSTFNldHRl
cjo6UHJvdmlzaW9uYWxMb2FkIDw8IHZhbGlkVXJsOworICAgIFFUZXN0OjpuZXdSb3coImNhbGwg
c2V0VXJsKCkgaW4gcHJvdmlzaW9uYWxMb2FkKCkgYWZ0ZXIgaW52YWxpZCB1cmwiKSA8PCBVUkxT
ZXR0ZXI6OlVzZVNldFVybCA8PCBVUkxTZXR0ZXI6OlByb3Zpc2lvbmFsTG9hZCA8PCBpbnZhbGlk
VXJsOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OmxvYWRJblNpZ25hbEhhbmRsZXJzKCkKK3sK
KyAgICBRRkVUQ0goVVJMU2V0dGVyOjpUeXBlLCB0eXBlKTsKKyAgICBRRkVUQ0goVVJMU2V0dGVy
OjpTaWduYWwsIHNpZ25hbCk7CisgICAgUUZFVENIKFFVcmwsIHVybCk7CisKKyAgICBRV2ViRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBjb25zdCBRVXJsIHVybEZvclNl
dHRlcigicXJjOi90ZXN0MS5odG1sIik7CisgICAgVVJMU2V0dGVyIHNldHRlcihmcmFtZSwgc2ln
bmFsLCB0eXBlLCB1cmxGb3JTZXR0ZXIpOworCisgICAgZnJhbWUtPmxvYWQodXJsKTsKKyAgICB3
YWl0Rm9yU2lnbmFsKCZzZXR0ZXIsIFNJR05BTChmaW5pc2hlZCgpKSwgMjAwKTsKKyAgICBRQ09N
UEFSRShmcmFtZS0+dXJsKCksIHVybEZvclNldHRlcik7Cit9CisKIFFURVNUX01BSU4odHN0X1FX
ZWJGcmFtZSkKICNpbmNsdWRlICJ0c3RfcXdlYmZyYW1lLm1vYyIKLS0gCjEuNy41LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101495</attachid>
            <date>2011-07-20 12:39:25 -0700</date>
            <delta_ts>2011-07-26 07:10:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61328-20110720163923.patch</filename>
            <type>text/plain</type>
            <size>19389</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmlu
ZGV4IDczODRjNDFlNTg2Nzg0ZGE5ZjI0NTVjOWFiMThjMDJiY2ZhYTY3ZjIuLmY1ZTY4YmUyZTcx
M2M3YzAxNDY4NjkxNWMzMGFhNjA2ZTRiZmJhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcApAQCAtODAyLDggKzgwMiwxMCBAQCBRTXVsdGlNYXA8UVN0cmluZywgUVN0cmluZz4gUVdl
YkZyYW1lOjptZXRhRGF0YSgpIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhckNvcmVG
cmFtZShXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiB7Ci0gICAgZnJhbWUtPmxvYWRlcigpLT5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+YmVnaW4oKTsKLSAgICBmcmFtZS0+bG9hZGVy
KCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLT5lbmQoKTsKKyAgICBXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCktPmFjdGl2
ZURvY3VtZW50TG9hZGVyKCk7CisgICAgUV9BU1NFUlQoZG9jdW1lbnRMb2FkZXIpOworICAgIGRv
Y3VtZW50TG9hZGVyLT53cml0ZXIoKS0+YmVnaW4oKTsKKyAgICBkb2N1bWVudExvYWRlci0+d3Jp
dGVyKCktPmVuZCgpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb3JlRnJhbWVDbGVhcihX
ZWJDb3JlOjpGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMwYjg5N2E3Zjg0Yzc1N2Y3
N2MwNzA5MmI5MWJkZjI3ZWM3MWZiNWMuLmU2ZjM0YjQxMjczOTE1Y2IxNmJiYmM1OTBlN2U5NjJk
MDU2Mzg1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTEtMDctMjAgIENh
aW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBbUXRdIFF0V2Via2l0IG5ldmVyIGZpbmlzaGVzIGxvYWRpbmcgc2l0ZXMg
d2hlbiB0aGV5IGFyZSBsb2FkZWQgYWZ0ZXIgYW4gaW5pdGlhbCBRVXJsIGZhaWxzIHRvIGxvYWQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTMyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0
aGUgaG9va3MgaW4gRnJhbWVMb2FkZXJDbGllbnQgd2UgdXNlIGZvciBlbWl0dGluZyBzaWduYWxz
LiBJbnN0ZWFkIG9mCisgICAgICAgIGVtaXR0aW5nIHNpZ25hbHMgaW4gdGhlIHByb2dyZXNzIG5v
dGlmaWNhdGlvbiBmdW5jdGlvbnMsIHdlIHVzZSB0aGUKKyAgICAgICAgZGlzcGF0Y2hEaWR7U3Rh
cnQsRmluaXNoLEZhaWx9KiBmdW5jdGlvbnMuIFRoZSBtYWluIHJlYXNvbiBiZWhpbmQgdGhpcyBj
aGFuZ2UgaXMKKyAgICAgICAgdGhhdCBsb2FkaW5nIGNvZGUgaXMgcHJlcGFyZWQgdG8gaGFuZGxl
IGxvYWQoKSB3aGVuIGluc2lkZSB0aG9zZSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlIGNyYXNo
IHdhcyBiZWluZyBjYXVzZWQgYnkgc2V0VXJsKCkgKGFuZCBsb2FkKCkpIGJlaW5nIGNhbGxlZCB3
aGVuCisgICAgICAgIGxvYWRGaW5pc2hlZChmYWxzZSkgd2FzIGVtaXR0ZWQuIFRoZSBwcm9ibGVt
IGhlcmUgaXMgdGhhdCB3aGVuCisgICAgICAgIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0
aW9uIHRoZSBGcmFtZUxvYWRlciB3YXNuJ3QgcmVhZHkgZm9yIHRha2luZyBhIGxvYWQoKQorICAg
ICAgICBjYWxsIGFnYWluLCBiZWNhdXNlIGl0IHdhcyBzdGlsbCB0aGUgUHJvdmlzaW9uYWxMb2Fk
U3RhdGUgYnV0IHdpdGggdGhlCisgICAgICAgIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgYWxy
ZWFkeSByZW1vdmVkLgorCisgICAgICAgIFRvIGVtdWxhdGUgdGhlIHNhbWUgYmVoYXZpb3IgdGhh
dCBRdFdlYktpdCBoYWQgd2hlbiB1c2luZworICAgICAgICBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvbiwgd2Ugbm93IGtlZXAgdHJhY2sgb2YgdGhlIGZyYW1lIG9yaWdpbmF0aW5nIHRo
ZQorICAgICAgICBsb2FkLCBhbmQgZW1pdCB0aGUgc2lnbmFscyB3aGVuIHRoaXMgZnJhbWUncyBj
bGllbnQgaXMgY2FsbGVkLgorCisgICAgICAgIFRoZSBwYXRjaCBrZWVwcyB0aGUgZXhpc3Rpbmcg
c2VtYW50aWNzIGZvciBRV2ViUGFnZSBzaWduYWxzLCBidXQgd2Ugbm93IGVtaXQgdGhlCisgICAg
ICAgIFFXZWJGcmFtZSBzaWduYWxzIGV2ZXJ5dGltZSwgbm90IG9ubHkgd2hlbiB0aGV5IGFyZSB0
aGUgb3JpZ2luYXRpbmcgZnJhbWUgZm9yCisgICAgICAgIGxvYWRpbmcuCisKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKGNsZWFyQ29yZUZyYW1lKTogRG9jdW1lbnQgb3Vy
IGFzc3VtcHRpb24gdGhhdCBhY3RpdmVEb2N1bWVudExvYWRlciB3aWxsIGV4aXN0LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOiBSZW1vdmUgbV9sb2Fk
RXJyb3IsIGFkZCBhIGJvb2xlYW4gdG8ga2VlcAorICAgICAgICB0cmFjayB3aGV0aGVyIHRoZSBm
cmFtZSBpcyBvcmlnaW5hdGluZyB0aGUgbG9hZC4gUmVtb3ZlIHRoZSBzaWduYWxzIGZyb20KKyAg
ICAgICAgRnJhbWVMb2FkZXJDbGllbnRRdCBzaW5jZSB3ZSB3aWxsIGVtaXQgUVdlYkZyYW1lIGFu
ZCBRV2ViUGFnZSBzaWduYWxzIGRpcmVjdGx5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpGcmFtZUxvYWRlckNsaWVudFF0KTogSW5pdGlhbGl6ZQorICAgICAgICBtX2lzT3Jp
Z2luYXRpbmdMb2FkKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNldEZyYW1lKTogRG8gbm90IGNvbm5lY3QgUVdlYkZyYW1lIGFuZCBRV2ViUGFnZQorICAgICAg
ICBzaWduYWxzIHRvIG91ciBzaWduYWxzIGZvciBsb2FkL2ZpbmlzaGVkLCBzaWduYWwgZW1pc3Np
b24gd2lsbCBiZSBkb25lIG1hbnVhbGx5LgorCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKTogRW1pdAorICAgICAg
ICBsb2FkU3RhcnRlZCgpIHNpZ25hbCBhbmQgbWFrZSB0aGUgZmlyc3Qgbm90aWZpY2F0aW9uIG9m
IGVzdGltYXRpb24gY2hhbmdlLCB0aGF0CisgICAgICAgIFF0IEFQSSB0ZXN0cyBleHBlY3QgdG8g
ZXhpc3QgYW5kIG5vdGlmeSAxMCUuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZCk6IFJlbW92ZSByZWZlcmVuY2UgdG8KKyAgICAg
ICAgbV9sb2FkRXJyb3IgYW5kIGVtaXQgbG9hZEZpbmlzaGVkKCkgc2lnbmFsLgorCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZp
Y2F0aW9uKTogUmVtb3ZlIHNpZ25hbAorICAgICAgICBlbWlzc2lvbiBhbmQgbWFyayB0aGUgb3Jp
Z2luYXRpbmcgbG9hZCBhcyB0cnVlLCBzaW5jZSBvbmx5IHRoZSBvcmlnaW5hdGluZyBmcmFtZQor
ICAgICAgICBnZXRzIHRoaXMgY2FsbCBpbiBpdHMgY2xpZW50LgorCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6
IFJlbW92ZSBzaWduYWwKKyAgICAgICAgZW1pc3Npb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRlbnNpb24pOiBSZXR1cm4gd2hldGhl
ciB0aGUgY2FsbAorICAgICAgICB3YXMgc3VjY2Vzc2Z1bCBvciBub3QuIFRoaXMgd2Fzbid0IG5l
Y2Vzc2FyeSBiZWZvcmUgYmVjYXVzZSBhIHN1Y2Nlc3NmdWwgY2FsbCBmb3IKKyAgICAgICAgZXJy
b3IgcGFnZSB3b3VsZCBsZWFkIHRvIGEgbG9hZCgpLCB0aGF0IGNsZWFyZWQgdGhlIG1fbG9hZEVy
cm9yLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKTogUmVtb3ZlIHJlZmVyZW5jZQorICAgICAgICB0byBtX2xvYWRF
cnJvciBhbmQgZW1pdCBmaW5pc2hlZCBzaWduYWwgaW5kaWNhdGluZyBlcnJvciBpZiBFcnJvclBh
Z2UgZXh0ZW5zaW9uCisgICAgICAgIGRvZXNuJ3QgaGFuZGxlIGl0LgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6IERpdHRvLgorCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjplbWl0TG9hZFN0YXJ0ZWQpOiBF
bWl0IHRoZSBsb2FkU3RhcnRlZCgpIHNpZ25hbAorICAgICAgICBmb3IgdGhlIFFXZWJGcmFtZSwg
YW5kIGlmIHRoZSBvcmlnaW5hdGluZyBsb2FkIGFsc28gZG8gZm9yIHRoZSBRV2ViUGFnZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1pdExvYWRGaW5pc2hlZCk6
IFNhbWUgYXMgYmVmb3JlIGJ1dCBmb3IKKyAgICAgICAgbG9hZEZpbmlzaGVkKCkuIFRha2UgY2Fy
ZSB0byByZXNldCB0aGUgb3JpZ2luYXRpbmcgbG9hZCBmbGFnIGJlZm9yZSB0aGUgc2lnbmFscwor
ICAgICAgICBhcmUgZW1pdHRlZCwgc2luY2UgdGhleSBtaWdodCB3YW50IHRvIHNldCBpdCBiYWNr
IGFnYWluLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoVVJMU2V0dGVyOjpVUkxTZXR0ZXIpOiBPYmplY3QgdGhhdCBzZXRzIHRoZSB1cmwg
dXNpbmcgZWl0aGVyIGxvYWQoKSBvciBzZXRVcmwoKQorICAgICAgICB3aGVuIGEgY2VydGFpbiBz
aWduYWwgaXMgZW1pdHRlZCBpbiB0aGUgZnJhbWUuCisKKyAgICAgICAgKFVSTFNldHRlcjo6ZXhl
Y3V0ZSk6CisgICAgICAgICh0c3RfUVdlYkZyYW1lOjpsb2FkSW5TaWduYWxIYW5kbGVyc19kYXRh
KToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OmxvYWRJblNpZ25hbEhhbmRsZXJzKTogTmV3IHRl
c3QgaW5zcGlyZWQgYnkgdGhlIGJ1ZyB0ZXN0IGNhc2UuIFRoaXMgdGVzdAorICAgICAgICBjcmFz
aGVzIHdpdGhvdXQgdGhpcyBwYXRjaCBhcHBsaWVkLgorCiAyMDExLTA3LTE5ICBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgW1F0XSBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgUVdlYlZpZXc6OnNldFBhZ2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAKaW5kZXggOWExZTFmZmE3MjUwYTVhZTBiMDkxZGE2OWE5YzY3MzJkYzMwMzQ5
MC4uYzJmYWYzYjYzZDRhOWExNGE0ZTMwOTdmNjQyODdmNjk0MTAzZmI2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgRnJhbWVMb2FkZXJDbGllbnRRdDo6RnJhbWVMb2FkZXJD
bGllbnRRdCgpCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNl
VG9QbHVnaW4oZmFsc2UpCiAgICAgLCBtX2hhc1JlcHJlc2VudGF0aW9uKGZhbHNlKQotICAgICwg
bV9sb2FkRXJyb3IoUmVzb3VyY2VFcnJvcigpKQorICAgICwgbV9pc09yaWdpbmF0aW5nTG9hZChm
YWxzZSkKIHsKIH0KIApAQCAtMjI5LDIyICsyMjksMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpzZXRGcmFtZShRV2ViRnJhbWUqIHdlYkZyYW1lLCBGcmFtZSogZnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkU3RhcnRlZCgp
KSwKLSAgICAgICAgICAgIG1fd2ViRnJhbWUtPnBhZ2UoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkp
KTsKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkU3RhcnRlZCgpKSwKLSAgICAgICAgICAg
IG1fd2ViRnJhbWUsIFNJR05BTChsb2FkU3RhcnRlZCgpKSk7CiAgICAgY29ubmVjdCh0aGlzLCBT
SUdOQUwobG9hZFByb2dyZXNzKGludCkpLAogICAgICAgICAgICAgbV93ZWJGcmFtZS0+cGFnZSgp
LCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpKTsKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChs
b2FkRmluaXNoZWQoYm9vbCkpLAotICAgICAgICAgICAgbV93ZWJGcmFtZS0+cGFnZSgpLCBTSUdO
QUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CiAKICAgICAvLyBGSVhNRTogVGhlIHF1ZXVlZCBjb25u
ZWN0aW9uIGhlcmUgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgYSBwcm9ibGVtIHdpdGggUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyLgogICAgIC8vICAgICAgICBTZWUgaHR0cDovL2J1Z3JlcG9ydHMucXQubm9r
aWEuY29tL2Jyb3dzZS9RVEJVRy0xODcxOAogICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHVuc3Vw
cG9ydGVkQ29udGVudChRTmV0d29ya1JlcGx5KikpLAogICAgICAgICAgICAgbV93ZWJGcmFtZS0+
cGFnZSgpLCBTSUdOQUwodW5zdXBwb3J0ZWRDb250ZW50KFFOZXR3b3JrUmVwbHkqKSksIFF0OjpR
dWV1ZWRDb25uZWN0aW9uKTsKIAotICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGxvYWRGaW5pc2hl
ZChib29sKSksCi0gICAgICAgICAgICBtX3dlYkZyYW1lLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJv
b2wpKSk7CiAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwodGl0bGVDaGFuZ2VkKFFTdHJpbmcpKSwK
ICAgICAgICAgICAgIG1fd2ViRnJhbWUsIFNJR05BTCh0aXRsZUNoYW5nZWQoUVN0cmluZykpKTsK
IH0KQEAgLTQ1NCw4ICs0NDYsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIAogICAgIG1fbGFzdFJlcXVlc3RlZFVybCA9IG1f
ZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0VVJMKCk7CiAK
LSAgICBpZiAobV93ZWJGcmFtZSkKLSAgICAgICAgZW1pdCBtX3dlYkZyYW1lLT5wcm92aXNpb25h
bExvYWQoKTsKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBlbWl0
TG9hZFN0YXJ0ZWQoKTsKKyAgICBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRp
b24oKTsKKyAgICBlbWl0IG1fd2ViRnJhbWUtPnByb3Zpc2lvbmFsTG9hZCgpOwogfQogCiAKQEAg
LTUzMiwxMiArNTI3LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkKCkKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBw
cmludGYoIiVzIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRydERlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKLSAgICAvLyBDbGVhcnMg
dGhlIHByZXZpb3VzIGVycm9yLgotICAgIG1fbG9hZEVycm9yID0gUmVzb3VyY2VFcnJvcigpOwot
CiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAgICAgICByZXR1cm47CisKICAgICBtX3dlYkZyYW1l
LT5wYWdlKCktPmQtPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgZW1pdExvYWRGaW5p
c2hlZCh0cnVlKTsKIH0KIAogCkBAIC01ODUsMTIgKzU3OSw4IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikKIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCkK
IHsKLSAgICBpZiAobV93ZWJGcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgLy8g
QXMgYSBuZXcgbG9hZCBoYXZlIHN0YXJ0ZWQsIGNsZWFyIHRoZSBwcmV2aW91cyBlcnJvci4KLSAg
ICAgICAgbV9sb2FkRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7Ci0gICAgICAgIGVtaXQgbG9hZFN0
YXJ0ZWQoKTsKLSAgICAgICAgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9u
KCk7Ci0gICAgfQorICAgIGlmIChtX3dlYkZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAg
ICAgbV9pc09yaWdpbmF0aW5nTG9hZCA9IHRydWU7CiAgICAgaWYgKG1fZnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dlYkZyYW1l
LT5wYWdlKCktPmQtPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CkBAIC02MTcsOSArNjA3LDYg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNh
dGlvbigpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAobV93ZWJG
cmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIGVtaXQgbG9hZEZpbmlzaGVkKG1fbG9h
ZEVycm9yLmlzTnVsbCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCkBAIC0xMTM4LDM4ICsxMTI1LDM5IEBAIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
V2ViQ29yZTo6RG9jdW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRlbnNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRl
bnNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUVdlYlBh
Z2UqIHBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKHBhZ2UtPnN1cHBvcnRzRXh0
ZW5zaW9uKFFXZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb24pKSB7Ci0gICAgICAgIFFXZWJQYWdl
OjpFcnJvclBhZ2VFeHRlbnNpb25PcHRpb24gb3B0aW9uOwotCi0gICAgICAgIGlmIChlcnJvci5k
b21haW4oKSA9PSAiUXROZXR3b3JrIikKLSAgICAgICAgICAgIG9wdGlvbi5kb21haW4gPSBRV2Vi
UGFnZTo6UXROZXR3b3JrOwotICAgICAgICBlbHNlIGlmIChlcnJvci5kb21haW4oKSA9PSAiSFRU
UCIpCi0gICAgICAgICAgICBvcHRpb24uZG9tYWluID0gUVdlYlBhZ2U6Okh0dHA7Ci0gICAgICAg
IGVsc2UgaWYgKGVycm9yLmRvbWFpbigpID09ICJXZWJLaXQiKQotICAgICAgICAgICAgb3B0aW9u
LmRvbWFpbiA9IFFXZWJQYWdlOjpXZWJLaXQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXBhZ2UtPnN1cHBvcnRzRXh0ZW5zaW9uKFFXZWJQYWdlOjpFcnJvclBh
Z2VFeHRlbnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRV2ViUGFnZTo6RXJy
b3JQYWdlRXh0ZW5zaW9uT3B0aW9uIG9wdGlvbjsKKyAgICBpZiAoZXJyb3IuZG9tYWluKCkgPT0g
IlF0TmV0d29yayIpCisgICAgICAgIG9wdGlvbi5kb21haW4gPSBRV2ViUGFnZTo6UXROZXR3b3Jr
OworICAgIGVsc2UgaWYgKGVycm9yLmRvbWFpbigpID09ICJIVFRQIikKKyAgICAgICAgb3B0aW9u
LmRvbWFpbiA9IFFXZWJQYWdlOjpIdHRwOworICAgIGVsc2UgaWYgKGVycm9yLmRvbWFpbigpID09
ICJXZWJLaXQiKQorICAgICAgICBvcHRpb24uZG9tYWluID0gUVdlYlBhZ2U6OldlYktpdDsKKyAg
ICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBvcHRpb24udXJsID0gUVVy
bChlcnJvci5mYWlsaW5nVVJMKCkpOwotICAgICAgICBvcHRpb24uZnJhbWUgPSBtX3dlYkZyYW1l
OwotICAgICAgICBvcHRpb24uZXJyb3IgPSBlcnJvci5lcnJvckNvZGUoKTsKLSAgICAgICAgb3B0
aW9uLmVycm9yU3RyaW5nID0gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKKyAgICBvcHRp
b24udXJsID0gUVVybChlcnJvci5mYWlsaW5nVVJMKCkpOworICAgIG9wdGlvbi5mcmFtZSA9IG1f
d2ViRnJhbWU7CisgICAgb3B0aW9uLmVycm9yID0gZXJyb3IuZXJyb3JDb2RlKCk7CisgICAgb3B0
aW9uLmVycm9yU3RyaW5nID0gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKIAotICAgICAg
ICBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uUmV0dXJuIG91dHB1dDsKLSAgICAgICAgaWYg
KCFwYWdlLT5leHRlbnNpb24oUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvbiwgJm9wdGlvbiwg
Jm91dHB1dCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgUVdlYlBhZ2U6OkVycm9yUGFnZUV4
dGVuc2lvblJldHVybiBvdXRwdXQ7CisgICAgaWYgKCFwYWdlLT5leHRlbnNpb24oUVdlYlBhZ2U6
OkVycm9yUGFnZUV4dGVuc2lvbiwgJm9wdGlvbiwgJm91dHB1dCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBLVVJMIGJhc2VVcmwob3V0cHV0LmJhc2VVcmwpOwotICAgICAgICBL
VVJMIGZhaWxpbmdVcmwob3B0aW9uLnVybCk7CisgICAgS1VSTCBiYXNlVXJsKG91dHB1dC5iYXNl
VXJsKTsKKyAgICBLVVJMIGZhaWxpbmdVcmwob3B0aW9uLnVybCk7CiAKLSAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZVVybCk7Ci0gICAgICAgIFdURjo6UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUob3V0cHV0LmNvbnRlbnQuY29uc3REYXRhKCksIG91dHB1dC5jb250ZW50Lmxlbmd0aCgp
KTsKLSAgICAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoYnVmZmVy
LCBvdXRwdXQuY29udGVudFR5cGUsIG91dHB1dC5lbmNvZGluZywgZmFpbGluZ1VybCk7Ci0gICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5sb2FkKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBmYWxz
ZSk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VVcmwp
OworICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUob3V0cHV0LmNvbnRlbnQuY29uc3REYXRhKCksIG91dHB1
dC5jb250ZW50Lmxlbmd0aCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0
dXRlRGF0YShidWZmZXIsIG91dHB1dC5jb250ZW50VHlwZSwgb3V0cHV0LmVuY29kaW5nLCBmYWls
aW5nVXJsKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+bG9hZChyZXF1ZXN0LCBzdWJzdGl0dXRl
RGF0YSwgZmFsc2UpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKQEAgLTExNzcsOSArMTE2NSwxMyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZQogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50
ZigiJXMgLSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yXG4iLCBxUHJpbnRhYmxlKGRy
dERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiAKLSAgICBtX2xv
YWRFcnJvciA9IGVycm9yOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIWVycm9yLmlzQ2Fu
Y2VsbGF0aW9uKCkpCi0gICAgICAgIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24oZXJyb3IpOworICAg
IGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICAg
ICAgaWYgKGNhbGxFcnJvclBhZ2VFeHRlbnNpb24oZXJyb3IpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChtX3dlYkZyYW1lKQorICAgICAgICBlbWl0TG9hZEZpbmlzaGVk
KGZhbHNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTE4Nyw5ICsxMTc5
LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNh
bGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2FkV2l0aEVycm9yXG4iLCBx
UHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7
CiAKLSAgICBtX2xvYWRFcnJvciA9IGVycm9yOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYg
IWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCi0gICAgICAgIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24o
ZXJyb3IpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIWVycm9yLmlzQ2FuY2VsbGF0aW9u
KCkpIHsKKyAgICAgICAgaWYgKGNhbGxFcnJvclBhZ2VFeHRlbnNpb24oZXJyb3IpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3dlYkZyYW1lKQorICAgICAgICBlbWl0
TG9hZEZpbmlzaGVkKGZhbHNlKTsKIH0KIAogV2ViQ29yZTo6RnJhbWUqIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
JikKQEAgLTE2ODgsNiArMTY4NCwyNiBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KAogICAgIHJl
dHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQ6OmNyZWF0ZShtX2ZyYW1lLCBtX3dlYkZyYW1l
LCAhTUlNRVNuaWZmaW5nRGlzYWJsZWQsIG1fd2ViRnJhbWUtPnBhZ2UoKS0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1pdExvYWRTdGFy
dGVkKCkKK3sKKyAgICBRV2ViUGFnZSogd2ViUGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKKyAg
ICBpZiAobV9pc09yaWdpbmF0aW5nTG9hZCAmJiB3ZWJQYWdlKQorICAgICAgICBlbWl0IHdlYlBh
Z2UtPmxvYWRTdGFydGVkKCk7CisgICAgZW1pdCBtX3dlYkZyYW1lLT5sb2FkU3RhcnRlZCgpOwor
fQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmVtaXRMb2FkRmluaXNoZWQoYm9vbCBvaykK
K3sKKyAgICAvLyBTaWduYWwgaGFuZGxlcnMgY2FuIGxlYWQgdG8gYSBuZXcgbG9hZCwgdGhhdCB3
aWxsIHVzZSB0aGUgbWVtYmVyIGFnYWluLgorICAgIGNvbnN0IGJvb2wgd2FzT3JpZ2luYXRpbmdM
b2FkID0gbV9pc09yaWdpbmF0aW5nTG9hZDsKKyAgICBtX2lzT3JpZ2luYXRpbmdMb2FkID0gZmFs
c2U7CisKKyAgICBRV2ViUGFnZSogd2ViUGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAod2FzT3JpZ2luYXRpbmdMb2FkICYmIHdlYlBhZ2UpCisgICAgICAgIGVtaXQgd2ViUGFnZS0+
bG9hZEZpbmlzaGVkKG9rKTsKKyAgICBlbWl0IG1fd2ViRnJhbWUtPmxvYWRGaW5pc2hlZChvayk7
Cit9CisKIH0KIAogI2luY2x1ZGUgIm1vY19GcmFtZUxvYWRlckNsaWVudFF0LmNwcCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmgKaW5kZXggMTIxMzAzZGQyNzFmZWVlYmRiYWE5NTYyN2NlNDNlM2Y3OThiNWFiNC4uYzNkZWQx
MzgwOTNlOTU0OWEzZWQ0ZmU5MDIzNWQyM2U2NjM1MjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTY3LDEx
ICs2NywxMCBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudFF0IDogcHVibGljIFFPYmplY3QsIHB1
YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBmcmllbmQgY2xhc3MgOjpRV2ViRnJhbWU7
CiAgICAgdm9pZCBjYWxsUG9saWN5RnVuY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlv
biwgUG9saWN5QWN0aW9uIGFjdGlvbik7Ci0gICAgdm9pZCBjYWxsRXJyb3JQYWdlRXh0ZW5zaW9u
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBib29sIGNhbGxFcnJvclBhZ2VFeHRlbnNpb24o
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworCiBzaWduYWxzOgotICAgIHZvaWQgbG9hZFN0YXJ0ZWQo
KTsKICAgICB2b2lkIGxvYWRQcm9ncmVzcyhpbnQgZCk7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQo
Ym9vbCk7CiAgICAgdm9pZCB0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgdGl0bGUpOwogICAg
IHZvaWQgdW5zdXBwb3J0ZWRDb250ZW50KFFOZXR3b3JrUmVwbHkqKTsKIApAQCAtMjY1LDYgKzI2
NCw5IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBvbkljb25Mb2FkZWRGb3JQYWdlVVJMKGNv
bnN0IFFTdHJpbmcmKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGVtaXRMb2FkU3RhcnRlZCgpOwor
ICAgIHZvaWQgZW1pdExvYWRGaW5pc2hlZChib29sIG9rKTsKKwogICAgIEZyYW1lICptX2ZyYW1l
OwogICAgIFFXZWJGcmFtZSAqbV93ZWJGcmFtZTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7CkBAIC0yNzksNyArMjgxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzUmVwcmVz
ZW50YXRpb247CiAKICAgICBLVVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKLSAgICBSZXNvdXJjZUVy
cm9yIG1fbG9hZEVycm9yOworICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5j
cHAKaW5kZXggYzM2ODBjYjg1ZDY1NTJjNTZiMDM1Y2M1ZTJmZDNlZWMwYzk3OTg0ZS4uNmMxZDY4
OTI4ZmRkOWE0M2YxMWQ1NTRjMGQwYTM2Y2Y5NDY4MmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAKQEAgLTY1OSw2ICs2NTks
OCBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgc2V0VXJsU2FtZVVybCgpOwogICAgIHZvaWQg
c2V0VXJsVGhlbkxvYWRzX2RhdGEoKTsKICAgICB2b2lkIHNldFVybFRoZW5Mb2FkcygpOworICAg
IHZvaWQgbG9hZEluU2lnbmFsSGFuZGxlcnNfZGF0YSgpOworICAgIHZvaWQgbG9hZEluU2lnbmFs
SGFuZGxlcnMoKTsKIAogcHJpdmF0ZToKICAgICBRU3RyaW5nICBldmFsSlMoY29uc3QgUVN0cmlu
ZyZzKSB7CkBAIC0zNjc5LDUgKzM2ODEsOTggQEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpzZXRVcmxU
aGVuTG9hZHMoKQogICAgIFFDT01QQVJFKGZyYW1lLT5iYXNlVXJsKCksIGV4dHJhY3RCYXNlVXJs
KHVybFRvTG9hZDIpKTsKIH0KIAorY2xhc3MgVVJMU2V0dGVyIDogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBlbnVtIFNpZ25hbCB7CisgICAgICAgIExvYWRT
dGFydGVkLAorICAgICAgICBMb2FkRmluaXNoZWQsCisgICAgICAgIFByb3Zpc2lvbmFsTG9hZAor
ICAgIH07CisKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBVc2VMb2FkLAorICAgICAgICBVc2VT
ZXRVcmwKKyAgICB9OworCisgICAgVVJMU2V0dGVyKFFXZWJGcmFtZSosIFNpZ25hbCwgVHlwZSwg
Y29uc3QgUVVybCYpOworCitwdWJsaWMgc2xvdHM6CisgICAgdm9pZCBleGVjdXRlKCk7CisKK3Np
Z25hbHM6CisgICAgdm9pZCBmaW5pc2hlZCgpOworCitwcml2YXRlOgorICAgIFFXZWJGcmFtZSog
bV9mcmFtZTsKKyAgICBRVXJsIG1fdXJsOworICAgIFR5cGUgbV90eXBlOworfTsKKworUV9ERUNM
QVJFX01FVEFUWVBFKFVSTFNldHRlcjo6U2lnbmFsKQorUV9ERUNMQVJFX01FVEFUWVBFKFVSTFNl
dHRlcjo6VHlwZSkKKworVVJMU2V0dGVyOjpVUkxTZXR0ZXIoUVdlYkZyYW1lKiBmcmFtZSwgU2ln
bmFsIHNpZ25hbCwgVVJMU2V0dGVyOjpUeXBlIHR5cGUsIGNvbnN0IFFVcmwmIHVybCkKKyAgICA6
IG1fZnJhbWUoZnJhbWUpLCBtX3VybCh1cmwpLCBtX3R5cGUodHlwZSkKK3sKKyAgICBpZiAoc2ln
bmFsID09IExvYWRTdGFydGVkKQorICAgICAgICBjb25uZWN0KG1fZnJhbWUsIFNJR05BTChsb2Fk
U3RhcnRlZCgpKSwgU0xPVChleGVjdXRlKCkpKTsKKyAgICBlbHNlIGlmIChzaWduYWwgPT0gTG9h
ZEZpbmlzaGVkKQorICAgICAgICBjb25uZWN0KG1fZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQo
Ym9vbCkpLCBTTE9UKGV4ZWN1dGUoKSkpOworICAgIGVsc2UKKyAgICAgICAgY29ubmVjdChtX2Zy
YW1lLCBTSUdOQUwocHJvdmlzaW9uYWxMb2FkKCkpLCBTTE9UKGV4ZWN1dGUoKSkpOworfQorCit2
b2lkIFVSTFNldHRlcjo6ZXhlY3V0ZSgpCit7CisgICAgLy8gV2UgdHJhY2sgb25seSB0aGUgZmly
c3QgZW1pc3Npb24uCisgICAgbV9mcmFtZS0+ZGlzY29ubmVjdCh0aGlzKTsKKyAgICBpZiAobV90
eXBlID09IFVSTFNldHRlcjo6VXNlTG9hZCkKKyAgICAgICAgbV9mcmFtZS0+bG9hZChtX3VybCk7
CisgICAgZWxzZQorICAgICAgICBtX2ZyYW1lLT5zZXRVcmwobV91cmwpOworICAgIGNvbm5lY3Qo
bV9mcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSksIFNJR05BTChmaW5pc2hlZCgpKSk7
Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6bG9hZEluU2lnbmFsSGFuZGxlcnNfZGF0YSgpCit7
CisgICAgUVRlc3Q6OmFkZENvbHVtbjxVUkxTZXR0ZXI6OlR5cGU+KCJ0eXBlIik7CisgICAgUVRl
c3Q6OmFkZENvbHVtbjxVUkxTZXR0ZXI6OlNpZ25hbD4oInNpZ25hbCIpOworICAgIFFUZXN0Ojph
ZGRDb2x1bW48UVVybD4oInVybCIpOworCisgICAgY29uc3QgUVVybCB2YWxpZFVybCgicXJjOi90
ZXN0Mi5odG1sIik7CisgICAgY29uc3QgUVVybCBpbnZhbGlkVXJsKCJxcmM6L2ludmFsaWQiKTsK
KworICAgIFFUZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGluIGxvYWRTdGFydGVkKCkgYWZ0ZXIg
dmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNldHRlcjo6TG9hZFN0YXJ0
ZWQgPDwgdmFsaWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2FsbCBsb2FkKCkgaW4gbG9hZFN0
YXJ0ZWQoKSBhZnRlciBpbnZhbGlkIHVybCIpIDw8IFVSTFNldHRlcjo6VXNlTG9hZCA8PCBVUkxT
ZXR0ZXI6OkxvYWRTdGFydGVkIDw8IGludmFsaWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2Fs
bCBsb2FkKCkgaW4gbG9hZEZpbmlzaGVkKCkgYWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0dGVy
OjpVc2VMb2FkIDw8IFVSTFNldHRlcjo6TG9hZEZpbmlzaGVkIDw8IHZhbGlkVXJsOworICAgIFFU
ZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGluIGxvYWRGaW5pc2hlZCgpIGFmdGVyIGludmFsaWQg
dXJsIikgPDwgVVJMU2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNldHRlcjo6TG9hZEZpbmlzaGVkIDw8
IGludmFsaWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2FsbCBsb2FkKCkgaW4gcHJvdmlzaW9u
YWxMb2FkKCkgYWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNl
dHRlcjo6UHJvdmlzaW9uYWxMb2FkIDw8IHZhbGlkVXJsOworICAgIFFUZXN0OjpuZXdSb3coImNh
bGwgbG9hZCgpIGluIHByb3Zpc2lvbmFsTG9hZCgpIGFmdGVyIGludmFsaWQgdXJsIikgPDwgVVJM
U2V0dGVyOjpVc2VMb2FkIDw8IFVSTFNldHRlcjo6UHJvdmlzaW9uYWxMb2FkIDw8IGludmFsaWRV
cmw7CisKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxsIHNldFVybCgpIGluIGxvYWRTdGFydGVkKCkg
YWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VTZXRVcmwgPDwgVVJMU2V0dGVyOjpM
b2FkU3RhcnRlZCA8PCB2YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxsIHNldFVybCgp
IGluIGxvYWRTdGFydGVkKCkgYWZ0ZXIgaW52YWxpZCB1cmwiKSA8PCBVUkxTZXR0ZXI6OlVzZVNl
dFVybCA8PCBVUkxTZXR0ZXI6OkxvYWRTdGFydGVkIDw8IGludmFsaWRVcmw7CisgICAgUVRlc3Q6
Om5ld1JvdygiY2FsbCBzZXRVcmwoKSBpbiBsb2FkRmluaXNoZWQoKSBhZnRlciB2YWxpZCB1cmwi
KSA8PCBVUkxTZXR0ZXI6OlVzZVNldFVybCA8PCBVUkxTZXR0ZXI6OkxvYWRGaW5pc2hlZCA8PCB2
YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxsIHNldFVybCgpIGluIGxvYWRGaW5pc2hl
ZCgpIGFmdGVyIGludmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VTZXRVcmwgPDwgVVJMU2V0
dGVyOjpMb2FkRmluaXNoZWQgPDwgaW52YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxs
IHNldFVybCgpIGluIHByb3Zpc2lvbmFsTG9hZCgpIGFmdGVyIHZhbGlkIHVybCIpIDw8IFVSTFNl
dHRlcjo6VXNlU2V0VXJsIDw8IFVSTFNldHRlcjo6UHJvdmlzaW9uYWxMb2FkIDw8IHZhbGlkVXJs
OworICAgIFFUZXN0OjpuZXdSb3coImNhbGwgc2V0VXJsKCkgaW4gcHJvdmlzaW9uYWxMb2FkKCkg
YWZ0ZXIgaW52YWxpZCB1cmwiKSA8PCBVUkxTZXR0ZXI6OlVzZVNldFVybCA8PCBVUkxTZXR0ZXI6
OlByb3Zpc2lvbmFsTG9hZCA8PCBpbnZhbGlkVXJsOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6
OmxvYWRJblNpZ25hbEhhbmRsZXJzKCkKK3sKKyAgICBRRkVUQ0goVVJMU2V0dGVyOjpUeXBlLCB0
eXBlKTsKKyAgICBRRkVUQ0goVVJMU2V0dGVyOjpTaWduYWwsIHNpZ25hbCk7CisgICAgUUZFVENI
KFFVcmwsIHVybCk7CisKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUo
KTsKKyAgICBjb25zdCBRVXJsIHVybEZvclNldHRlcigicXJjOi90ZXN0MS5odG1sIik7CisgICAg
VVJMU2V0dGVyIHNldHRlcihmcmFtZSwgc2lnbmFsLCB0eXBlLCB1cmxGb3JTZXR0ZXIpOworCisg
ICAgZnJhbWUtPmxvYWQodXJsKTsKKyAgICB3YWl0Rm9yU2lnbmFsKCZzZXR0ZXIsIFNJR05BTChm
aW5pc2hlZCgpKSwgMjAwKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIHVybEZvclNldHRl
cik7Cit9CisKIFFURVNUX01BSU4odHN0X1FXZWJGcmFtZSkKICNpbmNsdWRlICJ0c3RfcXdlYmZy
YW1lLm1vYyIK
</data>
<flag name="review"
          id="96427"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>