<?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>47716</bug_id>
          
          <creation_ts>2010-10-15 02:31:57 -0700</creation_ts>
          <short_desc>[Qt] WebKit2 history, QWKHistory</short_desc>
          <delta_ts>2022-03-01 02:30:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Juha Savolainen">juha.savolainen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294658</commentid>
    <comment_count>0</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-15 02:31:57 -0700</bug_when>
    <thetext>WebKit2-qt needs history, which represents the history of a QWKPage and makes it possible to navigate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294663</commentid>
    <comment_count>1</comment_count>
      <attachid>70844</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-15 02:42:05 -0700</bug_when>
    <thetext>Created attachment 70844
Initial implementation of QWKHistory.

This is initial implementation of QWKHistory. The QWKHistory class represents the history of a QWKPage.
More functionality(including QWKForwardListItem) will be added if this feature/patch is accepted.
All comments/suggestions are welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294690</commentid>
    <comment_count>2</comment_count>
      <attachid>70844</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-15 04:44:29 -0700</bug_when>
    <thetext>Comment on attachment 70844
Initial implementation of QWKHistory.

Obsoleted. EWS failed to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294694</commentid>
    <comment_count>3</comment_count>
      <attachid>70853</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-15 04:51:23 -0700</bug_when>
    <thetext>Created attachment 70853
Initial implementation of QWKHistory.

Just fixed directories in patch so EWS could run this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294695</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-15 04:53:58 -0700</bug_when>
    <thetext>Attachment 70853 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/API/qt/qwkhistory.cpp:25:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/API/qt/qwkhistory.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/UIProcess/API/qt/qwkhistory.h:25:  #ifndef header guard has wrong style, please use: qwkhistory_h  [build/header_guard] [5]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294713</commentid>
    <comment_count>5</comment_count>
      <attachid>70853</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-15 06:00:51 -0700</bug_when>
    <thetext>Comment on attachment 70853
Initial implementation of QWKHistory.

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

&gt; WebKit2/UIProcess/API/qt/qwkhistory.cpp:31
&gt; +QWKHistory::QWKHistory(WebBackForwardList* list)

Doesn&apos;t look right from an ABI perspective... add a constructor to the private QWKHistoryPrivate::create(WebBackForwardList* list) or so

&gt; WebKit2/UIProcess/API/qt/qwkhistory.cpp:32
&gt; +: m_backForwardList(list)

needs indentaton

&gt; WebKit2/UIProcess/API/qt/qwkhistory.cpp:52
&gt; +    return backListCount()+forwardListCount();

needs spaces around +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295416</commentid>
    <comment_count>6</comment_count>
      <attachid>71013</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-18 03:10:43 -0700</bug_when>
    <thetext>Created attachment 71013
patch

Changes after Kenneth&apos;s comments.
Created QWKHistoryPrivate-class which have one static function to create QWKHistory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295681</commentid>
    <comment_count>7</comment_count>
      <attachid>71013</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-18 12:19:08 -0700</bug_when>
    <thetext>Comment on attachment 71013
patch

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

&gt; WebKit2/UIProcess/API/qt/qwkhistory.cpp:39
&gt; +QWKHistory::QWKHistory(WebKit::WebBackForwardList* list)

This is not BC compatible. Our public classes (even in private: section) cannot refer to WebCore / WebKit internals

&gt; WebKit2/UIProcess/API/qt/qwkhistory.h:49
&gt; +    WebKit::WebBackForwardList* m_backForwardList;

This class should take a QWKHistoryPrivate* d pointer, and the WebKit::WebBackForwardList* should be inside that private class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296076</commentid>
    <comment_count>8</comment_count>
      <attachid>71146</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-19 02:41:56 -0700</bug_when>
    <thetext>Created attachment 71146
patch

Thank you Kenneth for a informative comments.

Should we make methods also available to QWKHistoryPrivate, eg. 
int QWKHistoryPrivate::backListCount() const
{
    return WKBackForwardListGetBackListCount(toAPI(m_backForwardList));
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296145</commentid>
    <comment_count>9</comment_count>
      <attachid>71146</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-19 06:40:07 -0700</bug_when>
    <thetext>Comment on attachment 71146
patch

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

Almost there!

&gt; WebKit2/UIProcess/API/qt/qwkhistory.h:45
&gt; +    QWKHistory(QWKHistoryPrivate* historyPrivate);

Please leave this as QWKHistory(); Just make it a friend and you can set the d pointer manually.

&gt; WebKit2/UIProcess/API/qt/qwkpage.cpp:486
&gt; +    return d-&gt;m_history;

in privates we do not add m_.

&gt; WebKit2/UIProcess/API/qt/qwkpage_p.h:88
&gt; +    QWKHistory* m_history;

make this QWKHistory* history;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296147</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-19 06:40:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=71146) [details]
&gt; patch
&gt; 
&gt; Thank you Kenneth for a informative comments.
&gt; 
&gt; Should we make methods also available to QWKHistoryPrivate, eg. 
&gt; int QWKHistoryPrivate::backListCount() const
&gt; {
&gt;     return WKBackForwardListGetBackListCount(toAPI(m_backForwardList));
&gt; }

That is not really needed, we only do that for helper methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296651</commentid>
    <comment_count>11</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-19 23:31:33 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Almost there!

So near, so near, I can almost feel it!

&gt; &gt; WebKit2/UIProcess/API/qt/qwkhistory.h:45
&gt; &gt; +    QWKHistory(QWKHistoryPrivate* historyPrivate);
&gt; 
&gt; Please leave this as QWKHistory(); Just make it a friend and you can set the d pointer manually.

Just one clarification, do you mean that we set d pointer from QWKPagePrivate or QWKHistoryPrivate::createHistory? I quess in QWKHistoryPrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296794</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-20 07:52:00 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; Almost there!
&gt; 
&gt; So near, so near, I can almost feel it!
&gt; 
&gt; &gt; &gt; WebKit2/UIProcess/API/qt/qwkhistory.h:45
&gt; &gt; &gt; +    QWKHistory(QWKHistoryPrivate* historyPrivate);
&gt; &gt; 
&gt; &gt; Please leave this as QWKHistory(); Just make it a friend and you can set the d pointer manually.
&gt; 
&gt; Just one clarification, do you mean that we set d pointer from QWKPagePrivate or QWKHistoryPrivate::createHistory? I quess in QWKHistoryPrivate.

The latter ofcourse :-) Just take a look at WebKit/qt/Api - I&apos;m sure we do this various places :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296869</commentid>
    <comment_count>13</comment_count>
      <attachid>71307</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-10-20 10:45:53 -0700</bug_when>
    <thetext>Created attachment 71307
patch

fixed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296873</commentid>
    <comment_count>14</comment_count>
      <attachid>71307</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-20 10:58:41 -0700</bug_when>
    <thetext>Comment on attachment 71307
patch

Great, keep up the good work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297188</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-20 18:16:38 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 71307:

http/tests/navigation/post-goback-same-url.html
java/lc3/JSObject/ToObject-001.html

Please file bugs against the tests.  The author(s) of the test(s) have been CCed on this bug.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297315</commentid>
    <comment_count>16</comment_count>
      <attachid>71307</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 02:39:56 -0700</bug_when>
    <thetext>Comment on attachment 71307
patch

Clearing flags on attachment: 71307

