<?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>66812</bug_id>
          
          <creation_ts>2011-08-23 14:22:55 -0700</creation_ts>
          <short_desc>[Qt] Spell check platform plugin API enhancement</short_desc>
          <delta_ts>2014-02-03 03:18:43 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dawit A.">adawit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>lindsay.mathieson</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455708</commentid>
    <comment_count>0</comment_count>
    <who name="Dawit A.">adawit</who>
    <bug_when>2011-08-23 14:22:55 -0700</bug_when>
    <thetext>Add several missing functions to the newly create spelling and grammar check platform plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455714</commentid>
    <comment_count>1</comment_count>
      <attachid>104917</attachid>
    <who name="Dawit A.">adawit</who>
    <bug_when>2011-08-23 14:27:12 -0700</bug_when>
    <thetext>Created attachment 104917
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459049</commentid>
    <comment_count>2</comment_count>
      <attachid>104917</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-30 11:43:06 -0700</bug_when>
    <thetext>Comment on attachment 104917
proposed patch

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

&gt; Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.cpp:55
&gt; -    m_spellChecker-&gt;ignoreWordInSpellDocument(word);
&gt; +    m_spellChecker-&gt;ignoreWord(word);

I think a mapping 1 to 1 between the WebKit APIs and the platform plugin is a good thing. Platform plugins are a low level tool for us, it does not needs a beautiful API, it needs a totally unambiguous API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459064</commentid>
    <comment_count>3</comment_count>
    <who name="Dawit A.">adawit</who>
    <bug_when>2011-08-30 12:03:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 104917 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104917&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/TextCheckerClientQt.cpp:55
&gt; &gt; -    m_spellChecker-&gt;ignoreWordInSpellDocument(word);
&gt; &gt; +    m_spellChecker-&gt;ignoreWord(word);
&gt; 
&gt; I think a mapping 1 to 1 between the WebKit APIs and the platform plugin is a good thing. Platform plugins are a low level tool for us, it does not needs a beautiful API, it needs a totally unambiguous API.

Ok. Will revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459067</commentid>
    <comment_count>4</comment_count>
      <attachid>105663</attachid>
    <who name="Dawit A.">adawit</who>
    <bug_when>2011-08-30 12:05:06 -0700</bug_when>
    <thetext>Created attachment 105663
proposed patch II

Reverted back &quot;ignoreWord&quot; to &quot;ignoreWordInSpellDocument&quot; in QWebSpellChecker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459128</commentid>
    <comment_count>5</comment_count>
      <attachid>105663</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-30 13:17:43 -0700</bug_when>
    <thetext>Comment on attachment 105663
proposed patch II

I am not even convinced that should be part of the same plugin.
This is a lot more intrusive than the text checker patch, not sure how do deal with that really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702457</commentid>
    <comment_count>6</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-22 15:40:46 -0700</bug_when>
    <thetext>The patch looks good to me, but will need a rebase for a new review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707698</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-29 11:46:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The patch looks good to me, but will need a rebase for a new review.

You&apos;re right, the patch is rather clean. I think it&apos;s missing a best a version update of the platform plugin interface version string because of the API changes.

But there&apos;s one thing I&apos;m not sure if I understand correctly: How does the UI for this look like? Does the platform plugin pop up a modal dialog? Is there any way for the application / browser to affect the appearance of this? How does it look like in other browsers? Is this still relevant? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707871</commentid>
    <comment_count>8</comment_count>
    <who name="Lindsay Mathieson">lindsay.mathieson</who>
    <bug_when>2012-08-29 14:27:14 -0700</bug_when>
    <thetext>Its a platform plugin framework, it doesn&apos;t have a UI or even spellcheck capability of its own. The Applications using it supply the plugin implementation and UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708308</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-29 22:24:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Its a platform plugin framework, it doesn&apos;t have a UI or even spellcheck capability of its own. The Applications using it supply the plugin implementation and UI.

The interface added with this patch appears to delegate the responsibility of showing a spell-checking UI (dialog) to the platform plugin.

