<?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>74097</bug_id>
          
          <creation_ts>2011-12-08 09:32:48 -0800</creation_ts>
          <short_desc>[Chromium] Continue compositions at the current selection if composition node is removed.</short_desc>
          <delta_ts>2012-10-17 12:57:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="John Knottenbelt">jknotten</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>fishd</cc>
    
    <cc>hbono</cc>
    
    <cc>olilan</cc>
    
    <cc>rniwa</cc>
    
    <cc>suzhe</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517475</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-12-08 09:32:48 -0800</bug_when>
    <thetext>[Chromium] Continue compositions at the current selection if composition node is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517476</commentid>
    <comment_count>1</comment_count>
      <attachid>118407</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-12-08 09:33:23 -0800</bug_when>
    <thetext>Created attachment 118407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517481</commentid>
    <comment_count>2</comment_count>
      <attachid>118408</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-12-08 09:38:49 -0800</bug_when>
    <thetext>Created attachment 118408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551989</commentid>
    <comment_count>3</comment_count>
      <attachid>126046</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-02-08 03:54:20 -0800</bug_when>
    <thetext>Created attachment 126046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552016</commentid>
    <comment_count>4</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-08 04:28:31 -0800</bug_when>
    <thetext>Greetings,

I have added a couple of WebKit reviewers because I&apos;m not a reviewer.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552215</commentid>
    <comment_count>5</comment_count>
      <attachid>126046</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-08 09:47:41 -0800</bug_when>
    <thetext>Comment on attachment 126046
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1526
&gt;          if (!node || !node-&gt;isContentEditable())
&gt; -            return false;
&gt; +            editor-&gt;cancelComposition();

Is it possible for there to be no current selection?  For example, if the node is no longer content editable.  Should there be a separate test for that case?

&gt; LayoutTests/fast/events/ime-composition-events-002.html:47
&gt; +    textInputController.setMarkedText(&apos;1&apos;, 0, 1);

You may need to skip this test on Qt and GTK+.  Last I checked, they don&apos;t yet implement textInputController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552387</commentid>
    <comment_count>6</comment_count>
      <attachid>126046</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-08 12:23:03 -0800</bug_when>
    <thetext>Comment on attachment 126046
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:15
&gt; +        When this happens, the WebCore editor becomes stuck because it stays focused on
&gt; +        this now removed node, on which a composition cannot be set because the node is
&gt; +        no longer editable.

That sounds like a WebCore bug. I don&apos;t think we should be fixing it in Chromium code unless that&apos;s what all other ports do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552388</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-08 12:23:52 -0800</bug_when>
    <thetext>+ap since he probably knows whether Mac and other ports have the same issue or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553259</commentid>
    <comment_count>8</comment_count>
      <attachid>126046</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-02-09 10:09:53 -0800</bug_when>
    <thetext>Comment on attachment 126046
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:15
&gt;&gt; +        no longer editable.
&gt; 
&gt; That sounds like a WebCore bug. I don&apos;t think we should be fixing it in Chromium code unless that&apos;s what all other ports do.

I tried the layout test with mac webkit&apos;s DumpRenderTree on mac os x, and it passed fine (without my patch), so I think the problem is rather in how we are calling into WebCore rather than the WebCore editor code itself. I will change the ChangeLog to clarify.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1526
&gt;&gt; +            editor-&gt;cancelComposition();
&gt; 
&gt; Is it possible for there to be no current selection?  For example, if the node is no longer content editable.  Should there be a separate test for that case?

Good idea, I&apos;ll add one.

&gt;&gt; LayoutTests/fast/events/ime-composition-events-002.html:47
&gt;&gt; +    textInputController.setMarkedText(&apos;1&apos;, 0, 1);
&gt; 
&gt; You may need to skip this test on Qt and GTK+.  Last I checked, they don&apos;t yet implement textInputController.

Thanks for the heads up. I tried to build Qt and GKT today locally, but was set back by not having the right build dependencies. However, I did notice some seemingly non-trivial implementation of textInputController here: Tools/DumpRenderTree/gtk/TextInputController.cpp and Tools/DumpRenderTree/qt/TextInputControllerQt.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553268</commentid>
    <comment_count>9</comment_count>
      <attachid>126046</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-09 10:13:43 -0800</bug_when>
    <thetext>Comment on attachment 126046
Patch

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

r- to remove from the review queue while john adds another test case.

&gt;&gt;&gt; LayoutTests/fast/events/ime-composition-events-002.html:47
&gt;&gt;&gt; +    textInputController.setMarkedText(&apos;1&apos;, 0, 1);
&gt;&gt; 
&gt;&gt; You may need to skip this test on Qt and GTK+.  Last I checked, they don&apos;t yet implement textInputController.
&gt; 
&gt; Thanks for the heads up. I tried to build Qt and GKT today locally, but was set back by not having the right build dependencies. However, I did notice some seemingly non-trivial implementation of textInputController here: Tools/DumpRenderTree/gtk/TextInputController.cpp and Tools/DumpRenderTree/qt/TextInputControllerQt.cpp

Ah, you&apos;re right, it looks like textInputController.setMarkedText and insertText are implemented in both GTK and Qt.  My mistake!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560419</commentid>
    <comment_count>10</comment_count>
      <attachid>127860</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-02-20 15:29:32 -0800</bug_when>
    <thetext>Created attachment 127860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561792</commentid>
    <comment_count>11</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-22 02:45:56 -0800</bug_when>
    <thetext>Greetings,

Sorry for my slow response.
In my personal opinion, your looks good. But I would like to test this change with existing IMEs to check if your change does not cause any regressions or side effects tomorrow. I will update my comment when I finish testing your change.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562686</commentid>
    <comment_count>12</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-02-22 18:52:09 -0800</bug_when>
    <thetext>Greetings,

Unfortunately, this change causes an assertion error when quickly typing text with Microsoft IMEs on the &quot;Search&quot; box of facebook. (This crash seems to happen when typing text with Microsoft IMEs while facebook is rendering search suggestions.) The following list is the stack trace of this assertion error.