Committed r70218: &lt;http://trac.webkit.org/changeset/70218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297316</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 02:40:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70844</attachid>
            <date>2010-10-15 02:42:05 -0700</date>
            <delta_ts>2010-10-15 04:44:29 -0700</delta_ts>
            <desc>Initial implementation of QWKHistory.</desc>
            <filename>qwkhistory.patch</filename>
            <type>text/plain</type>
            <size>9716</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IHRydW5rL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRydW5rL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTg0NykKKysrIHRydW5rL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMTAtMTUgIEp1aGEgU2F2b2xh
aW5lbiAgPGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24g
b2YgUVdLSGlzdG9yeS4gVGhlIFFXS0hpc3RvcnkgY2xhc3MgcmVwcmVzZW50cyB0aGUgaGlzdG9y
eSBvZiBhIFFXS1BhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NzcxNgorCisgICAgICAgIEVhY2ggUVdLUGFnZSBpbnN0YW5jZSBjb250YWlucyBh
IGhpc3Rvcnkgb2YgYSB2aXNpdGVkIHBhZ2VzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IFFXS0hp
c3Rvcnk6Omhpc3RvcnkoKS4KKyAgICAgICAgVGhlIFFXS1BhZ2VQcml2YXRlIGNsYXNzIGNyZWF0
ZXMgUVdLSGlzdG9yeSBpbiBjb25zdHJ1Y3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcXdraGlzdG9yeS5jcHA6IEFkZGVkLgorICAgICAgICAoUVdLSGlzdG9yeTo6UVdLSGlzdG9y
eSk6CisgICAgICAgIChRV0tIaXN0b3J5Ojp+UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0
b3J5OjpiYWNrTGlzdENvdW50KTogR2V0cyBpdGVtcyBjb3VudCBpbiBiYWNrLgorICAgICAgICAo
UVdLSGlzdG9yeTo6Zm9yd2FyZExpc3RDb3VudCk6IEdldHMgaXRlbXMgY291bnQgaW4gZm9yd2Fy
ZC4KKyAgICAgICAgKFFXS0hpc3Rvcnk6OmNvdW50KTogR2V0cyBpdGVtcyBjb3VudC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQ
YWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToK
KyAgICAgICAgKFFXS1BhZ2U6Omhpc3RvcnkpOiBSZXR1cm5zIGhpc3Rvcnkgb2JqZWN0LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmg6IEFkZGVkIGhpc3RvcnkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAg
ICAqIFdlYktpdDIucHJvOiBBZGRlZCBXS0JhY2tGb3J3YXJkTGlzdC5oLCBXS0JhY2tGb3J3YXJk
TGlzdC5jcHAgYW5kIG5ldyBmaWxlcy4KKwogMjAxMC0xMC0xNCAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJ
bmRleDogdHJ1bmsvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0cnVuay9XZWJL
aXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA2OTg0MSkKKysrIHRydW5rL1dlYktpdDIvV2ViS2l0
Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIu
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZS5oIFwKQEAgLTIzNSw2ICsyMzYsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3Bw
L1dLUmV0YWluUHRyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3Lmgg
XAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5oIFwKICAgICBVSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5oIFwKQEAgLTM2MCw2ICszNjIsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgXAogICAgIFNo
YXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmNwcCBc
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNw
cCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgXApAQCAt
MzcwLDYgKzM3Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1wbC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcCBcCisgICAgVUlQcm9j
ZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKSW5kZXg6IHRydW5rL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0cnVuay9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDApCisrKyB0cnVu
ay9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVu
IChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAicXdraGlzdG9yeS5oIgorI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1FXS0hpc3Rvcnk6OlFXS0hpc3Rvcnko
V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQorOiBtX2JhY2tGb3J3YXJkTGlzdChsaXN0KQorewor
fQorCitRV0tIaXN0b3J5Ojp+UVdLSGlzdG9yeSgpCit7Cit9CisKK2ludCBRV0tIaXN0b3J5Ojpi
YWNrTGlzdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tCYWNrRm9yd2FyZExpc3RHZXRC
YWNrTGlzdENvdW50KHRvQVBJKG1fYmFja0ZvcndhcmRMaXN0KSk7Cit9CisKK2ludCBRV0tIaXN0
b3J5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tCYWNrRm9yd2Fy
ZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KHRvQVBJKG1fYmFja0ZvcndhcmRMaXN0KSk7Cit9CisK
K2ludCBRV0tIaXN0b3J5Ojpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJhY2tMaXN0Q291
bnQoKStmb3J3YXJkTGlzdENvdW50KCk7Cit9CisKSW5kZXg6IHRydW5rL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2toaXN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuaAkocmV2aXNpb24gMCkKKysrIHRydW5rL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9s
YWluZW5Ad2VlZ28uZmkpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisqLworCisjaWZuZGVmIFFXS0hJU1RPUllfSAorI2RlZmluZSBRV0tISVNUT1JZ
X0gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0PgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKK30KKworY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVD
VAorcHVibGljOgorICAgIFFXS0hpc3RvcnkoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxp
c3QpOworICAgIHZpcnR1YWwgflFXS0hpc3RvcnkoKTsKKworICAgIGludCBiYWNrTGlzdENvdW50
KCkgY29uc3Q7CisgICAgaW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKKyAgICBpbnQgY291
bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCog
bV9iYWNrRm9yd2FyZExpc3Q7Cit9OworCisKKworI2VuZGlmIC8qIHF3a2hpc3RvcnlfaCAqLwpJ
bmRleDogdHJ1bmsvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHRydW5rL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNp
b24gNjk4NDEpCisrKyB0cnVuay9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAKICNpbmNsdWRlICJxd2twYWdlX3AuaCIK
IAogI2luY2x1ZGUgInF3a3ByZWZlcmVuY2VzX3AuaCIKLQogI2luY2x1ZGUgIkNsaWVudEltcGwu
aCIKKyNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5o
IgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJXZWJDb250
ZXh0LmgiCkBAIC01OSwxMSArNTksMTMgQEAgUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQcml2YXRl
KFFXS1BhZ2UqIAogICAgIHBhZ2UgPSB0b0ltcGwobmFtZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFn
ZSgpOwogICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhpcyk7CiAgICAgcGFnZU5hbWVzcGFjZVJl
ZiA9IG5hbWVzcGFjZVJlZjsKKyAgICBtX2hpc3RvcnkgPSBuZXcgUVdLSGlzdG9yeShwYWdlLT5i
YWNrRm9yd2FyZExpc3QoKSk7CiB9CiAKIFFXS1BhZ2VQcml2YXRlOjp+UVdLUGFnZVByaXZhdGUo
KQogewogICAgIHBhZ2UtPmNsb3NlKCk7CisgICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KIAogdm9p
ZCBRV0tQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBRU2l6ZSYgdmlld3BvcnRTaXplLCBQYXNzT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IHByb3h5KQpAQCAtNDY2LDYgKzQ2OCwxMSBAQCB2b2lkIFFX
S1BhZ2U6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoCiAgICAgV0tQYWdlU2V0UGFnZUFuZFRl
eHRab29tRmFjdG9ycyhwYWdlUmVmKCksIHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7
CiB9CiAKK1FXS0hpc3RvcnkqIFFXS1BhZ2U6Omhpc3RvcnkoKSBjb25zdAoreworICAgIHJldHVy
biBkLT5tX2hpc3Rvcnk7Cit9CisKICNpZm5kZWYgUVRfTk9fQUNUSU9OCiB2b2lkIFFXS1BhZ2U6
OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwgYm9vbCkKIHsKSW5kZXg6IHRydW5rL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJ1bmsvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaAkocmV2aXNpb24gNjk4NDEpCisrKyB0cnVu
ay9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
Nyw2ICsxNyw3IEBAIGNsYXNzIFFXS0dyYXBoaWNzV2lkZ2V0OwogY2xhc3MgUVdLUHJlZmVyZW5j
ZXM7CiBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKIGNsYXNzIFF0Vmlld3BvcnRBdHRyaWJ1dGVzUHJp
dmF0ZTsKK2NsYXNzIFFXS0hpc3Rvcnk7CiAKIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS1BhZ2Ug
OiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKQEAgLTk1LDYgKzk2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGFnZVpvb21GYWN0b3IocXJlYWwgem9vbUZhY3Rvcik7CiAgICAgdm9p
ZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHFyZWFsIHBhZ2Vab29tRmFjdG9yLCBxcmVhbCB0
ZXh0Wm9vbUZhY3Rvcik7CiAKKyAgICBRV0tIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7CisKIHB1
YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYp
OwogICAgIFFfU0lHTkFMIHZvaWQgdGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmKTsKSW5kZXg6
IHRydW5rL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0cnVuay9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJldmlzaW9uIDY5
ODQxKQorKysgdHJ1bmsvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8UUtleUV2ZW50PgogCiBjbGFz
cyBRV0tQcmVmZXJlbmNlczsKK2NsYXNzIFFXS0hpc3Rvcnk7CiAKIGNsYXNzIFFXS1BhZ2VQcml2
YXRlIDogV2ViS2l0OjpQYWdlQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTgxLDYgKzgyLDggQEAgcHVi
bGljOgogCiAgICAgUVdLUGFnZSogcTsKIAorICAgIFFXS0hpc3RvcnkqIG1faGlzdG9yeTsKKwog
ICAgIFFBY3Rpb24qIGFjdGlvbnNbUVdLUGFnZTo6V2ViQWN0aW9uQ291bnRdOwogICAgIFFXS1By
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70853</attachid>
            <date>2010-10-15 04:51:23 -0700</date>
            <delta_ts>2022-03-01 02:30:44 -0800</delta_ts>
            <desc>Initial implementation of QWKHistory.</desc>
            <filename>qwkhistory.patch</filename>
            <type>text/plain</type>
            <size>9590</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg0NykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMTAtMTUgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xh