The platform plugin on the other hand is designed to be supplied by the platform (KDE, or for example the Nokia N9 using MeeGo is shipping one such plugin), not the application. In fact there is no application side interface to supply the platform plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708315</commentid>
    <comment_count>10</comment_count>
    <who name="Lindsay Mathieson">lindsay.mathieson</who>
    <bug_when>2012-08-29 22:33:31 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; 
&gt; The interface added with this patch appears to delegate the responsibility of showing a spell-checking UI (dialog) to the platform plugin.

Yes.

&gt; 
&gt; The platform plugin on the other hand is designed to be supplied by the platform (KDE, or for example the Nokia N9 using MeeGo is shipping one such plugin), not the application. In fact there is no application side interface to supply the platform plugin.

I wasn&apos;t under that impression, I thought Platform Plugin meant plugins that were platform dependent (as in KDE, Pure Qt, Meego etc), but implemented by the application either dynamically or statically. Why else have explicit support for static plugins which can only be implemented by applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708393</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-30 01:00:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; The platform plugin on the other hand is designed to be supplied by the platform (KDE, or for example the Nokia N9 using MeeGo is shipping one such plugin), not the application. In fact there is no application side interface to supply the platform plugin.
&gt; 
&gt; I wasn&apos;t under that impression, I thought Platform Plugin meant plugins that were platform dependent (as in KDE, Pure Qt, Meego etc), but implemented by the application either dynamically or statically. Why else have explicit support for static plugins which can only be implemented by applications.

That&apos;s unfortunately not the case. The mechanism for loading the platform plugin expects to find it in the system wide library directory, to be loaded dynamically at run-time. It does not support statically linked platform plugins and applications are not supposed to install libraries into those system locations (because they would affect other unrelated applications).

The platform plugin - like the name says - is supposed to be provided by the platform, the entity distribution Qt usually.

This is why I&apos;m concerned that this may not be the right approach to implementing / delegating the UI of spell checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708553</commentid>
    <comment_count>12</comment_count>
    <who name="Lindsay Mathieson">lindsay.mathieson</who>
    <bug_when>2012-08-30 06:11:38 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; 
&gt; That&apos;s unfortunately not the case. The mechanism for loading the platform plugin expects to find it in the system wide library directory, to be loaded dynamically at run-time. It does not support statically linked platform plugins and applications are not supposed to install libraries into those system locations (because they would affect other unrelated applications).


It most definitely does load static plugins - for a start off I&apos;m testing with them. Also see &quot;bool QtPlatformPlugin::loadStaticallyLinkedPlugin()&quot; in QPlatformPlugin.cpp. Also it loads dynamic plugins from QCoreApplication::libraryPaths() + &quot;/webkit/&quot; which as per the Qt Docs:

&quot;This list will include the installation directory for plugins if it exists (the default installation directory for plugins is INSTALL/plugins, where INSTALL is the directory where Qt was installed). The directory of the application executable (NOT the working directory) is always added, as well as the colon separated entries of the QT_PLUGIN_PATH environment variable.&quot;



&gt; 
&gt; The platform plugin - like the name says - is supposed to be provided by the platform, the entity distribution Qt usually.

I disagree - to me platform plugins are specific to the platform but not neccessarily provided by it. The inline spell plugin is a good example, in KDE its far more useful for it to be customised per app then to be a single global item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935650</commentid>
    <comment_count>13</comment_count>
      <attachid>105663</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-02 21:13:38 -0700</bug_when>
    <thetext>Comment on attachment 105663
proposed patch II