webkit.dll!WebCore::Node::isFocusable()  Line 890 + 0x32 bytes	C++
webkit.dll!WebCore::HTMLFormControlElement::isFocusable()  Line 305	C++
webkit.dll!WebCore::HTMLInputElement::isMouseFocusable()  Line 441 + 0x8 bytes	C++
webkit.dll!WebCore::FrameSelection::setFocusedNodeIfNeeded()  Line 1821 + 0x18 bytes	C++
webkit.dll!WebCore::FrameSelection::setSelection(const WebCore::VisibleSelection &amp; newSelection={...}, unsigned int options=0, WebCore::FrameSelection::CursorAlignOnScroll align=AlignCursorOnScrollIfNeeded, WebCore::TextGranularity granularity=CharacterGranularity)  Line 291	C++
webkit.dll!WebCore::Editor::selectComposition()  Line 1279	C++
webkit.dll!WebCore::Editor::setComposition(const WTF::String &amp; text={...}, const WTF::Vector&lt;WebCore::CompositionUnderline,0&gt; &amp; underlines={...}, unsigned int selectionStart=4, unsigned int selectionEnd=4)  Line 1358	C++
webkit.dll!WebKit::WebViewImpl::setComposition(const WebKit::WebString &amp; text={...}, const WebKit::WebVector&lt;WebKit::WebCompositionUnderline&gt; &amp; underlines={...}, int selectionStart=4, int selectionEnd=4)  Line 1708 + 0x5a bytes	C++
content.dll!RenderWidget::OnImeSetComposition(const std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp; text=&quot;とうｋｙ&quot;, const std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt; &amp; underlines=[1]({startOffset=0 endOffset=4 color=4278190080 ...}), int selection_start=4, int selection_end=4)  Line 1263 + 0x5d bytes	C++
content.dll!RenderViewImpl::OnImeSetComposition(const std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp; text=&quot;とうｋｙ&quot;, const std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt; &amp; underlines=[1]({startOffset=0 endOffset=4 color=4278190080 ...}), int selection_start=4, int selection_end=4)  Line 4723	C++
content.dll!DispatchToMethod&lt;RenderWidget,void (__thiscall RenderWidget::*)(std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; const &amp;,std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt; const &amp;,int,int),std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt;,int,int&gt;(RenderWidget * obj=0x007363e8, void (const std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp;, const std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt; &amp;, int, int)* method=0x598fd5e7, const Tuple4&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt;,std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt;,int,int&gt; &amp; arg={...})  Line 566 + 0x34 bytes	C++
content.dll!ViewMsg_ImeSetComposition::Dispatch&lt;RenderWidget,RenderWidget,void (__thiscall RenderWidget::*)(std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; const &amp;,std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt; const &amp;,int,int)&gt;(const IPC::Message * msg=0x04f6ced4, RenderWidget * obj=0x007363e8, RenderWidget * sender=0x007363e8, void (const std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp;, const std::vector&lt;WebKit::WebCompositionUnderline,std::allocator&lt;WebKit::WebCompositionUnderline&gt; &gt; &amp;, int, int)* func=0x598fd5e7)  Line 977 + 0x81 bytes	C++
content.dll!RenderWidget::OnMessageReceived(const IPC::Message &amp; message={...})  Line 216 + 0x9f bytes	C++
content.dll!RenderViewImpl::OnMessageReceived(const IPC::Message &amp; message={...})  Line 817 + 0xc bytes	C++
content.dll!MessageRouter::RouteMessage(const IPC::Message &amp; msg={...})  Line 46 + 0x13 bytes	C++
content.dll!MessageRouter::OnMessageReceived(const IPC::Message &amp; msg={...})  Line 38 + 0x13 bytes	C++
content.dll!ChildThread::OnMessageReceived(const IPC::Message &amp; msg={...})  Line 201 + 0x17 bytes	C++
ipc.dll!IPC::ChannelProxy::Context::OnDispatchMessage(const IPC::Message &amp; message={...})  Line 268 + 0x19 bytes	C++
ipc.dll!base::internal::RunnableAdapter&lt;void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &amp;)&gt;::Run(IPC::ChannelProxy::Context * object=0x006da8f0, const IPC::Message &amp; a1={...})  Line 188 + 0x21 bytes	C++
ipc.dll!base::internal::InvokeHelper&lt;0,void,base::internal::RunnableAdapter&lt;void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &amp;)&gt;,void __cdecl(IPC::ChannelProxy::Context * const &amp;,IPC::Message const &amp;)&gt;::MakeItSo(base::internal::RunnableAdapter&lt;void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &amp;)&gt; runnable={...}, IPC::ChannelProxy::Context * const &amp; a1=0x006da8f0, const IPC::Message &amp; a2={...})  Line 897	C++
ipc.dll!base::internal::Invoker&lt;2,base::internal::BindState&lt;base::internal::RunnableAdapter&lt;void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &amp;)&gt;,void __cdecl(IPC::ChannelProxy::Context *,IPC::Message const &amp;),void __cdecl(IPC::ChannelProxy::Context *,IPC::Message)&gt;,void __cdecl(IPC::ChannelProxy::Context *,IPC::Message const &amp;)&gt;::Run(base::internal::BindStateBase * base=0x04f6ceb8)  Line 1254 + 0x2a bytes	C++
base.dll!base::Callback&lt;void __cdecl(void)&gt;::Run()  Line 272 + 0xe bytes	C++
base.dll!MessageLoop::RunTask(const base::PendingTask &amp; pending_task={...})  Line 460	C++
base.dll!MessageLoop::DeferOrRunPendingTask(const base::PendingTask &amp; pending_task={...})  Line 473	C++
base.dll!MessageLoop::DoWork()  Line 660 + 0xc bytes	C++
base.dll!base::MessagePumpDefault::Run(base::MessagePump::Delegate * delegate=0x0028f5d0)  Line 28 + 0xf bytes	C++
base.dll!MessageLoop::RunInternal()  Line 417 + 0x2a bytes	C++
base.dll!MessageLoop::RunHandler()  Line 391	C++
base.dll!MessageLoop::Run()  Line 301	C++
content.dll!RendererMain(const content::MainFunctionParams &amp; parameters={...})  Line 241 + 0x19 bytes	C++
content.dll!`anonymous namespace&apos;::RunNamedProcessTypeMain(const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; process_type=&quot;renderer&quot;, const content::MainFunctionParams &amp; main_function_params={...}, content::ContentMainDelegate * delegate=0x0028fa68)  Line 271 + 0x12 bytes	C++
content.dll!`anonymous namespace&apos;::ContentMainRunnerImpl::Run()  Line 500 + 0x14 bytes	C++
content.dll!content::ContentMain(HINSTANCE__ * instance=0x013a0000, sandbox::SandboxInterfaceInfo * sandbox_info=0x0028fbd4, content::ContentMainDelegate * delegate=0x0028fa68)  Line 35 + 0x1a bytes	C++
chrome.dll!ChromeMain(HINSTANCE__ * instance=0x013a0000, sandbox::SandboxInterfaceInfo * sandbox_info=0x0028fbd4)  Line 28 + 0x14 bytes	C++
chrome.exe!MainDllLoader::Launch(HINSTANCE__ * instance=0x013a0000, sandbox::SandboxInterfaceInfo * sbox_info=0x0028fbd4)  Line 424 + 0xd bytes	C++
chrome.exe!wWinMain(HINSTANCE__ * instance=0x013a0000, HINSTANCE__ * __formal=0x00000000, HINSTANCE__ * __formal=0x00000000, HINSTANCE__ * __formal=0x00000000)  Line 36 + 0x10 bytes	C++
chrome.exe!__tmainCRTStartup()  Line 578 + 0x35 bytes	C
chrome.exe!wWinMainCRTStartup()  Line 403	C
kernel32.dll!757c339a() 	

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562703</commentid>
    <comment_count>13</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-02-22 19:11:31 -0800</bug_when>
    <thetext>Thanks for the testing, Hironori-san! I&apos;m flying back to London tomorrow, but next week I will try to make a test case for this crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680303</commentid>
    <comment_count>14</comment_count>
      <attachid>127860</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:46:17 -0700</bug_when>
    <thetext>Comment on attachment 127860
Patch