aW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgUVdLSGlzdG9yeS4gVGhl
IFFXS0hpc3RvcnkgY2xhc3MgcmVwcmVzZW50cyB0aGUgaGlzdG9yeSBvZiBhIFFXS1BhZ2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNgorCisg
ICAgICAgIEVhY2ggUVdLUGFnZSBpbnN0YW5jZSBjb250YWlucyBhIGhpc3Rvcnkgb2YgYSB2aXNp
dGVkIHBhZ2VzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IFFXS0hpc3Rvcnk6Omhpc3RvcnkoKS4K
KyAgICAgICAgVGhlIFFXS1BhZ2VQcml2YXRlIGNsYXNzIGNyZWF0ZXMgUVdLSGlzdG9yeSBpbiBj
b25zdHJ1Y3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHA6
IEFkZGVkLgorICAgICAgICAoUVdLSGlzdG9yeTo6UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tI
aXN0b3J5Ojp+UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0b3J5OjpiYWNrTGlzdENvdW50
KTogR2V0cyBpdGVtcyBjb3VudCBpbiBiYWNrLgorICAgICAgICAoUVdLSGlzdG9yeTo6Zm9yd2Fy
ZExpc3RDb3VudCk6IEdldHMgaXRlbXMgY291bnQgaW4gZm9yd2FyZC4KKyAgICAgICAgKFFXS0hp
c3Rvcnk6OmNvdW50KTogR2V0cyBpdGVtcyBjb3VudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3F3a2hpc3RvcnkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAg
ICAgIChRV0tQYWdlUHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2U6
Omhpc3RvcnkpOiBSZXR1cm5zIGhpc3Rvcnkgb2JqZWN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6
IEFkZGVkIGhpc3RvcnkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAqIFdlYktpdDIucHJvOiBB
ZGRlZCBXS0JhY2tGb3J3YXJkTGlzdC5oLCBXS0JhY2tGb3J3YXJkTGlzdC5jcHAgYW5kIG5ldyBm
aWxlcy4KKwogMjAxMC0xMC0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0Mi9XZWJL
aXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA2OTg0
MSkKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAs
NyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dlYktpdDIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
IFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oIFwKQEAgLTIzNSw2ICsyMzYs
NyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAog
ICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkv
cXQvcWdyYXBoaWNzd2t2aWV3LmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5o
IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlX3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5oIFwK
QEAgLTM2MCw2ICszNjIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVk
L1dlYlVSTFJlc3BvbnNlLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRM
aXN0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAgXApAQCAtMzcwLDYgKzM3Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9B
UEkvcXQvQ2xpZW50SW1wbC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2
aWV3LmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVm
ZXJlbmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFp
bmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAicXdraGlzdG9yeS5oIgor
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldLQmFja0ZvcndhcmRM
aXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1FXS0hpc3Rvcnk6OlFXS0hpc3Rv
cnkoV2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQorOiBtX2JhY2tGb3J3YXJkTGlzdChsaXN0KQor
eworfQorCitRV0tIaXN0b3J5Ojp+UVdLSGlzdG9yeSgpCit7Cit9CisKK2ludCBRV0tIaXN0b3J5
OjpiYWNrTGlzdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tCYWNrRm9yd2FyZExpc3RH
ZXRCYWNrTGlzdENvdW50KHRvQVBJKG1fYmFja0ZvcndhcmRMaXN0KSk7Cit9CisKK2ludCBRV0tI
aXN0b3J5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tCYWNrRm9y
d2FyZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KHRvQVBJKG1fYmFja0ZvcndhcmRMaXN0KSk7Cit9
CisKK2ludCBRV0tIaXN0b3J5Ojpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJhY2tMaXN0
Q291bnQoKStmb3J3YXJkTGlzdENvdW50KCk7Cit9CisKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2toaXN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3a2hpc3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2toaXN0b3J5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkp
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjaWZuZGVmIFFXS0hJU1RPUllfSAorI2RlZmluZSBRV0tISVNUT1JZX0gKKworI2luY2x1ZGUg
InF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRT2JqZWN0PgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKK30KKworY2xhc3MgUVdFQktJVF9FWFBPUlQg
UVdLSGlzdG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAg
IFFXS0hpc3RvcnkoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpOworICAgIHZpcnR1
YWwgflFXS0hpc3RvcnkoKTsKKworICAgIGludCBiYWNrTGlzdENvdW50KCkgY29uc3Q7CisgICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKKyAgICBpbnQgY291bnQoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbV9iYWNrRm9yd2FyZExp
c3Q7Cit9OworCisKKworI2VuZGlmIC8qIHF3a2hpc3RvcnlfaCAqLwpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gNjk4NDEpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAK
ICNpbmNsdWRlICJxd2twYWdlX3AuaCIKIAogI2luY2x1ZGUgInF3a3ByZWZlcmVuY2VzX3AuaCIK
LQogI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJxd2toaXN0b3J5LmgiCiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCkBAIC01OSwxMSArNTksMTMgQEAgUVdLUGFn
ZVByaXZhdGU6OlFXS1BhZ2VQcml2YXRlKFFXS1BhZ2UqIAogICAgIHBhZ2UgPSB0b0ltcGwobmFt
ZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFnZSgpOwogICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhp
cyk7CiAgICAgcGFnZU5hbWVzcGFjZVJlZiA9IG5hbWVzcGFjZVJlZjsKKyAgICBtX2hpc3Rvcnkg
PSBuZXcgUVdLSGlzdG9yeShwYWdlLT5iYWNrRm9yd2FyZExpc3QoKSk7CiB9CiAKIFFXS1BhZ2VQ
cml2YXRlOjp+UVdLUGFnZVByaXZhdGUoKQogewogICAgIHBhZ2UtPmNsb3NlKCk7CisgICAgZGVs
ZXRlIG1faGlzdG9yeTsKIH0KIAogdm9pZCBRV0tQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBRU2l6
ZSYgdmlld3BvcnRTaXplLCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IHByb3h5KQpAQCAt
NDY2LDYgKzQ2OCwxMSBAQCB2b2lkIFFXS1BhZ2U6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMo
CiAgICAgV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhwYWdlUmVmKCksIHBhZ2Vab29t
RmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKK1FXS0hpc3RvcnkqIFFXS1BhZ2U6Omhpc3Rv
cnkoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX2hpc3Rvcnk7Cit9CisKICNpZm5kZWYgUVRf
Tk9fQUNUSU9OCiB2b2lkIFFXS1BhZ2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwg
Ym9vbCkKIHsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaAkocmV2aXNpb24gNjk4
NDEpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNyw2ICsxNyw3IEBAIGNsYXNzIFFXS0dyYXBoaWNzV2lkZ2V0OwogY2xhc3MgUVdLUHJl
ZmVyZW5jZXM7CiBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKIGNsYXNzIFF0Vmlld3BvcnRBdHRyaWJ1
dGVzUHJpdmF0ZTsKK2NsYXNzIFFXS0hpc3Rvcnk7CiAKIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFX
S1BhZ2UgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKQEAgLTk1LDYgKzk2LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UGFnZVpvb21GYWN0b3IocXJlYWwgem9vbUZhY3Rvcik7CiAg
ICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHFyZWFsIHBhZ2Vab29tRmFjdG9yLCBx
cmVhbCB0ZXh0Wm9vbUZhY3Rvcik7CiAKKyAgICBRV0tIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7
CisKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0
cmluZyYpOwogICAgIFFfU0lHTkFMIHZvaWQgdGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmKTsK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJldmlzaW9uIDY5ODQxKQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8UUtleUV2ZW50PgogCiBjbGFzcyBRV0tQcmVmZXJl
bmNlczsKK2NsYXNzIFFXS0hpc3Rvcnk7CiAKIGNsYXNzIFFXS1BhZ2VQcml2YXRlIDogV2ViS2l0
OjpQYWdlQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAg
UVdLUGFnZSogcTsKIAorICAgIFFXS0hpc3RvcnkqIG1faGlzdG9yeTsKKwogICAgIFFBY3Rpb24q
IGFjdGlvbnNbUVdLUGFnZTo6V2ViQWN0aW9uQ291bnRdOwogICAgIFFXS1ByZWZlcmVuY2VzKiBw
cmVmZXJlbmNlczsKIAo=
</data>
<flag name="review"
          id="60772"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71013</attachid>
            <date>2010-10-18 03:10:43 -0700</date>
            <delta_ts>2010-10-18 12:19:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>history.diff</filename>
            <type>text/plain</type>
            <size>11983</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTk0NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAtMTggIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xh