Qt has been removed, clearing review flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975295</commentid>
    <comment_count>14</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:18:43 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104917</attachid>
            <date>2011-08-23 14:27:12 -0700</date>
            <delta_ts>2011-08-30 12:05:06 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug_66812.patch</filename>
            <type>text/plain</type>
            <size>7840</size>
            <attacher name="Dawit A.">adawit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5o
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKaW5kZXggY2Yy
ZWM0YS4uOWM1NzhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmtpdHBs
YXRmb3JtcGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmtpdHBsYXRmb3Jt
cGx1Z2luLmgKQEAgLTE0OSwxNSArMTQ5LDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNDb250aW5vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdG9nZ2xlQ29udGlub3VzU3BlbGxDaGVja2luZygpID0gMDsKIAorICAgIHZpcnR1YWwg
Ym9vbCBpc1NwZWxsaW5nRGlhbG9nU2hvd24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFNob3dTcGVsbGluZ0RpYWxvZyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNwZWxsaW5nRGlhbG9nV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFFTdHJpbmcmKSA9IDA7CisK
ICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFFTdHJpbmcmIHdvcmQpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBRU3RyaW5nJiB3
b3JkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmQoY29uc3QgUVN0cmluZyYgd29y
ZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgUVN0
cmluZyYgd29yZCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVu
Z3RoKSA9IDA7CiAgICAgdmlydHVhbCBRU3RyaW5nIGF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFFTdHJpbmcmIHdvcmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z3Vlc3Nlc0ZvcldvcmQoY29uc3QgUVN0cmluZyYgd29yZCwgY29uc3QgUVN0cmluZyYgY29udGV4
dCwgUVN0cmluZ0xpc3QmIGd1ZXNzZXMpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1t
YXJDaGVja2luZ0VuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJD
aGVja2luZygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29u
c3QgUVN0cmluZyYsIFFMaXN0PEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRp
b24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ0RpYWxvZ1dpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFFTdHJpbmcmIHdvcmQsIGNvbnN0
IEdyYW1tYXJEZXRhaWwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3Ry
aW5nKGNvbnN0IFFTdHJpbmcmIHdvcmQsIFFMaXN0PEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRH
cmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOwogfTsKIAogY2xhc3Mg
UVdlYktpdFBsYXRmb3JtUGx1Z2luIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMTdkM2E3My4uZjI4NTlj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0wOC0yMyAgRGF3aXQgQWxl
bWF5ZWh1ICA8YWRhd2l0QGtkZS5vcmc+CisKKyAgICAgICAgW1F0XSBTcGVsbCBjaGVjayBwbGF0
Zm9ybSBwbHVnaW4gQVBJIGVuaGFuY2VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjgxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzZXZlcmFsIG1pc3NpbmcgZnVuY3Rpb25zIHRvIHRoZSBy
ZWNlbnRseSBhZGRlZCBwbGF0Zm9ybSBwbHVnaW4gQVBJCisgICAgICAgIGZvciBjaGVja2luZyBz
cGVsbGluZyBhbmQgZ3JhbW1hci4KKworICAgICAgICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVsbGlu
Z1VJV2l0aE1pc3NwZWxsZWRXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzaG93U3BlbGxpbmdVSSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c3Bl
bGxpbmdVSUlzU2hvd2luZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudFF0OjppZ25v
cmVXb3JkSW5TcGVsbERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xp
ZW50UXQ6OnNob3dTcGVsbGluZ1VJKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xp
ZW50UXQ6OnNwZWxsaW5nVUlJc1Nob3dpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
ZXJDbGllbnRRdDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1t
YXJTdHJpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQu
aDoKKwogMjAxMS0wOC0yMSAgTGluZHNheSBNYXRoaWVzb24gIDxsaW5kc2F5Lm1hdGhpZXNvbkBn
bWFpbC5jb20+CiAKICAgICAgICAgW1F0XSBGaXhlcyBwcmVtYXR1cmUgcGx1Z2luIHVubG9hZCBi
dWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHAKaW5kZXggMTRiYjZlNi4uODA1NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTU2NiwyNSArNTY2LDI0IEBA
IHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKQog
ewogfQogCi12b2lkIEVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpCit2b2lkIEVkaXRvckNs
aWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiB3
b3JkLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBkZXRhaWwpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBtX3RleHRDaGVja2VyQ2xpZW50LnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0
cmluZyh3b3JkLCBkZXRhaWwpOwogfQogCi12b2lkIEVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVs
bGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCit2b2lkIEVkaXRvckNsaWVu
dFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fdGV4dENoZWNrZXJDbGllbnQudXBk
YXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCh3b3JkKTsKIH0KIAotdm9pZCBFZGl0b3JD
bGllbnRRdDo6c2hvd1NwZWxsaW5nVUkoYm9vbCkKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnNob3dT
cGVsbGluZ1VJKGJvb2wgc2hvdykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fdGV4
dENoZWNrZXJDbGllbnQuc2hvd1NwZWxsaW5nVUkoc2hvdyk7CiB9CiAKIGJvb2wgRWRpdG9yQ2xp
ZW50UXQ6OnNwZWxsaW5nVUlJc1Nob3dpbmcoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3RleHRDaGVja2VyQ2xpZW50LnNwZWxsaW5n
VUlJc1Nob3dpbmcoKTsKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNFZGl0aW5nKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNr
ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHRDaGVj
a2VyQ2xpZW50UXQuY3BwCmluZGV4IGQ4Nzk5MmYuLjJiMDc0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmNwcApA
QCAtNTIsNyArNTIsNyBAQCB2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6Omlnbm9yZVdvcmRJblNw
ZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB3b3JkKQogICAgIGlmICghbG9hZFNwZWxsQ2hlY2tl
cigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NwZWxsQ2hlY2tlci0+aWdub3JlV29yZElu
U3BlbGxEb2N1bWVudCh3b3JkKTsKKyAgICBtX3NwZWxsQ2hlY2tlci0+aWdub3JlV29yZCh3b3Jk
KTsKIH0KIAogdm9pZCBUZXh0Q2hlY2tlckNsaWVudFF0OjpsZWFybldvcmQoY29uc3QgU3RyaW5n
JiB3b3JkKQpAQCAtMTMxLDYgKzEzMSwzMCBAQCB2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6OnRv
Z2dsZUNvbnRpbm91c1NwZWxsQ2hlY2tpbmcoKQogICAgIG1fc3BlbGxDaGVja2VyLT50b2dnbGVD
b250aW5vdXNTcGVsbENoZWNraW5nKCk7CiB9CiAKK3ZvaWQgVGV4dENoZWNrZXJDbGllbnRRdDo6
c2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KQoreworICAgIGlmICghbG9hZFNwZWxsQ2hlY2tlcigp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NwZWxsQ2hlY2tlci0+c2V0U2hvd1NwZWxsaW5n
RGlhbG9nKHNob3cpOworfQorCitib29sIFRleHRDaGVja2VyQ2xpZW50UXQ6OnNwZWxsaW5nVUlJ
c1Nob3dpbmcoKQoreworICAgIGlmICghbG9hZFNwZWxsQ2hlY2tlcigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9zcGVsbENoZWNrZXItPmlzU3BlbGxpbmdEaWFsb2dT
aG93bigpOworfQorCit2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQoreworICAgIGlmICghbG9hZFNw
ZWxsQ2hlY2tlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NwZWxsQ2hlY2tlci0+dXBk
YXRlU3BlbGxpbmdEaWFsb2dXaXRoTWlzc3BlbGxlZFdvcmQod29yZCk7Cit9CisKIGJvb2wgVGV4
dENoZWNrZXJDbGllbnRRdDo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKIHsKICAgICBpZiAo
IWxvYWRTcGVsbENoZWNrZXIoKSkKQEAgLTE0Nyw2ICsxNzEsMjMgQEAgdm9pZCBUZXh0Q2hlY2tl
ckNsaWVudFF0Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKQogICAgIG1fc3BlbGxDaGVja2VyLT50
b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKIH0KIAordm9pZCBUZXh0Q2hlY2tlckNsaWVudFF0Ojp1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25z
dCBHcmFtbWFyRGV0YWlsJiBkZXRhaWwpCit7CisgICAgaWYgKCFsb2FkU3BlbGxDaGVja2VyKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFFXZWJTcGVsbENoZWNrZXI6OkdyYW1tYXJEZXRhaWwg
Z3JhbW1hckRldGFpbDsKKyAgICBncmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsLmxvY2F0
aW9uOworICAgIGdyYW1tYXJEZXRhaWwubGVuZ3RoID0gZGV0YWlsLmxlbmd0aDsKKyAgICBncmFt
bWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IGRldGFpbC51c2VyRGVzY3JpcHRpb247CisgICAg
Y29uc3QgaW50IGNvdW50ID0gZGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgZ3JhbW1hckRldGFpbC5ndWVzc2VzLmFwcGVu
ZChkZXRhaWwuZ3Vlc3Nlcy5hdChpKSk7CisKKyAgICBtX3NwZWxsQ2hlY2tlci0+dXBkYXRlU3Bl
bGxpbmdEaWFsb2dXaXRoR3JhbW1hclN0cmluZyh3b3JkLCBncmFtbWFyRGV0YWlsKTsKK30KKwor
CiBib29sIFRleHRDaGVja2VyQ2xpZW50UXQ6OmxvYWRTcGVsbENoZWNrZXIoKQogewogICAgIGlm
IChtX3NwZWxsQ2hlY2tlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmgKaW5kZXggZTc4Y2UxZC4uZDM0YzY3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0
LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVu
dFF0LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0
Q2hlY2tlckNsaWVudFF0IDogcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKIHB1YmxpYzoKKyAg
ICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBUZXh0Q2hlY2tlckNsaWVudAogICAgIHZpcnR1YWwgdm9p
ZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwg
dm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdM
b2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CkBAIC00OSwxMSArNTAsMTcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdv
cmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQs
IFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIAorICAgIC8vIEltcGxl
bWVudGF0aW9uIG9mIHNwZWxsIGNoZWNrIHJlbGF0ZWQgQVBJcyBmcm9tIEVkaXRvckNsaWVudC5o
CiAgICAgdmlydHVhbCBib29sIGlzQ29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGlub3VzU3BlbGxDaGVja2luZygpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYp
OworICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc3BlbGxpbmdVSUlzU2hvd2luZygpOwogCisgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgZ3Jh
bW1hciByZWxhdGVkIEFQSXMgZnJvbSBFZGl0b3JDbGllbnQuaAogICAgIHZpcnR1YWwgYm9vbCBp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1h
ckNoZWNraW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1h
clN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJik7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBsb2FkU3BlbGxDaGVja2VyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105663</attachid>
            <date>2011-08-30 12:05:06 -0700</date>
            <delta_ts>2013-10-02 21:13:38 -0700</delta_ts>
            <desc>proposed patch II</desc>
            <filename>bug_66812.patch</filename>
            <type>text/plain</type>
            <size>7356</size>
            <attacher name="Dawit A.">adawit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggOGM0YzliNy4uOWJkMDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTYw
LDYgKzYwLDMwIEBACgogICAgICAgICAqIFF0V2ViS2l0LnBybzoKCisyMDExLTA4LTIzICBEYXdp
dCBBbGVtYXllaHUgIDxhZGF3aXRAa2RlLm9yZz4KKworICAgICAgICBbUXRdIFNwZWxsIGNoZWNr
IHBsYXRmb3JtIHBsdWdpbiBBUEkgZW5oYW5jZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNldmVyYWwgbWlzc2luZyBmdW5jdGlvbnMgdG8g
dGhlIHJlY2VudGx5IGFkZGVkIHBsYXRmb3JtIHBsdWdpbiBBUEkKKyAgICAgICAgZm9yIGNoZWNr
aW5nIHNwZWxsaW5nIGFuZCBncmFtbWFyLgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9y
bXBsdWdpbi5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnVwZGF0ZVNw
ZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OnNob3dTcGVsbGluZ1VJKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzcGVsbGluZ1VJSXNTaG93aW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hl
Y2tlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50UXQ6
Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
ZXJDbGllbnRRdDo6c2hvd1NwZWxsaW5nVUkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNr
ZXJDbGllbnRRdDo6c3BlbGxpbmdVSUlzU2hvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tlckNsaWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGll
bnRRdC5oOgorCiAyMDExLTA4LTIxICBMaW5kc2F5IE1hdGhpZXNvbiAgPGxpbmRzYXkubWF0aGll
c29uQGdtYWlsLmNvbT4KCiAgICAgICAgIFtRdF0gRml4ZXMgcHJlbWF0dXJlIHBsdWdpbiB1bmxv
YWQgYnVnCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmtpdHBsYXRmb3Jt
cGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaApp
bmRleCBjZjJlYzRhLi41MGNhZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Via2l0cGxhdGZvcm1wbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Via2l0
cGxhdGZvcm1wbHVnaW4uaApAQCAtMTQ5LDYgKzE0OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQ29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbm91c1NwZWxsQ2hlY2tpbmcoKSA9IDA7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgaXNTcGVsbGluZ0RpYWxvZ1Nob3duKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTaG93U3BlbGxpbmdEaWFsb2coYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTcGVsbGluZ0RpYWxvZ1dpdGhNaXNzcGVsbGVkV29yZChjb25zdCBRU3RyaW5nJikg
PSAwOworCiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBRU3RyaW5nJiB3b3JkKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgUVN0
cmluZyYgd29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmco
Y29uc3QgUVN0cmluZyYgd29yZCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3Nw
ZWxsaW5nTGVuZ3RoKSA9IDA7CkBAIC0xNTcsNyArMTYxLDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja0dy
YW1tYXJPZlN0cmluZyhjb25zdCBRU3RyaW5nJiwgUUxpc3Q8R3JhbW1hckRldGFpbD4mLCBpbnQq
IGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nRGlhbG9nV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgUVN0
cmluZyYgd29yZCwgY29uc3QgR3JhbW1hckRldGFpbCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgUVN0cmluZyYgd29yZCwgUUxpc3Q8R3JhbW1hckRl
dGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9
IDA7CiB9OwogCiBjbGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW4gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCAxNGJiNmU2
Li44MDU1ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcApAQCAtNTY2LDI1ICs1NjYsMjQgQEAgdm9pZCBFZGl0b3JDbGllbnRR
dDo6dGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopCiB7CiB9CiAKLXZvaWQgRWRpdG9y
Q2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcm
LCBjb25zdCBHcmFtbWFyRGV0YWlsJikKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVwZGF0ZVNwZWxs
aW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IEdyYW1tYXJE
ZXRhaWwmIGRldGFpbCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fdGV4dENoZWNr
ZXJDbGllbnQudXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKHdvcmQsIGRldGFpbCk7
CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQoY29uc3QgU3RyaW5nJikKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5n
VUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV90ZXh0Q2hlY2tlckNsaWVudC51cGRhdGVTcGVsbGluZ1VJV2l0aE1p
c3NwZWxsZWRXb3JkKHdvcmQpOwogfQogCi12b2lkIEVkaXRvckNsaWVudFF0OjpzaG93U3BlbGxp
bmdVSShib29sKQordm9pZCBFZGl0b3JDbGllbnRRdDo6c2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV90ZXh0Q2hlY2tlckNsaWVudC5zaG93
U3BlbGxpbmdVSShzaG93KTsKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6c3BlbGxpbmdVSUlz
U2hvd2luZygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIG1fdGV4dENoZWNrZXJDbGllbnQuc3BlbGxpbmdVSUlzU2hvd2luZygpOwogfQog
CiBib29sIEVkaXRvckNsaWVudFF0Ojppc0VkaXRpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5jcHAKaW5k
ZXggZDg3OTkyZi4uOGRlNmNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuY3BwCkBAIC0xMzEsNiArMTMxLDMwIEBA
IHZvaWQgVGV4dENoZWNrZXJDbGllbnRRdDo6dG9nZ2xlQ29udGlub3VzU3BlbGxDaGVja2luZygp
CiAgICAgbV9zcGVsbENoZWNrZXItPnRvZ2dsZUNvbnRpbm91c1NwZWxsQ2hlY2tpbmcoKTsKIH0K
IAordm9pZCBUZXh0Q2hlY2tlckNsaWVudFF0OjpzaG93U3BlbGxpbmdVSShib29sIHNob3cpCit7
CisgICAgaWYgKCFsb2FkU3BlbGxDaGVja2VyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c3BlbGxDaGVja2VyLT5zZXRTaG93U3BlbGxpbmdEaWFsb2coc2hvdyk7Cit9CisKK2Jvb2wgVGV4
dENoZWNrZXJDbGllbnRRdDo6c3BlbGxpbmdVSUlzU2hvd2luZygpCit7CisgICAgaWYgKCFsb2Fk
U3BlbGxDaGVja2VyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3Nw
ZWxsQ2hlY2tlci0+aXNTcGVsbGluZ0RpYWxvZ1Nob3duKCk7Cit9CisKK3ZvaWQgVGV4dENoZWNr
ZXJDbGllbnRRdDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmIHdvcmQpCit7CisgICAgaWYgKCFsb2FkU3BlbGxDaGVja2VyKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3BlbGxDaGVja2VyLT51cGRhdGVTcGVsbGluZ0RpYWxvZ1dpdGhNaXNzcGVs
bGVkV29yZCh3b3JkKTsKK30KKwogYm9vbCBUZXh0Q2hlY2tlckNsaWVudFF0Ojppc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKQogewogICAgIGlmICghbG9hZFNwZWxsQ2hlY2tlcigpKQpAQCAtMTQ3
LDYgKzE3MSwyMyBAQCB2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6OnRvZ2dsZUdyYW1tYXJDaGVj
a2luZygpCiAgICAgbV9zcGVsbENoZWNrZXItPnRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogfQog
Cit2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0
cmluZyhjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkKK3sK
KyAgICBpZiAoIWxvYWRTcGVsbENoZWNrZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUVdl
YlNwZWxsQ2hlY2tlcjo6R3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOworICAgIGdyYW1tYXJE
ZXRhaWwubG9jYXRpb24gPSBkZXRhaWwubG9jYXRpb247CisgICAgZ3JhbW1hckRldGFpbC5sZW5n
dGggPSBkZXRhaWwubGVuZ3RoOworICAgIGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0g
ZGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBjb25zdCBpbnQgY291bnQgPSBkZXRhaWwuZ3Vl
c3Nlcy5zaXplKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAg
ICBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuYXBwZW5kKGRldGFpbC5ndWVzc2VzLmF0KGkpKTsKKwor
ICAgIG1fc3BlbGxDaGVja2VyLT51cGRhdGVTcGVsbGluZ0RpYWxvZ1dpdGhHcmFtbWFyU3RyaW5n
KHdvcmQsIGdyYW1tYXJEZXRhaWwpOworfQorCisKIGJvb2wgVGV4dENoZWNrZXJDbGllbnRRdDo6
bG9hZFNwZWxsQ2hlY2tlcigpCiB7CiAgICAgaWYgKG1fc3BlbGxDaGVja2VyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuaApp
bmRleCBlNzhjZTFkLi5kMzRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50UXQgOiBwdWJsaWMgVGV4
dENoZWNrZXJDbGllbnQgewogcHVibGljOgorICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFRleHRD
aGVja2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcm
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVu
Z3RoKTsKQEAgLTQ5LDExICs1MCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBW
ZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0
IFN0cmluZyYpIHsgfQogCisgICAgLy8gSW1wbGVtZW50YXRpb24gb2Ygc3BlbGwgY2hlY2sgcmVs
YXRlZCBBUElzIGZyb20gRWRpdG9yQ2xpZW50LmgKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW5v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW5v
dXNTcGVsbENoZWNraW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
TWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNob3dTcGVs
bGluZ1VJKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCk7CiAK
KyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBncmFtbWFyIHJlbGF0ZWQgQVBJcyBmcm9tIEVkaXRv
ckNsaWVudC5oCiAgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEdyYW1tYXJEZXRhaWwmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGxvYWRTcGVsbENoZWNrZXIo
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>