Sounds like we should mark this patch r- for now while we investigate the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699923</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 14:04:47 -0700</bug_when>
    <thetext>Removing AndroidHitList because John seems to have abandoned this change.  John, if you plan to pick this up again and want to put it back on my radar, please feel free to add AndroidHitList again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744521</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-17 12:57:58 -0700</bug_when>
    <thetext>This patch does not appear to be needed anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118407</attachid>
            <date>2011-12-08 09:33:23 -0800</date>
            <delta_ts>2011-12-08 09:38:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74097-20111208173322.patch</filename>
            <type>text/plain</type>
            <size>1742</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU2OWJiYjg3NmFmMmMyOGY0YjZjMDhkNmI1ZDkxMGNlNjU2N2RkZGQuLjk4NzYyOGUzNDYyNDM0
NDEzZDNlNTBkNWE5NTFiYTY0ZGE3MDg4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMDggIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb250aW51ZSBjb21wb3NpdGlvbnMg
YXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGNvbXBvc2l0aW9uIG5vZGUgaXMgcmVtb3ZlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Q29tcG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29uZmlybUNvbXBvc2l0aW9uKToK
KwogMjAxMS0xMi0wNyAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBBZGQgcGFnZS1zY2FsZSBhbmltYXRpb24gc3VwcG9ydCB0byBJbXBs
IHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IDJlMzlmY2U0MGQyYWY4NjMwZTg5MzEwNzc3Yjc5ZDM1MDZiM2U1OTUuLmMzYjMwMDk0N2YxZmZh
MTZmZTU5Mzk4NWNkMjc0ZDI3YjQwYThhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE1MDAsNyArMTUwMCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6
OnNldENvbXBvc2l0aW9uKAogICAgIGlmIChyYW5nZSkgewogICAgICAgICBOb2RlKiBub2RlID0g
cmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXND
b250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGVkaXRvci0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSdyZSBu
b3QgZ29pbmcgdG8gZmlyZSBhIGtleXByZXNzIGV2ZW50LCB0aGVuIHRoZSBrZXlkb3duIGV2ZW50
IHdhcwpAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29uZmlybUNvbXBv
c2l0aW9uKGNvbnN0IFdlYlN0cmluZyYgdGV4dCkKICAgICBpZiAocmFuZ2UpIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IHJhbmdlLT5zdGFydENvbnRhaW5lcigpOwogICAgICAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBlZGl0b3ItPmNhbmNlbENvbXBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAg
aWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118408</attachid>
            <date>2011-12-08 09:38:49 -0800</date>
            <delta_ts>2012-02-08 03:54:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74097-20111208173848.patch</filename>
            <type>text/plain</type>
            <size>2641</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU2OWJiYjg3NmFmMmMyOGY0YjZjMDhkNmI1ZDkxMGNlNjU2N2RkZGQuLmY0YmUzNWQ4ZjE4YTVm
MTlkYTczZDc4MzgyOGE2MTgwMjJmNGQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTEtMTItMDggIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb250aW51ZSBjb21wb3NpdGlvbnMg
YXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGNvbXBvc2l0aW9uIG5vZGUgaXMgcmVtb3ZlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDk3CisK
KyAgICAgICAgRHVyaW5nIGNvbXBvc2l0aW9ucywgV2ViQ29yZSBFZGl0b3Igb2JqZWN0IHRyYWNr
cyB0aGUgbm9kZSB3aGljaCB3aWxsIHJlY2VpdmUKKyAgICAgICAgdGhlIGNvbXBvc2l0b24uIEl0
IGlzIGEgcGF0dGVybiBhbW9uZyBzeW50YXggaGlnaGxpZ2h0aW5nIGVkaXRvcnMsIGZvciBleGFt
cGxlCisgICAgICAgIGNvZGVtaXJyb3IsIHRvIHN0YXJ0IG9mZiB3aXRoIG9uZSBsYXJnZSB0ZXh0
IG5vZGUgY29udGFpbmluZyB0aGUgZW50aXJlIHByb2dyYW0KKyAgICAgICAgdGV4dCBhbmQgdGhl
biBpbmNyZW1lbnRhbGx5IHJlcGxhY2luZyB3b3JkcyB3aXRoaW4gaXQgd2l0aCA8c3Bhbj4gZWxl
bWVudHMuIElmIGEKKyAgICAgICAgY29tcG9zaXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHRoZW4gdGhp
cyBjYW4gcmVzdWx0IGluIHRoZSBub2RlIHRoYXQgd291bGQgcmVjZWl2ZQorICAgICAgICB0aGUg
Y29tcG9zaXRpb24gYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGFuZCB0aGVyZWZvcmUgbm8g
bG9uZ2VyIGJlaW5nIGVkaXRhYmxlLgorCisgICAgICAgIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUg
V2ViQ29yZSBlZGl0b3IgYmVjb21lcyBzdHVjayBiZWNhdXNlIGl0IHN0YXlzIGZvY3VzZWQgb24K
KyAgICAgICAgdGhpcyBub3cgcmVtb3ZlZCBub2RlLCBvbiB3aGljaCBhIGNvbXBvc2l0aW9uIGNh
bm5vdCBiZSBzZXQgYmVjYXVzZSB0aGUgbm9kZSBpcworICAgICAgICBubyBsb25nZXIgZWRpdGFi
bGUuCisKKyAgICAgICAgVG8gcmVtZWR5IHRoaXMsIHdlIHRlbGwgdGhlIGVkaXRvciB0byByZXNl
dCBpdHMgY29tcG9zaXRpb24gbm9kZSBhbmQgcHJvY2VlZCB3aXRoCisgICAgICAgIHRoZSBjb21w
b3NpdGlvbiBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24gKGNhcmV0KS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb25maXJtQ29tcG9zaXRpb24pOgorCiAyMDExLTEyLTA3
ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMmUzOWZjZTQwZDJh
Zjg2MzBlODkzMTA3NzdiNzlkMzUwNmIzZTU5NS4uYzNiMzAwOTQ3ZjFmZmExNmZlNTkzOTg1Y2Qy
NzRkMjdiNDBhOGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtMTUwMCw3ICsxNTAwLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2V0Q29tcG9zaXRp
b24oCiAgICAgaWYgKHJhbmdlKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByYW5nZS0+c3RhcnRD
b250YWluZXIoKTsKICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZWRpdG9yLT5jYW5j
ZWxDb21wb3NpdGlvbigpOwogICAgIH0KIAogICAgIC8vIElmIHdlJ3JlIG5vdCBnb2luZyB0byBm
aXJlIGEga2V5cHJlc3MgZXZlbnQsIHRoZW4gdGhlIGtleWRvd24gZXZlbnQgd2FzCkBAIC0xNTQ5
LDcgKzE1NDksNyBAQCBib29sIFdlYlZpZXdJbXBsOjpjb25maXJtQ29tcG9zaXRpb24oY29uc3Qg
V2ViU3RyaW5nJiB0ZXh0KQogICAgIGlmIChyYW5nZSkgewogICAgICAgICBOb2RlKiBub2RlID0g
cmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXND
b250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGVkaXRvci0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICB9CiAKICAgICBpZiAoZWRpdG9yLT5o
YXNDb21wb3NpdGlvbigpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126046</attachid>
            <date>2012-02-08 03:54:20 -0800</date>
            <delta_ts>2012-02-20 15:29:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74097-20120208115418.patch</filename>
            <type>text/plain</type>
            <size>5704</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDIxM2RjZmM0MzBiMDMyN2M2ZmRkNGY5NzJkMmMwMjRjZjYwMjg1ZDYuLjliMzVhNGZkZjgzNzdk
