<?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>61931</bug_id>
          
          <creation_ts>2011-06-02 08:57:22 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs an implementation of setTextDirection</short_desc>
          <delta_ts>2011-07-11 19:52:01 -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>Tools / Tests</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>http://build.webkit.org/results/SnowLeopard Intel Release (WebKit2 Tests)/r87770 (12170)/results.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>hbono</cc>
    
    <cc>jberlin</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>414168</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-06-02 08:57:22 -0700</bug_when>
    <thetext>fast/html/set-text-direction.html has been failing on SnowLeopard Intel Release (WebKit2 Tests) since its introduction in http://trac.webkit.org/changeset/87770.

http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(WebKit2%20Tests)/r87768%20(12169)/results.html passed
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(WebKit2%20Tests)/r87770%20(12170)/results.html failed

I am going to add it to the mac-wk2 skipped list for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414185</commentid>
    <comment_count>1</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-06-02 09:26:00 -0700</bug_when>
    <thetext>Added to the mac-wk2 skipped list in http://trac.webkit.org/changeset/87917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414186</commentid>
    <comment_count>2</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-06-02 09:26:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/9542509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425050</commentid>
    <comment_count>3</comment_count>
      <attachid>98124</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-06-21 23:45:29 -0700</bug_when>
    <thetext>Created attachment 98124
Patch v1

Greetings,

I have quickly implemented this function for WebKit2 and Windows. Even though I have created this change without deep knowledge about them and it may be wrong, would it be possible to review this change and give me your comments?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425058</commentid>
    <comment_count>4</comment_count>
      <attachid>98127</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-06-22 00:00:58 -0700</bug_when>
    <thetext>Created attachment 98127
Patch v2 (fixed style issues)

Greetings,

Unfortunately, I have uploaded a wrong change. (This is the one before I fixed style issues.) I have uploaded the correct one.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425199</commentid>
    <comment_count>5</comment_count>
      <attachid>98127</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-06-22 07:15:49 -0700</bug_when>
    <thetext>Comment on attachment 98127
Patch v2 (fixed style issues)

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

Unofficial (I am not a reviewer yet) r=me if you fix the leak.

&gt; Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp:1577
&gt; +    framePrivate-&gt;setTextDirection(directionBSTR);

Potential leak: where is directionBSTR freed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426005</commentid>
    <comment_count>6</comment_count>
      <attachid>98321</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-06-23 01:02:52 -0700</bug_when>
    <thetext>Created attachment 98321
Patch v3 (fixed a memory leak)

Greetings Jessie,

Thank you for your review and comment.

