<?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>67228</bug_id>
          
          <creation_ts>2011-08-30 14:01:33 -0700</creation_ts>
          <short_desc>[Qt] [WK2] implement support to upload files in Qt WebKit2</short_desc>
          <delta_ts>2011-09-13 03:43:51 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Igor Trindade Oliveira">igor.oliveira</reporter>
          <assigned_to name="Igor Trindade Oliveira">igor.oliveira</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>459175</commentid>
    <comment_count>0</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-30 14:01:33 -0700</bug_when>
    <thetext>Implement support to upload files in Qt WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459231</commentid>
    <comment_count>1</comment_count>
      <attachid>105703</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-30 14:49:56 -0700</bug_when>
    <thetext>Created attachment 105703
Patch.

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459258</commentid>
    <comment_count>2</comment_count>
      <attachid>105703</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-30 15:19:51 -0700</bug_when>
    <thetext>Comment on attachment 105703
Patch.

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

I have a few comments and questions.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:387
&gt; +    QWidget* widget =  q-&gt;canvas();

I think there&apos;s an extra space after &quot;=&quot;.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:393
&gt; +        fileNames = QFileDialog::getOpenFileNames(widget, QString::null, suggestedFiles);
&gt; +    else
&gt; +        fileNames += QFileDialog::getOpenFileName(widget, QString::null, suggestedFiles);

Why QString::null instead of QString()?

Isn&apos;t the third argument of getOpenFileNames/getOpenFileNames the directory?

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:163
&gt; +    const QStringList fileList = toViewInterface(clientInfo)-&gt;chooseFiles(suggestedFileNames.join(QLatin1String(&quot;,&quot;)), allowsMultipleFiles);

Why are suggested file names joined?

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:157
&gt; +    uiClient.runOpenPanel =  qt_wk_runOpenPanel;

Extra space after &quot;=&quot;.

&gt; Source/WebKit2/UIProcess/qt/ViewInterface.h:81
&gt; +    virtual QStringList chooseFiles(const QString&amp; suggestedFiles, bool AllowsMultipleFiles) = 0;

&quot;AllowsMultipleFiles&quot; starting with uppercase is wrong. By the way, could we get rid of the boolean and use an enum or a different design instead?

I also don&apos;t think ViewInterface should get the suggestedFiles joined. If Qt QFileDialog API demands this join, we do in our implementations, not on ViewInterface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459261</commentid>
    <comment_count>3</comment_count>
      <attachid>105703</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-30 15:21:09 -0700</bug_when>
    <thetext>Comment on attachment 105703
Patch.

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

&gt; Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp:43
&gt; +

Unnecessary whitespace change.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:384
&gt; +QStringList QDesktopWebViewPrivate::chooseFiles(const QString&amp; suggestedFiles, bool allowsMultipleFiles)

Should be &quot;allowMultipleFiles&quot;

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:387
&gt; +    QWidget* widget =  q-&gt;canvas();

Coding style, double spaces after =

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:391
&gt; +        fileNames = QFileDialog::getOpenFileNames(widget, QString::null, suggestedFiles);

QString::null -&gt; QString()

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:393
&gt; +        fileNames += QFileDialog::getOpenFileName(widget, QString::null, suggestedFiles);

Ditto.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h:75
&gt; +    virtual QStringList chooseFiles(const QString&amp; suggestedFiles, bool allowsMultipleFiles);

This belongs in QDesktopWebPageProxy IMO.

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:153
&gt; +void qt_wk_runOpenPanel(WKPageRef, WKFrameRef, WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener, const void *clientInfo)

Coding style, * placement.

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:162
&gt; +    const bool allowsMultipleFiles = WKOpenPanelParametersGetAllowsMultipleFiles(parameters) ? true : false;