YjVkMjNlMjU5MWVhNGE2ZmI1NDQ1NDI1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTItMDItMDggIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb250aW51ZSBjb21wb3NpdGlvbnMg
YXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGNvbXBvc2l0aW9uIG5vZGUgaXMgcmVtb3ZlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDk3CisK
KyAgICAgICAgRHVyaW5nIGNvbXBvc2l0aW9ucywgV2ViQ29yZSBFZGl0b3Igb2JqZWN0IHRyYWNr
cyB0aGUgbm9kZSB3aGljaCB3aWxsIHJlY2VpdmUKKyAgICAgICAgdGhlIGNvbXBvc2l0b24uIEl0
IGlzIGEgcGF0dGVybiBhbW9uZyBzeW50YXggaGlnaGxpZ2h0aW5nIGVkaXRvcnMsIGZvciBleGFt
cGxlCisgICAgICAgIGNvZGVtaXJyb3IsIHRvIHN0YXJ0IG9mZiB3aXRoIG9uZSBsYXJnZSB0ZXh0
IG5vZGUgY29udGFpbmluZyB0aGUgZW50aXJlIHByb2dyYW0KKyAgICAgICAgdGV4dCBhbmQgdGhl
biBpbmNyZW1lbnRhbGx5IHJlcGxhY2luZyB3b3JkcyB3aXRoaW4gaXQgd2l0aCA8c3Bhbj4gZWxl
bWVudHMuIElmIGEKKyAgICAgICAgY29tcG9zaXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHRoZW4gdGhp
cyBjYW4gcmVzdWx0IGluIHRoZSBub2RlIHRoYXQgd291bGQgcmVjZWl2ZQorICAgICAgICB0aGUg
Y29tcG9zaXRpb24gYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGFuZCB0aGVyZWZvcmUgbm8g
bG9uZ2VyIGJlaW5nIGVkaXRhYmxlLgorCisgICAgICAgIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUg
V2ViQ29yZSBlZGl0b3IgYmVjb21lcyBzdHVjayBiZWNhdXNlIGl0IHN0YXlzIGZvY3VzZWQgb24K
KyAgICAgICAgdGhpcyBub3cgcmVtb3ZlZCBub2RlLCBvbiB3aGljaCBhIGNvbXBvc2l0aW9uIGNh
bm5vdCBiZSBzZXQgYmVjYXVzZSB0aGUgbm9kZSBpcworICAgICAgICBubyBsb25nZXIgZWRpdGFi
bGUuCisKKyAgICAgICAgVG8gcmVtZWR5IHRoaXMsIHdlIHRlbGwgdGhlIGVkaXRvciB0byByZXNl
dCBpdHMgY29tcG9zaXRpb24gbm9kZSBhbmQgcHJvY2VlZCB3aXRoCisgICAgICAgIHRoZSBjb21w
b3NpdGlvbiBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24gKGNhcmV0KS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb25maXJtQ29tcG9zaXRpb24pOgorCiAyMDEyLTAyLTA3
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTA2OTM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQ2MjljYmIzMmFiZTViNDMyNGU1NmEwOTdmZTM3ZDY4
NTc1NWVhMDQuLjMyMTE5MjZlNGQ3NzU0MjEzMGE2YTg3YmJhNzk1MjNkZjMyYjM3N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE1MjMsNyArMTUy
Myw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNldENvbXBvc2l0aW9uKAogICAgIGlmIChyYW5nZSkg
ewogICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVkaXRvci0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKICAg
ICB9CiAKICAgICAvLyBJZiB3ZSdyZSBub3QgZ29pbmcgdG8gZmlyZSBhIGtleXByZXNzIGV2ZW50
LCB0aGVuIHRoZSBrZXlkb3duIGV2ZW50IHdhcwpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFdlYlN0cmluZyYgdGV4dCkKICAg
ICBpZiAocmFuZ2UpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IHJhbmdlLT5zdGFydENvbnRhaW5l
cigpOwogICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlZGl0b3ItPmNhbmNlbENvbXBv
c2l0aW9uKCk7CiAgICAgfQogCiAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50
cy0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0
aW9uLWV2ZW50cy0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwOTlkMzc4MTRhMjg5NWRj
ZTIyMGIzMjQ2ZjdkMTlhZjlkMDI2NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMSBAQAorVGhpcyB0ZXN0cyB0aGF0IGlmIGEgY29tcG9zaXRpb24gaXMgaW50ZXJydXB0
ZWQgZHVlIHRvIHRoZSBmb2N1c2VkIG5vZGUgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBET00sIHN1
YnNlcXVlbnQgY29tcG9zaXRpb25zIG1heSBzdWNjZXNzZnVsbHkgYmUgY29tcGxldGVkLgorCisg
CitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uc3RhcnQgLSAiMSIKK1NVQ0NFU1M6IElOUFVU
IC0gY29tcG9zaXRpb251cGRhdGUgLSAiMSIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb25l
bmQgLSAiIgorU1VDQ0VTUzogSU5QVVQgLSB0ZXh0SW5wdXQgLSAiIgorU1VDQ0VTUzogSU5QVVQg
LSBjb21wb3NpdGlvbnN0YXJ0IC0gIjIiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBk
YXRlIC0gIjIiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uZW5kIC0gIjMiCitTVUNDRVNT
OiBJTlBVVCAtIHRleHRJbnB1dCAtICIzIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBlNGYy
MTM1ZmI4NDMyM2Q3MmFlMjQ5MGI1N2IxNWRlOTVmOTM5MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAyLmh0bWwKQEAg
LTAsMCArMSw1NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgaWYgYSBjb21wb3NpdGlvbiBpcyBpbnRlcnJ1cHRl
ZCBkdWUgdG8gdGhlIGZvY3VzZWQgbm9kZSBiZWluZyByZW1vdmVkIGZyb20gdGhlIERPTSwgc3Vi
c2VxdWVudCBjb21wb3NpdGlvbnMgbWF5IHN1Y2Nlc3NmdWxseSBiZSBjb21wbGV0ZWQuPC9wPgor
PGlucHV0IGlkPSJ0ZXN0IiB0eXBlPSJ0ZXh0Ii8+Cis8aW5wdXQgaWQ9InRlc3QyIiB0eXBlPSJ0
ZXh0Ii8+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2Ny
aXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9nKHN0cikgeworICAgdmFy
IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgIGxpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7Cit9
CisKK2Z1bmN0aW9uIGxvZ0V2ZW50KGUpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7Cisg
ICAgdmFyIHR5cGUgPSBlLnR5cGU7CisgICAgaWYgKGUudHlwZSA9PSAnY29tcG9zaXRpb25zdGFy
dCcgfHwgZS50eXBlID09ICdjb21wb3NpdGlvbnVwZGF0ZScgfHwgZS50eXBlID09ICdjb21wb3Np
dGlvbmVuZCcgfHwgZS50eXBlID09ICd0ZXh0SW5wdXQnKQorICAgICAgICBsb2coJ1NVQ0NFU1M6
ICcgKyB0YXJnZXQudGFnTmFtZSArICcgLSAnICsgZS50eXBlICsgJyAtICInICsgZS5kYXRhICsg
JyInKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnRkFJTEVEOiAnICsgdGFyZ2V0LnRhZ05hbWUg
KyAnIC0gJyArIGUudHlwZSArICcgLSAiJyArIGUuZGF0YSArICciJyk7Cit9CisKK2Z1bmN0aW9u
IHNldHVwTGlzdGVuZXJzKGlucHV0KSB7CisgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVycyB0byB0
aGUgPGlucHV0PiBub2RlLgorICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9u
c3RhcnQiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNv
bXBvc2l0aW9udXBkYXRlIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBpbnB1dC5hZGRFdmVudExp
c3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgaW5wdXQuYWRk
RXZlbnRMaXN0ZW5lcigidGV4dElucHV0IiwgbG9nRXZlbnQsIGZhbHNlKTsKK30KKwordmFyIHRl
c3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwordmFyIHRlc3QyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICBz
ZXR1cExpc3RlbmVycyh0ZXN0KTsKKyAgICBzZXR1cExpc3RlbmVycyh0ZXN0Mik7CisKKyAgICAv
LyBTdGFydCBjb21wb3NpbmcgYSB0ZXh0LCByZW1vdmUgdGhlIGNvbXBvc2l0aW9uIG5vZGUsIGFu
ZCB0aGVuCisgICAgLy8gdHJ5IHRvIGNvbW1pdC4KKyAgICB0ZXN0LmZvY3VzKCk7CisgICAgdGV4
dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCcxJywgMCwgMSk7CisgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZCh0ZXN0KTsKKworICAgIC8vIEZvY3VzIGEgbmV3IGlucHV0IG5vZGUg
YW5kIGNvbnRpbnVlIHRoZSBjb21wb3NpdGlvbi4KKyAgICB0ZXN0Mi5mb2N1cygpOworICAgIHRl
eHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnMicsIDAsIDEpOworICAgIHRleHRJbnB1
dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgnMycpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127860</attachid>
            <date>2012-02-20 15:29:32 -0800</date>
            <delta_ts>2012-07-27 01:46:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74097-20120220152931.patch</filename>
            <type>text/plain</type>
            <size>14903</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDJiZTM1YzBlODBlNjUyNmIwYTI1MzY4MjRhNDg3OWJlNTc1ZGE5OTUuLjgyMzNmM2IwNzhiMTU4