(In reply to comment #5)
&gt; (From update of attachment 98127 [details])
&gt; &gt; Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp:1577
&gt; &gt; +    framePrivate-&gt;setTextDirection(directionBSTR);
&gt; 
&gt; Potential leak: where is directionBSTR freed?

Thank you for noticing this leak. I totally forgot calling SysFreeString(). I have added a SysFreeString() call after this line.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426336</commentid>
    <comment_count>7</comment_count>
      <attachid>98321</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-23 11:58:49 -0700</bug_when>
    <thetext>Comment on attachment 98321
Patch v3 (fixed a memory leak)

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

Thanks for implementing this! I think this could use another pass.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:327
&gt; +void InjectedBundle::setTextDirection(WebFrame* frame, const String&amp; direction)
&gt; +{
&gt; +    Frame* coreFrame = frame ? frame-&gt;coreFrame() : 0;
&gt; +    if (!coreFrame || !coreFrame-&gt;editor())
&gt; +        return;
&gt; +
&gt; +    if (direction == &quot;auto&quot;)
&gt; +        coreFrame-&gt;editor()-&gt;setBaseWritingDirection(NaturalWritingDirection);
&gt; +    else if (direction == &quot;ltr&quot;)
&gt; +        coreFrame-&gt;editor()-&gt;setBaseWritingDirection(LeftToRightWritingDirection);
&gt; +    else if (direction == &quot;rtl&quot;)
&gt; +        coreFrame-&gt;editor()-&gt;setBaseWritingDirection(RightToLeftWritingDirection);
&gt; +}

This function should be a member of WebFrame, not InjectedBundle. The corresponding API would be WKBundleFrameSetTextDirection.

&gt; Source/WebKit/win/Interfaces/IWebFramePrivate.idl:122
&gt; +    HRESULT setTextDirection([in] BSTR direction);

New functions must be added to the end of the interface to avoid breaking nightly builds.

&gt; Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp:1578
&gt; +    wstring directionWstring = jsStringRefToWString(direction);
&gt; +    BSTR directionBSTR = SysAllocStringLen((OLECHAR*)directionWstring.c_str(), directionWstring.length());
&gt; +    framePrivate-&gt;setTextDirection(directionBSTR);
&gt; +    SysFreeString(directionBSTR);

Please use the bstrT() helper function instead of doing this manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426801</commentid>
    <comment_count>8</comment_count>
      <attachid>98476</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-06-24 03:09:11 -0700</bug_when>
    <thetext>Created attachment 98476
Patch v4 (applied comments)

Greeting Adam,

Thank you for your review and comments.
I have updated my change to apply your comments. (I may misunderstand your comments, though.)

(In reply to comment #7)
&gt; (From update of attachment 98321 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98321&amp;action=review
&gt; 
&gt; Thanks for implementing this! I think this could use another pass.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:327
&gt; &gt; +void InjectedBundle::setTextDirection(WebFrame* frame, const String&amp; direction)
&gt; &gt; +{
&gt; &gt; +    Frame* coreFrame = frame ? frame-&gt;coreFrame() : 0;
&gt; &gt; +    if (!coreFrame || !coreFrame-&gt;editor())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    if (direction == &quot;auto&quot;)
&gt; &gt; +        coreFrame-&gt;editor()-&gt;setBaseWritingDirection(NaturalWritingDirection);
&gt; &gt; +    else if (direction == &quot;ltr&quot;)
&gt; &gt; +        coreFrame-&gt;editor()-&gt;setBaseWritingDirection(LeftToRightWritingDirection);
&gt; &gt; +    else if (direction == &quot;rtl&quot;)
&gt; &gt; +        coreFrame-&gt;editor()-&gt;setBaseWritingDirection(RightToLeftWritingDirection);
&gt; &gt; +}
&gt; 
&gt; This function should be a member of WebFrame, not InjectedBundle. The corresponding API would be WKBundleFrameSetTextDirection.

I have added a new function WebFrame::setTextDirection and moved this code there. Even though I have renamed WKBundleSetTextDirection to WKBundleFrameSetTextDirection, I left this InjectedBundle::setTextDirection (it just calls WebFrame::setTextDirection) since I&apos;m not sure if WKBundleFrameSetTextDirection should call WebFrame::setTextDirection directly.

&gt; &gt; Source/WebKit/win/Interfaces/IWebFramePrivate.idl:122
&gt; &gt; +    HRESULT setTextDirection([in] BSTR direction);
&gt; 
&gt; New functions must be added to the end of the interface to avoid breaking nightly builds.

Done. Thank you for noticing it.
 
&gt; &gt; Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp:1578
&gt; &gt; +    wstring directionWstring = jsStringRefToWString(direction);
&gt; &gt; +    BSTR directionBSTR = SysAllocStringLen((OLECHAR*)directionWstring.c_str(), directionWstring.length());
&gt; &gt; +    framePrivate-&gt;setTextDirection(directionBSTR);
&gt; &gt; +    SysFreeString(directionBSTR);
&gt; 
&gt; Please use the bstrT() helper function instead of doing this manually.

Done. Thank you for noticing it.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426912</commentid>
    <comment_count>9</comment_count>
      <attachid>98321</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-24 09:04:07 -0700</bug_when>
    <thetext>Comment on attachment 98321
Patch v3 (fixed a memory leak)

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:327
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; This function should be a member of WebFrame, not InjectedBundle. The corresponding API would be WKBundleFrameSetTextDirection.
&gt; 
&gt; I have added a new function WebFrame::setTextDirection and moved this code there. Even though I have renamed WKBundleSetTextDirection to WKBundleFrameSetTextDirection, I left this InjectedBundle::setTextDirection (it just calls WebFrame::setTextDirection) since I&apos;m not sure if WKBundleFrameSetTextDirection should call WebFrame::setTextDirection directly.

Yes, I think WKBundleFrameSetTextDirection should call WebFrame::setTextDirection directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426916</commentid>
    <comment_count>10</comment_count>
      <attachid>98476</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-24 09:06:15 -0700</bug_when>
    <thetext>Comment on attachment 98476
Patch v4 (applied comments)

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

This looks really close!

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp:219
&gt; +void WKBundleFrameSetTextDirection(WKBundleRef bundleRef, WKBundleFrameRef frameRef, WKStringRef directionRef)
&gt; +{
&gt; +    toImpl(bundleRef)-&gt;setTextDirection(toImpl(frameRef), toImpl(directionRef)-&gt;string());
&gt; +}

This function should be in WKBundleFrame.cpp, and shouldn&apos;t take a WKBundleRef parameter.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:86
&gt; +WK_EXPORT void WKBundleFrameSetTextDirection(WKBundleRef bundle, WKBundleFrameRef frameRef, WKStringRef);

This should be in WKBundleFramePrivate.h.

&gt; Source/WebKit/win/WebFrame.cpp:1065
&gt; +HRESULT STDMETHODCALLTYPE WebFrame::setTextDirection(
&gt; +        /* [in] */ BSTR direction)

You can remove the STDMETHODCALLTYPE (it&apos;s only needed on the declaration, not the definition) and the /* [in] */ comment (even though most other functions in this file have left them in place). We&apos;d like to be as concise as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427838</commentid>
    <comment_count>11</comment_count>
      <attachid>98697</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2011-06-27 04:08:15 -0700</bug_when>
    <thetext>Created attachment 98697
Patch v5

Greetings Adam,

Thank you for your review and comments. (This is a very good practice about WebKitTestRunner for me.)

(In reply to comment #10)
&gt; This function should be in WKBundleFrame.cpp, and shouldn&apos;t take a WKBundleRef parameter.

Thank you for noticing it. I did not noticed WKBundleFrame.cpp. I have moved this WKBundleFrameSetTextDirection. (It makes this change simpler.)

&gt; This should be in WKBundleFramePrivate.h.

Done.

&gt; You can remove the STDMETHODCALLTYPE (it&apos;s only needed on the declaration, not the definition) and the /* [in] */ comment (even though most other functions in this file have left them in place). We&apos;d like to be as concise as possible.

Thank you so much for your description. (I have pasted this code just because every other function uses this style even though I&apos;m not sure why.) This description answers my question.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427874</commentid>
    <comment_count>12</comment_count>
      <attachid>98697</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-27 05:42:22 -0700</bug_when>
    <thetext>Comment on attachment 98697
Patch v5

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433885</commentid>
    <comment_count>13</comment_count>
      <attachid>98697</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-07 21:21:07 -0700</bug_when>
    <thetext>Comment on attachment 98697
Patch v5

Rejecting attachment 98697 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
edBundle/Bindings/LayoutTestController.idl
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/platform/mac-wk2/Skipped
Hunk #1 FAILED at 409.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/mac-wk2/Skipped.rej
patching file LayoutTests/platform/win/Skipped
Hunk #1 succeeded at 1014 (offset 7 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Adam Roben&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/9000381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435410</commentid>
    <comment_count>14</comment_count>
      <attachid>100415</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-11 19:05:33 -0700</bug_when>
    <thetext>Created attachment 100415
For cqing again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435447</commentid>
    <comment_count>15</comment_count>
      <attachid>100415</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 19:51:55 -0700</bug_when>
    <thetext>Comment on attachment 100415
For cqing again.

Clearing flags on attachment: 100415

Committed r90806: &lt;http://trac.webkit.org/changeset/90806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435448</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 19:52:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98124</attachid>
            <date>2011-06-21 23:45:29 -0700</date>
            <delta_ts>2011-06-22 00:00:58 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>issue61931-patch0.txt</filename>
            <type>text/plain</type>
            <size>13336</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NDA5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDYtMjEgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRl
eHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdl
IGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2Vi
S2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRk
ZWQgYnkgcjg3NzcwIG9uIHRoZW0uIFRoaXMKKyAgICAgICAgY2hhbmdlIGNhbGxzIEVkaXRvcjo6
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSB0aHJvdWdoIFdlYkZyYW1lLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6IEFkZGVkIFdLQnVu
ZGxlU2V0VGV4dERpcmVjdGlvbgorICAgICAgICBzbyB3ZSBjYW4gY2FsbCBpdCBmcm9tIExheW91
dFRlc3RDb250cm9sbGVyLgorICAgICAgICAoV0tCdW5kbGVTZXRUZXh0RGlyZWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5o
OiBkaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDogZGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRUZXh0
RGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmg6IGRpdHRvLgorCiAyMDExLTA2LTIxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4OTQwMSBhbmQg
cjg5NDAzLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDg5NDAyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTTG9jay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIuaD4KQEAgLTMxMSw2ICszMTIsMjAgQEAgc2l6ZV90
IEluamVjdGVkQnVuZGxlOjpqYXZhU2NyaXB0T2JqZWN0cwogICAgIHJldHVybiBKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAub2JqZWN0Q291bnQoKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0VGV4dERpcmVjdGlvbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1l
LT5jb3JlRnJhbWUoKSA6IDA7CisgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRp
dG9yKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkaXJlY3Rpb24gPT0gImF1dG8iKQor
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJh
bFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibHRyIikKKyAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1Jp
Z2h0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJydGwiKQor
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRU
b0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVwb3J0
RXhjZXB0aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGV4Y2VwdGlvbikKIHsK
ICAgICBpZiAoIWNvbnRleHQgfHwgIWV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJ
KHJldmlzaW9uIDg5NDAyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDggQEAg
cHVibGljOgogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c09uQWx0ZXJu
YXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9uZSk7CiAgICAgc2l6ZV90IGph
dmFTY3JpcHRPYmplY3RzQ291bnQoKTsKIAorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihXZWJG
cmFtZSosIGNvbnN0IFN0cmluZyYpOworCiAgICAgLy8gQ2FsbGJhY2sgaG9va3MKICAgICB2b2lk
IGRpZENyZWF0ZVBhZ2UoV2ViUGFnZSopOwogICAgIHZvaWQgd2lsbERlc3Ryb3lQYWdlKFdlYlBh
Z2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiA4OTQwMikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMyArMjEyLDggQEAgYm9vbCBXS0J1bmRsZUlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKFdLQgogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6aXNQcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KKwordm9pZCBXS0J1bmRsZVNldFRleHREaXJlY3Rpb24o
V0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0cmlu
Z1JlZiBkaXJlY3Rpb25SZWYpCit7CisgIHRvSW1wbChidW5kbGVSZWYpLT5zZXRUZXh0RGlyZWN0
aW9uKHRvSW1wbChmcmFtZVJlZiksIHRvSW1wbChkaXJlY3Rpb25SZWYpLT5zdHJpbmcoKSk7Cit9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgJKHJldmlzaW9uIDg5NDAyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzCiAKIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlSXNQ
cm9jZXNzaW5nVXNlckdlc3R1cmUoV0tCdW5kbGVSZWYgYnVuZGxlKTsKIAorV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVTZXRUZXh0RGlyZWN0aW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZVJlZiwgV0tTdHJpbmdSZWYpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODk0MDkpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
MS0wNi0yMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2ViS2l0MiBhbmQgV2luZG93cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTMxCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBsYXlvdXRUZXh0Q29udHJvbGxlci5zZXRUZXh0
RGlyZWN0aW9uIGZvciBXZWJLaXQyCisgICAgICAgIGFuZCBXaW5kb3dzIHNvIHdlIGNhbiBydW4g
YSBsYXlvdXQgdGVzdCBhZGRlZCBieSByODc3NzAgb24gdGhlbS4gVGhpcworICAgICAgICBjaGFu
Z2UgY2FsbHMgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbigpIHRocm91Z2ggV2ViRnJh
bWUuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsOiBBZGRlZCBz
ZXRUZXh0RGlyZWN0aW9uIHNvIHdlIGNhbiBjYWxsCisgICAgICAgIGl0IGZyb20gTGF5b3V0VGVz
dENvbnRyb2xsZXIuCisgICAgICAgICogV2ViRnJhbWUuY3BwOiBJbXBsZW1lbnRlZCBzZXRUZXh0
RGlyZWN0aW9uCisgICAgICAgIChXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbik6CisgICAgICAg
ICogV2ViRnJhbWUuaDogZGl0dG8uCisKIDIwMTEtMDYtMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI4OTM1NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDg5NDAyKQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUyLDYg
KzEwNTIsMjMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFzUwogICAg
IHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpz
ZXRUZXh0RGlyZWN0aW9uKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGlyZWN0aW9uKQorewor
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghY29yZUZyYW1lIHx8
ICFjb3JlRnJhbWUtPmVkaXRvcigpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgU3Ry
aW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24sIFN5c1N0cmluZ0xlbihkaXJlY3Rpb24pKTsK
KyAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJhdXRvIikKKyAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24p
OworICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAibHRyIikKKyAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5n
RGlyZWN0aW9uKTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gInJ0bCIpCisgICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9M
ZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OmNsZWFyT3BlbmVyKCkKIHsKICAgICBIUkVTVUxUIGhy
ID0gU19PSzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaAkocmV2aXNpb24gODk0MDIpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDkg
QEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIFVJTlQgbGVuZ3RoLAogICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0VGV4dERpcmVjdGlvbigKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IGRpcmVjdGlvbik7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xl
YXJPcGVuZXIoKTsKIAogICAgIC8vIElXZWJEb2N1bWVudFRleHQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAkocmV2aXNpb24g
ODk0MDIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNSArMTE5LDcgQEAgaW50ZXJmYWNlIElXZWJGcmFt
ZVByaXZhdGUgOiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCBoYXNTcGVsbGluZ01hcmtlcihbaW5d
IFVJTlQgZnJvbSwgW2luXSBVSU5UIGxlbmd0aCwgW291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQp
OwogICAgIAorICAgIEhSRVNVTFQgc2V0VGV4dERpcmVjdGlvbihbaW5dIEJTVFIgZGlyZWN0aW9u
KTsKKwogICAgIEhSRVNVTFQgY2xlYXJPcGVuZXIoKTsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NDA5KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDYtMjEg
IEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9s
bGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRo
aXMgY2hhbmdlIGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlv
biBmb3IgV2ViS2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0
IHRlc3QgYWRkZWQgYnkgcjg3NzcwIG9uIHRoZW0uIFRoaXMKKyAgICAgICAgY2hhbmdlIGNhbGxz
IEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSB0aHJvdWdoIFdlYkZyYW1lLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKTogQWRkZWQg
YSBDKysgYmluZGluZyBmb3IKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERp
cmVjdGlvbi4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDogZGl0dG8uCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6IGRpdHRvLgor
ICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOiBkaXR0by4KKwogMjAxMS0wNi0yMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODk0MDEgYW5kIHI4
OTQwMy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODk0MDIpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTY4LDUgKzE1NjgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRp
bQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5n
UmVmIGRpcmVjdGlvbikKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIENPTVB0cjxJ
V2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1lKTsKKyAgICBpZiAoIWZy
YW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd3N0cmluZyBkaXJlY3Rpb25Xc3Ry
aW5nID0ganNTdHJpbmdSZWZUb1dTdHJpbmcoZGlyZWN0aW9uKTsKKyAgICBCU1RSIGRpcmVjdGlv
bkJTVFIgPSBTeXNBbGxvY1N0cmluZ0xlbigoT0xFQ0hBUiopZGlyZWN0aW9uV3N0cmluZy5jX3N0
cigpLCBkaXJlY3Rpb25Xc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBmcmFtZVByaXZhdGUtPnNldFRl
eHREaXJlY3Rpb24oZGlyZWN0aW9uQlNUUik7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gODk0MDIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0
LDQgKzU0NCwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQT1NJWExvY2FsCiAg
ICAgc2V0bG9jYWxlKExDX0FMTCwgbG9jYWxlQnVmKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCit7CisgICAg
V0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICByZXR1cm4gV0tCdW5k
bGVTZXRUZXh0RGlyZWN0aW9uKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgbWFp
bkZyYW1lLCB0b1dLKGRpcmVjdGlvbikuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDg5NDAyKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAgcHVibGljOgogICAgIGJvb2wgd2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGwoKSB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsOyB9CiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChib29sIGYpIHsg
bV93aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IGY7IH0KIAorICAgIHZvaWQgc2V0VGV4dERp
cmVjdGlvbihKU1N0cmluZ1JlZik7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAkocmV2aXNpb24gODk0MDIpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw4IEBAIG1vZHVsZSBXVFIg
ewogCiAgICAgICAgIHZvaWQgc2V0UE9TSVhMb2NhbGUoaW4gRE9NU3RyaW5nIGxvY2FsZSk7CiAK
KyAgICAgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKGluIERPTVN0cmluZyBkaXJlY3Rpb24pOwor
CiAgICAgICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoaW4gYm9vbGVhbiBm
bGFnKTsKICAgICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4OTQwOSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTA2LTIxICBI
aXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyIGFuZCBXaW5kb3dzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MzEKKworICAgICAgICBUaGlz
IGNoYW5nZSBpbXBsZW1lbnRzIGxheW91dFRleHRDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24g
Zm9yIFdlYktpdDIKKyAgICAgICAgYW5kIFdpbmRvd3Mgc28gd2UgY2FuIHJ1biBhIGxheW91dCB0
ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0aGVtLiBUaGlzCisgICAgICAgIGNoYW5nZSBjYWxscyBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgdGhyb3VnaCBXZWJGcmFtZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azIvU2tpcHBlZDogUmVtb3ZlZCBzZXQtdGV4dC1kaXJlY3Rp
b24uaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogZGl0dG8uCisKIDIwMTEt
MDYtMjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtRdF0g
VGVzdCBleHBlY3RhdGlvbiB1cGRhdGUgZm9yIHI4OTQwNy4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL1NraXBwZWQJKHJldmlzaW9uIDg5NDAyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsMTAgKzQwNCw2IEBAIHNj
cm9sbGJhcnMvc2Nyb2xsYmFyLWlmcmFtZS1jbGljay1kb2VzLW4KIHNjcm9sbGJhcnMvc2Nyb2xs
YmFyLW1pc3MtbW91c2Vtb3ZlLWRpc2FibGVkLmh0bWwKIHNjcm9sbGJhcnMvc2Nyb2xsZXZlbnQt
aWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBzZXRUZXh0RGlyZWN0aW9uLgotIyA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTMxPgotZmFzdC9odG1sL3NldC10ZXh0LWRp
cmVjdGlvbi5odG1sCi0KICMgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFNWRyBhbmltYXRpb24g
cGF1c2UgQVBJIG1pc3NpbmchCiBzdmcvYW5pbWF0aW9ucy9hbmltVmFsLWJhc2ljcy5odG1sCiBz
dmcvYW5pbWF0aW9ucy9hbmltYXRlLWNhbGNNb2RlLXNwbGluZS1ieS5odG1sCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gODk0MDIpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtOTk3LDkgKzk5Nyw2IEBAIGVkaXRp
bmcvc3BlbGxpbmcvZ3JhbW1hci5odG1sCiAjIEVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVj
ay1wYXN0ZS5odG1sCiAKLSMgbGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24o
KSBpcyBub3QgaW1wbGVtZW50ZWQKLWZhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAot
CiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBzdG9yYWdlL2luZGV4ZWRkYgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98127</attachid>
            <date>2011-06-22 00:00:58 -0700</date>
            <delta_ts>2011-06-23 01:02:52 -0700</delta_ts>
            <desc>Patch v2 (fixed style issues)</desc>
            <filename>issue61931-patch1.txt</filename>
            <type>text/plain</type>
            <size>13313</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NDA5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDYtMjEgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRl
eHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdl
IGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2Vi
S2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRk
ZWQgYnkgcjg3NzcwIG9uIHRoZW0uIFRoaXMKKyAgICAgICAgY2hhbmdlIGNhbGxzIEVkaXRvcjo6
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKSB0aHJvdWdoIFdlYkZyYW1lLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6IEFkZGVkIFdLQnVu
ZGxlU2V0VGV4dERpcmVjdGlvbgorICAgICAgICBzbyB3ZSBjYW4gY2FsbCBpdCBmcm9tIExheW91
dFRlc3RDb250cm9sbGVyLgorICAgICAgICAoV0tCdW5kbGVTZXRUZXh0RGlyZWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5o
OiBkaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDogZGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRUZXh0
RGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmg6IGRpdHRvLgorCiAyMDExLTA2LTIxICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4OTQwMSBhbmQg
cjg5NDAzLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDg5NDAyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTTG9jay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIuaD4KQEAgLTMxMSw2ICszMTIsMjAgQEAgc2l6ZV90
IEluamVjdGVkQnVuZGxlOjpqYXZhU2NyaXB0T2JqZWN0cwogICAgIHJldHVybiBKU0RPTVdpbmRv
dzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAub2JqZWN0Q291bnQoKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0VGV4dERpcmVjdGlvbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1l
LT5jb3JlRnJhbWUoKSA6IDA7CisgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRp
dG9yKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkaXJlY3Rpb24gPT0gImF1dG8iKQor
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbik7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJsdHIiKQor
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0
VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicnRs
IikKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
UmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cmVwb3J0RXhjZXB0aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGV4Y2VwdGlv
bikKIHsKICAgICBpZiAoIWNvbnRleHQgfHwgIWV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgJKHJldmlzaW9uIDg5NDAyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3
LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c09u
QWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9uZSk7CiAgICAgc2l6
ZV90IGphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKIAorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlv
bihXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYpOworCiAgICAgLy8gQ2FsbGJhY2sgaG9va3MKICAg
ICB2b2lkIGRpZENyZWF0ZVBhZ2UoV2ViUGFnZSopOwogICAgIHZvaWQgd2lsbERlc3Ryb3lQYWdl
KFdlYlBhZ2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiA4OTQwMikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMyArMjEyLDggQEAgYm9vbCBXS0J1bmRsZUlz
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKFdLQgogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6
aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KKwordm9pZCBXS0J1bmRsZVNldFRleHREaXJl
Y3Rpb24oV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBX
S1N0cmluZ1JlZiBkaXJlY3Rpb25SZWYpCit7CisgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnNldFRl
eHREaXJlY3Rpb24odG9JbXBsKGZyYW1lUmVmKSwgdG9JbXBsKGRpcmVjdGlvblJlZiktPnN0cmlu
ZygpKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAkocmV2aXNpb24g
ODk0MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIFdLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlUmVzZXRPcmlnaW5BY2Nlc3MKIAogV0tfRVhQT1JUIGJvb2wgV0tC
dW5kbGVJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZShXS0J1bmRsZVJlZiBidW5kbGUpOwogCitXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVNldFRleHREaXJlY3Rpb24oV0tCdW5kbGVSZWYgYnVuZGxlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0cmluZ1JlZik7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4OTQwOSkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDExLTA2LTIxICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyIGFuZCBXaW5k
b3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5
MzEKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxheW91dFRleHRDb250cm9sbGVy
LnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIKKyAgICAgICAgYW5kIFdpbmRvd3Mgc28gd2Ug
Y2FuIHJ1biBhIGxheW91dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0aGVtLiBUaGlzCisgICAg
ICAgIGNoYW5nZSBjYWxscyBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkgdGhyb3Vn
aCBXZWJGcmFtZS4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6
IEFkZGVkIHNldFRleHREaXJlY3Rpb24gc28gd2UgY2FuIGNhbGwKKyAgICAgICAgaXQgZnJvbSBM
YXlvdXRUZXN0Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6IEltcGxlbWVudGVk
IHNldFRleHREaXJlY3Rpb24KKyAgICAgICAgKFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKToK
KyAgICAgICAgKiBXZWJGcmFtZS5oOiBkaXR0by4KKwogMjAxMS0wNi0yMSAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjg5MzU0LgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODk0
MDIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNTIsNiArMTA1MiwyMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpo
YXNTCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RnJhbWU6OnNldFRleHREaXJlY3Rpb24oCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkaXJlY3Rp
b24pCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CisgICAgaWYgKCFjb3Jl
RnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRpdG9yKCkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisK
KyAgICBTdHJpbmcgZGlyZWN0aW9uU3RyaW5nKGRpcmVjdGlvbiwgU3lzU3RyaW5nTGVuKGRpcmVj
dGlvbikpOworICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gImF1dG8iKQorICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1cmFsV3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJsdHIiKQorICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdo
dFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAicnRs
IikKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
UmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6Y2xlYXJPcGVuZXIoKQogewogICAgIEhS
RVNVTFQgaHIgPSBTX09LOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA4OTQwMikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2
ICsyODEsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBsZW5ndGgsCiAgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0RGlyZWN0aW9uKEJTVFIpOworCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFyT3BlbmVyKCk7CiAKICAgICAvLyBJ
V2ViRG9jdW1lbnRUZXh0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJG
cmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDg5NDAyKQorKysgU291cmNlL1dlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDUgKzExOSw3IEBAIGludGVyZmFjZSBJV2ViRnJhbWVQcml2YXRlIDogSVVua25vd24KIAog
ICAgIEhSRVNVTFQgaGFzU3BlbGxpbmdNYXJrZXIoW2luXSBVSU5UIGZyb20sIFtpbl0gVUlOVCBs
ZW5ndGgsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKICAgICAKKyAgICBIUkVTVUxUIHNl
dFRleHREaXJlY3Rpb24oW2luXSBCU1RSIGRpcmVjdGlvbik7CisKICAgICBIUkVTVUxUIGNsZWFy
T3BlbmVyKCk7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4OTQwOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDExLTA2LTIxICBIaXJvbm9yaSBCb25vICA8aGJvbm9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZv
ciBXZWJLaXQyIGFuZCBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjE5MzEKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxh
eW91dFRleHRDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIKKyAgICAgICAg
YW5kIFdpbmRvd3Mgc28gd2UgY2FuIHJ1biBhIGxheW91dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBv
biB0aGVtLiBUaGlzCisgICAgICAgIGNoYW5nZSBjYWxscyBFZGl0b3I6OnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKCkgdGhyb3VnaCBXZWJGcmFtZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik6IEFkZGVkIGEgQysrIGJpbmRpbmcgZm9yCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24uCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxl
ci5pZGw6IGRpdHRvLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOiBkaXR0by4KKyAgICAgICAgKFdUUjo6TGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDogZGl0dG8uCisKIDIwMTEt
MDYtMjEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg5NDAxIGFuZCByODk0MDMuCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJl
dmlzaW9uIDg5NDAyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250
cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2OCw1ICsxNTY4LDExIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW0KIAogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCiB7Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudC4KKyAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQ
cml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIHdzdHJpbmcgZGlyZWN0aW9uV3N0cmluZyA9IGpzU3RyaW5nUmVmVG9XU3Ry
aW5nKGRpcmVjdGlvbik7CisgICAgQlNUUiBkaXJlY3Rpb25CU1RSID0gU3lzQWxsb2NTdHJpbmdM
ZW4oKE9MRUNIQVIqKWRpcmVjdGlvbldzdHJpbmcuY19zdHIoKSwgZGlyZWN0aW9uV3N0cmluZy5s
ZW5ndGgoKSk7CisgICAgZnJhbWVQcml2YXRlLT5zZXRUZXh0RGlyZWN0aW9uKGRpcmVjdGlvbkJT
VFIpOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDg5NDAy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NCw0ICs1NDQsMTAgQEAgdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0UE9TSVhMb2NhbAogICAgIHNldGxvY2FsZShMQ19BTEwsIGxv
Y2FsZUJ1Zik7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rp
b24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZy
YW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
YWdlKCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIFdLQnVuZGxlU2V0VGV4dERpcmVjdGlvbihJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIG1haW5GcmFtZSwgdG9XSyhkaXJlY3Rpb24p
LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCShyZXZpc2lvbiA4OTQwMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYg
KzE2OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkg
eyByZXR1cm4gbV93aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbDsgfQogICAgIHZvaWQgc2V0V2ls
bFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoYm9vbCBmKSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGwgPSBmOyB9CiAKKyAgICB2b2lkIHNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYpOwor
CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXJJbnRlcnZhbDsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGwJKHJldmlzaW9uIDg5NDAyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTExNCw2ICsxMTQsOCBAQCBtb2R1bGUgV1RSIHsKIAogICAgICAgICB2b2lkIHNldFBP
U0lYTG9jYWxlKGluIERPTVN0cmluZyBsb2NhbGUpOwogCisgICAgICAgIHZvaWQgc2V0VGV4dERp
cmVjdGlvbihpbiBET01TdHJpbmcgZGlyZWN0aW9uKTsKKwogICAgICAgICB2b2lkIHNldFdpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsKGluIGJvb2xlYW4gZmxhZyk7CiAgICAgfTsKIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gODk0MDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wNi0yMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3Ig
V2ViS2l0MiBhbmQgV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxOTMxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBsYXlv
dXRUZXh0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyCisgICAgICAgIGFu
ZCBXaW5kb3dzIHNvIHdlIGNhbiBydW4gYSBsYXlvdXQgdGVzdCBhZGRlZCBieSByODc3NzAgb24g
dGhlbS4gVGhpcworICAgICAgICBjaGFuZ2UgY2FsbHMgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbigpIHRocm91Z2ggV2ViRnJhbWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L1NraXBwZWQ6IFJlbW92ZWQgc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwuCisgICAgICAgICogcGxh
dGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDExLTA2LTIxICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUXRdIFRlc3QgZXhwZWN0YXRpb24gdXBkYXRl
IGZvciByODk0MDcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCShyZXZp
c2lvbiA4OTQwMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkod29y
a2luZyBjb3B5KQpAQCAtNDA0LDEwICs0MDQsNiBAQCBzY3JvbGxiYXJzL3Njcm9sbGJhci1pZnJh
bWUtY2xpY2stZG9lcy1uCiBzY3JvbGxiYXJzL3Njcm9sbGJhci1taXNzLW1vdXNlbW92ZS1kaXNh
YmxlZC5odG1sCiBzY3JvbGxiYXJzL3Njcm9sbGV2ZW50LWlmcmFtZS1uby1zY3JvbGxpbmctd2hl
ZWwuaHRtbAogCi0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2Yg
c2V0VGV4dERpcmVjdGlvbi4KLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MTkzMT4KLWZhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAotCiAjIENPTlNP
TEUgTUVTU0FHRTogbGluZSAwOiBTVkcgYW5pbWF0aW9uIHBhdXNlIEFQSSBtaXNzaW5nIQogc3Zn
L2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRtbAogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1j
YWxjTW9kZS1zcGxpbmUtYnkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJl
dmlzaW9uIDg5NDAyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTk5Nyw5ICs5OTcsNiBAQCBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRt
bAogIyBFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkgaXMgbm90IGltcGxl
bWVudGVkCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbAogCi0jIGxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKCkgaXMgbm90IGltcGxlbWVudGVkCi1m
YXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKLQogIyBJbmRleGVkREIgaXMgbm90IHll
dCBlbmFibGVkLgogc3RvcmFnZS9pbmRleGVkZGIKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98321</attachid>
            <date>2011-06-23 01:02:52 -0700</date>
            <delta_ts>2011-06-24 09:04:07 -0700</delta_ts>
            <desc>Patch v3 (fixed a memory leak)</desc>
            <filename>issue61931-patch2.txt</filename>
            <type>text/plain</type>
            <size>13598</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NTM2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDYtMjIgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRl
eHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdl
IGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2Vi
S2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRk
ZWQgYnkgcjg3NzcwIG9uIHRoZW0uIEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24gYWRkcyBh
IHdyYXBwZXIgZnVuY3Rpb24gZm9yIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKQor
ICAgICAgICBzbyBMYXlvdXRUZXN0Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOiBBZGRlZCBXS0J1
bmRsZVNldFRleHREaXJlY3Rpb24KKyAgICAgICAgc28gd2UgY2FuIGNhbGwgaXQgZnJvbSBMYXlv
dXRUZXN0Q29udHJvbGxlci4KKyAgICAgICAgKFdLQnVuZGxlU2V0VGV4dERpcmVjdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUu
aDogZGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0VGV4
dERpcmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oOiBkaXR0by4KKwogMjAxMS0wNi0yMiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gODk1MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dDQ29u
dHJvbGxlci5oPgpAQCAtMzExLDYgKzMxMiwyMCBAQCBzaXplX3QgSW5qZWN0ZWRCdW5kbGU6Omph
dmFTY3JpcHRPYmplY3RzCiAgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKS0+aGVhcC5vYmplY3RDb3VudCgpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRU
ZXh0RGlyZWN0aW9uKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCit7
CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lID8gZnJhbWUtPmNvcmVGcmFtZSgpIDogMDsK
KyAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGRpcmVjdGlvbiA9PSAiYXV0byIpCisgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9u
KTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImx0ciIpCisgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVj
dGlvbik7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJydGwiKQorICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdE
aXJlY3Rpb24pOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZXBvcnRFeGNlcHRpb24oSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZXhjZXB0aW9uKQogewogICAgIGlmICghY29u
dGV4dCB8fCAhZXhjZXB0aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gODk1
MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzT25BbHRlcm5hdGVUaHJlYWRGb3JE
ZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsKICAgICBzaXplX3QgamF2YVNjcmlwdE9iamVj
dHNDb3VudCgpOwogCisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYkZyYW1lKiwgY29uc3Qg
U3RyaW5nJik7CisKICAgICAvLyBDYWxsYmFjayBob29rcwogICAgIHZvaWQgZGlkQ3JlYXRlUGFn
ZShXZWJQYWdlKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV2ViUGFnZSopOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHJldmlzaW9uIDg5NTMyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMiwzICsyMTIsOCBAQCBib29sIFdLQnVuZGxlSXNQcm9jZXNzaW5nVXNlckdlc3R1
cmUoV0tCCiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjppc1Byb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpOwogfQorCit2b2lkIFdLQnVuZGxlU2V0VGV4dERpcmVjdGlvbihXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLU3RyaW5nUmVmIGRpcmVjdGlv
blJlZikKK3sKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+c2V0VGV4dERpcmVjdGlvbih0b0ltcGwo
ZnJhbWVSZWYpLCB0b0ltcGwoZGlyZWN0aW9uUmVmKS0+c3RyaW5nKCkpOworfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCShyZXZpc2lvbiA4OTUzMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVS
ZXNldE9yaWdpbkFjY2VzcwogCiBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUlzUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKFdLQnVuZGxlUmVmIGJ1bmRsZSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
U2V0VGV4dERpcmVjdGlvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWVSZWYsIFdLU3RyaW5nUmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NTM2KQorKysgU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDYtMjIgIEhp
cm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVy
LnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBm
b3IgV2ViS2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRl
c3QgYWRkZWQgYnkgcjg3NzcwIG9uIHRoZW0uIEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24g
YWRkcyBhIHdyYXBwZXIgZnVuY3Rpb24gZm9yIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oKQorICAgICAgICBzbyBMYXlvdXRUZXN0Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAg
ICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6IEFkZGVkIHNldFRleHREaXJl
Y3Rpb24gc28gd2UgY2FuIGNhbGwKKyAgICAgICAgaXQgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxl
ci4KKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6IEltcGxlbWVudGVkIHNldFRleHREaXJlY3Rpb24K
KyAgICAgICAgKFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJGcmFt
ZS5oOiBkaXR0by4KKwogMjAxMS0wNi0yMiAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODk1MzIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsNiArMTA1MiwyMyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpoYXNTCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24oCisgICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBkaXJlY3Rpb24pCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUodGhpcyk7CisgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRpdG9yKCkp
CisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBTdHJpbmcgZGlyZWN0aW9uU3RyaW5nKGRp
cmVjdGlvbiwgU3lzU3RyaW5nTGVuKGRpcmVjdGlvbikpOworICAgIGlmIChkaXJlY3Rpb25TdHJp
bmcgPT0gImF1dG8iKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbik7CisgICAgZWxzZSBpZiAoZGlyZWN0
aW9uU3RyaW5nID09ICJsdHIiKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2Ug
aWYgKGRpcmVjdGlvblN0cmluZyA9PSAicnRsIikKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFt
ZTo6Y2xlYXJPcGVuZXIoKQogewogICAgIEhSRVNVTFQgaHIgPSBTX09LOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCShyZXZpc2lvbiA4OTUzMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsOCBAQCBwdWJsaWM6CiAgICAgICAgIC8q
IFtpbl0gKi8gVUlOVCBsZW5ndGgsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAq
cmVzdWx0KTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0
RGlyZWN0aW9uKEJTVFIpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNsZWFyT3BlbmVyKCk7CiAKICAgICAvLyBJV2ViRG9jdW1lbnRUZXh0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwJKHJldmlz
aW9uIDg5NTMyKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2
YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDUgKzExOSw3IEBAIGludGVyZmFjZSBJV2Vi
RnJhbWVQcml2YXRlIDogSVVua25vd24KIAogICAgIEhSRVNVTFQgaGFzU3BlbGxpbmdNYXJrZXIo
W2luXSBVSU5UIGZyb20sIFtpbl0gVUlOVCBsZW5ndGgsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVz
dWx0KTsKICAgICAKKyAgICBIUkVTVUxUIHNldFRleHREaXJlY3Rpb24oW2luXSBCU1RSIGRpcmVj
dGlvbik7CisKICAgICBIUkVTVUxUIGNsZWFyT3BlbmVyKCk7CiB9CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4OTUzNikKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTA2
LTIyICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyIGFuZCBXaW5kb3dzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MzEKKworICAgICAg
ICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxheW91dFRleHRDb250cm9sbGVyLnNldFRleHREaXJl
Y3Rpb24gZm9yIFdlYktpdDIKKyAgICAgICAgYW5kIFdpbmRvd3Mgc28gd2UgY2FuIHJ1biBhIGxh
eW91dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0aGVtLiBFYWNoCisgICAgICAgIGltcGxlbWVu
dGF0aW9uIGFkZHMgYSB3cmFwcGVyIGZ1bmN0aW9uIGZvciBFZGl0b3I6OnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKCkKKyAgICAgICAgc28gTGF5b3V0VGVzdENvbnRyb2xsZXIgY2FuIGNhbGwgaXQu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOiBB
ZGRlZCBhIEMrKyBiaW5kaW5nIGZvcgorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRU
ZXh0RGlyZWN0aW9uIChmb3IgV2luZG93cykKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAg
QWRkZWQgYSBDKysgYmluZGluZyBmb3IgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVj
dGlvbiAoZm9yIFdlYktpdDIpCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKTogZGl0dG8uCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOiBkaXR0bworCiAy
MDExLTA2LTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA4OTUzMikKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NjgsNSArMTU2OCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNaW5pbXVtVGltCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHRE
aXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisgICAgQ09NUHRyPElXZWJGcmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJh
bWUpOworICAgIGlmICghZnJhbWVQcml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICB3c3Ry
aW5nIGRpcmVjdGlvbldzdHJpbmcgPSBqc1N0cmluZ1JlZlRvV1N0cmluZyhkaXJlY3Rpb24pOwor
ICAgIEJTVFIgZGlyZWN0aW9uQlNUUiA9IFN5c0FsbG9jU3RyaW5nTGVuKChPTEVDSEFSKilkaXJl
Y3Rpb25Xc3RyaW5nLmNfc3RyKCksIGRpcmVjdGlvbldzdHJpbmcubGVuZ3RoKCkpOworICAgIGZy
YW1lUHJpdmF0ZS0+c2V0VGV4dERpcmVjdGlvbihkaXJlY3Rpb25CU1RSKTsKKyAgICBTeXNGcmVl
U3RyaW5nKGRpcmVjdGlvbkJTVFIpOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDg5NTMyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NCw0ICs1
NDQsMTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UE9TSVhMb2NhbAogICAgIHNl
dGxvY2FsZShMQ19BTEwsIGxvY2FsZUJ1Zik7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQoreworICAgIFdLQnVu
ZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIFdLQnVuZGxlU2V0
VGV4dERpcmVjdGlvbihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIG1haW5GcmFt
ZSwgdG9XSyhkaXJlY3Rpb24pLmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4OTUzMikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxTZW5kUmVx
dWVzdFJldHVybnNOdWxsKCkgeyByZXR1cm4gbV93aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbDsg
fQogICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoYm9vbCBmKSB7IG1fd2ls
bFNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSBmOyB9CiAKKyAgICB2b2lkIHNldFRleHREaXJlY3Rp
b24oSlNTdHJpbmdSZWYpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2Fp
dFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDg5NTMyKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsOCBAQCBtb2R1bGUgV1RSIHsKIAog
ICAgICAgICB2b2lkIHNldFBPU0lYTG9jYWxlKGluIERPTVN0cmluZyBsb2NhbGUpOwogCisgICAg
ICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihpbiBET01TdHJpbmcgZGlyZWN0aW9uKTsKKwogICAg
ICAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGluIGJvb2xlYW4gZmxhZyk7
CiAgICAgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODk1MzYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNi0yMiAgSGlyb25v
cmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
VGV4dERpcmVjdGlvbiBmb3IgV2ViS2l0MiBhbmQgV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTMxCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgaW1wbGVtZW50cyBsYXlvdXRUZXh0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBX
ZWJLaXQyCisgICAgICAgIGFuZCBXaW5kb3dzIHNvIHdlIGNhbiBydW4gYSBsYXlvdXQgdGVzdCBh
ZGRlZCBieSByODc3NzAgb24gdGhlbS4gRWFjaAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBhZGRz
IGEgd3JhcHBlciBmdW5jdGlvbiBmb3IgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbigp
CisgICAgICAgIHNvIExheW91dFRlc3RDb250cm9sbGVyIGNhbiBjYWxsIGl0LgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBSZW1vdmVkIHNldC10ZXh0LWRpcmVjdGlvbi5o
dG1sLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBkaXR0by4KKwogMjAxMS0wNi0y
MiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFJvYiBCdWlzLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkocmV2aXNp
b24gODk1MzIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTQwNCwxMCArNDA0LDYgQEAgc2Nyb2xsYmFycy9zY3JvbGxiYXItaWZyYW1l
LWNsaWNrLWRvZXMtbgogc2Nyb2xsYmFycy9zY3JvbGxiYXItbWlzcy1tb3VzZW1vdmUtZGlzYWJs
ZWQuaHRtbAogc2Nyb2xsYmFycy9zY3JvbGxldmVudC1pZnJhbWUtbm8tc2Nyb2xsaW5nLXdoZWVs
Lmh0bWwKIAotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIHNl
dFRleHREaXJlY3Rpb24uCi0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjE5MzE+Ci1mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKLQogIyBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogU1ZHIGFuaW1hdGlvbiBwYXVzZSBBUEkgbWlzc2luZyEKIHN2Zy9h
bmltYXRpb25zL2FuaW1WYWwtYmFzaWNzLmh0bWwKIHN2Zy9hbmltYXRpb25zL2FuaW1hdGUtY2Fs
Y01vZGUtc3BsaW5lLWJ5Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lw
cGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZp
c2lvbiA4OTUzMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAzLDkgKzEwMDMsNiBAQCBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRt
bAogIyBFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkgaXMgbm90IGltcGxl
bWVudGVkCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbAogCi0jIGxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKCkgaXMgbm90IGltcGxlbWVudGVkCi1m
YXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKLQogIyBJbmRleGVkREIgaXMgbm90IHll
dCBlbmFibGVkLgogc3RvcmFnZS9pbmRleGVkZGIKIAo=
</data>
<flag name="review"
          id="92515"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98476</attachid>
            <date>2011-06-24 03:09:11 -0700</date>
            <delta_ts>2011-06-27 04:08:15 -0700</delta_ts>
            <desc>Patch v4 (applied comments)</desc>
            <filename>issue61931-patch3.txt</filename>
            <type>text/plain</type>
            <size>14645</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NjU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDYtMjQgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRl
eHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdl
IGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2Vi
S2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRk
ZWQgYnkgcjg3NzcwIG9uIHRoZW0uIEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24gYWRkcyBh
IHdyYXBwZXIgZnVuY3Rpb24gZm9yIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKQor
ICAgICAgICBzbyBMYXlvdXRUZXN0Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOiBBZGRlZAorICAg
ICAgICBXS0J1bmRsZUZyYW1lU2V0VGV4dERpcmVjdGlvbiBhbmQgaW1wbGVtZW50IGl0IHNvIExh
eW91dFRlc3RDb250cm9sbGVyIGNhbgorICAgICAgICBjYWxsIGl0LgorICAgICAgICAoV0tCdW5k
bGVGcmFtZVNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmg6IGRpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOiBkaXR0by4KKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFRleHREaXJlY3Rpb24pOiBkaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6IGRpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6IEFkZGVkIHNldFRleHREaXJl
Y3Rpb24gc28gd2UgY2FuCisgICAgICAgIGNoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24uCisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDogZGl0dG8uCisKIDIwMTEtMDYtMjMgSmFtaWUgQ29v
bGV5ICA8amFtZXMuY29vbGV5QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDg5NjUyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw2ICszMTEsMTMgQEAgc2l6ZV90IEluamVjdGVk
QnVuZGxlOjpqYXZhU2NyaXB0T2JqZWN0cwogICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Y29tbW9u
SlNHbG9iYWxEYXRhKCktPmhlYXAub2JqZWN0Q291bnQoKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1
bmRsZTo6c2V0VGV4dERpcmVjdGlvbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+
c2V0VGV4dERpcmVjdGlvbihkaXJlY3Rpb24pOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlOjpy
ZXBvcnRFeGNlcHRpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZXhjZXB0aW9u
KQogewogICAgIGlmICghY29udGV4dCB8fCAhZXhjZXB0aW9uKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAkocmV2aXNpb24gODk2NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzT25B
bHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsKICAgICBzaXpl
X3QgamF2YVNjcmlwdE9iamVjdHNDb3VudCgpOwogCisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9u
KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisKICAgICAvLyBDYWxsYmFjayBob29rcwogICAg
IHZvaWQgZGlkQ3JlYXRlUGFnZShXZWJQYWdlKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVBhZ2Uo
V2ViUGFnZSopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJKHJldmlzaW9uIDg5NjUyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwzICsyMTIsOCBAQCBib29sIFdLQnVuZGxlSXNQ
cm9jZXNzaW5nVXNlckdlc3R1cmUoV0tCCiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpp
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogfQorCit2b2lkIFdLQnVuZGxlRnJhbWVTZXRUZXh0
RGlyZWN0aW9uKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJl
ZiwgV0tTdHJpbmdSZWYgZGlyZWN0aW9uUmVmKQoreworICAgIHRvSW1wbChidW5kbGVSZWYpLT5z
ZXRUZXh0RGlyZWN0aW9uKHRvSW1wbChmcmFtZVJlZiksIHRvSW1wbChkaXJlY3Rpb25SZWYpLT5z
dHJpbmcoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgJKHJldmlz
aW9uIDg5NjUyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlc2V0T3JpZ2luQWNjZXNzCiAKIFdLX0VYUE9SVCBib29s
IFdLQnVuZGxlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoV0tCdW5kbGVSZWYgYnVuZGxlKTsKIAor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVGcmFtZVNldFRleHREaXJlY3Rpb24oV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0cmluZ1JlZik7CisKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDg5NjUyKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzA1LDQgKzcwNSwxNyBAQCBTdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VXaXRo
CiAgICAgcmV0dXJuIHBhZ2UoKS0+Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTCh1cmwpOwog
fQogCit2b2lkIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uKQoreworICAgIGlmICghbV9jb3JlRnJhbWUgfHwgIW1fY29yZUZyYW1lLT5lZGl0b3IoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRpcmVjdGlvbiA9PSAiYXV0byIpCisgICAgICAg
IG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdy
aXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibHRyIikKKyAgICAg
ICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9S
aWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicnRsIikK
KyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihS
aWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShy
ZXZpc2lvbiA4OTY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpL
VVJMJikgY29uc3Q7CiAgICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKIAorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihjb25z
dCBTdHJpbmcmKTsKKwogICAgIC8vIFNpbXBsZSBsaXN0ZW5lciBjbGFzcyB1c2VkIGJ5IHBsdWct
aW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNoIG9yIGZhaWwgbG9hZGluZy4KICAgICBjbGFz
cyBMb2FkTGlzdGVuZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDg5NjU0KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDYtMjQgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdl
YktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdlIGltcGxlbWVudHMgbGF5b3V0
VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2ViS2l0MgorICAgICAgICBhbmQg
V2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRkZWQgYnkgcjg3NzcwIG9uIHRo
ZW0uIEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24gYWRkcyBhIHdyYXBwZXIgZnVuY3Rpb24g
Zm9yIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKQorICAgICAgICBzbyBMYXlvdXRU
ZXN0Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZy
YW1lUHJpdmF0ZS5pZGw6IEFkZGVkIHNldFRleHREaXJlY3Rpb24gc28gd2UgY2FuIGNhbGwKKyAg
ICAgICAgaXQgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6IEltcGxlbWVudGVkIHNldFRleHREaXJlY3Rpb24KKyAgICAgICAgKFdlYkZyYW1lOjpzZXRU
ZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOiBkaXR0by4KKwogMjAxMS0wNi0y
MiAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24g
ODk2NTIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNjEsNiArMTA2MSwyMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpjbGVhCiAgICAgcmV0dXJuIGhyOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGlyZWN0
aW9uKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghY29y
ZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpKQorICAgICAgICByZXR1cm4gRV9GQUlMOwor
CisgICAgU3RyaW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24sIFN5c1N0cmluZ0xlbihkaXJl
Y3Rpb24pKTsKKyAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJhdXRvIikKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdE
aXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAibHRyIikKKyAgICAg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmln
aHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gInJ0
bCIpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIC8v
IElXZWJEb2N1bWVudFRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFt
ZTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lv
biA4OTY1MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4Myw2ICsyODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2xlYXJPcGVuZXIoKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRUZXh0RGlyZWN0aW9uKEJTVFIpOworCiAgICAgLy8gSVdlYkRvY3VtZW50
VGV4dAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdXBwb3J0c1RleHRF
bmNvZGluZyggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRl
LmlkbAkocmV2aXNpb24gODk2NTIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJGcmFtZVByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNCArMTIwLDYgQEAgaW50
ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNVTFQgaGFzU3BlbGxp
bmdNYXJrZXIoW2luXSBVSU5UIGZyb20sIFtpbl0gVUlOVCBsZW5ndGgsIFtvdXQsIHJldHZhbF0g
Qk9PTCogcmVzdWx0KTsKICAgICAKICAgICBIUkVTVUxUIGNsZWFyT3BlbmVyKCk7CisKKyAgICBI
UkVTVUxUIHNldFRleHREaXJlY3Rpb24oW2luXSBCU1RSIGRpcmVjdGlvbik7CiB9CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4
OTY1NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDExLTA2LTI0ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyIGFuZCBXaW5kb3dz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MzEK
KworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxheW91dFRleHRDb250cm9sbGVyLnNl
dFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIKKyAgICAgICAgYW5kIFdpbmRvd3Mgc28gd2UgY2Fu
IHJ1biBhIGxheW91dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0aGVtLiBFYWNoCisgICAgICAg
IGltcGxlbWVudGF0aW9uIGFkZHMgYSB3cmFwcGVyIGZ1bmN0aW9uIGZvciBFZGl0b3I6OnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKCkKKyAgICAgICAgc28gTGF5b3V0VGVzdENvbnRyb2xsZXIgY2Fu
IGNhbGwgaXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJl
Y3Rpb24pOiBBZGRlZCBhIEMrKyBiaW5kaW5nIGZvcgorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRUZXh0RGlyZWN0aW9uIChmb3IgV2luZG93cykKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgQWRkZWQgYSBDKysgYmluZGluZyBmb3IgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
VGV4dERpcmVjdGlvbiAoZm9yIFdlYktpdDIpCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6Okxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKTogZGl0dG8uCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOiBk
aXR0bworCiAyMDExLTA2LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggV2ViS2l0MiBHVEsgYnVpbGQuCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAJKHJldmlzaW9uIDg5NjUyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2OCw1ICsxNTY4
LDkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlv
bikKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIENPTVB0cjxJV2ViRnJhbWVQcml2
YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1lKTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWVQcml2YXRlLT5zZXRUZXh0RGlyZWN0aW9uKGJz
dHJUKGRpcmVjdGlvbikuR2V0QlNUUigpKTsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA4OTY1MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQs
NCArNTQ0LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBPU0lYTG9jYWwKICAg
ICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGVCdWYpOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbikKK3sKKyAgICBX
S0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIHJldHVybiBXS0J1bmRs
ZUZyYW1lU2V0VGV4dERpcmVjdGlvbihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCks
IG1haW5GcmFtZSwgdG9XSyhkaXJlY3Rpb24pLmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4OTY1MikKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHdp
bGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkgeyByZXR1cm4gbV93aWxsU2VuZFJlcXVlc3RSZXR1
cm5zTnVsbDsgfQogICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoYm9vbCBm
KSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSBmOyB9CiAKKyAgICB2b2lkIHNldFRl
eHREaXJlY3Rpb24oSlNTdHJpbmdSZWYpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJbnRlcnZhbDsKIApJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxl
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDg5NjUyKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0
Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsOCBAQCBtb2R1bGUg
V1RSIHsKIAogICAgICAgICB2b2lkIHNldFBPU0lYTG9jYWxlKGluIERPTVN0cmluZyBsb2NhbGUp
OwogCisgICAgICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihpbiBET01TdHJpbmcgZGlyZWN0aW9u
KTsKKwogICAgICAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGluIGJvb2xl
YW4gZmxhZyk7CiAgICAgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODk2NTQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNi0y
NCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2ViS2l0MiBhbmQgV2luZG93cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTMxCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBsYXlvdXRUZXh0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0
aW9uIGZvciBXZWJLaXQyCisgICAgICAgIGFuZCBXaW5kb3dzIHNvIHdlIGNhbiBydW4gYSBsYXlv
dXQgdGVzdCBhZGRlZCBieSByODc3NzAgb24gdGhlbS4gRWFjaAorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBhZGRzIGEgd3JhcHBlciBmdW5jdGlvbiBmb3IgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbigpCisgICAgICAgIHNvIExheW91dFRlc3RDb250cm9sbGVyIGNhbiBjYWxsIGl0Lgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOiBSZW1vdmVkIHNldC10ZXh0LWRp
cmVjdGlvbi5odG1sLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBkaXR0by4KKwog
MjAxMS0wNi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvU2tpcHBlZAkocmV2aXNpb24gODk2NTIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTQwNCwxMCArNDA0LDYgQEAgc2Nyb2xs
YmFycy9zY3JvbGxiYXItaWZyYW1lLWNsaWNrLWRvZXMtbgogc2Nyb2xsYmFycy9zY3JvbGxiYXIt
bWlzcy1tb3VzZW1vdmUtZGlzYWJsZWQuaHRtbAogc2Nyb2xsYmFycy9zY3JvbGxldmVudC1pZnJh
bWUtbm8tc2Nyb2xsaW5nLXdoZWVsLmh0bWwKIAotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFu
IGltcGxlbWVudGF0aW9uIG9mIHNldFRleHREaXJlY3Rpb24uCi0jIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MzE+Ci1mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0
aW9uLmh0bWwKLQogIyBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogU1ZHIGFuaW1hdGlvbiBwYXVz
ZSBBUEkgbWlzc2luZyEKIHN2Zy9hbmltYXRpb25zL2FuaW1WYWwtYmFzaWNzLmh0bWwKIHN2Zy9h
bmltYXRpb25zL2FuaW1hdGUtY2FsY01vZGUtc3BsaW5lLWJ5Lmh0bWwKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA4OTY1MikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA2LDkgKzEwMDYsNiBAQCBlZGl0aW5n
L3NwZWxsaW5nL2dyYW1tYXIuaHRtbAogIyBFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKCkgaXMgbm90IGltcGxlbWVudGVkCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2st
cGFzdGUuaHRtbAogCi0jIGxheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKCkg
aXMgbm90IGltcGxlbWVudGVkCi1mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKLQog
IyBJbmRleGVkREIgaXMgbm90IHlldCBlbmFibGVkLgogc3RvcmFnZS9pbmRleGVkZGIKIAo=
</data>
<flag name="review"
          id="92710"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98697</attachid>
            <date>2011-06-27 04:08:15 -0700</date>
            <delta_ts>2011-07-11 19:05:19 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>issue61931-patch4.txt</filename>
            <type>text/plain</type>
            <size>13243</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5ODEwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDYtMjcgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRl
eHREaXJlY3Rpb24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdl
IGltcGxlbWVudHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2Vi
S2l0MgorICAgICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRk
ZWQgYnkgcjg3NzcwIG9uIHRoZW0uIEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24gYWRkcyBh
IHdyYXBwZXIgZnVuY3Rpb24gZm9yIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKQor
ICAgICAgICBzbyBMYXlvdXRUZXN0Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6IEFkZGVk
CisgICAgICAgIFdLQnVuZGxlRnJhbWVTZXRUZXh0RGlyZWN0aW9uIHRvIGFsbG93IExheW91dFRl
c3RDb250cm9sbGVyIHRvIGNoYW5nZSB0aGUKKyAgICAgICAgdGV4dCBkaXJlY3Rpb24uCisgICAg
ICAgIChXS0J1bmRsZUZyYW1lU2V0VGV4dERpcmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oOiBkaXR0by4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOiBBZGRlZCBzZXRUZXh0RGly
ZWN0aW9uIHRvIGFsbG93CisgICAgICAgIFdLQnVuZGxlRnJhbWUgdG8gY2hhbmdlIHRoZSB0ZXh0
IGRpcmVjdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOiBkaXR0by4KKwogMjAx
MS0wNi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAkocmV2aXNpb24gODk3NzYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzUsMyArMjM1LDggQEAgYm9vbCBXS0J1bmRsZUZyYW1lQ29udGFp
bnNBbnlGb3JtRWxlbWVudAogewogICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5jb250YWlu
c0FueUZvcm1FbGVtZW50cygpOwogfQorCit2b2lkIFdLQnVuZGxlRnJhbWVTZXRUZXh0RGlyZWN0
aW9uKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLU3RyaW5nUmVmIGRpcmVjdGlvblJlZikK
K3sKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5zZXRUZXh0RGlyZWN0aW9uKHRvSW1wbChkaXJlY3Rp
b25SZWYpLT5zdHJpbmcoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZy
YW1lUHJpdmF0ZS5oCShyZXZpc2lvbiA4OTc3NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFt
ZUNvcHlMCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lQ2xlYXJPcGVuZXIoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSk7CiAKIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlRnJhbWVDb250YWluc0Fu
eUZvcm1FbGVtZW50cyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKK1dLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlRnJhbWVTZXRUZXh0RGlyZWN0aW9uKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLU3Ry
aW5nUmVmKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDg5Nzc2KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzA1LDQgKzcwNSwxNyBAQCBTdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVz
b3VyY2VXaXRoCiAgICAgcmV0dXJuIHBhZ2UoKS0+Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVS
TCh1cmwpOwogfQogCit2b2lkIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aW9uKQoreworICAgIGlmICghbV9jb3JlRnJhbWUgfHwgIW1fY29yZUZyYW1lLT5l
ZGl0b3IoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRpcmVjdGlvbiA9PSAiYXV0byIp
CisgICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibHRy
IikKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9
PSAicnRsIikKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5oCShyZXZpc2lvbiA4OTc3NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGlj
OgogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBX
ZWJDb3JlOjpLVVJMJikgY29uc3Q7CiAgICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRo
VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKIAorICAgIHZvaWQgc2V0VGV4dERpcmVj
dGlvbihjb25zdCBTdHJpbmcmKTsKKwogICAgIC8vIFNpbXBsZSBsaXN0ZW5lciBjbGFzcyB1c2Vk
IGJ5IHBsdWctaW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNoIG9yIGZhaWwgbG9hZGluZy4K
ICAgICBjbGFzcyBMb2FkTGlzdGVuZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDg5ODEwKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDYtMjcgIEhpcm9ub3JpIEJvbm8gIDxo
Ym9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rp
b24gZm9yIFdlYktpdDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdlIGltcGxlbWVu
dHMgbGF5b3V0VGV4dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2ViS2l0MgorICAg
ICAgICBhbmQgV2luZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRkZWQgYnkgcjg3
NzcwIG9uIHRoZW0uIEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24gYWRkcyBhIHdyYXBwZXIg
ZnVuY3Rpb24gZm9yIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKQorICAgICAgICBz
byBMYXlvdXRUZXN0Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAgICAgICAqIEludGVyZmFj
ZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6IEFkZGVkIHNldFRleHREaXJlY3Rpb24gdG8gYWxsb3cK
KyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gY2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlv
bi4KKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViRnJhbWU6OnNl
dFRleHREaXJlY3Rpb24pOgorICAgICAgICAqIFdlYkZyYW1lLmg6IGRpdHRvLgorCiAyMDExLTA2
LTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24g
ODk3NzYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNjEsNiArMTA2MSwyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpjbGVhCiAgICAgcmV0dXJuIGhyOwogfQogCitIUkVTVUxUIFdlYkZyYW1lOjpzZXRUZXh0RGly
ZWN0aW9uKEJTVFIgZGlyZWN0aW9uKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRo
aXMpOworICAgIGlmICghY29yZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpKQorICAgICAg
ICByZXR1cm4gRV9GQUlMOworCisgICAgU3RyaW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24s
IFN5c1N0cmluZ0xlbihkaXJlY3Rpb24pKTsKKyAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJh
dXRvIikKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmlu
ZyA9PSAibHRyIikKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBlbHNlIGlmIChkaXJl
Y3Rpb25TdHJpbmcgPT0gInJ0bCIpCisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgcmV0
dXJuIFNfT0s7Cit9CisKIC8vIElXZWJEb2N1bWVudFRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoIApJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCShyZXZpc2lvbiA4OTc3NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw2ICsyODMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xlYXJPcGVuZXIoKTsKIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0RGlyZWN0aW9uKEJTVFIpOworCiAg
ICAgLy8gSVdlYkRvY3VtZW50VGV4dAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzdXBwb3J0c1RleHRFbmNvZGluZyggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCogcmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZy
YW1lUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViRnJhbWVQcml2YXRlLmlkbAkocmV2aXNpb24gODk3NzYpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNCArMTIwLDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93bgogICAg
IEhSRVNVTFQgaGFzU3BlbGxpbmdNYXJrZXIoW2luXSBVSU5UIGZyb20sIFtpbl0gVUlOVCBsZW5n
dGgsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKICAgICAKICAgICBIUkVTVUxUIGNsZWFy
T3BlbmVyKCk7CisKKyAgICBIUkVTVUxUIHNldFRleHREaXJlY3Rpb24oW2luXSBCU1RSIGRpcmVj
dGlvbik7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4OTgxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTA2LTI3ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBX
ZWJLaXQyIGFuZCBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjE5MzEKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxheW91
dFRleHRDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIKKyAgICAgICAgYW5k
IFdpbmRvd3Mgc28gd2UgY2FuIHJ1biBhIGxheW91dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0
aGVtLiBFYWNoCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFkZHMgYSB3cmFwcGVyIGZ1bmN0aW9u
IGZvciBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkKKyAgICAgICAgc28gTGF5b3V0
VGVzdENvbnRyb2xsZXIgY2FuIGNhbGwgaXQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRleHREaXJlY3Rpb24pOiBJbXBsZW1lbnRlZCB0aGUgYmluZGluZyBmdW5jdGlv
bgorICAgICAgICBmb3IgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiAoV2lu
ZG93cykuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgIEFkZGVkIGEgYmluZGluZyBmdW5j
dGlvbiBmb3IgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiAoV2ViS2l0Miku
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6IGRpdHRvLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0VGV4dERpcmVjdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOiBkaXR0by4KKwogMjAxMS0wNi0yNyAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODk3NzYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTI0
LDcgKzE1MjQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVm
IGRpcmVjdGlvbikKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIENPTVB0cjxJV2Vi
RnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1lKTsKKyAgICBpZiAoIWZyYW1l
UHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWVQcml2YXRlLT5zZXRUZXh0RGly
ZWN0aW9uKGJzdHJUKGRpcmVjdGlvbikuR2V0QlNUUigpKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWxsb3dSb3VuZGluZ0hhY2tzKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA4OTc3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NzMsNCArNDczLDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBPU0lYTG9jYWwK
ICAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGVCdWYpOwogfQogCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbikKK3sKKyAg
ICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIHJldHVybiBXS0J1
bmRsZUZyYW1lU2V0VGV4dERpcmVjdGlvbihtYWluRnJhbWUsIHRvV0soZGlyZWN0aW9uKS5nZXQo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAkocmV2aXNpb24gODk3NzYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpIHsgcmV0
dXJuIG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGw7IH0KICAgICB2b2lkIHNldFdpbGxTZW5k
UmVxdWVzdFJldHVybnNOdWxsKGJvb2wgZikgeyBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
ID0gZjsgfQogCisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmKTsKKwogcHJp
dmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50
ZXJ2YWw7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aWRsCShyZXZpc2lvbiA4OTc3NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNiArMTA4LDggQEAgbW9kdWxlIFdUUiB7CiAKICAgICAgICAgdm9pZCBzZXRQT1NJWExv
Y2FsZShpbiBET01TdHJpbmcgbG9jYWxlKTsKIAorICAgICAgICB2b2lkIHNldFRleHREaXJlY3Rp
b24oaW4gRE9NU3RyaW5nIGRpcmVjdGlvbik7CisKICAgICAgICAgdm9pZCBzZXRXaWxsU2VuZFJl
cXVlc3RSZXR1cm5zTnVsbChpbiBib29sZWFuIGZsYWcpOwogICAgIH07CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg5ODEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDYtMjcgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktp
dDIgYW5kIFdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MTkzMQorCisgICAgICAgIFRoaXMgY2hhbmdlIGltcGxlbWVudHMgbGF5b3V0VGV4
dENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBmb3IgV2ViS2l0MgorICAgICAgICBhbmQgV2lu
ZG93cyBzbyB3ZSBjYW4gcnVuIGEgbGF5b3V0IHRlc3QgYWRkZWQgYnkgcjg3NzcwIG9uIHRoZW0u
IEVhY2gKKyAgICAgICAgaW1wbGVtZW50YXRpb24gYWRkcyBhIHdyYXBwZXIgZnVuY3Rpb24gZm9y
IEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oKQorICAgICAgICBzbyBMYXlvdXRUZXN0
Q29udHJvbGxlciBjYW4gY2FsbCBpdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvU2tp
cHBlZDogUmVtb3ZlZCBzZXQtdGV4dC1kaXJlY3Rpb24uaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vU2tpcHBlZDogZGl0dG8uCisKIDIwMTEtMDYtMjcgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW01hY11SRUdSRVNTSU9OPyhyODkzOTcp
IEl0IG1hZGUgZmFzdC9jc3MvY3VzdG9tLWZvbnQteGhlaWdodC5odG1sIGNyYXNoCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA4OTc3NikKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDEw
ICs0MDksNiBAQCBzY3JvbGxiYXJzL3Njcm9sbGJhci1pZnJhbWUtY2xpY2stZG9lcy1uCiBzY3Jv
bGxiYXJzL3Njcm9sbGJhci1taXNzLW1vdXNlbW92ZS1kaXNhYmxlZC5odG1sCiBzY3JvbGxiYXJz
L3Njcm9sbGV2ZW50LWlmcmFtZS1uby1zY3JvbGxpbmctd2hlZWwuaHRtbAogCi0jIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2V0VGV4dERpcmVjdGlvbi4KLSMg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMT4KLWZhc3QvaHRt
bC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbAotCiAjIENPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBT
VkcgYW5pbWF0aW9uIHBhdXNlIEFQSSBtaXNzaW5nIQogIyBbV0syXSBTVkcgYW5pbWF0aW9uIHBh
dXNlIEFQSSBtaXNzaW5nCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MzM5NgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDg5Nzc2KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEw
MDcsOSArMTAwNyw2IEBAIGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci5odG1sCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCiAKLSMgbGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFRleHREaXJlY3Rpb24oKSBpcyBub3QgaW1wbGVtZW50ZWQKLWZhc3QvaHRtbC9zZXQt
dGV4dC1kaXJlY3Rpb24uaHRtbAotCiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBz
dG9yYWdlL2luZGV4ZWRkYgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100415</attachid>
            <date>2011-07-11 19:05:33 -0700</date>
            <delta_ts>2011-07-11 19:51:55 -0700</delta_ts>
            <desc>For cqing again.</desc>
            <filename>bug-61931-20110712110530.patch</filename>
            <type>text/plain</type>
            <size>14307</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA4MDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiY2Y2MmZkYzU1YjQ4ODMwM2FmZmRh
ZjQ0MWIzMDk0NDcwNTM4NTFmLi5mODRjZGU4MGQ3ZDE4YTFkYmZhNGQzMDUyNTlmNGY0NjZjNjAy
ZjFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMTEgIEhpcm9ub3JpIEJvbm8gIDxo
Ym9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KKwor
ICAgICAgICBJbXBsZW1lbnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlvbiBm
b3IgV2ViS2l0MiBhbmQgV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxOTMxCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBs
YXlvdXRUZXh0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyCisgICAgICAg
IGFuZCBXaW5kb3dzIHNvIHdlIGNhbiBydW4gYSBsYXlvdXQgdGVzdCBhZGRlZCBieSByODc3NzAg
b24gdGhlbS4gRWFjaAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgd3JhcHBlciBmdW5j
dGlvbiBmb3IgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbigpCisgICAgICAgIHNvIExh
eW91dFRlc3RDb250cm9sbGVyIGNhbiBjYWxsIGl0LgorCisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMi9Ta2lwcGVkOiBSZW1vdmVkIHNldC10ZXh0LWRpcmVjdGlvbi5odG1sLgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBkaXR0by4KKwogMjAxMS0wNy0xMSAgWXV0YSBLaXRhbXVy
YSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWJTb2NrZXQ6IFJlbW92ZSBXZWJT
b2NrZXQgdGVzdHMgdGhhdCBkbyBub3QgYXBwbHkgdG8gaHliaSBwcm90b2NvbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAppbmRleCBhODQ4MDY2MjAxM2I0MzM5OGFjMmIwYTNhNjJjMjg1MDcyNjVh
ZTI4Li40MjhkZDRjNDFjMTA5ODk3MmVkMmU0NWE4MjVkYTExYjYzNzJjZDFlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZApAQCAtMTAwNyw5ICsxMDA3LDYgQEAgZWRpdGluZy9zcGVsbGluZy9n
cmFtbWFyLmh0bWwKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpIGlz
IG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
IAotIyBsYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbigpIGlzIG5vdCBpbXBs
ZW1lbnRlZAotZmFzdC9odG1sL3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCi0KICMgSW5kZXhlZERC
IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1NraXBwZWQKaW5kZXggMjA3MDYwMWU2NmVjMzFmY2QyMjg1OTlkMDJlNzJlZWFmNGNkODEwMi4u
OTQxNWY1NTUwOWE1YTBiYTY3NmZiNjhmOGUxY2E0MWI0ZjQ3NDQ0ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKQEAgLTQxMCwxMCArNDEwLDYgQEAgc2Nyb2xsYmFycy9zY3JvbGxiYXItaWZy
YW1lLWNsaWNrLWRvZXMtbm90LWJsdXItY29udGVudC5odG1sCiBzY3JvbGxiYXJzL3Njcm9sbGJh
ci1taXNzLW1vdXNlbW92ZS1kaXNhYmxlZC5odG1sCiBzY3JvbGxiYXJzL3Njcm9sbGV2ZW50LWlm
cmFtZS1uby1zY3JvbGxpbmctd2hlZWwuaHRtbAogCi0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
YW4gaW1wbGVtZW50YXRpb24gb2Ygc2V0VGV4dERpcmVjdGlvbi4KLSMgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkzMT4KLWZhc3QvaHRtbC9zZXQtdGV4dC1kaXJl
Y3Rpb24uaHRtbAotCiAjIENPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBTVkcgYW5pbWF0aW9uIHBh
dXNlIEFQSSBtaXNzaW5nIQogIyBbV0syXSBTVkcgYW5pbWF0aW9uIHBhdXNlIEFQSSBtaXNzaW5n
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzM5NgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IGI1N2EzNmFhN2UyMjRmMTZjMjhjZGIzZGFjOTYwODA1YjZlMTFlNmYuLjIw
ZmY5MWNmMGFjZTdiYjFiYzM5NDJlYzIzYTg4YmE5YzQ5ODRmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAxMS0wNy0xMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAgICAgIElt
cGxlbWVudCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQy
IGFuZCBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjE5MzEKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxheW91dFRleHRD
b250cm9sbGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIKKyAgICAgICAgYW5kIFdpbmRv
d3Mgc28gd2UgY2FuIHJ1biBhIGxheW91dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0aGVtLiBF
YWNoCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFkZHMgYSB3cmFwcGVyIGZ1bmN0aW9uIGZvciBF
ZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkKKyAgICAgICAgc28gTGF5b3V0VGVzdENv
bnRyb2xsZXIgY2FuIGNhbGwgaXQuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZVBy
aXZhdGUuaWRsOiBBZGRlZCBzZXRUZXh0RGlyZWN0aW9uIHRvIGFsbG93CisgICAgICAgIExheW91
dFRlc3RDb250cm9sbGVyIHRvIGNoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgICog
V2ViRnJhbWUuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9u
KToKKyAgICAgICAgKiBXZWJGcmFtZS5oOiBkaXR0by4KKwogMjAxMS0wNy0wOCAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBjYWxsaW5nIHNpdGVzIGFmdGVy
IGZ1bmN0aW9uIHJlbmFtZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsIGIvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRnJhbWVQcml2YXRlLmlkbAppbmRleCA4NDU3NzgwZTU0Mjg2MjE1ODZlN2ZmMmNhOTE2ODUy
ZDdiMmZlY2U0Li4zMTI4N2JhNTg3OGViODcyMTIxNjkwZDZhOTYwY2MxNGNhNTQ0YmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRs
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwK
QEAgLTEyMCw0ICsxMjAsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lUHJpdmF0ZSA6IElVbmtub3du
CiAgICAgSFJFU1VMVCBoYXNTcGVsbGluZ01hcmtlcihbaW5dIFVJTlQgZnJvbSwgW2luXSBVSU5U
IGxlbmd0aCwgW291dCwgcmV0dmFsXSBCT09MKiByZXN1bHQpOwogICAgIAogICAgIEhSRVNVTFQg
Y2xlYXJPcGVuZXIoKTsKKworICAgIEhSRVNVTFQgc2V0VGV4dERpcmVjdGlvbihbaW5dIEJTVFIg
ZGlyZWN0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBmOWMxMmY2MWRkNWYwYjI3
NDNmMmYwZmU1YTA1MzAxMDMxMzI3OTQ4Li5iOGJiMjQ5MThlOWU4YWRlODhlYTEwYzljMzI4ZDUx
OGM5OTk0NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDYxLDYgKzEwNjEsMjIgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6Y2xlYXJPcGVuZXIoKQogICAgIHJl
dHVybiBocjsKIH0KIAorSFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihCU1RSIGRp
cmVjdGlvbikKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKKyAgICBpZiAo
IWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKKworICAgIFN0cmluZyBkaXJlY3Rpb25TdHJpbmcoZGlyZWN0aW9uLCBTeXNTdHJpbmdMZW4o
ZGlyZWN0aW9uKSk7CisgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAiYXV0byIpCisgICAgICAg
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0
aW5nRGlyZWN0aW9uKTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gImx0ciIpCisg
ICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRU
b1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09
ICJydGwiKQorICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgIHJldHVybiBTX09LOworfQor
CiAvLyBJV2ViRG9jdW1lbnRUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RnJhbWU6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCmluZGV4IDY1NTI5
NjAyODUwZTI4ZWVlOWIxYjk1ZDBmNTI4MDFkZTdkMThlMzIuLjgwNDZkODU4MDFlZmU2MGFlNDQ2
NjgwNGQ4OWEwYjk4Nzc3NDUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZy
YW1lLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAtMjgzLDYgKzI4Myw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVh
ck9wZW5lcigpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRl
eHREaXJlY3Rpb24oQlNUUik7CisKICAgICAvLyBJV2ViRG9jdW1lbnRUZXh0CiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1cHBvcnRzVGV4dEVuY29kaW5nKCAKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJhMmVk
YzYwM2JhM2M2ZWFjYzEyYWFkMjY3NDQ3YWE4ZDQ4Y2Q5NDUuLmI3NmYyNjBjZTQ3YTY5MWRhMDk5
MDdkZDNkNjgzZmYxYzM3OWE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0w
Ny0xMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAgICAgIEltcGxlbWVudCBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRUZXh0RGlyZWN0aW9uIGZvciBXZWJLaXQyIGFuZCBXaW5kb3dzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MzEKKworICAgICAgICBU
aGlzIGNoYW5nZSBpbXBsZW1lbnRzIGxheW91dFRleHRDb250cm9sbGVyLnNldFRleHREaXJlY3Rp
b24gZm9yIFdlYktpdDIKKyAgICAgICAgYW5kIFdpbmRvd3Mgc28gd2UgY2FuIHJ1biBhIGxheW91
dCB0ZXN0IGFkZGVkIGJ5IHI4Nzc3MCBvbiB0aGVtLiBFYWNoCisgICAgICAgIGltcGxlbWVudGF0
aW9uIGFkZHMgYSB3cmFwcGVyIGZ1bmN0aW9uIGZvciBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKCkKKyAgICAgICAgc28gTGF5b3V0VGVzdENvbnRyb2xsZXIgY2FuIGNhbGwgaXQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwOiBBZGRlZAorICAgICAgICBXS0J1bmRsZUZyYW1lU2V0VGV4dERpcmVjdGlvbiB0byBhbGxv
dyBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBjaGFuZ2UgdGhlCisgICAgICAgIHRleHQgZGlyZWN0
aW9uLgorICAgICAgICAoV0tCdW5kbGVGcmFtZVNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaDog
ZGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDogQWRkZWQg
c2V0VGV4dERpcmVjdGlvbiB0byBhbGxvdworICAgICAgICBXS0J1bmRsZUZyYW1lIHRvIGNoYW5n
ZSB0aGUgdGV4dCBkaXJlY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRUZXh0
RGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDogZGl0
dG8uCisKIDIwMTEtMDctMTEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF1bV0syXSBHZXQgcmlkIG9mIGZvY3VzTmV4dFByZXZDaGlsZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCA4MTRiN2VkYjk2MjI4MWUyOTM2NDVi
NGU2NzgzNDZiYzM4ZTI0MWI0Li41NDU1ZTYwN2YzNmMyMTdhOTg2M2RkNWYwZGRkODcxYmY2MzY2
NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTIzNSwzICsyMzUsOCBA
QCBib29sIFdLQnVuZGxlRnJhbWVDb250YWluc0FueUZvcm1FbGVtZW50cyhXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lUmVmKQogewogICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5jb250YWluc0Fu
eUZvcm1FbGVtZW50cygpOwogfQorCit2b2lkIFdLQnVuZGxlRnJhbWVTZXRUZXh0RGlyZWN0aW9u
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLU3RyaW5nUmVmIGRpcmVjdGlvblJlZikKK3sK
KyAgICB0b0ltcGwoZnJhbWVSZWYpLT5zZXRUZXh0RGlyZWN0aW9uKHRvSW1wbChkaXJlY3Rpb25S
ZWYpLT5zdHJpbmcoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRl
LmgKaW5kZXggOWViNzE1NmUxZDVhMWFmNjFhYTA3ZmI4MWY4YTJhYjg5MDRjY2Q2YS4uYTc4NmIy
NTU3MGRlOWFmYjQzYmFhNTBjYjg3NjVkZjgxZDY2Y2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVGcmFtZVByaXZhdGUuaApAQCAtNTEsNiArNTEsNyBAQCBXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlMYXllclRyZWVBc1RleHQoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lQ2xlYXJPcGVuZXIoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSk7CiAKIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlRnJhbWVDb250YWluc0Fu
eUZvcm1FbGVtZW50cyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKK1dLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlRnJhbWVTZXRUZXh0RGlyZWN0aW9uKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLU3Ry
aW5nUmVmKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNjI0NDc2Y2EwZTIwOTMzYWUwNGFj
YzY3MDk3ODFhNzMyNDkwNmJjLi40NmY5OWUzNTQ2NDY0MzkwYzNjNzFiZGMzYjQ1NmZiZTU0Y2Vi
ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTcwNSw0ICs3MDUsMTcgQEAgU3RyaW5nIFdlYkZyYW1lOjptaW1lVHlwZUZvclJlc291
cmNlV2l0aFVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UoKS0+Y2Fj
aGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTCh1cmwpOwogfQogCit2b2lkIFdlYkZyYW1lOjpzZXRU
ZXh0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKQoreworICAgIGlmICghbV9jb3Jl
RnJhbWUgfHwgIW1fY29yZUZyYW1lLT5lZGl0b3IoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGRpcmVjdGlvbiA9PSAiYXV0byIpCisgICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGVs
c2UgaWYgKGRpcmVjdGlvbiA9PSAibHRyIikKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigp
LT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwor
ICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAicnRsIikKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVk
aXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rp
b24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNDRlMTZiYTg3MGY1MDc4NDkxNDJlYTcwMjIz
NzhmY2Y4MmU0ZTk0MS4uOTc1NzEyZDE1NTExNmEyMTg3NGNjOWRmNGRmMTM1ZmE2ZWZhMzRjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTEy
MSw2ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVz
b3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKICAgICBTdHJpbmcgbWlt
ZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OwogCisg
ICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYpOworCiAgICAgLy8gU2ltcGxl
IGxpc3RlbmVyIGNsYXNzIHVzZWQgYnkgcGx1Zy1pbnMgdG8ga25vdyB3aGVuIGZyYW1lcyBmaW5p
c2ggb3IgZmFpbCBsb2FkaW5nLgogICAgIGNsYXNzIExvYWRMaXN0ZW5lciB7CiAgICAgcHVibGlj
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNk
NjNkNjU4Njk3MjdjNzE0YjlkOGUyMTZiODU1OTUxMzMwYWUyOTUuLjlhY2M3MWY5ODc4YTVkNzhj
ZmQ3YzQwNGYwNmJhOTRmNmFmMzdjNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wNy0xMSAgSGlyb25vcmkg
Qm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJv
YmVuLgorCisgICAgICAgIEltcGxlbWVudCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGly
ZWN0aW9uIGZvciBXZWJLaXQyIGFuZCBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MzEKKworICAgICAgICBUaGlzIGNoYW5nZSBpbXBs
ZW1lbnRzIGxheW91dFRleHRDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24gZm9yIFdlYktpdDIK
KyAgICAgICAgYW5kIFdpbmRvd3Mgc28gd2UgY2FuIHJ1biBhIGxheW91dCB0ZXN0IGFkZGVkIGJ5
IHI4Nzc3MCBvbiB0aGVtLiBFYWNoCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFkZHMgYSB3cmFw
cGVyIGZ1bmN0aW9uIGZvciBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCkKKyAgICAg
ICAgc28gTGF5b3V0VGVzdENvbnRyb2xsZXIgY2FuIGNhbGwgaXQuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24pOiBJbXBsZW1lbnRlZCB0aGUgYmlu
ZGluZyBmdW5jdGlvbgorICAgICAgICBmb3IgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERp
cmVjdGlvbiAoV2luZG93cykuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgIEFkZGVkIGEg
YmluZGluZyBmdW5jdGlvbiBmb3IgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGV4dERpcmVjdGlv
biAoV2ViS2l0MikuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6IGRpdHRvLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VGV4dERpcmVjdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOiBkaXR0by4KKwogMjAxMS0w
Ny0wOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBucnd0
OiBsaW50aW5nIGZpeGVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBkOGRlMmI5MzA4MjIyMmVjOWQ2ODJhYTY1N2E2
ZDEzNmZjZjY4YWZlLi4wMDk3NTgzN2IwMWYyZTRlZmNiNDFlOTgzMGFlM2E0YTY1NGMzYTEzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKQEAgLTE1MjQsNyArMTUyNCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCiAK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdSZWYg
ZGlyZWN0aW9uKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgQ09NUHRyPElXZWJG
cmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVyeSwgZnJhbWUpOworICAgIGlmICghZnJhbWVQ
cml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZVByaXZhdGUtPnNldFRleHREaXJl
Y3Rpb24oYnN0clQoZGlyZWN0aW9uKS5HZXRCU1RSKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjphbGxvd1JvdW5kaW5nSGFja3MoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5p
ZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91
dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCBkNzJiMGEyODE2MzM2N2QwY2Q4YzBmY2MzNjYzYzFk
ZDI4ZDI2YjQzLi41Mjc4YjM5ZmVjOGJhM2YwZmRhYWZjZDI5YmQ0MTQ3Y2RkYzI0ZjIxIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xh
eW91dFRlc3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMTA4LDYgKzEw
OCw4IEBAIG1vZHVsZSBXVFIgewogCiAgICAgICAgIHZvaWQgc2V0UE9TSVhMb2NhbGUoaW4gRE9N
U3RyaW5nIGxvY2FsZSk7CiAKKyAgICAgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKGluIERPTVN0
cmluZyBkaXJlY3Rpb24pOworCiAgICAgICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGwoaW4gYm9vbGVhbiBmbGFnKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDAxNGY5Y2FkNDBmZTVlMTg3YWMyNTY4YWFmM2ZmZTgxNGE5M2QxNDYuLmZhZDc5
ZDM2MjJlY2M3MTZmMjU4OGNkODJjMTkxN2U3MzYxNmFlZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC00NzMsNCArNDczLDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFBPU0lYTG9jYWxlKEpTU3RyaW5nUmVmIGxvY2FsZSkKICAgICBzZXRsb2NhbGUoTENfQUxM
LCBsb2NhbGVCdWYpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUZXh0RGly
ZWN0aW9uKEpTU3RyaW5nUmVmIGRpcmVjdGlvbikKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1h
aW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkucGFnZSgpLT5wYWdlKCkpOworICAgIHJldHVybiBXS0J1bmRsZUZyYW1lU2V0VGV4dERpcmVj
dGlvbihtYWluRnJhbWUsIHRvV0soZGlyZWN0aW9uKS5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDY4ZDhhOTQ1MzZhMWIxZjFhODNm
NmUzZjU3YTA5MDc5MzA2MjgxODYuLjY5YzM1ODg3ZTA0ZWFiMGI2OWU4YjBjODhkYzdiZDQxZmMw
YjA2NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTE2Miw2ICsxNjIsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCB3aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpIHsgcmV0dXJuIG1fd2ls
bFNlbmRSZXF1ZXN0UmV0dXJuc051bGw7IH0KICAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsKGJvb2wgZikgeyBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsID0gZjsgfQog
CisgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKEpTU3RyaW5nUmVmKTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>