aW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgUVdLSGlzdG9yeS4gVGhl
IFFXS0hpc3RvcnkgY2xhc3MgcmVwcmVzZW50cyB0aGUgaGlzdG9yeSBvZiBhIFFXS1BhZ2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNgorCisg
ICAgICAgIEVhY2ggUVdLUGFnZSBpbnN0YW5jZSBjb250YWlucyBhIGhpc3Rvcnkgb2YgYSB2aXNp
dGVkIHBhZ2VzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IFFXS0hpc3Rvcnk6Omhpc3RvcnkoKS4K
KyAgICAgICAgVGhlIFFXS1BhZ2VQcml2YXRlIGNsYXNzIGNyZWF0ZXMgUVdLSGlzdG9yeSBpbiBj
b25zdHJ1Y3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHA6
IEFkZGVkLgorICAgICAgICAoUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkpOiBDcmVh
dGVzIGhpc3Rvcnkgb2JqZWN0LgorICAgICAgICAoUVdLSGlzdG9yeTo6UVdLSGlzdG9yeSk6Cisg
ICAgICAgIChRV0tIaXN0b3J5Ojp+UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0b3J5Ojpi
YWNrTGlzdENvdW50KTogR2V0cyBpdGVtcyBjb3VudCBpbiBiYWNrLgorICAgICAgICAoUVdLSGlz
dG9yeTo6Zm9yd2FyZExpc3RDb3VudCk6IEdldHMgaXRlbXMgY291bnQgaW4gZm9yd2FyZC4KKyAg
ICAgICAgKFFXS0hpc3Rvcnk6OmNvdW50KTogR2V0cyBpdGVtcyBjb3VudC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2toaXN0b3J5X3AuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6
CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFX
S1BhZ2U6Omhpc3RvcnkpOiBSZXR1cm5zIGhpc3Rvcnkgb2JqZWN0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZV9wLmg6IEFkZGVkIGhpc3RvcnkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAqIFdlYktpdDIu
cHJvOiBBZGRlZCBXS0JhY2tGb3J3YXJkTGlzdC5oLCBXS0JhY2tGb3J3YXJkTGlzdC5jcHAgYW5k
IG5ldyBmaWxlcy4KKwogMjAxMC0xMC0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEZpeCBRdCBidWlsZC4KSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNjk5NDYpCisrKyBXZWJLaXQy
L1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNiArMjIxLDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
ZWJLaXQyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBcCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaCBcCkBAIC0yMzYsNiArMjM3LDggQEAgSEVBREVSUyAr
PSBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL2NwcC9XS1JldGFpblB0ci5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3dr
dmlldy5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuaCBcCisgICAgVUlQcm9j
ZXNzL0FQSS9xdC9xd2toaXN0b3J5X3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggXAogICAgIFVJUHJvY2Vzcy9B
UEkvcXQvcXdrcHJlZmVyZW5jZXMuaCBcCkBAIC0zNjQsNiArMzY3LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJM
UmVxdWVzdC5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIFwKQEAgLTM3NCw2ICszNzgs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L0NsaWVudEltcGwuY3BwIFwKICAgICBVSVBy
b2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQv
cXdraGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAgXAogICAg
IFVJUHJvY2Vzcy9BUEkvcXQvcXdrcHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJ
L2NwcC9xdC9XS1N0cmluZ1F0LmNwcCBcCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdraGlzdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
a2hpc3RvcnkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
a2hpc3RvcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKKworI2luY2x1ZGUg
IldLQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisj
aW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1FX
S0hpc3RvcnkqIFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0KiBsaXN0KQoreworICAgIHJldHVybiBuZXcgUVdLSGlzdG9yeShsaXN0KTsK
K30KKworUVdLSGlzdG9yeTo6UVdLSGlzdG9yeShXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCog
bGlzdCkKKyAgICA6IG1fYmFja0ZvcndhcmRMaXN0KGxpc3QpCit7Cit9CisKK1FXS0hpc3Rvcnk6
On5RV0tIaXN0b3J5KCkKK3sKK30KKworaW50IFFXS0hpc3Rvcnk6OmJhY2tMaXN0Q291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQodG9B
UEkobV9iYWNrRm9yd2FyZExpc3QpKTsKK30KKworaW50IFFXS0hpc3Rvcnk6OmZvcndhcmRMaXN0
Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRM
aXN0Q291bnQodG9BUEkobV9iYWNrRm9yd2FyZExpc3QpKTsKK30KKworaW50IFFXS0hpc3Rvcnk6
OmNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYmFja0xpc3RDb3VudCgpICsgZm9yd2FyZExp
c3RDb3VudCgpOworfQorCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9y
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1
aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBxd2toaXN0
b3J5X2gKKyNkZWZpbmUgcXdraGlzdG9yeV9oCisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgi
CisjaW5jbHVkZSA8UU9iamVjdD4KKworY2xhc3MgUVdLSGlzdG9yeVByaXZhdGU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OworfQorCitjbGFzcyBRV0VC
S0lUX0VYUE9SVCBRV0tIaXN0b3J5IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisKKyAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OworICAgIGludCBmb3J3YXJk
TGlzdENvdW50KCkgY29uc3Q7CisgICAgaW50IGNvdW50KCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgUVdLSGlzdG9yeShXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCk7CisgICAgflFX
S0hpc3RvcnkoKTsKKworICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBtX2JhY2tGb3J3
YXJkTGlzdDsKKworICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsKKyAgICBmcmll
bmQgY2xhc3MgUVdLUGFnZVByaXZhdGU7Cit9OworCisKKworI2VuZGlmIC8qIHF3a2hpc3Rvcnlf
aCAqLwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnlfcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5X3AuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5X3AuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNh
dm9sYWluZW4gKGp1aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgcXdraGlzdG9yeV9w
X2gKKyNkZWZpbmUgcXdraGlzdG9yeV9wX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7Cit9CisKK2Ns
YXNzIFFXS0hpc3Rvcnk7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXS0hpc3RvcnlQcml2YXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUVdLSGlzdG9yeSogY3JlYXRlSGlzdG9yeShXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdCogbGlzdCk7Cit9OworCisjZW5kaWYgLyogcXdraGlzdG9yeV9w
X2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDY5
OTQ2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgogCiAj
aW5jbHVkZSAiQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgInF3a2hpc3RvcnkuaCIKKyNpbmNsdWRl
ICJxd2toaXN0b3J5X3AuaCIKICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAi
TG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIK
QEAgLTYwLDExICs2MiwxMyBAQCBRV0tQYWdlUHJpdmF0ZTo6UVdLUGFnZVByaXZhdGUoUVdLUGFn
ZSogCiAgICAgcGFnZSA9IHRvSW1wbChuYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKCk7CiAg
ICAgcGFnZS0+c2V0UGFnZUNsaWVudCh0aGlzKTsKICAgICBwYWdlTmFtZXNwYWNlUmVmID0gbmFt
ZXNwYWNlUmVmOworICAgIG1faGlzdG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0
b3J5KHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKTsKIH0KIAogUVdLUGFnZVByaXZhdGU6On5RV0tQ
YWdlUHJpdmF0ZSgpCiB7CiAgICAgcGFnZS0+Y2xvc2UoKTsKKyAgICBkZWxldGUgbV9oaXN0b3J5
OwogfQogCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjppbml0KGNvbnN0IFFTaXplJiB2aWV3cG9ydFNp
emUsIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gcHJveHkpCkBAIC00NzcsNiArNDgxLDEx
IEBAIHZvaWQgUVdLUGFnZTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycygKICAgICBXS1BhZ2VT
ZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHBhZ2VSZWYoKSwgcGFnZVpvb21GYWN0b3IsIHRleHRa
b29tRmFjdG9yKTsKIH0KIAorUVdLSGlzdG9yeSogUVdLUGFnZTo6aGlzdG9yeSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPm1faGlzdG9yeTsKK30KKwogI2lmbmRlZiBRVF9OT19BQ1RJT04KIHZv
aWQgUVdLUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29sKQogewpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oCShyZXZpc2lvbiA2OTk0NikKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3LDYgKzE3
LDcgQEAgY2xhc3MgUVdLR3JhcGhpY3NXaWRnZXQ7CiBjbGFzcyBRV0tQcmVmZXJlbmNlczsKIGNs
YXNzIFFXS1BhZ2VQcml2YXRlOwogY2xhc3MgUXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlOwor
Y2xhc3MgUVdLSGlzdG9yeTsKIAogY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLUGFnZSA6IHB1Ymxp
YyBRT2JqZWN0IHsKICAgICBRX09CSkVDVApAQCAtOTUsNiArOTYsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQYWdlWm9vbUZhY3RvcihxcmVhbCB6b29tRmFjdG9yKTsKICAgICB2b2lkIHNldFBh
Z2VBbmRUZXh0Wm9vbUZhY3RvcnMocXJlYWwgcGFnZVpvb21GYWN0b3IsIHFyZWFsIHRleHRab29t
RmFjdG9yKTsKIAorICAgIFFXS0hpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKKwogcHVibGljOgog
ICAgIFFfU0lHTkFMIHZvaWQgc3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJik7CiAgICAg
UV9TSUdOQUwgdm9pZCB0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYpOwpJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAkocmV2aXNpb24gNjk5NDYpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKIAogY2xhc3MgUVdLUHJlZmVyZW5jZXM7CiAKKwogY2xhc3MgUVdLUGFnZVByaXZhdGUgOiBX
ZWJLaXQ6OlBhZ2VDbGllbnQgewogcHVibGljOgogICAgIFFXS1BhZ2VQcml2YXRlKFFXS1BhZ2Uq
LCBXS1BhZ2VOYW1lc3BhY2VSZWYpOwpAQCAtODQsNiArODUsOCBAQCBwdWJsaWM6CiAKICAgICBR
V0tQYWdlKiBxOwogCisgICAgUVdLSGlzdG9yeSogbV9oaXN0b3J5OworCiAgICAgUUFjdGlvbiog
YWN0aW9uc1tRV0tQYWdlOjpXZWJBY3Rpb25Db3VudF07CiAgICAgUVdLUHJlZmVyZW5jZXMqIHBy
ZWZlcmVuY2VzOwogCg==
</data>
<flag name="review"
          id="60960"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71146</attachid>
            <date>2010-10-19 02:41:56 -0700</date>
            <delta_ts>2010-10-19 06:40:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>qwkhistory.diff</filename>
            <type>text/plain</type>
            <size>12461</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDA0MCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAtMTkgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xh