NDA5ZmE4MTI2MzhmYmFkNjgzOGVhM2RkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTItMDItMjAgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb250aW51ZSBjb21wb3NpdGlvbnMg
YXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlmIGNvbXBvc2l0aW9uIG5vZGUgaXMgcmVtb3ZlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHVyaW5nIGNv
bXBvc2l0aW9ucywgdGhlIFdlYkNvcmUgRWRpdG9yIG9iamVjdCB0cmFja3MgdGhlIG5vZGUgd2hp
Y2ggd2lsbCByZWNlaXZlCisgICAgICAgIHRoZSBjb21wb3NpdG9uLiBJdCBpcyBhIHBhdHRlcm4g
YW1vbmcgc3ludGF4IGhpZ2hsaWdodGluZyBlZGl0b3JzLCBmb3IgZXhhbXBsZQorICAgICAgICBj
b2RlbWlycm9yLCB0byBzdGFydCBvZmYgd2l0aCBvbmUgbGFyZ2UgdGV4dCBub2RlIGNvbnRhaW5p
bmcgdGhlIGVudGlyZSBwcm9ncmFtCisgICAgICAgIHRleHQgYW5kIHRoZW4gaW5jcmVtZW50YWxs
eSByZXBsYWNpbmcgd29yZHMgd2l0aGluIGl0IHdpdGggPHNwYW4+IGVsZW1lbnRzLiBJZiBhCisg
ICAgICAgIGNvbXBvc2l0aW9uIGlzIGluIHByb2dyZXNzLCB0aGlzIGNhbiByZXN1bHQgaW4gdGhl
IG5vZGUgdGhhdCB3b3VsZCByZWNlaXZlIHRoZQorICAgICAgICBjb21wb3NpdGlvbiBiZWluZyBy
ZW1vdmVkIGZyb20gdGhlIERPTSwgYW5kIHRoZXJlZm9yZSBubyBsb25nZXIgYmVpbmcgZWRpdGFi
bGUuCisKKyAgICAgICAgV2hlbiBDaHJvbWl1bSBkZXRlY3RzIHRoYXQgdGhpcyBoYXMgaGFwcGVu
ZWQsIGl0IGRlbGliZXJhdGVseSBkb2VzIG5vdCBjYWxsIGludG8KKyAgICAgICAgdGhlIFdlYkNv
cmUgZWRpdG9yLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGhhcyB0aGUgZWZmZWN0IG9mIHByZXZlbnRp
bmcgYW55IGZ1cnRoZXIKKyAgICAgICAgY29tcG9zaXRpb25zIGFuZCB0aGlzIGNvbmRpdGlvbiBj
aGFuZ2VzIChpLmUuIHVudGlsIHRoZSBjb21wb3NpdGlvbiBub2RlIGJlY29tZXMKKyAgICAgICAg
ZWRpdGFibGUgb3IgaXMgYWRkZWQgYmFjayB0byB0aGUgRE9NKS4gT2YgY291cnNlLCB0aGlzIG1h
eSBuZXZlciBoYXBwZW4sIHNvIGluc3RlYWQKKyAgICAgICAgd2UgY2xlYXIgdGhlIGNvbXBvc2l0
aW9uIGFuZCB0cnkgdG8gY29udGludWUgd2l0aCBhIG5ldyBjb21wb3NpdGlvbiBhdCB0aGUgY3Vy
cmVudAorICAgICAgICBzZWxlY3Rpb24gYW5kIGZvY3VzIChzaG91bGQgdGhhdCBiZSBlZGl0YWJs
ZSkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6Y29uZmlybUNvbXBvc2l0aW9uKToKKwogMjAxMi0wMi0yMCAgUGV0ZXIgQmV2ZXJsb28gIDxw
ZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDgwYTFkOTY4
ZjdkYzg2MmRmOWFiMWU0ZmUyNTM3MjYxMDg2YTEzMGQuLjIyMzRlMmI1YzViZWM5NjQ0ZmRlODI2
N2M1YTdiNTUwODFlNGU5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTE2NjYsMjMgKzE2NjYsMjMgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2V0Q29t
cG9zaXRpb24oCiAgICAgaWYgKCFlZGl0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IC8vIFRoZSBpbnB1dCBmb2N1cyBoYXMgYmVlbiBtb3ZlZCB0byBhbm90aGVyIFdlYldpZGdldCBv
YmplY3QuCi0gICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGlzIHxlZGl0b3J8IG9iamVjdCBvbmx5IHRv
IGNvbXBsZXRlIHRoZSBvbmdvaW5nCi0gICAgLy8gY29tcG9zaXRpb24uCi0gICAgaWYgKCFlZGl0
b3ItPmNhbkVkaXQoKSAmJiAhZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoZSBwYXJlbnQgbm9kZSBvZiB0
aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFyZQogICAgIC8vIGVkaXRhYmxlIGJlY2F1c2UgSmF2
YVNjcmlwdCBtYXkgZGVsZXRlIGEgcGFyZW50IG5vZGUgb2YgdGhlIGNvbXBvc2l0aW9uCi0gICAg
Ly8gbm9kZS4gSW4gdGhpcyBjYXNlLCBXZWJLaXQgY3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0
cyBmcm9tIHRoZSBwYXJlbnQKLSAgICAvLyBub2RlLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueSBs
b25nZXIuCisgICAgLy8gbm9kZS4gSW4gdGhpcyBjYXNlLCBjbGVhciB0aGUgY3VycmVudCBjb21w
b3NpdGlvbiBhbmQgY29udGludWUgZWRpdGluZyBhdAorICAgIC8vIHRoZSBuZXdseSBmb2N1c2Vk
IGVkaXRhYmxlIG5vZGUsIGlmIGFueS4KICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVk
aXRvci0+Y29tcG9zaXRpb25SYW5nZSgpOwogICAgIGlmIChyYW5nZSkgewogICAgICAgICBOb2Rl
KiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgIGlmICghbm9kZSB8fCAh
bm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGVkaXRvci0+Y2xlYXIoKTsKICAgICB9CiAKKyAgICAvLyBUaGUgaW5wdXQgZm9j
dXMgaGFzIGJlZW4gbW92ZWQgdG8gYW5vdGhlciBXZWJXaWRnZXQgb2JqZWN0LgorICAgIC8vIFdl
IHNob3VsZCB1c2UgdGhpcyB8ZWRpdG9yfCBvYmplY3Qgb25seSB0byBjb21wbGV0ZSB0aGUgb25n
b2luZworICAgIC8vIGNvbXBvc2l0aW9uLgorICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkgJiYg
IWVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
Ly8gSWYgd2UncmUgbm90IGdvaW5nIHRvIGZpcmUgYSBrZXlwcmVzcyBldmVudCwgdGhlbiB0aGUg
a2V5ZG93biBldmVudCB3YXMKICAgICAvLyBjYW5jZWxlZC4gIEluIHRoYXQgY2FzZSwgY2FuY2Vs
IGFueSBleGlzdGluZyBjb21wb3NpdGlvbi4KICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgbV9z
dXBwcmVzc05leHRLZXlwcmVzc0V2ZW50KSB7CkBAIC0xNzE4LDE4ICsxNzE4LDE4IEBAIGJvb2wg
V2ViVmlld0ltcGw6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBXZWJTdHJpbmcmIHRleHQpCiAg
ICAgaWYgKCFmb2N1c2VkIHx8ICFtX2ltZUFjY2VwdEV2ZW50cykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIEVkaXRvciogZWRpdG9yID0gZm9jdXNlZC0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFl
ZGl0b3IgfHwgKCFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkgJiYgIXRleHQubGVuZ3RoKCkpKQor
ICAgIGlmICghZWRpdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSBzaG91
bGQgdmVyaWZ5IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFy
ZQogICAgIC8vIGVkaXRhYmxlIGJlY2F1c2UgSmF2YVNjcmlwdCBtYXkgZGVsZXRlIGEgcGFyZW50
IG5vZGUgb2YgdGhlIGNvbXBvc2l0aW9uCi0gICAgLy8gbm9kZS4gSW4gdGhpcyBjYXNlLCBXZWJL
aXQgY3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0cyBmcm9tIHRoZSBwYXJlbnQKLSAgICAvLyBu
b2RlLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueSBsb25nZXIuCisgICAgLy8gbm9kZS4gSW4gdGhp
cyBjYXNlLCBjbGVhciB0aGUgY3VycmVudCBjb21wb3NpdGlvbiBhbmQgY29udGludWUgZWRpdGlu
ZyBhdAorICAgIC8vIHRoZSBuZXdseSBmb2N1c2VkIGVkaXRhYmxlIG5vZGUsIGlmIGFueS4KICAg
ICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpOwog
ICAgIGlmIChyYW5nZSkgewogICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCk7CiAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVkaXRvci0+Y2xlYXIoKTsK
ICAgICB9CiAKICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7CkBAIC0xNzM3LDgg
KzE3MzcsMTcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFdl
YlN0cmluZyYgdGV4dCkKICAgICAgICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0
cmluZyh0ZXh0KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVkaXRvci0+Y29uZmlybUNv
bXBvc2l0aW9uKCk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF0ZXh0
Lmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBUaGUgaW5w
dXQgZm9jdXMgaGFzIGJlZW4gbW92ZWQgdG8gYW5vdGhlciBXZWJXaWRnZXQgb2JqZWN0LgorICAg
ICAgICAvLyBXZSBzaG91bGQgdXNlIHRoaXMgfGVkaXRvcnwgb2JqZWN0IG9ubHkgdG8gY29tcGxl
dGUgdGhlIG9uZ29pbmcKKyAgICAgICAgLy8gY29tcG9zaXRpb24uCisgICAgICAgIGlmICghZWRp
dG9yLT5jYW5FZGl0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgZWRp
dG9yLT5pbnNlcnRUZXh0KFN0cmluZyh0ZXh0KSwgMCk7CisgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOGRlMGFhNmRmYmRhMjU1NzRiYjMxOTIwNGIzMzVjYjhjNDZmN2U4Ni4u
Y2EwM2QwNGUwNmE2ZWFhZjFmNTZiM2U1ZDYzODIwMWFiYjFmMTdlYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEyLTAyLTIwICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gQ29udGludWUgY29tcG9zaXRpb25zIGF0IHRoZSBj
dXJyZW50IHNlbGVjdGlvbiBpZiBjb21wb3NpdGlvbiBub2RlIGlzIHJlbW92ZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvaW1l
LWNvbXBvc2l0aW9uLWV2ZW50cy0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVu
dHMtMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW1lLWNv
bXBvc2l0aW9uLWV2ZW50cy0wMDQuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMjAgIFZpY3RvciBD
YXJidW5lICA8dmljdG9yQHJvc2VkdS5vcmc+CiAKICAgICAgICAgPHRyYWNrPi1yZWxhdGVkIGV2
ZW50cyBjdWVjaGFuZ2UsIGVudGVyLCBhbmQgZXhpdCBzaG91bGQgYmUgc29ydGVkIGFuZCBmaWx0
ZXJlZCBiZWZvcmUgZGlzcGF0Y2hpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZGQ4ZjczYTM4N2IyNzZiOGEyOTA0ZjIzMjI1Y2YwMjkwYmNhZGY3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50
cy0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGhpcyB0ZXN0cyB0aGF0IGlmIGEg
Y29tcG9zaXRpb24gaXMgaW50ZXJydXB0ZWQgZHVlIHRvIHRoZSBmb2N1c2VkIG5vZGUgYmVpbmcg
cmVtb3ZlZCBmcm9tIHRoZSBET00sIHN1YnNlcXVlbnQgY29tcG9zaXRpb25zIG1heSBzdWNjZXNz
ZnVsbHkgYmUgY29tcGxldGVkLgorCisgCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9uc3Rh
cnQgLSAiMSIKK1NVQ0NFU1M6IElOUFVUIC0gY29tcG9zaXRpb251cGRhdGUgLSAiMSIKK1NVQ0NF
U1M6IElOUFVUIC0gY29tcG9zaXRpb25zdGFydCAtICIyIgorU1VDQ0VTUzogSU5QVVQgLSBjb21w
b3NpdGlvbnVwZGF0ZSAtICIyIgorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlvbmVuZCAtICIz
IgorU1VDQ0VTUzogSU5QVVQgLSB0ZXh0SW5wdXQgLSAiMyIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMtMDAyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwZTRmMjEzNWZiODQzMjNkNzJhZTI0OTBiNTdiMTVkZTk1ZjkzOTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAw
Mi5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90aXRsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGlmIGEgY29tcG9zaXRpb24gaXMg
aW50ZXJydXB0ZWQgZHVlIHRvIHRoZSBmb2N1c2VkIG5vZGUgYmVpbmcgcmVtb3ZlZCBmcm9tIHRo
ZSBET00sIHN1YnNlcXVlbnQgY29tcG9zaXRpb25zIG1heSBzdWNjZXNzZnVsbHkgYmUgY29tcGxl
dGVkLjwvcD4KKzxpbnB1dCBpZD0idGVzdCIgdHlwZT0idGV4dCIvPgorPGlucHV0IGlkPSJ0ZXN0
MiIgdHlwZT0idGV4dCIvPgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyhzdHIp
IHsKKyAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBsaS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgIHZhciBjb25zb2xlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBwZW5kQ2hp
bGQobGkpOworfQorCitmdW5jdGlvbiBsb2dFdmVudChlKSB7CisgICAgdmFyIHRhcmdldCA9IGUu
dGFyZ2V0OworICAgIHZhciB0eXBlID0gZS50eXBlOworICAgIGlmIChlLnR5cGUgPT0gJ2NvbXBv
c2l0aW9uc3RhcnQnIHx8IGUudHlwZSA9PSAnY29tcG9zaXRpb251cGRhdGUnIHx8IGUudHlwZSA9
PSAnY29tcG9zaXRpb25lbmQnIHx8IGUudHlwZSA9PSAndGV4dElucHV0JykKKyAgICAgICAgbG9n
KCdTVUNDRVNTOiAnICsgdGFyZ2V0LnRhZ05hbWUgKyAnIC0gJyArIGUudHlwZSArICcgLSAiJyAr
IGUuZGF0YSArICciJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ0ZBSUxFRDogJyArIHRhcmdl
dC50YWdOYW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0gIicgKyBlLmRhdGEgKyAnIicpOworfQor
CitmdW5jdGlvbiBzZXR1cExpc3RlbmVycyhpbnB1dCkgeworICAgIC8vIEFkZCBldmVudCBsaXN0
ZW5lcnMgdG8gdGhlIDxpbnB1dD4gbm9kZS4KKyAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJj
b21wb3NpdGlvbnN0YXJ0IiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBpbnB1dC5hZGRFdmVudExp
c3RlbmVyKCJjb21wb3NpdGlvbnVwZGF0ZSIsIGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgaW5wdXQu
YWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLCBsb2dFdmVudCwgZmFsc2UpOworICAg
IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoInRleHRJbnB1dCIsIGxvZ0V2ZW50LCBmYWxzZSk7Cit9
CisKK3ZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK3ZhciB0ZXN0
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MicpOworCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgc2V0dXBMaXN0ZW5lcnModGVzdCk7CisgICAgc2V0dXBMaXN0ZW5lcnModGVzdDIp
OworCisgICAgLy8gU3RhcnQgY29tcG9zaW5nIGEgdGV4dCwgcmVtb3ZlIHRoZSBjb21wb3NpdGlv
biBub2RlLCBhbmQgdGhlbgorICAgIC8vIHRyeSB0byBjb21taXQuCisgICAgdGVzdC5mb2N1cygp
OworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgnMScsIDAsIDEpOworICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdCk7CisKKyAgICAvLyBGb2N1cyBhIG5ldyBp
bnB1dCBub2RlIGFuZCBjb250aW51ZSB0aGUgY29tcG9zaXRpb24uCisgICAgdGVzdDIuZm9jdXMo
KTsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoJzInLCAwLCAxKTsKKyAg
ICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoJzMnKTsKK30KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNv
bXBvc2l0aW9uLWV2ZW50cy0wMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZj
YjE5NTM1OTQ4NzU0ZGFmZGQwMjI1NDdiYTIzYTdiYTkwYzBiOGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3RzIHRoYXQgaWYgYSBjb21wb3NpdGlv
biBpcyBpbnRlcnJ1cHRlZCBkdWUgdG8gdGhlIGZvY3VzZWQgbm9kZSBiZWluZyByZW1vdmVkIGZy
b20gdGhlIERPTSwgc3Vic2VxdWVudCBjb21wb3NpdGlvbnMgbWF5IHN1Y2Nlc3NmdWxseSBiZSBj
b21wbGV0ZWQuCisKK0Fub3RoZXIgcHJvYmxlbQorU1VDQ0VTUzogSU5QVVQgLSBjb21wb3NpdGlv
bnN0YXJ0IC0gIjEiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjEiCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRz
LTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50
cy0wMDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2Y0NTgxOTBmM2Q3NWI3YjJlZDc3ZmE2Y2MzNWRmODkx
Y2E3ODc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNv
bXBvc2l0aW9uLWV2ZW50cy0wMDMuaHRtbApAQCAtMCwwICsxLDU0IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBp
ZiBhIGNvbXBvc2l0aW9uIGlzIGludGVycnVwdGVkIGR1ZSB0byB0aGUgZm9jdXNlZCBub2RlIGJl
aW5nIHJlbW92ZWQgZnJvbSB0aGUgRE9NLCBzdWJzZXF1ZW50IGNvbXBvc2l0aW9ucyBtYXkgc3Vj
Y2Vzc2Z1bGx5IGJlIGNvbXBsZXRlZC48L3A+Cis8aW5wdXQgaWQ9InRlc3QiIHR5cGU9InRleHQi
PkFub3RoZXIgcHJvYmxlbTwvaW5wdXQ+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0
IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24g
bG9nKHN0cikgeworICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAg
IGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgdmFyIGNv
bnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgY29uc29sZS5h
cHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvZ0V2ZW50KGUpIHsKKyAgICB2YXIgdGFy
Z2V0ID0gZS50YXJnZXQ7CisgICAgdmFyIHR5cGUgPSBlLnR5cGU7CisgICAgaWYgKGUudHlwZSA9
PSAnY29tcG9zaXRpb25zdGFydCcgfHwgZS50eXBlID09ICdjb21wb3NpdGlvbnVwZGF0ZScgfHwg
ZS50eXBlID09ICdjb21wb3NpdGlvbmVuZCcgfHwgZS50eXBlID09ICd0ZXh0SW5wdXQnKQorICAg
ICAgICBsb2coJ1NVQ0NFU1M6ICcgKyB0YXJnZXQudGFnTmFtZSArICcgLSAnICsgZS50eXBlICsg
JyAtICInICsgZS5kYXRhICsgJyInKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnRkFJTEVEOiAn
ICsgdGFyZ2V0LnRhZ05hbWUgKyAnIC0gJyArIGUudHlwZSArICcgLSAiJyArIGUuZGF0YSArICci
Jyk7Cit9CisKK2Z1bmN0aW9uIHNldHVwTGlzdGVuZXJzKGlucHV0KSB7CisgICAgLy8gQWRkIGV2
ZW50IGxpc3RlbmVycyB0byB0aGUgPGlucHV0PiBub2RlLgorICAgIGlucHV0LmFkZEV2ZW50TGlz
dGVuZXIoImNvbXBvc2l0aW9uc3RhcnQiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGlucHV0LmFk
ZEV2ZW50TGlzdGVuZXIoImNvbXBvc2l0aW9udXBkYXRlIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAg
ICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJjb21wb3NpdGlvbmVuZCIsIGxvZ0V2ZW50LCBmYWxz
ZSk7CisgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigidGV4dElucHV0IiwgbG9nRXZlbnQsIGZh
bHNlKTsKK30KKwordmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgc2V0dXBMaXN0ZW5lcnMoZG9jdW1lbnQuYm9keSk7
CisKKyAgICAvLyBTdGFydCBjb21wb3NpbmcgYSB0ZXh0LCByZW1vdmUgdGhlIGNvbXBvc2l0aW9u
IG5vZGUsIGFuZCB0aGVuCisgICAgLy8gdHJ5IHRvIGNvbW1pdC4KKyAgICB0ZXN0LmZvY3VzKCk7
CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCcxJywgMCwgMSk7CisKKyAg
ICB0ZXN0LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAvLyBUaGUgZm9jdXNlZCBub2RlIGlzIG5vIGxv
bmdlciBjb250ZW50LWVkaXRhYmxlLCBzbyB3ZQorICAgIC8vIGV4cGVjdCB0aGUgZm9sbG93aW5n
IGNvbXBvc2l0aW9ucyB0byBmYWlsLgorICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2Vk
VGV4dCgnMicsIDAsIDEpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgnMycp
OworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwNC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwNC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTU5OGYxOTAwNjlhYzdjN2FjNDM4MTcxNjA5YjdiYTJlZWQzOWIz
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2ltZS1jb21wb3Np
dGlvbi1ldmVudHMtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMg
dGhhdCBpZiBhIGNvbXBvc2l0aW9uIGlzIGludGVycnVwdGVkIGR1ZSB0byB0aGUgZm9jdXNlZCBu
b2RlIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgRE9NLCBzdWJzZXF1ZW50IGNvbXBvc2l0aW9ucyBt
YXkgc3VjY2Vzc2Z1bGx5IGJlIGNvbXBsZXRlZC4KKworU1VDQ0VTUzogSU5QVVQgLSBjb21wb3Np
dGlvbnN0YXJ0IC0gIjEiCitTVUNDRVNTOiBJTlBVVCAtIGNvbXBvc2l0aW9udXBkYXRlIC0gIjEi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbWUtY29tcG9zaXRpb24tZXZl
bnRzLTAwNC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2
ZW50cy0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWFhMDFiM2M5YmU5MjlhMDFlMWRjZjgzNDBhNDBi
NTQzODQ5ZGEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW1l
LWNvbXBvc2l0aW9uLWV2ZW50cy0wMDQuaHRtbApAQCAtMCwwICsxLDU5IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhh
dCBpZiBhIGNvbXBvc2l0aW9uIGlzIGludGVycnVwdGVkIGR1ZSB0byB0aGUgZm9jdXNlZCBub2Rl
IGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgRE9NLCBzdWJzZXF1ZW50IGNvbXBvc2l0aW9ucyBtYXkg
c3VjY2Vzc2Z1bGx5IGJlIGNvbXBsZXRlZC48L3A+Cis8ZGl2IGlkPSJwYXJlbnQiPgorPGlucHV0
IGlkPSJ0ZXN0IiB0eXBlPSJ0ZXh0Ij5Bbm90aGVyIHByb2JsZW08L2lucHV0PgorPC9kaXY+CisK
Kzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2coc3RyKSB7CisgICB2YXIgbGkgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJyk7CisgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKworZnVu
Y3Rpb24gbG9nRXZlbnQoZSkgeworICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKKyAgICB2YXIg
dHlwZSA9IGUudHlwZTsKKyAgICBpZiAoZS50eXBlID09ICdjb21wb3NpdGlvbnN0YXJ0JyB8fCBl
LnR5cGUgPT0gJ2NvbXBvc2l0aW9udXBkYXRlJyB8fCBlLnR5cGUgPT0gJ2NvbXBvc2l0aW9uZW5k
JyB8fCBlLnR5cGUgPT0gJ3RleHRJbnB1dCcpCisgICAgICAgIGxvZygnU1VDQ0VTUzogJyArIHRh
cmdldC50YWdOYW1lICsgJyAtICcgKyBlLnR5cGUgKyAnIC0gIicgKyBlLmRhdGEgKyAnIicpOwor
ICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlMRUQ6ICcgKyB0YXJnZXQudGFnTmFtZSArICcgLSAn
ICsgZS50eXBlICsgJyAtICInICsgZS5kYXRhICsgJyInKTsKK30KKworZnVuY3Rpb24gc2V0dXBM
aXN0ZW5lcnMoaW5wdXQpIHsKKyAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSA8aW5w
dXQ+IG5vZGUuCisgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIs
IGxvZ0V2ZW50LCBmYWxzZSk7CisgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRp
b251cGRhdGUiLCBsb2dFdmVudCwgZmFsc2UpOworICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIo
ImNvbXBvc2l0aW9uZW5kIiwgbG9nRXZlbnQsIGZhbHNlKTsKKyAgICBpbnB1dC5hZGRFdmVudExp
c3RlbmVyKCJ0ZXh0SW5wdXQiLCBsb2dFdmVudCwgZmFsc2UpOworfQorCit2YXIgdGVzdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Cit2YXIgcGFyZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3BhcmVudCcpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgc2V0dXBM
aXN0ZW5lcnMoZG9jdW1lbnQuYm9keSk7CisKKyAgICAvLyBTdGFydCBjb21wb3NpbmcgYSB0ZXh0
LCByZW1vdmUgdGhlIGNvbXBvc2l0aW9uIG5vZGUsIGFuZCB0aGVuCisgICAgLy8gdHJ5IHRvIGNv
bW1pdC4KKyAgICB0ZXN0LmZvY3VzKCk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJr
ZWRUZXh0KCcxJywgMCwgMSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBhcmVu
dCk7CisKKyAgICAvLyBBIHBhcmVudCBvZiB0aGUgY29tcG9zaXRpb24gbm9kZSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gdGhlIGRvbS4KKyAgICAvLyBleHBlY3QgdGhlIGZvbGxvd2luZyBjb21wb3Np
dGlvbnMgdG8gZmFpbC4KKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoJzIn
LCAwLCAxKTsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoJzMnKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="130100"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>