No need for the &quot;? true : false&quot; part.

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:165
&gt; +    if (!fileList.size()) {

Would read better as &quot;if (fileList.isEmpty()) {&quot;

&gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:157
&gt; +    uiClient.runOpenPanel =  qt_wk_runOpenPanel;

Style, two spaces after =

&gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.h:78
&gt; +    virtual QStringList chooseFiles(const QString&amp; suggestedFile, bool allowsMultipleFiles) { return QStringList(); }

Inconsistent with base class, suggestedFile -&gt; suggestedFiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459268</commentid>
    <comment_count>4</comment_count>
      <attachid>105703</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-30 15:33:57 -0700</bug_when>
    <thetext>Comment on attachment 105703
Patch.

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:391
&gt;&gt; +        fileNames = QFileDialog::getOpenFileNames(widget, QString::null, suggestedFiles);
&gt; 
&gt; QString::null -&gt; QString()

Perhaps a nice title here wouldn&apos;t hurt. I think the call is broken here the working directory is the third parameters.

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:155
&gt; +    Vector&lt;String&gt; wkSuggestedFileNames = toImpl(parameters)-&gt;suggestedFileNames();

So we use the C API on one side but then the C++ also. mmmm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459636</commentid>
    <comment_count>5</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-31 08:04:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 105703 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105703&amp;action=review
&gt; 
&gt; I have a few comments and questions.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:387
&gt; &gt; +    QWidget* widget =  q-&gt;canvas();
&gt; 
&gt; I think there&apos;s an extra space after &quot;=&quot;.

Ok

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:393
&gt; &gt; +        fileNames = QFileDialog::getOpenFileNames(widget, QString::null, suggestedFiles);
&gt; &gt; +    else
&gt; &gt; +        fileNames += QFileDialog::getOpenFileName(widget, QString::null, suggestedFiles);
&gt; 
&gt; Why QString::null instead of QString()?

A leftover in the patch iterations.

&gt; 
&gt; Isn&apos;t the third argument of getOpenFileNames/getOpenFileNames the directory?
&gt; 

In fact i need rename the method and argument name. The right name should be &quot;selectedFiles&quot;.

&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:163
&gt; &gt; +    const QStringList fileList = toViewInterface(clientInfo)-&gt;chooseFiles(suggestedFileNames.join(QLatin1String(&quot;,&quot;)), allowsMultipleFiles);
&gt; 
&gt; Why are suggested file names joined?

It need to be a QString separated by &quot;,&quot;.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:157
&gt; &gt; +    uiClient.runOpenPanel =  qt_wk_runOpenPanel;
&gt; 
&gt; Extra space after &quot;=&quot;.

Ok

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/ViewInterface.h:81
&gt; &gt; +    virtual QStringList chooseFiles(const QString&amp; suggestedFiles, bool AllowsMultipleFiles) = 0;
&gt; 
&gt; &quot;AllowsMultipleFiles&quot; starting with uppercase is wrong. By the way, could we get rid of the boolean and use an enum or a different design instead?
&gt; 

Yeah, IIRC WK1 uses a enum.

&gt; I also don&apos;t think ViewInterface should get the suggestedFiles joined. If Qt QFileDialog API demands this join, we do in our implementations, not on ViewInterface.

Yeah. Already discussed in irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459637</commentid>
    <comment_count>6</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-31 08:06:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 105703 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105703&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp:43
&gt; &gt; +
&gt; 
&gt; Unnecessary whitespace change.
&gt; 

Ok

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:384
&gt; &gt; +QStringList QDesktopWebViewPrivate::chooseFiles(const QString&amp; suggestedFiles, bool allowsMultipleFiles)
&gt; 
&gt; Should be &quot;allowMultipleFiles&quot;
&gt; 

Ok

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:387
&gt; &gt; +    QWidget* widget =  q-&gt;canvas();
&gt; 
&gt; Coding style, double spaces after =

Ok

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:391
&gt; &gt; +        fileNames = QFileDialog::getOpenFileNames(widget, QString::null, suggestedFiles);
&gt; 
&gt; QString::null -&gt; QString()
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:393
&gt; &gt; +        fileNames += QFileDialog::getOpenFileName(widget, QString::null, suggestedFiles);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview_p.h:75
&gt; &gt; +    virtual QStringList chooseFiles(const QString&amp; suggestedFiles, bool allowsMultipleFiles);
&gt; 
&gt; This belongs in QDesktopWebPageProxy IMO.
&gt; 

Already discussed in irc.

&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:153
&gt; &gt; +void qt_wk_runOpenPanel(WKPageRef, WKFrameRef, WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener, const void *clientInfo)
&gt; 
&gt; Coding style, * placement.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:162
&gt; &gt; +    const bool allowsMultipleFiles = WKOpenPanelParametersGetAllowsMultipleFiles(parameters) ? true : false;
&gt; 
&gt; No need for the &quot;? true : false&quot; part.
&gt; 

puff. A leftover in the patch iterations. It is a shame.

&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:165
&gt; &gt; +    if (!fileList.size()) {
&gt; 
&gt; Would read better as &quot;if (fileList.isEmpty()) {&quot;

Agree.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp:157
&gt; &gt; +    uiClient.runOpenPanel =  qt_wk_runOpenPanel;
&gt; 
&gt; Style, two spaces after =
&gt; 

Ok

&gt; &gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.h:78
&gt; &gt; +    virtual QStringList chooseFiles(const QString&amp; suggestedFile, bool allowsMultipleFiles) { return QStringList(); }
&gt; 
&gt; Inconsistent with base class, suggestedFile -&gt; suggestedFiles.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459947</commentid>
    <comment_count>7</comment_count>
      <attachid>105834</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-31 14:49:24 -0700</bug_when>
    <thetext>Created attachment 105834
Patch.

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459979</commentid>
    <comment_count>8</comment_count>
      <attachid>105834</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-31 15:19:34 -0700</bug_when>
    <thetext>Comment on attachment 105834
Patch.

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

LGTM except for the boolean comment below.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:31
&gt; +#include &lt;QtGui/QFileDialog&gt;

Left over from previous version?

&gt; Source/WebKit2/UIProcess/qt/qdesktopwebpageproxy.h:63
&gt; +    QStringList chooseFiles(const QStringList&amp; selectedFileNames, bool allowMultipleFiles);

What about an enumeration instead of boolean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460015</commentid>
    <comment_count>9</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-31 16:04:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 105834 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105834&amp;action=review
&gt; 
&gt; LGTM except for the boolean comment below.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:31
&gt; &gt; +#include &lt;QtGui/QFileDialog&gt;
&gt; 
&gt; Left over from previous version?
&gt; 

ouch!

&gt; &gt; Source/WebKit2/UIProcess/qt/qdesktopwebpageproxy.h:63
&gt; &gt; +    QStringList chooseFiles(const QStringList&amp; selectedFileNames, bool allowMultipleFiles);
&gt; 
&gt; What about an enumeration instead of boolean?

Ok. You convinced me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460063</commentid>
    <comment_count>10</comment_count>
      <attachid>105858</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-31 16:41:00 -0700</bug_when>
    <thetext>Created attachment 105858
Patch

Proposed patch. Add enum to handle file chooser types and fix leftover from previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462117</commentid>
    <comment_count>11</comment_count>
      <attachid>105858</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-05 05:18:31 -0700</bug_when>
    <thetext>Comment on attachment 105858
Patch

There are two things I don&apos;t like with this patch.

Number one: After (way too much) arguing with Benjamin I have to admit I was wrong about QtWebPageProxy/ViewInterface. This does indeed belong on the ViewInterface, as that&apos;s kind of a &quot;PageClient jr&quot;. We may need to bundle the pointers for ClientInfo* purposes later, but this is not the time and place. Sorry about that.

The second problem is with the way file choosing is implemented in a nested event loop (happens by calling QFileDialog::getOpenFileName{,s}). This has caused a LOT of trouble (reentrancy issues with QNAM for example) for QtWebKit in the past, and many of these problems are not fixable with the Qt4 API. So I&apos;m hesitant to introduce more nesting.

My question then becomes: would it be possible to change WebKit to make this a two-step process? (In a way that we can move the dialog to the main event loop instead of nesting a new one.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462120</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-05 05:21:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; My question then becomes: would it be possible to change WebKit to make this a two-step process? (In a way that we can move the dialog to the main event loop instead of nesting a new one.)

By two-step process I mean that the chooseFiles() implementation spawns a file selection dialog, and we then have an asynchronous callback that runs when the dialog is finished. I don&apos;t know if this would introduce problems on ports that have (sane) synchronous dialog boxes that don&apos;t nest (and what ports that might be.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462126</commentid>
    <comment_count>13</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-09-05 05:39:40 -0700</bug_when>
    <thetext>(In reply to comment #11)

&gt; My question then becomes: would it be possible to change WebKit to make this a two-step process? (In a way that we can move the dialog to the main event loop instead of nesting a new one.)

I don&apos;t think WebKit need to be changed. Currently, to answer the sync query made from the WebProcess we have to call the appropriate &quot;listener&quot; function, like  &quot;WKOpenPanelResultListenerChooseFiles();&quot;. WebProcess will be blocked until some listener is called (in the sync case).

So what we can do: delay the listener call until some signal is emitted by the dialog might be the solution for this.

Igor, this might be useful reading about dialogs/nested loops 
http://labs.qt.nokia.com/2010/02/23/unpredictable-exec/ :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462127</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-05 05:43:00 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; 
&gt; &gt; My question then becomes: would it be possible to change WebKit to make this a two-step process? (In a way that we can move the dialog to the main event loop instead of nesting a new one.)
&gt; 
&gt; I don&apos;t think WebKit need to be changed. Currently, to answer the sync query made from the WebProcess we have to call the appropriate &quot;listener&quot; function, like  &quot;WKOpenPanelResultListenerChooseFiles();&quot;. WebProcess will be blocked until some listener is called (in the sync case).
&gt; 
&gt; So what we can do: delay the listener call until some signal is emitted by the dialog might be the solution for this.
&gt; 
&gt; Igor, this might be useful reading about dialogs/nested loops 
&gt; http://labs.qt.nokia.com/2010/02/23/unpredictable-exec/ :-)

To build a bit on our experience from the N9 browser; we want to avoid sync calls by all cost. Think about it, on a mobile device we can have interruptions at all times like receiving a phone call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462128</commentid>
    <comment_count>15</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-05 05:46:40 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #11)
&gt; &gt; 
&gt; &gt; &gt; My question then becomes: would it be possible to change WebKit to make this a two-step process? (In a way that we can move the dialog to the main event loop instead of nesting a new one.)
&gt; &gt; 
&gt; &gt; I don&apos;t think WebKit need to be changed. Currently, to answer the sync query made from the WebProcess we have to call the appropriate &quot;listener&quot; function, like  &quot;WKOpenPanelResultListenerChooseFiles();&quot;. WebProcess will be blocked until some listener is called (in the sync case).
&gt; &gt; 
&gt; &gt; So what we can do: delay the listener call until some signal is emitted by the dialog might be the solution for this.
&gt; &gt; 
&gt; &gt; Igor, this might be useful reading about dialogs/nested loops 
&gt; &gt; http://labs.qt.nokia.com/2010/02/23/unpredictable-exec/ :-)
&gt; 
&gt; To build a bit on our experience from the N9 browser; we want to avoid sync calls by all cost. Think about it, on a mobile device we can have interruptions at all times like receiving a phone call.

I don&apos;t see the harm in blocking the WebProcess here, surely the phone stack will still bring your call through? Blocking the UIProcess OTOH is a no-no, of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462130</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-05 05:54:46 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; My question then becomes: would it be possible to change WebKit to make this a two-step process? (In a way that we can move the dialog to the main event loop instead of nesting a new one.)
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think WebKit need to be changed. Currently, to answer the sync query made from the WebProcess we have to call the appropriate &quot;listener&quot; function, like  &quot;WKOpenPanelResultListenerChooseFiles();&quot;. WebProcess will be blocked until some listener is called (in the sync case).
&gt; &gt; &gt; 
&gt; &gt; &gt; So what we can do: delay the listener call until some signal is emitted by the dialog might be the solution for this.
&gt; &gt; &gt; 
&gt; &gt; &gt; Igor, this might be useful reading about dialogs/nested loops 
&gt; &gt; &gt; http://labs.qt.nokia.com/2010/02/23/unpredictable-exec/ :-)
&gt; &gt; 
&gt; &gt; To build a bit on our experience from the N9 browser; we want to avoid sync calls by all cost. Think about it, on a mobile device we can have interruptions at all times like receiving a phone call.
&gt; 
&gt; I don&apos;t see the harm in blocking the WebProcess here, surely the phone stack will still bring your call through? Blocking the UIProcess OTOH is a no-no, of course.

Well, it is complicated... on the N9 for instance this might close the vkb (there is only one vkb for the whole platform) and close the dialog; getting back to the right state after ending the phone call etc is the problem.

Yes, you can work around some of these issues, but sometimes it becomes quite complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462132</commentid>
    <comment_count>17</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-09-05 05:56:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I don&apos;t think WebKit need to be changed. Currently, to answer the sync query made from the WebProcess we have to call the appropriate &quot;listener&quot; function, like  &quot;WKOpenPanelResultListenerChooseFiles();&quot;. WebProcess will be blocked until some listener is called (in the sync case).

Guys, Igor just corrected me. The WebProcess query isn&apos;t Sync, it&apos;s Async already. :-)

Note that solution is the same, use open() for dialog, watch a dialog signal and 
only then call the listener function. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465008</commentid>
    <comment_count>18</comment_count>
      <attachid>106914</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-09-09 13:45:19 -0700</bug_when>
    <thetext>Created attachment 106914
Patch.

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465621</commentid>
    <comment_count>19</comment_count>
      <attachid>106914</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-12 08:52:34 -0700</bug_when>
    <thetext>Comment on attachment 106914
Patch.

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

r=me

&gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.h:78
&gt; +    virtual void chooseFiles(WKOpenPanelResultListenerRef listenerRef, const QStringList&amp; selectedFileNames, FileChooserType type) { }

Unnecessary parameter names: listenerRef, type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465622</commentid>
    <comment_count>20</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-09-12 08:53:24 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.h:78
&gt; &gt; +    virtual void chooseFiles(WKOpenPanelResultListenerRef listenerRef, const QStringList&amp; selectedFileNames, FileChooserType type) { }
&gt; 
&gt; Unnecessary parameter names: listenerRef, type.

Actually, all of them are unnecessary, since this is inline. D&apos;oh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466228</commentid>
    <comment_count>21</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-09-13 03:43:51 -0700</bug_when>
    <thetext>manually committed r94979: http://trac.webkit.org/changeset/94979</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105703</attachid>
            <date>2011-08-30 14:49:56 -0700</date>
            <delta_ts>2011-08-31 14:49:24 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>0001-Qt-WK2-implement-support-to-upload-files-in-Qt-WebKi.patch</filename>
            <type>text/plain</type>
            <size>9400</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA1ZjE1NWYyYTdiODc0NGM4ZmYyYzFjMWRlNWExMmVhYWZlMmVjYzVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMTEgMTI6MDg6MDYgLTA0MDAKU3ViamVjdDogW1BB
VENIXSAgW1F0XSBbV0syXSBpbXBsZW1lbnQgc3VwcG9ydCB0byB1cGxvYWQgZmlsZXMgaW4gUXQg
V2ViS2l0MgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggICAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgICAgICB8ICAgIDEgKwogLi4uL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwICAgfCAgIDE4ICsrKysrKysrKysr
KysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCAgIHwg
ICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgICAgICAg
ICB8ICAgMjcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9DbGllbnRJbXBsLmggICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggICAgICAgIHwgICAgMiArCiAxMCBmaWxlcyBj
aGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4
Y2U1NmU0Li43MmM2MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMzAg
IElnb3IgT2xpdmVpcmEgIDxpZ29yLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
W1F0XSBbV0syXSBpbXBsZW1lbnQgc3VwcG9ydCB0byB1cGxvYWQgZmlsZXMgaW4gUXQgV2ViS2l0
MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcyMjgK
KworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCB0byB1cGxvYWQgZmlsZXMg
aW4gdGhlIERlc2t0b3AgUXQgV2ViS2l0MiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OnN1
Z2dlc3RlZEZpbGVOYW1lcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6Y2hvb3NlRmlsZXMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChxdF93a19ydW5PcGVuUGFu
ZWwpOgorCisgICAgICAgIHF0X3drX3J1bk9wZW5QYW5lbCBzdXBwb3J0cyBzaW5nbGUgYW5kIG11
bHRpcGxlIGZpbGVzIHNlbGVjdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFF0V2ViUGFnZVByb3h5Ojppbml0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hW
aWV3SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6Y2hv
b3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisKIDIw
MTEtMDgtMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
RHVtcFJlbmRlclRyZWUgc2hvdWxkIGJlZ2luIGVhY2ggdGVzdCB3aXRoIGFuIGVtcHR5IGNvb2tp
ZSBzdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
LmgKaW5kZXggZTg1NDZkYy4uNmQyYjUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViT3BlblBhbmVsUGFyYW1ldGVycy5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB+
V2ViT3BlblBhbmVsUGFyYW1ldGVycygpOwogCiAgICAgYm9vbCBhbGxvd011bHRpcGxlRmlsZXMo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWxsb3dNdWx0aXBsZUZpbGVzOyB9IAorICAgIFZlY3Rv
cjxTdHJpbmc+IHN1Z2dlc3RlZEZpbGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5maWxl
bmFtZXM7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
KGNvbnN0IERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKaW5kZXggOGI3OGQ2ZC4uMjk1MWViNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKQEAgLTQwLDMgKzQwLDQgQEAgYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRl
cnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWUK
IHsKICAgICByZXR1cm4gdG9JbXBsKHBhcmFtZXRlcnNSZWYpLT5hbGxvd011bHRpcGxlRmlsZXMo
KTsKIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuY3BwCmluZGV4IDUxZWNiZDQuLjBhYTY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2V2ZW50Lmg+CiAjaW5jbHVkZSA8UXRE
ZWNsYXJhdGl2ZS9xc2dpdGVtLmg+CiAjaW5jbHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNpbmNsdWRl
IDxRdEd1aS9RRmlsZURpYWxvZz4KICNpbmNsdWRlIDxRdEd1aS9RRm9jdXNFdmVudD4KICNpbmNs
dWRlIDxRdEd1aS9RR3JhcGhpY3NTY2VuZUV2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FIb3ZlckV2
ZW50PgpAQCAtMzgwLDYgKzM4MSwyMyBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRp
ZFJlbGF1bmNoUHJvY2VzcygpCiAgICAgcS0+dXBkYXRlKCk7CiB9CiAKK1FTdHJpbmdMaXN0IFFE
ZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVzLCBib29sIGFsbG93c011bHRpcGxlRmlsZXMpCit7CisjaWZuZGVmIFFUX05PX0ZJTEVE
SUFMT0cKKyAgICBRV2lkZ2V0KiB3aWRnZXQgPSAgcS0+Y2FudmFzKCk7CisKKyAgICBRU3RyaW5n
TGlzdCBmaWxlTmFtZXM7CisgICAgaWYgKGFsbG93c011bHRpcGxlRmlsZXMpCisgICAgICAgIGZp
bGVOYW1lcyA9IFFGaWxlRGlhbG9nOjpnZXRPcGVuRmlsZU5hbWVzKHdpZGdldCwgUVN0cmluZzo6
bnVsbCwgc3VnZ2VzdGVkRmlsZXMpOworICAgIGVsc2UKKyAgICAgICAgZmlsZU5hbWVzICs9IFFG
aWxlRGlhbG9nOjpnZXRPcGVuRmlsZU5hbWUod2lkZ2V0LCBRU3RyaW5nOjpudWxsLCBzdWdnZXN0
ZWRGaWxlcyk7CisKKyAgICByZXR1cm4gZmlsZU5hbWVzOworI2Vsc2UKKyAgICByZXR1cm4gUVN0
cmluZ0xpc3QoKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgUG9saWN5SW50ZXJmYWNlOjpQb2xpY3lB
Y3Rpb24gdG9Qb2xpY3lBY3Rpb24oUURlc2t0b3BXZWJWaWV3OjpOYXZpZ2F0aW9uUG9saWN5IHBv
bGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCmluZGV4IDRhMDdhNTguLmEzN2E1
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3
ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlld19wLmgKQEAgLTcyLDYgKzcyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2Vzcygp
OwogCisgICAgdmlydHVhbCBRU3RyaW5nTGlzdCBjaG9vc2VGaWxlcyhjb25zdCBRU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlcywgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzKTsKKwogICAgIC8vIFBvbGlj
eUludGVyZmFjZS4KICAgICB2aXJ0dWFsIFBvbGljeUludGVyZmFjZTo6UG9saWN5QWN0aW9uIG5h
dmlnYXRpb25Qb2xpY3lGb3JVUkwoY29uc3QgUVVybCYsIFF0OjpNb3VzZUJ1dHRvbiwgUXQ6Oktl
eWJvYXJkTW9kaWZpZXJzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuY3BwCmluZGV4IDc3YzBhYTEuLjdkNmViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5jcHAKQEAgLTI5LDggKzI5LDExIEBACiAjaW5jbHVkZSA8UG9saWN5
SW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8UXRXZWJQYWdlUHJveHkuaD4KICNpbmNsdWRlIDxWaWV3
SW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8V0tBcnJheS5oPgogI2luY2x1ZGUgPFdLRnJhbWUuaD4K
ICNpbmNsdWRlIDxXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXS09wZW5QYW5l
bFBhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg+CiAj
aW5jbHVkZSA8V0tUeXBlLmg+CiAjaW5jbHVkZSA8V0tVUkxSZXF1ZXN0Lmg+CiAKQEAgLTE0Nyw2
ICsxNTAsMzAgQEAgdm9pZCBxdF93a19zZXRTdGF0dXNUZXh0KFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKICAgICB0b1ZpZXdJbnRlcmZhY2UoY2xp
ZW50SW5mbyktPmRpZENoYW5nZVN0YXR1c1RleHQocVRleHQpOwogfQogCit2b2lkIHF0X3drX3J1
bk9wZW5QYW5lbChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1Jl
ZiBwYXJhbWV0ZXJzLCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHdrU3VnZ2VzdGVkRmls
ZU5hbWVzID0gdG9JbXBsKHBhcmFtZXRlcnMpLT5zdWdnZXN0ZWRGaWxlTmFtZXMoKTsKKworICAg
IFFTdHJpbmdMaXN0IHN1Z2dlc3RlZEZpbGVOYW1lczsKKyAgICBpZiAoIXdrU3VnZ2VzdGVkRmls
ZU5hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdrU3Vn
Z2VzdGVkRmlsZU5hbWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZU5h
bWVzICs9IHdrU3VnZ2VzdGVkRmlsZU5hbWVzLmF0KGkpOworCisgICAgY29uc3QgYm9vbCBhbGxv
d3NNdWx0aXBsZUZpbGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVG
aWxlcyhwYXJhbWV0ZXJzKSA/IHRydWUgOiBmYWxzZTsKKyAgICBjb25zdCBRU3RyaW5nTGlzdCBm
aWxlTGlzdCA9IHRvVmlld0ludGVyZmFjZShjbGllbnRJbmZvKS0+Y2hvb3NlRmlsZXMoc3VnZ2Vz
dGVkRmlsZU5hbWVzLmpvaW4oUUxhdGluMVN0cmluZygiLCIpKSwgYWxsb3dzTXVsdGlwbGVGaWxl
cyk7CisKKyAgICBpZiAoIWZpbGVMaXN0LnNpemUoKSkgeworICAgICAgICBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyQ2FuY2VsKGxpc3RlbmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrRmlsZXMoZmlsZUxpc3Quc2l6ZSgpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZUxpc3Quc2l6ZSgpOyArK2kpCisgICAg
ICAgIHdrRmlsZXNbaV0gPSBXZWJVUkw6OmNyZWF0ZShRVXJsOjpmcm9tTG9jYWxGaWxlKGZpbGVM
aXN0LmF0KGkpKS50b1N0cmluZygpKTsKKworICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJD
aG9vc2VGaWxlcyhsaXN0ZW5lciwgdG9BUEkoSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrRmlsZXMp
LmxlYWtSZWYoKSkpOworfQorCiBzdGF0aWMgUXQ6Ok1vdXNlQnV0dG9uIHRvUXRNb3VzZUJ1dHRv
bihXS0V2ZW50TW91c2VCdXR0b24gYnV0dG9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaAppbmRleCA0MWY4OTliLi4yMjM4
YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTQwLDYg
KzQwLDcgQEAgdm9pZCBxdF93a19kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQ
YWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWUKIAogLy8gdWkgY2xpZW50CiB2b2lkIHF0
X3drX3NldFN0YXR1c1RleHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19ydW5PcGVuUGFuZWwoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiAvLyBQb2xpY3kgY2xpZW50Lgog
dm9pZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50
TW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjU5NjUyYi4uMzFm
MmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
Y3BwCkBAIC0xNTQsNiArMTU0LDcgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6aW5pdCgpCiAgICAg
dWlDbGllbnQudmVyc2lvbiA9IDA7CiAgICAgdWlDbGllbnQuY2xpZW50SW5mbyA9IG1fdmlld0lu
dGVyZmFjZTsKICAgICB1aUNsaWVudC5zZXRTdGF0dXNUZXh0ID0gcXRfd2tfc2V0U3RhdHVzVGV4
dDsKKyAgICB1aUNsaWVudC5ydW5PcGVuUGFuZWwgPSAgcXRfd2tfcnVuT3BlblBhbmVsOwogICAg
IFdLUGFnZVNldFBhZ2VVSUNsaWVudCh0b0FQSShtX3dlYlBhZ2VQcm94eS5nZXQoKSksICZ1aUNs
aWVudCk7CiAKICAgICBpZiAobV9wb2xpY3lJbnRlcmZhY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaAppbmRleCA5NzI5ZDY3Li5jZGVj
NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVy
ZmFjZS5oCkBAIC03NSw2ICs3NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NEaWRDcmFzaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKIAor
ICAgIHZpcnR1YWwgUVN0cmluZ0xpc3QgY2hvb3NlRmlsZXMoY29uc3QgUVN0cmluZyYgc3VnZ2Vz
dGVkRmlsZSwgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzKSB7IHJldHVybiBRU3RyaW5nTGlzdCgp
OyB9CisKIHByaXZhdGU6CiAgICAgUVRvdWNoV2ViVmlldyogY29uc3QgbV92aWV3cG9ydFZpZXc7
CiAgICAgUVRvdWNoV2ViUGFnZSogY29uc3QgbV9wYWdlVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmluZGV4IDcwYTZmNjMuLmQxNGI2Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaApAQCAtNzcsNiArNzcs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IFFTdHJpbmdMaXN0IGNob29zZUZpbGVzKGNvbnN0IFFTdHJpbmcmIHN1Z2dlc3RlZEZpbGVzLCBi
b29sIEFsbG93c011bHRpcGxlRmlsZXMpID0gMDsKIH07CiAKIH0KLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105834</attachid>
            <date>2011-08-31 14:49:24 -0700</date>
            <delta_ts>2011-08-31 16:41:00 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>0001-Qt-WK2-implement-support-to-upload-files-in-Qt-WebKi.patch</filename>
            <type>text/plain</type>
            <size>11790</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSAwMzc1NzdkYTZlNmYwYTVkZThmNjg1ZTM0MzljM2VlNDE1Yzk2MmYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMTEgMTI6MDg6MDYgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIFtXSzJdIGltcGxlbWVudCBzdXBwb3J0IHRvIHVwbG9hZCBmaWxlcyBpbiBRdCBX
ZWJLaXQyCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAyOSArKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
Yk9wZW5QYW5lbFBhcmFtZXRlcnMuaCAgICAgfCAgICAxICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgICAgICAgICB8ICAgMzQgKysrKysrKysrKysrKysr
KystLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaCAgICAgICAgICAg
fCAgIDEyICsrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHAgICAgIHwgICAxMCArKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oICAgICAgIHwgICAgNiArKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
ZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAgIHwgICAyNSArKysrKysrKysrKysrKwogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggfCAgICAyICsKIDkgZmls
ZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDhjZTU2ZTQuLjg4ZTFhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0w
OC0zMSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdIFtXSzJdIGltcGxlbWVudCBzdXBwb3J0IHRvIHVwbG9hZCBmaWxlcyBpbiBRdCBX
ZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzIyOAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IHRvIHVwbG9hZCBm
aWxlcyBpbiB0aGUgRGVza3RvcCBRdCBXZWJLaXQyIGltcGxlbWVudGF0aW9uLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYk9wZW5Q
YW5lbFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVy
czo6c2VsZWN0ZWRGaWxlTmFtZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0
b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgICh0b1F0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKHRvVmlld0ludGVyZmFjZSk6Cisg
ICAgICAgIChxdF93a19ydW5PcGVuUGFuZWwpOgorCisgICAgICAgIHF0X3drX3J1bk9wZW5QYW5l
bCBzdXBwb3J0cyBzaW5nbGUgYW5kIG11bHRpcGxlIGZpbGVzIHNlbGVjdGlvbi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94
eSk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6aW5pdCk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Y2hvb3NlRmls
ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHA6Cisg
ICAgICAgIChRRGVza3RvcFdlYlBhZ2VQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oOgorCiAyMDExLTA4LTI5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlIHNo
b3VsZCBiZWdpbiBlYWNoIHRlc3Qgd2l0aCBhbiBlbXB0eSBjb29raWUgc3RvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oCmluZGV4IGU4NTQ2ZGMu
Ljc2OTY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgfldlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMoKTsKIAogICAgIGJvb2wgYWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmFsbG93TXVsdGlwbGVGaWxlczsgfSAKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3Rl
ZEZpbGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5maWxlbmFtZXM7IH0KIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKGNvbnN0IERhdGEmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cAppbmRleCA1MWVjYmQ0Li4xYzUwZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dldmVudC5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUv
cXNnaXRlbS5oPgogI2luY2x1ZGUgPFF0R3VpL1FDdXJzb3I+CisjaW5jbHVkZSA8UXRHdWkvUUZp
bGVEaWFsb2c+CiAjaW5jbHVkZSA8UXRHdWkvUUZvY3VzRXZlbnQ+CiAjaW5jbHVkZSA8UXRHdWkv
UUdyYXBoaWNzU2NlbmVFdmVudD4KICNpbmNsdWRlIDxRdEd1aS9RSG92ZXJFdmVudD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCA3N2MwYWExLi5kYzFl
OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBAIC0y
OSw4ICsyOSwxMSBAQAogI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgogI2luY2x1ZGUgPFF0
V2ViUGFnZVByb3h5Lmg+CiAjaW5jbHVkZSA8Vmlld0ludGVyZmFjZS5oPgorI2luY2x1ZGUgPFdL
QXJyYXkuaD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CiAjaW5jbHVkZSA8V0tGcmFtZVBvbGljeUxp
c3RlbmVyLmg+CisjaW5jbHVkZSA8V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmg+CisjaW5jbHVkZSA8
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdLVHlwZS5oPgogI2luY2x1
ZGUgPFdLVVJMUmVxdWVzdC5oPgogCkBAIC0zOCwxNSArNDEsMTQgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogc3RhdGljIFF0V2ViUGFnZVByb3h5KiB0b1F0V2ViUGFnZVByb3h5KGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgaWYgKGNsaWVudEluZm8pCi0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFF0V2ViUGFnZVByb3h5Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOwotICAgIHJldHVybiAwOworICAgIEFTU0VSVChjbGllbnRJbmZvKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDbGllbnRJbmZvKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT53ZWJQYWdlUHJveHk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgVmlld0ludGVyZmFj
ZSogdG9WaWV3SW50ZXJmYWNlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgQVNTRVJU
KGNsaWVudEluZm8pOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZpZXdJbnRlcmZhY2Uq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Q2xpZW50SW5mbyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+dmlld0lu
dGVyZmFjZTsKIH0KIAogc3RhdGljIGlubGluZSBQb2xpY3lJbnRlcmZhY2UqIHRvUG9saWN5SW50
ZXJmYWNlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNDcsNiArMTQ5LDMwIEBAIHZvaWQg
cXRfd2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pCiAgICAgdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8pLT5kaWRDaGFu
Z2VTdGF0dXNUZXh0KHFUZXh0KTsKIH0KIAordm9pZCBxdF93a19ydW5PcGVuUGFuZWwoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycywgV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB3a1NlbGVjdGVkRmlsZU5hbWVzID0gdG9JbXBsKHBh
cmFtZXRlcnMpLT5zZWxlY3RlZEZpbGVOYW1lcygpOworCisgICAgUVN0cmluZ0xpc3Qgc2VsZWN0
ZWRGaWxlTmFtZXM7CisgICAgaWYgKCF3a1NlbGVjdGVkRmlsZU5hbWVzLmlzRW1wdHkoKSkKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgd2tTZWxlY3RlZEZpbGVOYW1lcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHNlbGVjdGVkRmlsZU5hbWVzICs9IHdrU2VsZWN0ZWRGaWxlTmFtZXMu
YXQoaSk7CisKKyAgICBjb25zdCBib29sIGFsbG93TXVsdGlwbGVGaWxlcyA9IFdLT3BlblBhbmVs
UGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxlRmlsZXMocGFyYW1ldGVycyk7CisgICAgY29uc3Qg
UVN0cmluZ0xpc3QgZmlsZUxpc3QgPSB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5jaG9v
c2VGaWxlcyhzZWxlY3RlZEZpbGVOYW1lcywgYWxsb3dNdWx0aXBsZUZpbGVzKTsKKworICAgIGlm
IChmaWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ckNhbmNlbChsaXN0ZW5lcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8
UmVmUHRyPEFQSU9iamVjdD4gPiB3a0ZpbGVzKGZpbGVMaXN0LnNpemUoKSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVMaXN0LnNpemUoKTsgKytpKQorICAgICAgICB3a0ZpbGVz
W2ldID0gV2ViVVJMOjpjcmVhdGUoUVVybDo6ZnJvbUxvY2FsRmlsZShmaWxlTGlzdC5hdChpKSku
dG9TdHJpbmcoKSk7CisKKyAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMo
bGlzdGVuZXIsIHRvQVBJKEltbXV0YWJsZUFycmF5OjphZG9wdCh3a0ZpbGVzKS5sZWFrUmVmKCkp
KTsKK30KKwogc3RhdGljIFF0OjpNb3VzZUJ1dHRvbiB0b1F0TW91c2VCdXR0b24oV0tFdmVudE1v
dXNlQnV0dG9uIGJ1dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKaW5kZXggNDFmODk5Yi4uNDNlMjg2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCkBAIC0yNiw2ICsyNiwxNyBAQAog
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorY2xhc3MgUXRXZWJQYWdlUHJveHk7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgVmlld0ludGVyZmFjZTsKK30KKworc3RydWN0IENsaWVudEluZm8g
eworICAgIFF0V2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHk7CisgICAgV2ViS2l0OjpWaWV3SW50
ZXJmYWNlKiB2aWV3SW50ZXJmYWNlOworfTsKKwogLy8gbG9hZGVyIGNsaWVudAogdm9pZCBxdF93
a19kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHZvaWQgcXRfd2tfZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tF
cnJvclJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTQwLDYgKzUx
LDcgQEAgdm9pZCBxdF93a19kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWUKIAogLy8gdWkgY2xpZW50CiB2b2lkIHF0X3dr
X3NldFN0YXR1c1RleHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwordm9pZCBxdF93a19ydW5PcGVuUGFuZWwoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAvLyBQb2xpY3kgY2xpZW50Lgogdm9p
ZCBxdF93a19kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91
c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjU5NjUyYi4uNzU3MTNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMDYsNiArMTA2LDcgQEAgUXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFZpZXdJ
bnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFBvbGljeUludGVyZmFjZSogcG8KICAgICAsIG1fcHJl
ZmVyZW5jZXMoMCkKICAgICAsIG1fdW5kb1N0YWNrKGFkb3B0UHRyKG5ldyBRVW5kb1N0YWNrKHRo
aXMpKSkKICAgICAsIG1fbG9hZFByb2dyZXNzKDApCisgICAgLCBtX2NsaWVudEluZm8oYWRvcHRQ
dHIobmV3IENsaWVudEluZm8pKQogewogICAgIEFTU0VSVCh2aWV3SW50ZXJmYWNlKTsKICAgICBt
ZW1zZXQobV9hY3Rpb25zLCAwLCBzaXplb2YobV9hY3Rpb25zKSk7CkBAIC0xMTgsOSArMTE5LDEz
IEBAIFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShWaWV3SW50ZXJmYWNlKiB2aWV3SW50
ZXJmYWNlLCBQb2xpY3lJbnRlcmZhY2UqIHBvCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojppbml0KCkK
IHsKICAgICBtX3dlYlBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKKworICAgIG1fY2xp
ZW50SW5mby0+dmlld0ludGVyZmFjZSA9IG1fdmlld0ludGVyZmFjZTsKKyAgICBtX2NsaWVudElu
Zm8tPndlYlBhZ2VQcm94eSA9IHRoaXM7CisKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZENs
aWVudCA9IHsKICAgICAgICAgMCwgICAgICAvKiB2ZXJzaW9uICovCi0gICAgICAgIHRoaXMsICAg
LyogY2xpZW50SW5mbyAqLworICAgICAgICBtX2NsaWVudEluZm8uZ2V0KCksICAgLyogY2xpZW50
SW5mbyAqLwogICAgICAgICBxdF93a19kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAog
ICAgICAgICAwLCAvKiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSAqLwogICAgICAgICBxdF93a19kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUsCkBAIC0xNTIsOCArMTU3LDkgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6aW5pdCgp
CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwg
c2l6ZW9mKFdLUGFnZVVJQ2xpZW50KSk7CiAgICAgdWlDbGllbnQudmVyc2lvbiA9IDA7Ci0gICAg
dWlDbGllbnQuY2xpZW50SW5mbyA9IG1fdmlld0ludGVyZmFjZTsKKyAgICB1aUNsaWVudC5jbGll
bnRJbmZvID0gbV9jbGllbnRJbmZvLmdldCgpOwogICAgIHVpQ2xpZW50LnNldFN0YXR1c1RleHQg
PSBxdF93a19zZXRTdGF0dXNUZXh0OworICAgIHVpQ2xpZW50LnJ1bk9wZW5QYW5lbCA9IHF0X3dr
X3J1bk9wZW5QYW5lbDsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQodG9BUEkobV93ZWJQYWdl
UHJveHkuZ2V0KCkpLCAmdWlDbGllbnQpOwogCiAgICAgaWYgKG1fcG9saWN5SW50ZXJmYWNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCmluZGV4IGE2
Yzg2NTMuLjhmY2IzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5oCkBAIC00Niw2ICs0Niw4IEBAIFFUX0VORF9OQU1FU1BBQ0UKIGNsYXNzIFFXS0hp
c3Rvcnk7CiBjbGFzcyBRV0tQcmVmZXJlbmNlczsKIAorY2xhc3MgQ2xpZW50SW5mbzsKKwogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcm9wQWN0aW9u
VG9EcmFnT3BlcmF0aW9uKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb25zKTsKQEAgLTE3Myw2ICsxNzUs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBhZ2VJc1Zpc2libGUoYm9vbCk7CiAKKyAgICB2
aXJ0dWFsIFFTdHJpbmdMaXN0IGNob29zZUZpbGVzKGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3Rl
ZEZpbGVOYW1lcywgYm9vbCBhbGxvd011bHRpcGxlRmlsZXMpIHsgcmV0dXJuIFFTdHJpbmdMaXN0
KCk7IH07CisKIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgd2ViQWN0aW9uVHJpZ2dlcmVkKGJv
b2wgY2hlY2tlZCk7CiAKQEAgLTIwNiw2ICsyMTAsOCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRy
PFFVbmRvU3RhY2s+IG1fdW5kb1N0YWNrOwogICAgIGludCBtX2xvYWRQcm9ncmVzczsKKworICAg
IE93blB0cjxDbGllbnRJbmZvPiBtX2NsaWVudEluZm87CiB9OwogCiAjZW5kaWYgLyogUXRXZWJQ
YWdlUHJveHlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3Fk
ZXNrdG9wd2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVz
a3RvcHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggNDhiYzk4MC4uNDJkMjUyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCkBA
IC0yMCwxMyArMjAsMTYgQEAKIAogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5j
bHVkZSAicWRlc2t0b3B3ZWJwYWdlcHJveHkuaCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXcu
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdl
Yk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVk
ZSA8UUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFFdmVudD4KKyNpbmNsdWRlIDxRRmlsZURpYWxv
Zz4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQ+CiAjaW5jbHVkZSA8UUdy
YXBoaWNzV2lkZ2V0PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAK
QEAgLTIyNCwzICsyMjcsMjUgQEAgdm9pZCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6dGltZXJFdmVu
dChRVGltZXJFdmVudCogZXYpCiAgICAgZWxzZQogICAgICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50
KGV2KTsKIH0KKworUVN0cmluZ0xpc3QgUURlc2t0b3BXZWJQYWdlUHJveHk6OmNob29zZUZpbGVz
KGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgYm9vbCBhbGxvd011bHRpcGxl
RmlsZXMpCit7CisjaWZuZGVmIFFUX05PX0ZJTEVESUFMT0cKKyAgICBRV2lkZ2V0KiB3aWRnZXQg
PSBzdGF0aWNfY2FzdDxRRGVza3RvcFdlYlZpZXdQcml2YXRlKj4obV92aWV3SW50ZXJmYWNlKS0+
cS0+Y2FudmFzKCk7CisKKyAgICAvLyBRdCBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIGZpbGVz
IHN1Z2dlc3Rpb24sIHNvIHdlIGdldCBqdXN0IHRoZSBmaXJzdCBzdWdnZXN0aW9uLgorICAgIFFT
dHJpbmcgc2VsZWN0ZWRGaWxlTmFtZTsKKyAgICBpZiAoIXNlbGVjdGVkRmlsZU5hbWVzLmlzRW1w
dHkoKSkKKyAgICAgICAgc2VsZWN0ZWRGaWxlTmFtZSA9IHNlbGVjdGVkRmlsZU5hbWVzLmF0KDAp
OworCisgICAgUVN0cmluZ0xpc3QgZmlsZU5hbWVzOworICAgIGlmIChhbGxvd011bHRpcGxlRmls
ZXMpCisgICAgICAgIGZpbGVOYW1lcyA9IFFGaWxlRGlhbG9nOjpnZXRPcGVuRmlsZU5hbWVzKHdp
ZGdldCwgUVN0cmluZygpLCBzZWxlY3RlZEZpbGVOYW1lKTsKKyAgICBlbHNlCisgICAgICAgIGZp
bGVOYW1lcyArPSBRRmlsZURpYWxvZzo6Z2V0T3BlbkZpbGVOYW1lKHdpZGdldCwgUVN0cmluZygp
LCBzZWxlY3RlZEZpbGVOYW1lKTsKKworICAgIHJldHVybiBmaWxlTmFtZXM7CisjZWxzZQorICAg
IHJldHVybiBRU3RyaW5nTGlzdCgpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oCmluZGV4IDgzZDA3M2EuLjI4YTgz
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBh
Z2Vwcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBh
Z2Vwcm94eS5oCkBAIC02MCw2ICs2MCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYW5kbGVEcmFn
TW92ZUV2ZW50KFFHcmFwaGljc1NjZW5lRHJhZ0Ryb3BFdmVudCopOwogICAgIGJvb2wgaGFuZGxl
RHJvcEV2ZW50KFFHcmFwaGljc1NjZW5lRHJhZ0Ryb3BFdmVudCopOwogCisgICAgUVN0cmluZ0xp
c3QgY2hvb3NlRmlsZXMoY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBib29s
IGFsbG93TXVsdGlwbGVGaWxlcyk7CisKICAgICBRUG9pbnQgbV90cmlwbGVDbGljazsKICAgICBR
QmFzaWNUaW1lciBtX3RyaXBsZUNsaWNrVGltZXI7CiB9OwotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105858</attachid>
            <date>2011-08-31 16:41:00 -0700</date>
            <delta_ts>2011-09-09 13:45:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-WK2-implement-support-to-upload-files-in-Qt-WebKi.patch</filename>
            <type>text/plain</type>
            <size>11602</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBkNGRmMGIzMmRmZGViMWM2YWIwN2Q0ZGEyMWM1ZmQ4NWVhZGQxYTc3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMTEgMTI6MDg6MDYgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIFtXSzJdIGltcGxlbWVudCBzdXBwb3J0IHRvIHVwbG9hZCBmaWxlcyBpbiBRdCBX
ZWJLaXQyCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAyOCArKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
T3BlblBhbmVsUGFyYW1ldGVycy5oICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L0NsaWVudEltcGwuY3BwICAgICAgICAgfCAgIDM0ICsrKysrKysrKysrKysrKysrLS0K
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggICAgICAgICAgIHwgICAx
MiArKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
ICAgICB8ICAgMTAgKysrKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaCAgICAgICB8ICAgMTEgKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRl
c2t0b3B3ZWJwYWdlcHJveHkuY3BwICB8ICAgMjUgKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oIHwgICAgMiArCiA4IGZpbGVz
IGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA4Y2U1NmU0Li43ZjhjYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgt
MzEgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XSBbV0syXSBpbXBsZW1lbnQgc3VwcG9ydCB0byB1cGxvYWQgZmlsZXMgaW4gUXQgV2Vi
S2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njcy
MjgKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCB0byB1cGxvYWQgZmls
ZXMgaW4gdGhlIERlc2t0b3AgUXQgV2ViS2l0MiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6
OnNlbGVjdGVkRmlsZU5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgICh0b1F0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKHRvVmlld0ludGVyZmFj
ZSk6CisgICAgICAgIChxdF93a19ydW5PcGVuUGFuZWwpOgorCisgICAgICAgIHF0X3drX3J1bk9w
ZW5QYW5lbCBzdXBwb3J0cyBzaW5nbGUgYW5kIG11bHRpcGxlIGZpbGVzIHNlbGVjdGlvbi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpRdFdlYlBh
Z2VQcm94eSk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6aW5pdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Y2hv
b3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5j
cHA6CisgICAgICAgIChRRGVza3RvcFdlYlBhZ2VQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oOgorCiAyMDExLTA4LTI5ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJU
cmVlIHNob3VsZCBiZWdpbiBlYWNoIHRlc3Qgd2l0aCBhbiBlbXB0eSBjb29raWUgc3RvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oCmluZGV4IGU4
NTQ2ZGMuLjc2OTY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5l
bFBhcmFtZXRlcnMuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgfldlYk9wZW5QYW5l
bFBhcmFtZXRlcnMoKTsKIAogICAgIGJvb2wgYWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmFsbG93TXVsdGlwbGVGaWxlczsgfSAKKyAgICBWZWN0b3I8U3RyaW5nPiBz
ZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5maWxlbmFtZXM7IH0KIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKGNvbnN0IERhdGEm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCA3N2Mw
YWExLi4wNmQ1Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
Y3BwCkBAIC0yOSw4ICsyOSwxMSBAQAogI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgogI2lu
Y2x1ZGUgPFF0V2ViUGFnZVByb3h5Lmg+CiAjaW5jbHVkZSA8Vmlld0ludGVyZmFjZS5oPgorI2lu
Y2x1ZGUgPFdLQXJyYXkuaD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CiAjaW5jbHVkZSA8V0tGcmFt
ZVBvbGljeUxpc3RlbmVyLmg+CisjaW5jbHVkZSA8V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmg+Cisj
aW5jbHVkZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdLVHlwZS5o
PgogI2luY2x1ZGUgPFdLVVJMUmVxdWVzdC5oPgogCkBAIC0zOCwxNSArNDEsMTQgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIFF0V2ViUGFnZVByb3h5KiB0b1F0V2ViUGFnZVBy
b3h5KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgaWYgKGNsaWVudEluZm8pCi0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFF0V2ViUGFnZVByb3h5Kj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotICAgIHJldHVybiAwOworICAgIEFTU0VSVChjbGllbnRJbmZv
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDbGllbnRJbmZvKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT53ZWJQYWdlUHJveHk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgVmll
d0ludGVyZmFjZSogdG9WaWV3SW50ZXJmYWNlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAg
ICAgQVNTRVJUKGNsaWVudEluZm8pOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZpZXdJ
bnRlcmZhY2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q2xpZW50SW5mbyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+dmlld0ludGVyZmFjZTsKIH0KIAogc3RhdGljIGlubGluZSBQb2xpY3lJbnRlcmZhY2UqIHRv
UG9saWN5SW50ZXJmYWNlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNDcsNiArMTQ5LDMw
IEBAIHZvaWQgcXRfd2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiAgICAgdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8p
LT5kaWRDaGFuZ2VTdGF0dXNUZXh0KHFUZXh0KTsKIH0KIAordm9pZCBxdF93a19ydW5PcGVuUGFu
ZWwoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1l
dGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB3a1NlbGVjdGVkRmlsZU5hbWVzID0g
dG9JbXBsKHBhcmFtZXRlcnMpLT5zZWxlY3RlZEZpbGVOYW1lcygpOworCisgICAgUVN0cmluZ0xp
c3Qgc2VsZWN0ZWRGaWxlTmFtZXM7CisgICAgaWYgKCF3a1NlbGVjdGVkRmlsZU5hbWVzLmlzRW1w
dHkoKSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgd2tTZWxlY3RlZEZpbGVOYW1lcy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIHNlbGVjdGVkRmlsZU5hbWVzICs9IHdrU2VsZWN0ZWRG
aWxlTmFtZXMuYXQoaSk7CisKKyAgICBRdFdlYlBhZ2VQcm94eTo6RmlsZUNob29zZXJUeXBlIGFs
bG93TXVsdGlwbGVGaWxlcyA9IFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxl
RmlsZXMocGFyYW1ldGVycykgPyBRdFdlYlBhZ2VQcm94eTo6TXVsdGlwbGVGaWxlc1NlbGVjdGlv
biA6IFF0V2ViUGFnZVByb3h5OjpTaW5nbGVGaWxlU2VsZWN0aW9uOworICAgIGNvbnN0IFFTdHJp
bmdMaXN0IGZpbGVMaXN0ID0gdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+Y2hvb3NlRmls
ZXMoc2VsZWN0ZWRGaWxlTmFtZXMsIGFsbG93TXVsdGlwbGVGaWxlcyk7CisKKyAgICBpZiAoZmls
ZUxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5j
ZWwobGlzdGVuZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPFJlZlB0
cjxBUElPYmplY3Q+ID4gd2tGaWxlcyhmaWxlTGlzdC5zaXplKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmaWxlTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAgd2tGaWxlc1tpXSA9
IFdlYlVSTDo6Y3JlYXRlKFFVcmw6OmZyb21Mb2NhbEZpbGUoZmlsZUxpc3QuYXQoaSkpLnRvU3Ry
aW5nKCkpOworCisgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKGxpc3Rl
bmVyLCB0b0FQSShJbW11dGFibGVBcnJheTo6YWRvcHQod2tGaWxlcykubGVha1JlZigpKSk7Cit9
CisKIHN0YXRpYyBRdDo6TW91c2VCdXR0b24gdG9RdE1vdXNlQnV0dG9uKFdLRXZlbnRNb3VzZUJ1
dHRvbiBidXR0b24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvQ2xpZW50SW1wbC5oCmluZGV4IDQxZjg5OWIuLjQzZTI4NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaApAQCAtMjYsNiArMjYsMTcgQEAKIGV4dGVy
biAiQyIgewogI2VuZGlmCiAKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFZpZXdJbnRlcmZhY2U7Cit9CisKK3N0cnVjdCBDbGllbnRJbmZvIHsKKyAg
ICBRdFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5OworICAgIFdlYktpdDo6Vmlld0ludGVyZmFj
ZSogdmlld0ludGVyZmFjZTsKK307CisKIC8vIGxvYWRlciBjbGllbnQKIHZvaWQgcXRfd2tfZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB2b2lkIHF0X3drX2RpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRXJyb3JS
ZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC00MCw2ICs1MSw3IEBA
IHZvaWQgcXRfd2tfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lCiAKIC8vIHVpIGNsaWVudAogdm9pZCBxdF93a19zZXRT
dGF0dXNUZXh0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKK3ZvaWQgcXRfd2tfcnVuT3BlblBhbmVsKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogLy8gUG9saWN5IGNsaWVudC4KIHZvaWQgcXRf
d2tfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0
dG9uLCBXS1VSTFJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IGY1OTY1MmIuLjc1NzEzYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAt
MTA2LDYgKzEwNiw3IEBAIFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShWaWV3SW50ZXJm
YWNlKiB2aWV3SW50ZXJmYWNlLCBQb2xpY3lJbnRlcmZhY2UqIHBvCiAgICAgLCBtX3ByZWZlcmVu
Y2VzKDApCiAgICAgLCBtX3VuZG9TdGFjayhhZG9wdFB0cihuZXcgUVVuZG9TdGFjayh0aGlzKSkp
CiAgICAgLCBtX2xvYWRQcm9ncmVzcygwKQorICAgICwgbV9jbGllbnRJbmZvKGFkb3B0UHRyKG5l
dyBDbGllbnRJbmZvKSkKIHsKICAgICBBU1NFUlQodmlld0ludGVyZmFjZSk7CiAgICAgbWVtc2V0
KG1fYWN0aW9ucywgMCwgc2l6ZW9mKG1fYWN0aW9ucykpOwpAQCAtMTE4LDkgKzExOSwxMyBAQCBR
dFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFj
ZSwgUG9saWN5SW50ZXJmYWNlKiBwbwogdm9pZCBRdFdlYlBhZ2VQcm94eTo6aW5pdCgpCiB7CiAg
ICAgbV93ZWJQYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CisKKyAgICBtX2NsaWVudElu
Zm8tPnZpZXdJbnRlcmZhY2UgPSBtX3ZpZXdJbnRlcmZhY2U7CisgICAgbV9jbGllbnRJbmZvLT53
ZWJQYWdlUHJveHkgPSB0aGlzOworCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRDbGllbnQg
PSB7CiAgICAgICAgIDAsICAgICAgLyogdmVyc2lvbiAqLwotICAgICAgICB0aGlzLCAgIC8qIGNs
aWVudEluZm8gKi8KKyAgICAgICAgbV9jbGllbnRJbmZvLmdldCgpLCAgIC8qIGNsaWVudEluZm8g
Ki8KICAgICAgICAgcXRfd2tfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKICAgICAg
ICAgMCwgLyogZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUgKi8KICAgICAgICAgcXRfd2tfZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZy
YW1lLApAQCAtMTUyLDggKzE1Nyw5IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmluaXQoKQogICAg
IFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVv
ZihXS1BhZ2VVSUNsaWVudCkpOwogICAgIHVpQ2xpZW50LnZlcnNpb24gPSAwOwotICAgIHVpQ2xp
ZW50LmNsaWVudEluZm8gPSBtX3ZpZXdJbnRlcmZhY2U7CisgICAgdWlDbGllbnQuY2xpZW50SW5m
byA9IG1fY2xpZW50SW5mby5nZXQoKTsKICAgICB1aUNsaWVudC5zZXRTdGF0dXNUZXh0ID0gcXRf
d2tfc2V0U3RhdHVzVGV4dDsKKyAgICB1aUNsaWVudC5ydW5PcGVuUGFuZWwgPSBxdF93a19ydW5P
cGVuUGFuZWw7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHRvQVBJKG1fd2ViUGFnZVByb3h5
LmdldCgpKSwgJnVpQ2xpZW50KTsKIAogICAgIGlmIChtX3BvbGljeUludGVyZmFjZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCBhNmM4NjUz
Li5jNjg2NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuaApAQCAtNDYsNiArNDYsOCBAQCBRVF9FTkRfTkFNRVNQQUNFCiBjbGFzcyBRV0tIaXN0b3J5
OwogY2xhc3MgUVdLUHJlZmVyZW5jZXM7CiAKK2NsYXNzIENsaWVudEluZm87CisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJh
Z09wZXJhdGlvbihRdDo6RHJvcEFjdGlvbnMgYWN0aW9ucyk7CkBAIC02OSw2ICs3MSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIFdlYkFjdGlvbkNvdW50CiAgICAgfTsKIAorICAgIGVudW0gRmlsZUNo
b29zZXJUeXBlIHsKKyAgICAgICAgU2luZ2xlRmlsZVNlbGVjdGlvbiwKKyAgICAgICAgTXVsdGlw
bGVGaWxlc1NlbGVjdGlvbgorICAgIH07CisKICAgICBRdFdlYlBhZ2VQcm94eShXZWJLaXQ6OlZp
ZXdJbnRlcmZhY2UqLCBXZWJLaXQ6OlBvbGljeUludGVyZmFjZSogPSAwLCBXS0NvbnRleHRSZWYg
PSAwLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogICAgIH5RdFdlYlBhZ2VQcm94eSgpOwogCkBAIC0x
NzMsNiArMTgwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQYWdlSXNWaXNpYmxlKGJvb2wp
OwogCisgICAgdmlydHVhbCBRU3RyaW5nTGlzdCBjaG9vc2VGaWxlcyhjb25zdCBRU3RyaW5nTGlz
dCYgc2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSB0eXBlKSB7IHJldHVybiBRU3Ry
aW5nTGlzdCgpOyB9OworCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIHdlYkFjdGlvblRyaWdn
ZXJlZChib29sIGNoZWNrZWQpOwogCkBAIC0yMDYsNiArMjE1LDggQEAgcHJpdmF0ZToKIAogICAg
IE93blB0cjxRVW5kb1N0YWNrPiBtX3VuZG9TdGFjazsKICAgICBpbnQgbV9sb2FkUHJvZ3Jlc3M7
CisKKyAgICBPd25QdHI8Q2xpZW50SW5mbz4gbV9jbGllbnRJbmZvOwogfTsKIAogI2VuZGlmIC8q
IFF0V2ViUGFnZVByb3h5X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCmluZGV4IDQ4YmM5ODAuLjNjN2RjMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5
LmNwcApAQCAtMjAsMTMgKzIwLDE2IEBACiAKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5o
IgogI2luY2x1ZGUgInFkZXNrdG9wd2VicGFnZXByb3h5LmgiCisjaW5jbHVkZSAicWRlc2t0b3B3
ZWJ2aWV3LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJO
YXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgog
I2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRXZlbnQ+CisjaW5jbHVkZSA8UUZp
bGVEaWFsb2c+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVEcmFnRHJvcEV2ZW50PgogI2luY2x1
ZGUgPFFHcmFwaGljc1dpZGdldD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2NhbnZhcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lv
bi5oPgogCkBAIC0yMjQsMyArMjI3LDI1IEBAIHZvaWQgUURlc2t0b3BXZWJQYWdlUHJveHk6OnRp
bWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2KQogICAgIGVsc2UKICAgICAgICAgUU9iamVjdDo6dGlt
ZXJFdmVudChldik7CiB9CisKK1FTdHJpbmdMaXN0IFFEZXNrdG9wV2ViUGFnZVByb3h5OjpjaG9v
c2VGaWxlcyhjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFF0V2ViUGFnZVBy
b3h5OjpGaWxlQ2hvb3NlclR5cGUgdHlwZSkKK3sKKyNpZm5kZWYgUVRfTk9fRklMRURJQUxPRwor
ICAgIFFXaWRnZXQqIHdpZGdldCA9IHN0YXRpY19jYXN0PFFEZXNrdG9wV2ViVmlld1ByaXZhdGUq
PihtX3ZpZXdJbnRlcmZhY2UpLT5xLT5jYW52YXMoKTsKKworICAgIC8vIFF0IGRvZXMgbm90IHN1
cHBvcnQgbXVsdGlwbGUgZmlsZXMgc3VnZ2VzdGlvbiwgc28gd2UgZ2V0IGp1c3QgdGhlIGZpcnN0
IHN1Z2dlc3Rpb24uCisgICAgUVN0cmluZyBzZWxlY3RlZEZpbGVOYW1lOworICAgIGlmICghc2Vs
ZWN0ZWRGaWxlTmFtZXMuaXNFbXB0eSgpKQorICAgICAgICBzZWxlY3RlZEZpbGVOYW1lID0gc2Vs
ZWN0ZWRGaWxlTmFtZXMuYXQoMCk7CisKKyAgICBRU3RyaW5nTGlzdCBmaWxlTmFtZXM7CisgICAg
aWYgKHR5cGUgPT0gTXVsdGlwbGVGaWxlc1NlbGVjdGlvbikKKyAgICAgICAgZmlsZU5hbWVzID0g
UUZpbGVEaWFsb2c6OmdldE9wZW5GaWxlTmFtZXMod2lkZ2V0LCBRU3RyaW5nKCksIHNlbGVjdGVk
RmlsZU5hbWUpOworICAgIGVsc2UKKyAgICAgICAgZmlsZU5hbWVzICs9IFFGaWxlRGlhbG9nOjpn
ZXRPcGVuRmlsZU5hbWUod2lkZ2V0LCBRU3RyaW5nKCksIHNlbGVjdGVkRmlsZU5hbWUpOworCisg
ICAgcmV0dXJuIGZpbGVOYW1lczsKKyNlbHNlCisgICAgcmV0dXJuIFFTdHJpbmdMaXN0KCk7Cisj
ZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3Rv
cHdlYnBhZ2Vwcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2Vi
cGFnZXByb3h5LmgKaW5kZXggODNkMDczYS4uOTcwMTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKQEAgLTYwLDYgKzYwLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhbmRsZURyYWdNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVE
cmFnRHJvcEV2ZW50Kik7CiAgICAgYm9vbCBoYW5kbGVEcm9wRXZlbnQoUUdyYXBoaWNzU2NlbmVE
cmFnRHJvcEV2ZW50Kik7CiAKKyAgICBRU3RyaW5nTGlzdCBjaG9vc2VGaWxlcyhjb25zdCBRU3Ry
aW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFF0V2ViUGFnZVByb3h5OjpGaWxlQ2hvb3NlclR5
cGUpOworCiAgICAgUVBvaW50IG1fdHJpcGxlQ2xpY2s7CiAgICAgUUJhc2ljVGltZXIgbV90cmlw
bGVDbGlja1RpbWVyOwogfTsKLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106914</attachid>
            <date>2011-09-09 13:45:19 -0700</date>
            <delta_ts>2011-09-12 08:52:34 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>0001-Qt-WK2-implement-support-to-upload-files-in-Qt-WebKi.patch</filename>
            <type>text/plain</type>
            <size>11300</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA0MmI4OTMzMThjYzYwYjJkYWQxYjM0NTY3YzQ4YTk2NjdhMzkwMGM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMzAgQXVnIDIwMTEgMTI6MDg6MDYgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIFtXSzJdIGltcGxlbWVudCBzdXBwb3J0IHRvIHVwbG9hZCBmaWxlcyBpbiBRdCBX
ZWJLaXQyCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAyOCArKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9w
ZW5QYW5lbFBhcmFtZXRlcnMuaCAgICAgfCAgICAxICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCAgIHwgICA0MCArKysrKysrKysrKysrKysrKysrKwog
Li4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oICAgfCAgIDE1
ICsrKysrKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgICAg
ICAgICB8ICAgMTYgKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJ
bXBsLmggICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuY3BwICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5oICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9WaWV3SW50ZXJmYWNlLmggICAgICAgIHwgICAgOCArKysrCiA5IGZpbGVzIGNoYW5nZWQs
IDExMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyZmUwZWY0
Li42ZGE5ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDktMDkgIElnb3Ig
T2xpdmVpcmEgIDxpZ29yLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBb
V0syXSBpbXBsZW1lbnQgc3VwcG9ydCB0byB1cGxvYWQgZmlsZXMgaW4gUXQgV2ViS2l0MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcyMjgKKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCB0byB1cGxvYWQgZmlsZXMgaW4gdGhl
IERlc2t0b3AgUXQgV2ViS2l0MiBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OnNlbGVjdGVk
RmlsZU5hbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5j
cHA6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpjaG9vc2VGaWxlcyk6CisgICAg
ICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpvbk9wZW5QYW5lbEZpbGVzU2VsZWN0ZWQpOgor
ICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6b25PcGVuUGFuZWxGaW5pc2hlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcDoKKworICAgICAgICBxdF93a19ydW5PcGVuUGFu
ZWwgc3VwcG9ydHMgc2luZ2xlIGFuZCBtdWx0aXBsZSBmaWxlcyBzZWxlY3Rpb24uCisKKyAgICAg
ICAgKHF0X3drX3J1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoUXRXZWJQYWdlUHJveHk6OmluaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZp
ZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpjaG9v
c2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaDoKKwogMjAx
MS0wOS0wNyAgQWxleGVpIFN2aXRraW5lICA8YXN2aXRraW5lQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBBZGQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byB0ZXN0IHJ1YmJlci1iYW5kaW5nIG92ZXJo
YW5nIGRyYXdpbmcgYWxvbmcgd2l0aCBsYXlvdXQgdGVzdHMgZm9yIGV4aXN0aW5nIENocm9taXVt
IE1hYyBvdmVyaGFuZyBkcmF3aW5nIGluIHRoZSBub24tZ3B1IHBhdGguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaAppbmRleCBlODU0NmRjLi43Njk2
OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIH5XZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
KCk7CiAKICAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5hbGxvd011bHRpcGxlRmlsZXM7IH0gCisgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0ZWRGaWxl
TmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZmlsZW5hbWVzOyB9CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViT3BlblBhbmVsUGFyYW1ldGVycyhjb25zdCBEYXRhJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5k
ZXggNTFlY2JkNC4uOTc2YWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
PFF0RGVjbGFyYXRpdmUvcXNnZXZlbnQuaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0
ZW0uaD4KICNpbmNsdWRlIDxRdEd1aS9RQ3Vyc29yPgorI2luY2x1ZGUgPFF0R3VpL1FGaWxlRGlh
bG9nPgogI2luY2x1ZGUgPFF0R3VpL1FGb2N1c0V2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FHcmFw
aGljc1NjZW5lRXZlbnQ+CiAjaW5jbHVkZSA8UXRHdWkvUUhvdmVyRXZlbnQ+CkBAIC0zNSw2ICsz
Niw3IEBACiAjaW5jbHVkZSA8UXRHdWkvUUtleUV2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FUb3Vj
aEV2ZW50PgogI2luY2x1ZGUgPFF0R3VpL1FXaGVlbEV2ZW50PgorI2luY2x1ZGUgPFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaD4KIAogUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6UURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZShRRGVza3RvcFdlYlZpZXcqIHEsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBxKHEpCkBAIC0zODAsNiArMzgy
LDQ0IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkK
ICAgICBxLT51cGRhdGUoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBjb25zdCBR
U3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2Vy
VHlwZSB0eXBlKQoreworI2lmbmRlZiBRVF9OT19GSUxFRElBTE9HCisgICAgb3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIgPSBsaXN0ZW5lclJlZjsKKworICAgIC8vIFF0IGRvZXMgbm90IHN1cHBvcnQg
bXVsdGlwbGUgZmlsZXMgc3VnZ2VzdGlvbiwgc28gd2UgZ2V0IGp1c3QgdGhlIGZpcnN0IHN1Z2dl
c3Rpb24uCisgICAgUVN0cmluZyBzZWxlY3RlZEZpbGVOYW1lOworICAgIGlmICghc2VsZWN0ZWRG
aWxlTmFtZXMuaXNFbXB0eSgpKQorICAgICAgICBzZWxlY3RlZEZpbGVOYW1lID0gc2VsZWN0ZWRG
aWxlTmFtZXMuYXQoMCk7CisKKyAgICBRV2lkZ2V0KiB3aWRnZXQgPSBxLT5jYW52YXMoKTsKKyAg
ICBmaWxlRGlhbG9nID0gbmV3IFFGaWxlRGlhbG9nKHdpZGdldCwgUVN0cmluZygpLCBzZWxlY3Rl
ZEZpbGVOYW1lKTsKKyAgICBmaWxlRGlhbG9nLT5vcGVuKHRoaXMsIFNMT1Qob25PcGVuUGFuZWxG
aWxlc1NlbGVjdGVkKCkpKTsKKworICAgIGNvbm5lY3QoZmlsZURpYWxvZywgU0lHTkFMKGZpbmlz
aGVkKGludCkpLCB0aGlzLCBTTE9UKG9uT3BlblBhbmVsRmluaXNoZWQoaW50KSkpOworI2VuZGlm
Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6b25PcGVuUGFuZWxGaWxlc1NlbGVj
dGVkKCkKK3sKKyAgICBjb25zdCBRU3RyaW5nTGlzdCBmaWxlTGlzdCA9IGZpbGVEaWFsb2ctPnNl
bGVjdGVkRmlsZXMoKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a0ZpbGVzKGZp
bGVMaXN0LnNpemUoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZUxpc3Qu
c2l6ZSgpOyArK2kpCisgICAgICAgIHdrRmlsZXNbaV0gPSBXZWJVUkw6OmNyZWF0ZShRVXJsOjpm
cm9tTG9jYWxGaWxlKGZpbGVMaXN0LmF0KGkpKS50b1N0cmluZygpKTsKKworICAgIFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciwgdG9B
UEkoSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrRmlsZXMpLmxlYWtSZWYoKSkpOworfQorCit2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6Om9uT3BlblBhbmVsRmluaXNoZWQoaW50IHJlc3VsdCkK
K3sKKyAgICBpZiAocmVzdWx0ID09IFFEaWFsb2c6OlJlamVjdGVkKQorICAgICAgICBXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKG9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKTsKKworICAg
IGZpbGVEaWFsb2ctPmRlbGV0ZUxhdGVyKCk7CisgICAgZmlsZURpYWxvZyA9IDA7Cit9CisKIHN0
YXRpYyBQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiB0b1BvbGljeUFjdGlvbihRRGVza3Rv
cFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9saWN5KQogewogICAgIHN3aXRjaCAocG9saWN5
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vi
dmlld19wLmgKaW5kZXggNGEwN2E1OC4uNjI0OThiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtMjUsMTAgKzI1LDE0
IEBACiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmll
d0ludGVyZmFjZS5oIgogCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisKIGNsYXNzIFFEZXNr
dG9wV2ViVmlldzsKK2NsYXNzIFFGaWxlRGlhbG9nOwogCi1jbGFzcyBRRGVza3RvcFdlYlZpZXdQ
cml2YXRlIDogcHVibGljIFdlYktpdDo6Vmlld0ludGVyZmFjZSwgcHVibGljIFdlYktpdDo6UG9s
aWN5SW50ZXJmYWNlCitjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlIDogcHVibGljIFFPYmpl
Y3QsIHB1YmxpYyBXZWJLaXQ6OlZpZXdJbnRlcmZhY2UsIHB1YmxpYyBXZWJLaXQ6OlBvbGljeUlu
dGVyZmFjZQogeworICAgIFFfT0JKRUNUCiBwdWJsaWM6CiAgICAgUURlc2t0b3BXZWJWaWV3UHJp
dmF0ZShRRGVza3RvcFdlYlZpZXcqLCBXS0NvbnRleHRSZWYgPSAwLCBXS1BhZ2VHcm91cFJlZiA9
IDApOwogCkBAIC00MCw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NyYXNoZWQ7CiAg
ICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxlcjsKIAorcHJp
dmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgb25PcGVuUGFuZWxGaWxlc1NlbGVjdGVkKCk7CisgICAg
dm9pZCBvbk9wZW5QYW5lbEZpbmlzaGVkKGludCByZXN1bHQpOworCiBwcml2YXRlOgogICAgIC8q
IEltcGxlbWVudGF0aW9uIG9mIFZpZXdJbnRlcmZhY2UgKi8KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpOwpAQCAtNzIsMTAgKzgwLDE1IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRG
aWxlTmFtZXMsIFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2VyVHlwZSk7CisKICAgICAvLyBQb2xp
Y3lJbnRlcmZhY2UuCiAgICAgdmlydHVhbCBQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiBu
YXZpZ2F0aW9uUG9saWN5Rm9yVVJMKGNvbnN0IFFVcmwmLCBRdDo6TW91c2VCdXR0b24sIFF0OjpL
ZXlib2FyZE1vZGlmaWVycyk7CiAKICAgICBRU2hhcmVkUG9pbnRlcjxRTWVudT4gYWN0aXZlTWVu
dTsKKworICAgIFFGaWxlRGlhbG9nKiBmaWxlRGlhbG9nOworICAgIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYgb3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7CiB9OwogCiAjZW5kaWYgLyogcWRl
c2t0b3B3ZWJ2aWV3X3BfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuY3BwCmluZGV4IDc3YzBhYTEuLjcxOTFlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5jcHAKQEAgLTI5LDggKzI5LDExIEBACiAjaW5jbHVkZSA8UG9saWN5
SW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8UXRXZWJQYWdlUHJveHkuaD4KICNpbmNsdWRlIDxWaWV3
SW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8V0tBcnJheS5oPgogI2luY2x1ZGUgPFdLRnJhbWUuaD4K
ICNpbmNsdWRlIDxXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaD4KKyNpbmNsdWRlIDxXS09wZW5QYW5l
bFBhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg+CiAj
aW5jbHVkZSA8V0tUeXBlLmg+CiAjaW5jbHVkZSA8V0tVUkxSZXF1ZXN0Lmg+CiAKQEAgLTE0Nyw2
ICsxNTAsMTkgQEAgdm9pZCBxdF93a19zZXRTdGF0dXNUZXh0KFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKICAgICB0b1ZpZXdJbnRlcmZhY2UoY2xp
ZW50SW5mbyktPmRpZENoYW5nZVN0YXR1c1RleHQocVRleHQpOwogfQogCit2b2lkIHF0X3drX3J1
bk9wZW5QYW5lbChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1Jl
ZiBwYXJhbWV0ZXJzLCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHdrU2VsZWN0ZWRGaWxl
TmFtZXMgPSB0b0ltcGwocGFyYW1ldGVycyktPnNlbGVjdGVkRmlsZU5hbWVzKCk7CisKKyAgICBR
U3RyaW5nTGlzdCBzZWxlY3RlZEZpbGVOYW1lczsKKyAgICBpZiAoIXdrU2VsZWN0ZWRGaWxlTmFt
ZXMuaXNFbXB0eSgpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyB3a1NlbGVjdGVkRmls
ZU5hbWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgc2VsZWN0ZWRGaWxlTmFtZXMgKz0gd2tT
ZWxlY3RlZEZpbGVOYW1lcy5hdChpKTsKKworICAgIFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2Vy
VHlwZSBhbGxvd011bHRpcGxlRmlsZXMgPSBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NN
dWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpID8gVmlld0ludGVyZmFjZTo6TXVsdGlwbGVGaWxlc1Nl
bGVjdGlvbiA6IFZpZXdJbnRlcmZhY2U6OlNpbmdsZUZpbGVTZWxlY3Rpb247CisgICAgdG9WaWV3
SW50ZXJmYWNlKGNsaWVudEluZm8pLT5jaG9vc2VGaWxlcyhsaXN0ZW5lciwgc2VsZWN0ZWRGaWxl
TmFtZXMsIGFsbG93TXVsdGlwbGVGaWxlcyk7Cit9CisKIHN0YXRpYyBRdDo6TW91c2VCdXR0b24g
dG9RdE1vdXNlQnV0dG9uKFdLRXZlbnRNb3VzZUJ1dHRvbiBidXR0b24pCiB7CiAgICAgc3dpdGNo
IChidXR0b24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCmluZGV4
IDQxZjg5OWIuLmM2NGQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9DbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudElt
cGwuaApAQCAtNDAsNiArNDAsNyBAQCB2b2lkIHF0X3drX2RpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2FtZURvY3VtZQogCiAvLyB1aSBj
bGllbnQKIHZvaWQgcXRfd2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit2b2lkIHF0X3drX3J1bk9wZW5QYW5l
bChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiwgV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIC8vIFBv
bGljeSBjbGllbnQuCiB2b2lkIHF0X3drX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2Rp
ZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5
TGlzdGVuZXJSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRl
eCBmNTk2NTJiLi5jMTczOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHAKQEAgLTE1NCw2ICsxNTQsNyBAQCB2b2lkIFF0V2ViUGFnZVByb3h5
Ojppbml0KCkKICAgICB1aUNsaWVudC52ZXJzaW9uID0gMDsKICAgICB1aUNsaWVudC5jbGllbnRJ
bmZvID0gbV92aWV3SW50ZXJmYWNlOwogICAgIHVpQ2xpZW50LnNldFN0YXR1c1RleHQgPSBxdF93
a19zZXRTdGF0dXNUZXh0OworICAgIHVpQ2xpZW50LnJ1bk9wZW5QYW5lbCA9IHF0X3drX3J1bk9w
ZW5QYW5lbDsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQodG9BUEkobV93ZWJQYWdlUHJveHku
Z2V0KCkpLCAmdWlDbGllbnQpOwogCiAgICAgaWYgKG1fcG9saWN5SW50ZXJmYWNlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKaW5kZXgg
YzBkZjBmYi4uZTM1OTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuaApAQCAtNzUsNiArNzUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQ
cm9jZXNzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmls
ZU5hbWVzLCBGaWxlQ2hvb3NlclR5cGUgdHlwZSkgeyB9CisKIHByaXZhdGU6CiAgICAgUVRvdWNo
V2ViVmlldyogY29uc3QgbV92aWV3cG9ydFZpZXc7CiAgICAgUVRvdWNoV2ViUGFnZSogY29uc3Qg
bV9wYWdlVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5o
CmluZGV4IDcwYTZmNjMuLmE2NGMxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1ZpZXdJbnRlcmZhY2UuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPFF0Q29yZS9RU2hh
cmVkUG9pbnRlcj4KICNpbmNsdWRlIDxRdENvcmUvUVNpemU+CiAjaW5jbHVkZSA8UXRHdWkvUU1l
bnU+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogY2xhc3MgUVdlYkVycm9yOwogCkBA
IC00Nyw2ICs0OCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFZpZXdJbnRlcmZhY2UK
IHsKIHB1YmxpYzoKKyAgICBlbnVtIEZpbGVDaG9vc2VyVHlwZSB7CisgICAgICAgIFNpbmdsZUZp
bGVTZWxlY3Rpb24sCisgICAgICAgIE11bHRpcGxlRmlsZXNTZWxlY3Rpb24KKyAgICB9OworCiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIFFTaXplIGRyYXdpbmdBcmVhU2l6ZSgpID0gMDsKQEAgLTc3LDYgKzgzLDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJp
bmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBlKSA9IDA7CiB9OwogCiB9
Ci0tIAoxLjcuNC4xCgo=
</data>
<flag name="review"
          id="103470"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="103471"
          type_id="3"
          status="-"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>