aW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgUVdLSGlzdG9yeS4gVGhl
IFFXS0hpc3RvcnkgY2xhc3MgcmVwcmVzZW50cyB0aGUgaGlzdG9yeSBvZiBhIFFXS1BhZ2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNgorCisg
ICAgICAgIEVhY2ggUVdLUGFnZSBpbnN0YW5jZSBjb250YWlucyBhIGhpc3Rvcnkgb2YgYSB2aXNp
dGVkIHBhZ2VzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IFFXS0hpc3Rvcnk6Omhpc3RvcnkoKS4K
KyAgICAgICAgVGhlIFFXS1BhZ2VQcml2YXRlIGNsYXNzIGNyZWF0ZXMgUVdLSGlzdG9yeSBpbiBj
b25zdHJ1Y3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHA6
IEFkZGVkLgorICAgICAgICAoUVdLSGlzdG9yeVByaXZhdGU6OlFXS0hpc3RvcnlQcml2YXRlKToK
KyAgICAgICAgKFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KTogQ3JlYXRlcyBoaXN0
b3J5IG9iamVjdC4KKyAgICAgICAgKFFXS0hpc3RvcnlQcml2YXRlOjp+UVdLSGlzdG9yeVByaXZh
dGUpOgorICAgICAgICAoUVdLSGlzdG9yeTo6UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0
b3J5Ojp+UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0b3J5OjpiYWNrTGlzdENvdW50KTog
R2V0cyBpdGVtcyBjb3VudCBpbiBiYWNrLgorICAgICAgICAoUVdLSGlzdG9yeTo6Zm9yd2FyZExp
c3RDb3VudCk6IEdldHMgaXRlbXMgY291bnQgaW4gZm9yd2FyZC4KKyAgICAgICAgKFFXS0hpc3Rv
cnk6OmNvdW50KTogR2V0cyBpdGVtcyBjb3VudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F3a2hpc3RvcnkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0
b3J5X3AuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoK
KyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQ
YWdlUHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2U6Omhpc3Rvcnkp
OiBSZXR1cm5zIGhpc3Rvcnkgb2JqZWN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6IEFkZGVkIGhp
c3RvcnkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAqIFdlYktpdDIucHJvOiBBZGRlZCBXS0Jh
Y2tGb3J3YXJkTGlzdC5oLCBXS0JhY2tGb3J3YXJkTGlzdC5jcHAgYW5kIG5ldyBmaWxlcy4KKwog
MjAxMC0xMC0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcwMDMwKQorKysgV2Vi
S2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIEhFQURF
UlMgKz0gXAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dlYktpdDIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
IFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oIFwKQEAgLTIzOCw2ICsyMzks
OCBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAog
ICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkv
cXQvcWdyYXBoaWNzd2t2aWV3LmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5o
IFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBcCiAg
ICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5oIFwKQEAgLTM2Nyw2ICszNzAsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgXAogICAg
IFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmNw
cCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgXApA
QCAtMzc3LDYgKzM4MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1wbC5j
cHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcCBcCisgICAgVUlQ
cm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5jcHAgXAogICAg
IFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWlu
ZW5Ad2VlZ28uZmkpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdraGlzdG9yeS5o
IgorCisjaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3QuaCIKKyNpbmNsdWRlICJxd2toaXN0b3J5X3AuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworUVdLSGlzdG9yeVByaXZhdGU6OlFXS0hpc3RvcnlQcml2YXRlKFdlYktpdDo6
V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQorICAgIDogbV9iYWNrRm9yd2FyZExpc3QobGlzdCkK
K3sKK30KKworUVdLSGlzdG9yeSogUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCit7CisgICAgcmV0dXJuIG5ldyBRV0tIaXN0
b3J5KG5ldyBRV0tIaXN0b3J5UHJpdmF0ZShsaXN0KSk7Cit9CisKK1FXS0hpc3RvcnlQcml2YXRl
Ojp+UVdLSGlzdG9yeVByaXZhdGUoKQoreworfQorCitRV0tIaXN0b3J5OjpRV0tIaXN0b3J5KFFX
S0hpc3RvcnlQcml2YXRlKiBoaXN0b3J5UHJpdmF0ZSkKKyAgICA6IGQoaGlzdG9yeVByaXZhdGUp
Cit7Cit9CisKK1FXS0hpc3Rvcnk6On5RV0tIaXN0b3J5KCkKK3sKKyAgICBkZWxldGUgZDsKK30K
KworaW50IFFXS0hpc3Rvcnk6OmJhY2tMaXN0Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBX
S0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQodG9BUEkoZC0+bV9iYWNrRm9yd2FyZExp
c3QpKTsKK30KKworaW50IFFXS0hpc3Rvcnk6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0Q291bnQodG9BUEkoZC0+
bV9iYWNrRm9yd2FyZExpc3QpKTsKK30KKworaW50IFFXS0hpc3Rvcnk6OmNvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gYmFja0xpc3RDb3VudCgpICsgZm9yd2FyZExpc3RDb3VudCgpOworfQor
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAo
anVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBxd2toaXN0b3J5X2gKKyNkZWZpbmUg
cXdraGlzdG9yeV9oCisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UU9i
amVjdD4KKworY2xhc3MgUVdLSGlzdG9yeVByaXZhdGU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OworfQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tI
aXN0b3J5IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgaW50
IGJhY2tMaXN0Q291bnQoKSBjb25zdDsKKyAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0
OworICAgIGludCBjb3VudCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFFXS0hpc3RvcnkoUVdL
SGlzdG9yeVByaXZhdGUqIGhpc3RvcnlQcml2YXRlKTsKKyAgICB+UVdLSGlzdG9yeSgpOworCisg
ICAgUVdLSGlzdG9yeVByaXZhdGUqIGQ7CisgICAgZnJpZW5kIGNsYXNzIFFXS0hpc3RvcnlQcml2
YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKK307CisKKyNlbmRpZiAvKiBx
d2toaXN0b3J5X2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5
X3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeV9w
LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeV9w
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmkpCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIHF3
a2hpc3RvcnlfcF9oCisjZGVmaW5lIHF3a2hpc3RvcnlfcF9oCisKKyNpbmNsdWRlICJxd2Via2l0
Z2xvYmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0
OworfQorCitjbGFzcyBRV0tIaXN0b3J5OworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tIaXN0
b3J5UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFFXS0hpc3RvcnkqIGNyZWF0ZUhpc3Rv
cnkoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpOworCitwcml2YXRlOgorICAgIFFX
S0hpc3RvcnlQcml2YXRlKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KTsKKyAgICB+
UVdLSGlzdG9yeVByaXZhdGUoKTsKKworICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBt
X2JhY2tGb3J3YXJkTGlzdDsKKworICAgIGZyaWVuZCBjbGFzcyBRV0tIaXN0b3J5OworfTsKKwor
I2VuZGlmIC8qIHF3a2hpc3RvcnlfcF9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
a3BhZ2UuY3BwCShyZXZpc2lvbiA3MDAzMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgInF3
a3ByZWZlcmVuY2VzX3AuaCIKIAogI2luY2x1ZGUgIkNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJx
d2toaXN0b3J5LmgiCisjaW5jbHVkZSAicXdraGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAiRmluZElu
ZGljYXRvci5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCkBAIC02MCwxMSArNjIsMTMgQEAgUVdLUGFnZVByaXZhdGU6
OlFXS1BhZ2VQcml2YXRlKFFXS1BhZ2UqIAogICAgIHBhZ2UgPSB0b0ltcGwobmFtZXNwYWNlUmVm
KS0+Y3JlYXRlV2ViUGFnZSgpOwogICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhpcyk7CiAgICAg
cGFnZU5hbWVzcGFjZVJlZiA9IG5hbWVzcGFjZVJlZjsKKyAgICBtX2hpc3RvcnkgPSBRV0tIaXN0
b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeShwYWdlLT5iYWNrRm9yd2FyZExpc3QoKSk7CiB9CiAK
IFFXS1BhZ2VQcml2YXRlOjp+UVdLUGFnZVByaXZhdGUoKQogewogICAgIHBhZ2UtPmNsb3NlKCk7
CisgICAgZGVsZXRlIG1faGlzdG9yeTsKIH0KIAogdm9pZCBRV0tQYWdlUHJpdmF0ZTo6aW5pdChj
b25zdCBRU2l6ZSYgdmlld3BvcnRTaXplLCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IHBy
b3h5KQpAQCAtNDc3LDYgKzQ4MSwxMSBAQCB2b2lkIFFXS1BhZ2U6OnNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMoCiAgICAgV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhwYWdlUmVmKCks
IHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAKK1FXS0hpc3RvcnkqIFFXS1Bh
Z2U6Omhpc3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX2hpc3Rvcnk7Cit9CisKICNp
Zm5kZWYgUVRfTk9fQUNUSU9OCiB2b2lkIFFXS1BhZ2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9u
IGFjdGlvbiwgYm9vbCkKIHsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaAkocmV2
aXNpb24gNzAwMzApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw3IEBAIGNsYXNzIFFXS0dyYXBoaWNzV2lkZ2V0OwogY2xh
c3MgUVdLUHJlZmVyZW5jZXM7CiBjbGFzcyBRV0tQYWdlUHJpdmF0ZTsKIGNsYXNzIFF0Vmlld3Bv
cnRBdHRyaWJ1dGVzUHJpdmF0ZTsKK2NsYXNzIFFXS0hpc3Rvcnk7CiAKIGNsYXNzIFFXRUJLSVRf
RVhQT1JUIFFXS1BhZ2UgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKQEAgLTk1LDYg
Kzk2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVpvb21GYWN0b3IocXJlYWwgem9vbUZh
Y3Rvcik7CiAgICAgdm9pZCBzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHFyZWFsIHBhZ2Vab29t
RmFjdG9yLCBxcmVhbCB0ZXh0Wm9vbUZhY3Rvcik7CiAKKyAgICBRV0tIaXN0b3J5KiBoaXN0b3J5
KCkgY29uc3Q7CisKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHN0YXR1c0Jhck1lc3NhZ2Uo
Y29uc3QgUVN0cmluZyYpOwogICAgIFFfU0lHTkFMIHZvaWQgdGl0bGVDaGFuZ2VkKGNvbnN0IFFT
dHJpbmcmKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHJldmlzaW9u
IDcwMDMwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAKIGNsYXNzIFFXS1ByZWZlcmVuY2VzOwogCisKIGNs
YXNzIFFXS1BhZ2VQcml2YXRlIDogV2ViS2l0OjpQYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBR
V0tQYWdlUHJpdmF0ZShRV0tQYWdlKiwgV0tQYWdlTmFtZXNwYWNlUmVmKTsKQEAgLTg0LDYgKzg1
LDggQEAgcHVibGljOgogCiAgICAgUVdLUGFnZSogcTsKIAorICAgIFFXS0hpc3RvcnkqIG1faGlz
dG9yeTsKKwogICAgIFFBY3Rpb24qIGFjdGlvbnNbUVdLUGFnZTo6V2ViQWN0aW9uQ291bnRdOwog
ICAgIFFXS1ByZWZlcmVuY2VzKiBwcmVmZXJlbmNlczsKIAo=
</data>
<flag name="review"
          id="61127"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71307</attachid>
            <date>2010-10-20 10:45:53 -0700</date>
            <delta_ts>2010-10-21 02:39:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>qwkhistory.diff</filename>
            <type>text/plain</type>
            <size>12266</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDEzMCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAtMjAgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xh
aW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgUVdLSGlzdG9yeS4gVGhl
IFFXS0hpc3RvcnkgY2xhc3MgcmVwcmVzZW50cyB0aGUgaGlzdG9yeSBvZiBhIFFXS1BhZ2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzcxNgorCisg
ICAgICAgIEVhY2ggUVdLUGFnZSBpbnN0YW5jZSBjb250YWlucyBhIGhpc3Rvcnkgb2YgYSB2aXNp
dGVkIHBhZ2VzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IFFXS0hpc3Rvcnk6Omhpc3RvcnkoKS4K
KyAgICAgICAgVGhlIFFXS1BhZ2VQcml2YXRlIGNsYXNzIGNyZWF0ZXMgUVdLSGlzdG9yeSBpbiBj
b25zdHJ1Y3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHA6
IEFkZGVkLgorICAgICAgICAoUVdLSGlzdG9yeVByaXZhdGU6OlFXS0hpc3RvcnlQcml2YXRlKToK
KyAgICAgICAgKFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KTogQ3JlYXRlcyBoaXN0
b3J5IG9iamVjdC4KKyAgICAgICAgKFFXS0hpc3RvcnlQcml2YXRlOjp+UVdLSGlzdG9yeVByaXZh
dGUpOgorICAgICAgICAoUVdLSGlzdG9yeTo6UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0
b3J5Ojp+UVdLSGlzdG9yeSk6CisgICAgICAgIChRV0tIaXN0b3J5OjpiYWNrTGlzdENvdW50KTog
R2V0cyBpdGVtcyBjb3VudCBpbiBiYWNrLgorICAgICAgICAoUVdLSGlzdG9yeTo6Zm9yd2FyZExp
c3RDb3VudCk6IEdldHMgaXRlbXMgY291bnQgaW4gZm9yd2FyZC4KKyAgICAgICAgKFFXS0hpc3Rv
cnk6OmNvdW50KTogR2V0cyBpdGVtcyBjb3VudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F3a2hpc3RvcnkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2toaXN0
b3J5X3AuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoK
KyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQ
YWdlUHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2U6Omhpc3Rvcnkp
OiBSZXR1cm5zIGhpc3Rvcnkgb2JqZWN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmg6IEFkZGVkIGhp
c3RvcnkgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAqIFdlYktpdDIucHJvOiBBZGRlZCBXS0Jh
Y2tGb3J3YXJkTGlzdC5oLCBXS0JhY2tGb3J3YXJkTGlzdC5jcHAgYW5kIG5ldyBmaWxlcy4KKwog
MjAxMC0xMC0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDcwMTI3KQorKysgV2Vi
S2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIEhFQURF
UlMgKz0gXAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dlYktpdDIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
IFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oIFwKQEAgLTIzOCw2ICsyMzks
OCBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAog
ICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkv
cXQvcWdyYXBoaWNzd2t2aWV3LmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5o
IFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL3F0L3F3a3BhZ2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBcCiAg
ICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5oIFwKQEAgLTM2OCw2ICszNzEsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgXAogICAg
IFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmNw
cCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgXApA
QCAtMzc4LDYgKzM4Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1wbC5j
cHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcCBcCisgICAgVUlQ
cm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5jcHAgXAogICAg
IFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2toaXN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSnVoYSBTYXZvbGFpbmVuIChqdWhhLnNhdm9sYWlu
ZW5Ad2VlZ28uZmkpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdraGlzdG9yeS5o
IgorCisjaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3QuaCIKKyNpbmNsdWRlICJxd2toaXN0b3J5X3AuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworUVdLSGlzdG9yeVByaXZhdGU6OlFXS0hpc3RvcnlQcml2YXRlKFdlYktpdDo6
V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0KQorICAgIDogbV9iYWNrRm9yd2FyZExpc3QobGlzdCkK
K3sKK30KKworUVdLSGlzdG9yeSogUVdLSGlzdG9yeVByaXZhdGU6OmNyZWF0ZUhpc3RvcnkoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3QqIGxpc3QpCit7CisgICAgUVdLSGlzdG9yeSogaGlzdG9y
eSA9IG5ldyBRV0tIaXN0b3J5KCk7CisgICAgaGlzdG9yeS0+ZCA9IG5ldyBRV0tIaXN0b3J5UHJp
dmF0ZShsaXN0KTsKKyAgICByZXR1cm4gaGlzdG9yeTsKK30KKworUVdLSGlzdG9yeVByaXZhdGU6
On5RV0tIaXN0b3J5UHJpdmF0ZSgpCit7Cit9CisKK1FXS0hpc3Rvcnk6OlFXS0hpc3RvcnkoKQor
eworfQorCitRV0tIaXN0b3J5Ojp+UVdLSGlzdG9yeSgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisK
K2ludCBRV0tIaXN0b3J5OjpiYWNrTGlzdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tC
YWNrRm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KHRvQVBJKGQtPm1fYmFja0ZvcndhcmRMaXN0
KSk7Cit9CisKK2ludCBRV0tIaXN0b3J5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KHRvQVBJKGQtPm1f
YmFja0ZvcndhcmRMaXN0KSk7Cit9CisKK2ludCBRV0tIaXN0b3J5Ojpjb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGJhY2tMaXN0Q291bnQoKSArIGZvcndhcmRMaXN0Q291bnQoKTsKK30KKwpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdraGlzdG9yeS5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnkuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBKdWhhIFNhdm9sYWluZW4gKGp1
aGEuc2F2b2xhaW5lbkB3ZWVnby5maSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgcXdraGlzdG9yeV9oCisjZGVmaW5lIHF3
a2hpc3RvcnlfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFPYmpl
Y3Q+CisKK2NsYXNzIFFXS0hpc3RvcnlQcml2YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKK30KKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLSGlz
dG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIGludCBi
YWNrTGlzdENvdW50KCkgY29uc3Q7CisgICAgaW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsK
KyAgICBpbnQgY291bnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRV0tIaXN0b3J5KCk7Cisg
ICAgflFXS0hpc3RvcnkoKTsKKworICAgIFFXS0hpc3RvcnlQcml2YXRlKiBkOworICAgIGZyaWVu
ZCBjbGFzcyBRV0tIaXN0b3J5UHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgUVdLUGFnZVByaXZh
dGU7Cit9OworCisjZW5kaWYgLyogcXdraGlzdG9yeV9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdraGlzdG9yeV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a2hpc3RvcnlfcC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a2hpc3RvcnlfcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEp1aGEgU2F2b2xhaW5lbiAoanVoYS5zYXZvbGFpbmVu
QHdlZWdvLmZpKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworI2lmbmRlZiBxd2toaXN0b3J5X3BfaAorI2RlZmluZSBxd2toaXN0b3J5X3Bf
aAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKK30KKworY2xhc3MgUVdLSGlzdG9yeTsKKworY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUVdLSGlzdG9yeVByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBR
V0tIaXN0b3J5KiBjcmVhdGVIaXN0b3J5KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0
KTsKKworcHJpdmF0ZToKKyAgICBRV0tIaXN0b3J5UHJpdmF0ZShXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdCogbGlzdCk7CisgICAgflFXS0hpc3RvcnlQcml2YXRlKCk7CisKKyAgICBXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdCogbV9iYWNrRm9yd2FyZExpc3Q7CisKKyAgICBmcmllbmQgY2xh
c3MgUVdLSGlzdG9yeTsKK307CisKKyNlbmRpZiAvKiBxd2toaXN0b3J5X3BfaCAqLwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gNzAxMjcpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYg
KzI0LDggQEAKICNpbmNsdWRlICJxd2twcmVmZXJlbmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGll
bnRJbXBsLmgiCisjaW5jbHVkZSAicXdraGlzdG9yeS5oIgorI2luY2x1ZGUgInF3a2hpc3Rvcnlf
cC5oIgogI2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtNjAsMTEgKzYy
LDEzIEBAIFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZShRV0tQYWdlKiAKICAgICBwYWdl
ID0gdG9JbXBsKG5hbWVzcGFjZVJlZiktPmNyZWF0ZVdlYlBhZ2UoKTsKICAgICBwYWdlLT5zZXRQ
YWdlQ2xpZW50KHRoaXMpOwogICAgIHBhZ2VOYW1lc3BhY2VSZWYgPSBuYW1lc3BhY2VSZWY7Cisg
ICAgaGlzdG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHBhZ2UtPmJhY2tG
b3J3YXJkTGlzdCgpKTsKIH0KIAogUVdLUGFnZVByaXZhdGU6On5RV0tQYWdlUHJpdmF0ZSgpCiB7
CiAgICAgcGFnZS0+Y2xvc2UoKTsKKyAgICBkZWxldGUgaGlzdG9yeTsKIH0KIAogdm9pZCBRV0tQ
YWdlUHJpdmF0ZTo6aW5pdChjb25zdCBRU2l6ZSYgdmlld3BvcnRTaXplLCBQYXNzT3duUHRyPERy
YXdpbmdBcmVhUHJveHk+IHByb3h5KQpAQCAtNDc3LDYgKzQ4MSwxMSBAQCB2b2lkIFFXS1BhZ2U6
OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoCiAgICAgV0tQYWdlU2V0UGFnZUFuZFRleHRab29t
RmFjdG9ycyhwYWdlUmVmKCksIHBhZ2Vab29tRmFjdG9yLCB0ZXh0Wm9vbUZhY3Rvcik7CiB9CiAK
K1FXS0hpc3RvcnkqIFFXS1BhZ2U6Omhpc3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBkLT5o
aXN0b3J5OworfQorCiAjaWZuZGVmIFFUX05PX0FDVElPTgogdm9pZCBRV0tQYWdlOjp0cmlnZ2Vy
QWN0aW9uKFdlYkFjdGlvbiBhY3Rpb24sIGJvb2wpCiB7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlLmgJKHJldmlzaW9uIDcwMTI3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQCBjbGFzcyBRV0tHcmFw
aGljc1dpZGdldDsKIGNsYXNzIFFXS1ByZWZlcmVuY2VzOwogY2xhc3MgUVdLUGFnZVByaXZhdGU7
CiBjbGFzcyBRdFZpZXdwb3J0QXR0cmlidXRlc1ByaXZhdGU7CitjbGFzcyBRV0tIaXN0b3J5Owog
CiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV0tQYWdlIDogcHVibGljIFFPYmplY3QgewogICAgIFFf
T0JKRUNUCkBAIC05NSw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2Vab29tRmFj
dG9yKHFyZWFsIHpvb21GYWN0b3IpOwogICAgIHZvaWQgc2V0UGFnZUFuZFRleHRab29tRmFjdG9y
cyhxcmVhbCBwYWdlWm9vbUZhY3RvciwgcXJlYWwgdGV4dFpvb21GYWN0b3IpOwogCisgICAgUVdL
SGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0OworCiBwdWJsaWM6CiAgICAgUV9TSUdOQUwgdm9pZCBz
dGF0dXNCYXJNZXNzYWdlKGNvbnN0IFFTdHJpbmcmKTsKICAgICBRX1NJR05BTCB2b2lkIHRpdGxl
Q2hhbmdlZChjb25zdCBRU3RyaW5nJik7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdrcGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2VfcC5oCShyZXZpc2lvbiA3MDEyNykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAKICAgICBR
V0tQYWdlKiBxOwogCisgICAgUVdLSGlzdG9yeSogaGlzdG9yeTsKKwogICAgIFFBY3Rpb24qIGFj
dGlvbnNbUVdLUGFnZTo6V2ViQWN0aW9uQ291bnRdOwogICAgIFFXS1ByZWZlcmVuY2VzKiBwcmVm
ZXJlbmNlczsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>