<?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>98654</bug_id>
          
          <creation_ts>2012-10-08 09:14:30 -0700</creation_ts>
          <short_desc>[Qt][WTR] Do a forced repaint before generating pixel results</short_desc>
          <delta_ts>2012-10-18 08:15:45 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99354</dependson>
          <blocked>95992</blocked>
    
    <blocked>99463</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>736715</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-08 09:14:30 -0700</bug_when>
    <thetext>The CoordinatedGraphics rendering backend needs an extra step of synchronisation in order to generate reliable pixel snapshots. Currently pixel results are generated at the end of the test run synchronously so we should slightly change WTR in order to allow delaying the dump after WKPageForceRepaint call us back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736740</commentid>
    <comment_count>1</comment_count>
      <attachid>167549</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-08 09:49:05 -0700</bug_when>
    <thetext>Created attachment 167549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737704</commentid>
    <comment_count>2</comment_count>
      <attachid>167549</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-09 05:46:30 -0700</bug_when>
    <thetext>Comment on attachment 167549
Patch

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

&gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:117
&gt; +    if (!s_watchDog)
&gt; +        s_watchDog = new ForceRepaintDoneWatchDog(this);
&gt; +    s_watchDog-&gt;start();

It feels like you&apos;re basically implementing what runUntil already does.
How about adding the extra async step to the chain of steps that we have in TestInvocation::invoke, keep textOutput, pixelResult and repaintRects in member variables, and use runUntil there to wait until the platform code obtained the dumped pixels, and then dump the results?

That would also prevent other platforms that want to use pixel tests with coordinated graphics classes to have to re-implement all this in their TestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737914</commentid>
    <comment_count>3</comment_count>
      <attachid>167777</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-09 10:22:01 -0700</bug_when>
    <thetext>Created attachment 167777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739088</commentid>
    <comment_count>4</comment_count>
      <attachid>168028</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-10 10:33:05 -0700</bug_when>
    <thetext>Created attachment 168028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739745</commentid>
    <comment_count>5</comment_count>
      <attachid>168028</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-11 02:29:38 -0700</bug_when>
    <thetext>Comment on attachment 168028
Patch

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

&gt; Tools/WebKitTestRunner/TestInvocation.h:57
&gt; +    // Some platforms want to force a repaint before generating pixel result.
&gt; +    static void forceRepaintDoneCallback(WKErrorRef, void* context)
&gt; +    {
&gt; +        reinterpret_cast&lt;TestInvocation*&gt;(context)-&gt;forceRepaintDone();
&gt; +    }

This can go in the .cpp

&gt; Tools/WebKitTestRunner/TestInvocation.h:58
&gt; +    void forceRepaintDone();

Maybe put this under #if PLATFORM(QT)?

&gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:78
&gt; +    TestController::shared().runUntil(m_gotRepaint, TestController::ShortTimeout);

This is using the same instance of TestController and are running a runUntil on top of another runUntil, including the full stack up to didReceiveMessageFromInjectedBundle.
If it really is working well this might be fine since it&apos;s simpler for now, but if it starts smelling bad we could pick parts of your last patch to have this runUntil running after the previous one is finished.

&gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:81
&gt; +    if (m_gotRepaint) {

In which cases is this false, can&apos;t we just assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739750</commentid>
    <comment_count>6</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-11 02:37:30 -0700</bug_when>
    <thetext>&gt; This is using the same instance of TestController and are running a runUntil on top of another runUntil, including the full stack up to didReceiveMessageFromInjectedBundle.
&gt; If it really is working well this might be fine since it&apos;s simpler for now, but if it starts smelling bad we could pick parts of your last patch to have this runUntil running after the previous one is finished.

Ok, I&apos;m going to check how it affects performance and whether a nested runLoop could work for all platforms.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:81
&gt; &gt; +    if (m_gotRepaint) {
&gt; 
&gt; In which cases is this false, can&apos;t we just assert?

It is false if smg is wrong with the synchronisation. Given that it is a bit fragile according to our experiences in connection this work, and that we want to run this on bots I believe it&apos;s better to handle this case gracefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739855</commentid>
    <comment_count>7</comment_count>
      <attachid>168202</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-11 05:47:15 -0700</bug_when>
    <thetext>Created attachment 168202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739887</commentid>
    <comment_count>8</comment_count>
      <attachid>168202</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-11 06:20:36 -0700</bug_when>
    <thetext>Comment on attachment 168202
Patch

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

&gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:70
&gt; +    reinterpret_cast&lt;TestInvocation*&gt;(context)-&gt;m_gotRepaint = true;

static_cast

&gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:90
&gt; +    } else {
&gt; +        // The test harness expects an image so we output an empty one.
&gt; +        WKRect windowRect = TestController::shared().mainWebView()-&gt;windowFrame();
&gt; +        image = QImage(QSize(windowRect.size.width, windowRect.size.height), QImage::Format_ARGB32_Premultiplied);
&gt; +        image.fill(Qt::black);
&gt; +    }

That case is pretty silent, we could try to make it obvious from the test results by printing it red. We could also print an error if you end up delaying the stderr #EOF like you proposed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740011</commentid>
    <comment_count>9</comment_count>
      <attachid>168235</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-11 08:47:16 -0700</bug_when>
    <thetext>Created attachment 168235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740012</commentid>
    <comment_count>10</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-11 08:49:04 -0700</bug_when>
    <thetext>&gt; &gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:70
&gt; &gt; +    reinterpret_cast&lt;TestInvocation*&gt;(context)-&gt;m_gotRepaint = true;
&gt; 
&gt; static_cast

Fixed.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:90
&gt; &gt; +    } else {
&gt; &gt; +        // The test harness expects an image so we output an empty one.
&gt; &gt; +        WKRect windowRect = TestController::shared().mainWebView()-&gt;windowFrame();
&gt; &gt; +        image = QImage(QSize(windowRect.size.width, windowRect.size.height), QImage::Format_ARGB32_Premultiplied);
&gt; &gt; +        image.fill(Qt::black);
&gt; &gt; +    }
&gt; 
&gt; That case is pretty silent, we could try to make it obvious from the test results by printing it red. We could also print an error if you end up delaying the stderr #EOF like you proposed.

Ok, changed it to red. Later we can add the error message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740725</commentid>
    <comment_count>11</comment_count>
      <attachid>168235</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 01:44:20 -0700</bug_when>
    <thetext>Comment on attachment 168235
Patch

Clearing flags on attachment: 168235

Committed r131160: &lt;http://trac.webkit.org/changeset/131160&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740726</commentid>
    <comment_count>12</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 01:44:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740798</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 04:25:00 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 168235 [details])
&gt; Clearing flags on attachment: 168235
&gt; 
&gt; Committed r131160: &lt;http://trac.webkit.org/changeset/131160&gt;

It made layout testing extremely slow - http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Amazon%20EC2%29/builds/9671/steps/layout-test

2.5 hours - 9800 tests :((((</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740815</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 04:56:37 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 99163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740820</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 05:02:43 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Re-opened since this is blocked by bug 99163

Sorry, I realized that it should not be landed without the patch in bug 95992 because it makes pixel and ref tests time out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740949</commentid>
    <comment_count>16</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 09:06:31 -0700</bug_when>
    <thetext>Let&apos;s do one more iteration as I realized that I am leaking memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740955</commentid>
    <comment_count>17</comment_count>
      <attachid>168433</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 09:12:12 -0700</bug_when>
    <thetext>Created attachment 168433
Patch

Fixed memory leak by correctly adopting the snapshot image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742142</commentid>
    <comment_count>18</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-15 10:17:24 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742312</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 12:47:03 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 99354</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742330</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-15 12:56:41 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Landed in http://trac.webkit.org/changeset/131306

Rolled out, because it broke layout testing again - http://trac.webkit.org/changeset/131339

I stopped the test after 3 hours 8 minutes (after an editing 
test). Normally all tests take only 25 minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742350</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-15 13:18:13 -0700</bug_when>
    <thetext>See http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Amazon%20EC2%29/builds/9742 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745264</commentid>
    <comment_count>22</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-18 08:15:45 -0700</bug_when>
    <thetext>Landed again in http://trac.webkit.org/changeset/131725</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167549</attachid>
            <date>2012-10-08 09:49:05 -0700</date>
            <delta_ts>2012-10-09 10:21:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98654-20121008184758.patch</filename>
            <type>text/plain</type>
            <size>17074</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWRmMzM3MDE3ZmVmYTA5
MGQ2OWM1ZmM1MDc4NGE3YWQyZjRlNDJiNy4uZmE2YjAxZWQxM2M5MWQwM2Q4ZTRiMDc1NGU0ZDMx
YTY5YTFhZjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTA4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV1RSXVtDb29yZGlu
YXRlZEdyYXBoaWNzXSBEbyBhIGZvcmNlZCByZXBhaW50IGJlZm9yZSBnZW5lcmF0aW5nIHBpeGVs
IHJlc3VsdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgQVBJIHRvIGNvbnZlcnQgYSBRSW1hZ2UgdG8gYSBXS0ltYWdlIHNvIHdlIGNhbgorICAg
ICAgICBwYXNzIGl0IHRvIGNyb3NzLXBsYXRmb3JtIGNvZGUuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvcXQvV0tJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0Lmg6CisKIDIwMTItMTAtMDgg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIEFkZCBhIHNldHRpbmcgdG8gZW5hYmxlL2Rpc2FibGUgc21vb3RoIHNjcm9sbGluZyB0byBX
ZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
cXQvV0tJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdl
UXQuY3BwCmluZGV4IGQwOTc1ZjY1MzBlMDdhMTU0ODBjZWVhYzcwZTAwYzRiNTcwM2U4YTMuLjYw
Mzg4ZjRmYTI3ZTFmYzMyM2FiMjViNjdlNTg4MWExNWMyNDU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCkBAIC0yNSwxMCArMjUsMzAgQEAKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIK
ICNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogUUlt
YWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICByZXR1
cm4gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCktPmNyZWF0ZVFJbWFnZSgpLmNvcHkoKTsKIH0K
KworV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdl
KQoreworICAgIGlmIChpbWFnZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBB
U1NFUlQoaW1hZ2UuYnl0ZXNQZXJMaW5lKCkgPT0gaW1hZ2Uud2lkdGgoKSAqIDQpOworCisgICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2Uuc2l6ZSgp
LCBzdGF0aWNfY2FzdDxJbWFnZU9wdGlvbnM+KDApKTsKKyAgICBpZiAoIXdlYkltYWdlLT5iaXRt
YXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludCgwLCAwKSwgaW1hZ2UpOworICAg
IHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaAppbmRleCAxZTUwNzNhMDhjYjM0MDUy
OThiYzM0NjFiNjRhZmFlN2VlOTU3YmQzLi41YWJlZjQ4MTgzMDg3YWM1NTY5MTVmY2IyNjY4MTQ3
NjY4NzM1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJ
bWFnZVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5o
CkBAIC0yNyw1ICsyNyw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlLmg+CiAKIFdLX0VY
UE9SVCBRSW1hZ2UgV0tJbWFnZUNyZWF0ZVFJbWFnZShXS0ltYWdlUmVmIGltYWdlKTsKK1dLX0VY
UE9SVCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKGNvbnN0IFFJbWFnZSYgaW1h
Z2UpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA1ZTExMWQ1NWMyYjBkYWM4OTA0MDdiZmMyN2ViNTg0ZTVjYTZlN2E3Li5hOWIx
YjU5NzhjOTg4OWNjYjg2MzVkYjViZWEwYmE4NWMyYWQ4YmJkIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTItMTAt
MDggIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXVFJd
W0Nvb3JkaW5hdGVkR3JhcGhpY3NdIERvIGEgZm9yY2VkIHJlcGFpbnQgYmVmb3JlIGdlbmVyYXRp
bmcgcGl4ZWwgcmVzdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYWRlIFdUUiBzdWl0YWJsZSBmb3IgcGxhdGZvcm1zIHRoYXQgd2FudCB0byBmb3Jj
ZSBhIHJlcGFpbnQKKyAgICAgICAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBiZWZvcmUgZ2VuZXJh
dGluZyBwaXhlbCByZXN1bHQuCisgICAgICAgIFRoaXMgZXh0cmEgc3luY2hyb25pc2F0aW9uIGlz
IG5lY2Vzc2FyeSB3aXRoIHRoZSBDb29yZGluYXRlZEdyYXBoaWNzCisgICAgICAgIHJlbmRlcmlu
ZyBiYWNrZW5kIGJlY2F1c2UgaXQgaGFzIGEgZnVsbHkgYXN5bmNocm9ub3VzIG5hdHVyZS4KKyAg
ICAgICAgUG9zdHBvbmUgZmluaXNoaW5nIHRoZSB0ZXN0IGFmdGVyIHdlIGdvdCB0aGUgcGl4ZWxz
LiBBY3R1YWxseSBkbyB0aGUgZm9yY2VkCisgICAgICAgIHJlcGFpbnQgb24gUXQuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wKTogRG9u
J3QgY2xvc2Ugb3V0cHV0IGNoYW5uZWxzIHlldCBleGNlcHQKKyAgICAgICAgd2hlbiB3ZSBkdW1w
IGFmdGVyIGFuIGVycm9yLiBJdCB3aWxsIGJlIGRvbmUgaW4gZmluaXNoIGFmdGVyIHdlIGFyZQor
ICAgICAgICBkb25lIHdpdGggdGhlIHBpeGVsIHJlc3VsdC4KKyAgICAgICAgKFdUUik6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpmaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0
aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxs
YmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNh
aXJvLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRo
RXhwZWN0ZWRBbmRGaW5pc2gpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2cvVGVzdElu
dm9jYXRpb25DRy5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpjb21wYXJlUGl4
ZWxzV2l0aEV4cGVjdGVkQW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0
L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3
aW5kb3dTbmFwc2hvdEltYWdlKToKKyAgICAgICAgVXNlIHRoZSBuZXcgV0tJbWFnZUNyZWF0ZUZy
b21RSW1hZ2UgQVBJIGhlcmUuIEl0J3Mgc3RpbGwgYSBkdW1teQorICAgICAgICBpbXBsZW1lbnRh
dGlvbiB3aXRoIGEgbnVsbCBRSW1hZ2UuIEdyYWJiaW5nIHRoZSBhY3R1YWwgcGl4ZWwgc25hcHNo
b3QKKyAgICAgICAgd2lsbCBjb21lIGluIGEgZm9sbG93LXVwLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHA6CisgICAgICAgIChGb3JjZVJlcGFpbnRE
b25lV2F0Y2hEb2cpOgorICAgICAgICAoV1RSOjpGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OmV4
cGVjdGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OkZvcmNlUmVw
YWludERvbmVXYXRjaERvZzo6Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKToKKyAgICAgICAgKFdU
Ujo6Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOjpzdGFydCk6CisgICAgICAgIChXVFI6OkZvcmNl
UmVwYWludERvbmVXYXRjaERvZzo6c3RvcCk6CisgICAgICAgIChXVFI6OkZvcmNlUmVwYWludERv
bmVXYXRjaERvZzo6dGltZXJFdmVudCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpj
b21wYXJlUGl4ZWxzV2l0aEV4cGVjdGVkQW5kRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk6CisgICAgICAgIEZvcmNlIHRoZSBy
ZXBhaW50IGFuZCB3YWl0IGZvciBpdC4gV2Ugd2lsbCBtb3N0IHByb2JhYmx5IG5lZWQKKyAgICAg
ICAgdG8gcmVmYWN0b3IgdGhpcyBjb2RlIHRvIGJlIGFibGUgdG8gc2hhcmUgaXQgYWNyb3NzIHBs
YXRmb3JtcworICAgICAgICB1c2luZyBDb29yZGluYXRlZEdyYXBoaWNzIGJ1dCB0aGlzIGlzIG5v
dCBpbiB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
Ojpjb21wYXJlUGl4ZWxzV2l0aEV4cGVjdGVkQW5kRmluaXNoKToKKwogMjAxMi0xMC0wOCAgQW5k
cmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNpbmcgZmxvYXQvZG91
YmxlIGFzIFdURiBoYXNoIHRhYmxlIGtleSBpcyB1bnJlbGlhYmxlLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxNGJhNGQzMGE5ZDY3YjBlMGEyZmYxYzE1
MmQzYjU5Y2Y2M2I0NzcxLi4yNjE2MGU1YzVkNDEwMzI4MGJmNDQ3MTQzMGNkZjNlOTFmYzMwN2M5
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTAxLDcg
KzEwMSw3IEBAIFRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihjb25zdCBzdGQ6OnN0cmlu
ZyYgcGF0aE9yVVJMKQogICAgICwgbV9wYXRoT3JVUkwocGF0aE9yVVJMKQogICAgICwgbV9kdW1w
UGl4ZWxzKGZhbHNlKQogICAgICwgbV9nb3RJbml0aWFsUmVzcG9uc2UoZmFsc2UpCi0gICAgLCBt
X2dvdEZpbmFsTWVzc2FnZShmYWxzZSkKKyAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiAgICAgLCBt
X2dvdFJlcGFpbnQoZmFsc2UpCiAgICAgLCBtX2Vycm9yKGZhbHNlKQogewpAQCAtMTgyLDggKzE4
Miw4IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAKICAgICBXS1BhZ2VMb2FkVVJM
KFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1fdXJsLmdl
dCgpKTsKIAotICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ydW5VbnRpbChtX2dvdEZpbmFs
TWVzc2FnZSwgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnVzZVdhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyKCkgPyBUZXN0Q29udHJvbGxlcjo6TG9uZ1RpbWVvdXQgOiBUZXN0Q29udHJvbGxlcjo6Tm9U
aW1lb3V0KTsKLSAgICBpZiAoIW1fZ290RmluYWxNZXNzYWdlKSB7CisgICAgVGVzdENvbnRyb2xs
ZXI6OnNoYXJlZCgpLnJ1blVudGlsKG1fZmluaXNoZWQsIFRlc3RDb250cm9sbGVyOjpzaGFyZWQo
KS51c2VXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpID8gVGVzdENvbnRyb2xsZXI6OkxvbmdUaW1l
b3V0IDogVGVzdENvbnRyb2xsZXI6Ok5vVGltZW91dCk7CisgICAgaWYgKCFtX2ZpbmlzaGVkKSB7
CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZmluYWwgbWVz
c2FnZSBmcm9tIHdlYiBwcm9jZXNzXG4iOwogICAgICAgICBnb3RvIGVuZDsKICAgICB9CkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFdlYlByb2Nlc3NVbnJlc3Bv
bnNpdmVuZXNzKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCkKICAgICBkdW1wKHRleHRUb1N0ZG91
dCwgZXJyb3JNZXNzYWdlVG9TdGRlcnIsIHRydWUpOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9u
OjpkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJy
LCBib29sIHNlZW5FcnJvcikKK3ZvaWQgVGVzdEludm9jYXRpb246OmR1bXAoY29uc3QgY2hhciog
dGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIsIGJvb2wgY2xvc2VPdXRwdXRD
aGFubmVscykKIHsKICAgICBwcmludGYoIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuIik7CiAg
ICAgaWYgKHRleHRUb1N0ZG91dCkKQEAgLTIyOCw5ICsyMjgsMjMgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0
ZGVyciwgYm8KICAgICAgICAgZnB1dHModGV4dFRvU3RkZXJyLCBzdGRlcnIpOwogCiAgICAgZnB1
dHMoIiNFT0ZcbiIsIHN0ZG91dCk7Ci0gICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZGVycik7Ci0gICAg
aWYgKHNlZW5FcnJvcikKKworICAgIGlmIChjbG9zZU91dHB1dENoYW5uZWxzKSB7CisgICAgICAg
IGZwdXRzKCIjRU9GXG4iLCBzdGRlcnIpOwogICAgICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0
KTsKKyAgICB9CisKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30K
Kwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZmluaXNoKCkKK3sKKyAgICBtX2ZpbmlzaGVkID0gdHJ1
ZTsKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOworCisgICAgZnB1
dHMoIiNFT0ZcbiIsIHN0ZGVycik7CisgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91dCk7CiAgICAg
ZmZsdXNoKHN0ZG91dCk7CiAgICAgZmZsdXNoKHN0ZGVycik7CiB9CkBAIC0yNTUsNyArMjY5LDcg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkVycm9yIikpIHsKICAgICAgICAgLy8gU2V0IGFsbCBzdGF0
ZXMgdG8gdHJ1ZSB0byBzdG9wIHNwaW5uaW5nIHRoZSBydW5sb29wLgogICAgICAgICBtX2dvdElu
aXRpYWxSZXNwb25zZSA9IHRydWU7Ci0gICAgICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsK
KyAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CiAgICAgICAgIG1fZXJyb3IgPSB0cnVlOwogICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1
cm47CkBAIC0yOTIsMTQgKzMwNiwxMCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogCiAgICAg
ICAgIC8vIER1bXAgcGl4ZWxzIChpZiBuZWNlc3NhcnkpLgogICAgICAgICBpZiAobV9kdW1wUGl4
ZWxzICYmIHBpeGVsUmVzdWx0KQotICAgICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQocGl4ZWxSZXN1bHQsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgICAgICBjb21wYXJl
UGl4ZWxzV2l0aEV4cGVjdGVkQW5kRmluaXNoKHBpeGVsUmVzdWx0LCByZXBhaW50UmVjdHMpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBmaW5pc2goKTsKIAotICAgICAgICBmcHV0cygiI0VP
RlxuIiwgc3Rkb3V0KTsKLSAgICAgICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgICAgIGZmbHVzaChz
dGRlcnIpOwotICAgICAgICAKLSAgICAgICAgbV9nb3RGaW5hbE1lc3NhZ2UgPSB0cnVlOwotICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmlu
ZGV4IDQ5NjQxZTllZTQzZTc4OWNkOTU5ZjRiNGRkYWJlNDY4Y2Y5NjM4M2IuLmRiZWRkNzg4OGJj
MjhiOGRmZWNiY2M4MDRmOTViZjVjNDBkNWQxYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKQEAgLTQ2LDkgKzQ2LDE5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIGR1bXBXZWJQcm9jZXNzVW5yZXNwb25zaXZlbmVzcyhjb25zdCBjaGFyKiB0ZXh0VG9TdGRv
dXQpOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0
ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxz
ZSk7Ci0gICAgdm9pZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVm
LCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7CisgICAgdm9pZCBmaW5pc2goKTsKKyAgICBzdGF0
aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRv
U3RkZXJyID0gMCwgYm9vbCBjbG9zZU91dHB1dENoYW5uZWxzID0gZmFsc2UpOworICAgIHZvaWQg
Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmLCBXS0FycmF5UmVm
IHJlcGFpbnRSZWN0cyk7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmRE
dW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CisKKyAgICAvLyBTb21lIHBsYXRmb3JtcyBtaWdo
dCB3YW50IHRvIGZvcmNlIGEgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHQu
CisgICAgc3RhdGljIHZvaWQgZm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZv
aWQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZWludGVycHJldF9jYXN0PFRlc3RJbnZvY2F0
aW9uKj4oY29udGV4dCktPmZvcmNlUmVwYWludERvbmVDYWxsYmFjaygpOworICAgIH0KKyAgICB2
b2lkIGZvcmNlUmVwYWludERvbmVDYWxsYmFjaygpOworCisgICAgZnJpZW5kIGNsYXNzIEZvcmNl
UmVwYWludERvbmVXYXRjaERvZzsKICAgICAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gbV91
cmw7CiAgICAgc3RkOjpzdHJpbmcgbV9wYXRoT3JVUkw7CkBAIC01OCw3ICs2OCw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBJbnZvY2F0aW9uIHN0YXRlCiAgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNw
b25zZTsKLSAgICBib29sIG1fZ290RmluYWxNZXNzYWdlOworICAgIGJvb2wgbV9maW5pc2hlZDsK
ICAgICBib29sIG1fZ290UmVwYWludDsKICAgICBib29sIG1fZXJyb3I7CiB9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKaW5k
ZXggZDNmYmZkMmVmMmRmNDcwNGFhZjRhMTNmMDE0YjkzMmNjMGEwNzJhYS4uNmRmMzVhNmMyMThm
NzQ4NjNlMzgxODI3YTQwMDdmY2E1NDk0NDg4MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHN0YXRpYyB2b2lkIGR1bXBCaXRtYXAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBj
aGFyKiBjaGVja3N1bSkKICAgICBwcmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7
CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVj
dGVkKFdLSW1hZ2VSZWYgd2tJbWFnZSwgV0tBcnJheVJlZiAvKnJlcGFpbnRSZWN0cyovKQordm9p
ZCBUZXN0SW52b2NhdGlvbjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0lt
YWdlUmVmIHdrSW1hZ2UsIFdLQXJyYXlSZWYgLypyZXBhaW50UmVjdHMqLykKIHsKICAgICBjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UgPSBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKHdrSW1hZ2Up
OwogCkBAIC04Nyw2ICs4Nyw4IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRD
b21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgd2tJbWFnZSwgV0tBcnJhCiAgICAgICAgIGR1
bXBCaXRtYXAoc3VyZmFjZSwgYWN0dWFsSGFzaCk7CiAKICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3koc3VyZmFjZSk7CisKKyAgICBmaW5pc2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAppbmRleCA1
YjY4ZGFjNWM1NGQ0NjFlMGEzNGZiNDY0OWYyMmMwYzM1NWRhZjU3Li5lMTNmMWVkNDc4NTJmNDVj
NzkzNWRlMzdjMGE4YTgyOTE0YmY0NmE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y2cvVGVzdEludm9jYXRpb25DRy5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBw
YWludFJlcGFpbnRSZWN0T3ZlcmxheShDR0NvbnRleHRSZWYgY29udGV4dCwgV0tJbWFnZVJlZiBp
bWFnZSwgV0tBcgogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKLXZv
aWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1h
Z2VSZWYgaW1hZ2UsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQordm9pZCBUZXN0SW52b2NhdGlv
bjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmIGltYWdlLCBX
S0FycmF5UmVmIHJlcGFpbnRSZWN0cykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcg
PSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKTsKICAgICBXS1JldGFpblB0
cjxXS0ltYWdlUmVmPiB3aW5kb3dTbmFwc2hvdCA9IHdlYlZpZXctPndpbmRvd1NuYXBzaG90SW1h
Z2UoKTsKQEAgLTE3Nyw2ICsxNzcsOCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxz
QW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlLCBXS0FycmF5UgogICAgIGNv
bXB1dGVNRDVIYXNoU3RyaW5nRm9yQ29udGV4dChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsK
ICAgICBpZiAoIWNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGFjdHVh
bEhhc2gpKQogICAgICAgICBkdW1wQml0bWFwKGNvbnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOwor
CisgICAgZmluaXNoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAppbmRleCAyMmUzZmM1OTY4ZWZm
MTNjNmQyMzk5NzliYjVjNDYwZWJjMTBlY2U2Li41OGI1MzdjZThmNTFjYTU3MTU4MjYzZDhmNjZk
YmJiNzBkZDY2ODZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRm
b3JtV2ViVmlld1F0LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3Jt
V2ViVmlld1F0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFFFdmVudExvb3A+CiAj
aW5jbHVkZSA8UVFtbFByb3BlcnR5PgogI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrVmlldz4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VRdC5oPgogI2luY2x1ZGUgPHFwYS9xd2luZG93c3lzdGVt
aW50ZXJmYWNlLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMTUyLDcgKzE1Myw3IEBAIFdLUmV0
YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgp
CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBpbiB0aGUgVUkg
cHJvY2VzcywKICAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1cmUgdGhpbmdz
IGxpa2UgM0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV0tJbWFnZUNy
ZWF0ZUZyb21RSW1hZ2UoUUltYWdlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCmluZGV4IDAxNjMw
ZDk4YTZmM2I1MTViOTllMDM4ODFmYjU2YjYyY2U2NmU2OWEuLjYwMjIxZDhkMjJlNDA0MWM3YzI5
OTU2OTU5Y2ZkZTRkYmUzYTMwMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
cXQvVGVzdEludm9jYXRpb25RdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9U
ZXN0SW52b2NhdGlvblF0LmNwcApAQCAtMjQsOSArMjQsMTAgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0KICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogCisjaW5jbHVkZSAiUGxh
dGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxR
QnVmZmVyPgogI2luY2x1ZGUgPFFDcnlwdG9ncmFwaGljSGFzaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLSW1hZ2VRdC5oPgpAQCAtNjIsMTIgKzYzLDc1IEBAIHN0YXRpYyB2b2lkIGR1bXBJbWFnZShj
b25zdCBRSW1hZ2UmIGltYWdlKQogICAgIGZmbHVzaChzdGRvdXQpOwogfQogCi12b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykKK2NsYXNzIEZvcmNlUmVwYWludERvbmVX
YXRjaERvZyA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEZv
cmNlUmVwYWludERvbmVXYXRjaERvZyhUZXN0SW52b2NhdGlvbiogY2xpZW50KTsKKyAgICB2b2lk
IHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisgICAgYm9vbCBleHBlY3RpbmdDYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0aW5nQ2FsbGJhY2s7IH0KK3ByaXZhdGU6CisgICAgdmly
dHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKKworICAgIFRlc3RJbnZvY2F0aW9u
KiBtX2NsaWVudDsKKyAgICBib29sIG1fZXhwZWN0aW5nQ2FsbGJhY2s7CisgICAgaW50IG1fdGlt
ZXJJRDsKK307CisKK0ZvcmNlUmVwYWludERvbmVXYXRjaERvZzo6Rm9yY2VSZXBhaW50RG9uZVdh
dGNoRG9nKFRlc3RJbnZvY2F0aW9uKiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisg
ICAgLCBtX2V4cGVjdGluZ0NhbGxiYWNrKGZhbHNlKQorICAgICwgbV90aW1lcklEKDApCit7Cit9
CisKK3ZvaWQgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOjpzdGFydCgpCiB7Ci0gICAgLy9GSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODcwCi0gICAgVU5V
U0VEX1BBUkFNKHJlcGFpbnRSZWN0cyk7CisgICAgY29uc3QgaW50IHRpbWVvdXRNaWxsaXMgPSAy
MDAwOworICAgIG1fdGltZXJJRCA9IHN0YXJ0VGltZXIodGltZW91dE1pbGxpcyk7CisgICAgbV9l
eHBlY3RpbmdDYWxsYmFjayA9IHRydWU7Cit9CisKK3ZvaWQgRm9yY2VSZXBhaW50RG9uZVdhdGNo
RG9nOjpzdG9wKCkKK3sKKyAgICBraWxsVGltZXIobV90aW1lcklEKTsKKyAgICBtX2V4cGVjdGlu
Z0NhbGxiYWNrID0gZmFsc2U7Cit9CisKK3ZvaWQgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOjp0
aW1lckV2ZW50KFFUaW1lckV2ZW50KikKK3sKKyAgICBraWxsVGltZXIobV90aW1lcklEKTsKKyAg
ICBtX2V4cGVjdGluZ0NhbGxiYWNrID0gZmFsc2U7CisgICAgbV9jbGllbnQtPmZvcmNlUmVwYWlu
dERvbmVDYWxsYmFjaygpOworfQorCitzdGF0aWMgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKiBz
X3dhdGNoRG9nID0gMDsKKwordm9pZCBUZXN0SW52b2NhdGlvbjo6Y29tcGFyZVBpeGVsc1dpdGhF
eHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmIGltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRS
ZWN0cykKK3sKKyAgICBXS1BhZ2VSZWYgcGFnZSA9IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5t
YWluV2ViVmlldygpLT5wYWdlKCk7CisgICAgV0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIHRoaXMs
IGZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBpZiAoIXNfd2F0Y2hEb2cpCisgICAg
ICAgIHNfd2F0Y2hEb2cgPSBuZXcgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKHRoaXMpOworICAg
IHNfd2F0Y2hEb2ctPnN0YXJ0KCk7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmZvcmNlUmVw
YWludERvbmVDYWxsYmFjaygpCit7CisgICAgUUltYWdlIGltYWdlOworICAgIEFTU0VSVChzX3dh
dGNoRG9nKTsKKyAgICBpZiAoc193YXRjaERvZy0+ZXhwZWN0aW5nQ2FsbGJhY2soKSkgeworICAg
ICAgICBzX3dhdGNoRG9nLT5zdG9wKCk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+
IHdpbmRvd1NuYXBzaG90ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCkt
PndpbmRvd1NuYXBzaG90SW1hZ2UoKTsKKyAgICAgICAgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUlt
YWdlKHdpbmRvd1NuYXBzaG90LmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUg
dGVzdCBoYXJuZXNzIGV4cGVjdHMgYW4gaW1hZ2Ugc28gd2Ugb3V0cHV0IGFuIGVtcHR5IG9uZS4K
KyAgICAgICAgV0tSZWN0IHdpbmRvd1JlY3QgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFp
bldlYlZpZXcoKS0+d2luZG93RnJhbWUoKTsKKyAgICAgICAgaW1hZ2UgPSBRSW1hZ2UoUVNpemUo
d2luZG93UmVjdC5zaXplLndpZHRoLCB3aW5kb3dSZWN0LnNpemUuaGVpZ2h0KSwgUUltYWdlOjpG
b3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgICAgICBpbWFnZS5maWxsKFF0OjpibGFj
ayk7CisgICAgfQogCi0gICAgUUltYWdlIGltYWdlID0gV0tJbWFnZUNyZWF0ZVFJbWFnZShpbWFn
ZVJlZik7CiAgICAgUUNyeXB0b2dyYXBoaWNIYXNoIGhhc2goUUNyeXB0b2dyYXBoaWNIYXNoOjpN
ZDUpOwogICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwgaW1hZ2UuaGVpZ2h0KCk7ICsr
cm93KQogICAgICAgICBoYXNoLmFkZERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aW1hZ2UuY29uc3RTY2FuTGluZShyb3cpKSwgaW1hZ2UuYnl0ZXNQZXJMaW5lKCkpOwpAQCAtNzgs
NiArMTQyLDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0
aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLQXJyCiAgICAgICAgIGltYWdlLnNldFRl
eHQoImNoZWNrc3VtIiwgYWN0dWFsSGFzaCk7CiAgICAgICAgIGR1bXBJbWFnZShpbWFnZSk7CiAg
ICAgfQorCisgICAgZmluaXNoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgorCisjaW5jbHVk
ZSAiVGVzdEludm9jYXRpb25RdC5tb2MiCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9UZXN0SW52b2NhdGlvbldpbi5jcHAKaW5kZXggODk0NWFhNjhhM2IyYjBjNTJmNmVjMDE2ZjU1
ZWE1N2FlZDBhODMwMi4uMzlmMDRhNWExOGYyYzk3ZDk5NmYyZWM2Y2VhMzM1NTVhNWI2ZDNiNSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25XaW4u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNw
cApAQCAtMjksOCArMjksOSBAQAogbmFtZXNwYWNlIFdUUiB7CiAKICNpZiAhVVNFKENHKSAmJiAh
VVNFKENBSVJPKQotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZikKK3ZvaWQgVGVzdEludm9jYXRpb246OmNv
bXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2goV0tJbWFnZVJlZiwgV0tBcnJheVJlZikK
IHsKKyAgICBmaW5pc2goKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167777</attachid>
            <date>2012-10-09 10:22:01 -0700</date>
            <delta_ts>2012-10-10 10:33:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98654-20121009192051.patch</filename>
            <type>text/plain</type>
            <size>15068</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjQ5M2UxNDgxZmRhZGVk
MmIyY2ZhODBlM2ZlMjJkZTI4N2E0ZmM2Zi4uOWJiYWM3ZTc3ZTM3ZjU3OTU3NGYyOTgyOWFhM2Ji
MGVmMWQxMGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTA5ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV1RSXVtDb29yZGlu
YXRlZEdyYXBoaWNzXSBEbyBhIGZvcmNlZCByZXBhaW50IGJlZm9yZSBnZW5lcmF0aW5nIHBpeGVs
IHJlc3VsdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgQVBJIHRvIGNvbnZlcnQgYSBRSW1hZ2UgdG8gYSBXS0ltYWdlIHNvIHdlIGNhbgorICAg
ICAgICBwYXNzIGl0IHRvIGNyb3NzLXBsYXRmb3JtIGNvZGUuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvcXQvV0tJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0Lmg6CisKIDIwMTItMTAtMDkg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF1bV0syXSBJbmZvcm0gdGhlIFBhZ2VQcm94eSBhYm91dCB2aXNpYmls
aXR5IGNoYW5nZXMgd2hlbiB0aGUgdmlldyBpcyBzaG93bi9oaWRkZW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCmluZGV4IGQwOTc1ZjY1MzBlMDdhMTU0
ODBjZWVhYzcwZTAwYzRiNTcwM2U4YTMuLjYwMzg4ZjRmYTI3ZTFmYzMyM2FiMjViNjdlNTg4MWEx
NWMyNDU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0lt
YWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQu
Y3BwCkBAIC0yNSwxMCArMjUsMzAgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNp
bmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1
ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogUUltYWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFn
ZVJlZiBpbWFnZVJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCkt
PmNyZWF0ZVFJbWFnZSgpLmNvcHkoKTsKIH0KKworV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJv
bVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKQoreworICAgIGlmIChpbWFnZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoaW1hZ2UuYnl0ZXNQZXJMaW5lKCkgPT0g
aW1hZ2Uud2lkdGgoKSAqIDQpOworCisgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdl
YkltYWdlOjpjcmVhdGUoaW1hZ2Uuc2l6ZSgpLCBzdGF0aWNfY2FzdDxJbWFnZU9wdGlvbnM+KDAp
KTsKKyAgICBpZiAoIXdlYkltYWdlLT5iaXRtYXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1h
cCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdl
KFFQb2ludCgwLCAwKSwgaW1hZ2UpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNl
KCkubGVha1JlZigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9xdC9XS0ltYWdlUXQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdl
UXQuaAppbmRleCAxZTUwNzNhMDhjYjM0MDUyOThiYzM0NjFiNjRhZmFlN2VlOTU3YmQzLi41YWJl
ZjQ4MTgzMDg3YWM1NTY5MTVmY2IyNjY4MTQ3NjY4NzM1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oCkBAIC0yNyw1ICsyNyw2IEBACiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0ltYWdlLmg+CiAKIFdLX0VYUE9SVCBRSW1hZ2UgV0tJbWFnZUNyZWF0ZVFJbWFn
ZShXS0ltYWdlUmVmIGltYWdlKTsKK1dLX0VYUE9SVCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVG
cm9tUUltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYWE2NTk0ZTdkOGZmMWMyM2M1
NjkwYjhkYjNjZTYzZGU2ZmZkNWE5Li43YWUwZTM5ZDAwNzM2Y2U4YTBiM2NiZDNmZTBhMmI3NWQ0
NGVkMGQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDYgQEAKKzIwMTItMTAtMDkgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3
ZWJraXQub3JnPgorCisgICAgICAgIFtXVFJdW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIERvIGEgZm9y
Y2VkIHJlcGFpbnQgYmVmb3JlIGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRlIFdUUiBzdWl0YWJsZSBmb3Ig
cGxhdGZvcm1zIHRoYXQgd2FudCB0byBmb3JjZSBhIHJlcGFpbnQKKyAgICAgICAgYXQgdGhlIGVu
ZCBvZiB0aGUgdGVzdCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHQuCisgICAgICAgIFRo
aXMgZXh0cmEgc3luY2hyb25pc2F0aW9uIGlzIG5lY2Vzc2FyeSB3aXRoIHRoZSBDb29yZGluYXRl
ZEdyYXBoaWNzCisgICAgICAgIHJlbmRlcmluZyBiYWNrZW5kIGJlY2F1c2UgaXQgaGFzIGEgZnVs
bHkgYXN5bmNocm9ub3VzIG5hdHVyZS4KKyAgICAgICAgUG9zdHBvbmUgZHVtcGluZyByZXN1bHRz
IGFmdGVyIHdlIGdvdCB0aGUgcGl4ZWxzLiBBY3R1YWxseSBkbyB0aGUgZm9yY2VkCisgICAgICAg
IHJlcGFpbnQgb24gUXQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmR1bXBSZXN1bHRzKTogQWRkZWQuIFRoaXMgaXMgd2hlcmUKKyAgICAgICAgd2UgZHVtcCB0
aGUgcmVzdWx0cyBpZiBubyBlcnJvciBoYXBwZW5lZC4gTW92ZWQgY2xvc2luZworICAgICAgICBz
dGRlcnIgdG8gaGVyZSBmcm9tIGR1bXAgc28gd2UgY2FuIHVzZSB0aGUgc3RkZXJyIGFmdGVyCisg
ICAgICAgIGR1bXBlZCB0aGUgdGV4dCByZXN1bHQuCisgICAgICAgIChXVFIpOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAoVGVzdEludm9j
YXRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25D
YWlyby5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpwbGF0Zm9ybU5lZWRGb3Jj
ZVJlcGFpbnRCZWZvcmVEdW1waW5nUGl4ZWxzKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OnBsYXRmb3JtTmVlZEZvcmNlUmVwYWludEJlZm9yZUR1bXBpbmdQaXhl
bHMpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRm
b3JtV2ViVmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dT
bmFwc2hvdEltYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0
aW9uUXQuY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6cGxhdGZv
cm1OZWVkRm9yY2VSZXBhaW50QmVmb3JlRHVtcGluZ1BpeGVscyk6CisgICAgICAgIChXVFIpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNwcDoKKyAg
ICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpwbGF0Zm9ybU5lZWRG
b3JjZVJlcGFpbnRCZWZvcmVEdW1waW5nUGl4ZWxzKToKKwogMjAxMi0xMC0wOSAgWm9sdGFuIEhv
cnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBSZW1vdmUg
bXlzZWxmIGZyb20gUXRXZWJLaXQyIHN1YnNjcmlwdGlvbnMuCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDE0YmE0ZDMwYTlkNjdiMGUwYTJmZjFjMTUyZDNi
NTljZjYzYjQ3NzEuLjI4ODdmNmVhZDBjZWIzMzhhNjkzOGFhNjkzMDE1MjRjZDc1NjNiZjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xOTIsNiArMTky
LDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICAgICAgZ290byBlbmQ7CiAg
ICAgfQogCisgICAgZHVtcFJlc3VsdHMoKTsKKwogZW5kOgogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgaWYgKG1fZ290SW5pdGlhbFJlc3BvbnNlKQpAQCAtMjE5LDcgKzIyMSw3IEBAIHZvaWQg
VGVzdEludm9jYXRpb246OmR1bXBXZWJQcm9jZXNzVW5yZXNwb25zaXZlbmVzcyhjb25zdCBjaGFy
KiB0ZXh0VG9TdGRvdXQpCiAgICAgZHVtcCh0ZXh0VG9TdGRvdXQsIGVycm9yTWVzc2FnZVRvU3Rk
ZXJyLCB0cnVlKTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcChjb25zdCBjaGFyKiB0
ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciwgYm9vbCBzZWVuRXJyb3IpCit2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3Qg
Y2hhciogdGV4dFRvU3RkZXJyLCBib29sIGNsb3NlT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgcHJp
bnRmKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiIpOwogICAgIGlmICh0ZXh0VG9TdGRvdXQp
CkBAIC0yMjgsMTMgKzIzMCw0NiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0IGNo
YXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyLCBibwogICAgICAgICBm
cHV0cyh0ZXh0VG9TdGRlcnIsIHN0ZGVycik7CiAKICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0
KTsKLSAgICBmcHV0cygiI0VPRlxuIiwgc3RkZXJyKTsKLSAgICBpZiAoc2VlbkVycm9yKQorCisg
ICAgaWYgKGNsb3NlT3V0cHV0Q2hhbm5lbHMpIHsKKyAgICAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0
ZGVycik7CiAgICAgICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOworICAgIH0KKwogICAgIGZm
bHVzaChzdGRvdXQpOwogICAgIGZmbHVzaChzdGRlcnIpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkdW1wUmVzdWx0cygpCit7CisgICAgaWYgKG1fZHVtcFBpeGVscyAmJiBtX3BpeGVsUmVz
dWx0ICYmIHBsYXRmb3JtTmVlZEZvcmNlUmVwYWludEJlZm9yZUR1bXBpbmdQaXhlbHMoKSkgewor
ICAgICAgICBmb3JjZVJlcGFpbnQoKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgp
LnJ1blVudGlsKG1fZ290UmVwYWludCwgVGVzdENvbnRyb2xsZXI6OlNob3J0VGltZW91dCk7Cisg
ICAgfQorCisgICAgZHVtcCh0b1dURlN0cmluZyhtX3RleHRPdXRwdXQuZ2V0KCkpLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgaWYgKG1fZHVtcFBpeGVscyAmJiBtX3BpeGVsUmVzdWx0KQorICAgICAg
ICBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChtX3BpeGVsUmVzdWx0LmdldCgpLCBt
X3JlcGFpbnRSZWN0cy5nZXQoKSk7CisKKyAgICBmcHV0cygiI0VPRlxuIiwgc3RkZXJyKTsKKyAg
ICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1
c2goc3RkZXJyKTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50KCkKK3sK
KyAgICBXS1BhZ2VSZWYgcGFnZSA9IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmll
dygpLT5wYWdlKCk7CisgICAgV0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIHRoaXMsIGZvcmNlUmVw
YWludERvbmVDYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmZvcmNlUmVwYWlu
dERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQoreworICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8VGVzdEludm9jYXRpb24qPihjb250ZXh0KS0+bV9nb3RSZXBhaW50ID0gdHJ1ZTsK
KyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOworfQorCiBib29sIFRl
c3RJbnZvY2F0aW9uOjpjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhj
b25zdCBjaGFyIGFjdHVhbEhhc2hbMzNdKQogewogICAgIC8vIENvbXB1dGUgdGhlIGhhc2ggb2Yg
dGhlIGJpdG1hcCBjb250ZXh0IHBpeGVscwpAQCAtMjc4LDI2ICszMTMsMTcgQEAgdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOwogCiAgICAg
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXh0T3V0cHV0S2V5KEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUZXh0T3V0cHV0IikpOwotICAgICAgICBXS1N0cmlu
Z1JlZiB0ZXh0T3V0cHV0ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0ZXh0T3V0cHV0S2V5LmdldCgpKSk7
CisgICAgICAgIG1fdGV4dE91dHB1dCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGV4dE91dHB1dEtleS5n
ZXQoKSkpOwogCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwaXhlbFJlc3VsdEtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBpeGVsUmVzdWx0Iikp
OwotICAgICAgICBXS0ltYWdlUmVmIHBpeGVsUmVzdWx0ID0gc3RhdGljX2Nhc3Q8V0tJbWFnZVJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHBpeGVs
UmVzdWx0S2V5LmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVCghcGl4ZWxSZXN1bHQgfHwgbV9kdW1w
UGl4ZWxzKTsKLSAgICAgICAgCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXBh
aW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZXBh
aW50UmVjdHMiKSk7Ci0gICAgICAgIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzID0gc3RhdGljX2Nh
c3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rp
b25hcnksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSkpOyAgICAgICAgCisgICAgICAgIGlmIChtX2R1
bXBQaXhlbHMpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwaXhlbFJl
c3VsdEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBpeGVsUmVz
dWx0IikpOworICAgICAgICAgICAgbV9waXhlbFJlc3VsdCA9IHN0YXRpY19jYXN0PFdLSW1hZ2VS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBwaXhl
bFJlc3VsdEtleS5nZXQoKSkpOworICAgICAgICAgICAgQVNTRVJUKCFtX3BpeGVsUmVzdWx0IHx8
IG1fZHVtcFBpeGVscyk7CiAKLSAgICAgICAgLy8gRHVtcCB0ZXh0LgotICAgICAgICBkdW1wKHRv
V1RGU3RyaW5nKHRleHRPdXRwdXQpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgICAgIC8vIER1bXAg
cGl4ZWxzIChpZiBuZWNlc3NhcnkpLgotICAgICAgICBpZiAobV9kdW1wUGl4ZWxzICYmIHBpeGVs
UmVzdWx0KQotICAgICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQocGl4
ZWxSZXN1bHQsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gcmVwYWludFJlY3RzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiUmVwYWludFJlY3RzIikpOworICAgICAgICAgICAgbV9yZXBhaW50UmVjdHMgPSBzdGF0
aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgcmVwYWludFJlY3RzS2V5LmdldCgpKSk7CisgICAgICAgIH0KIAotICAgICAg
ICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKLSAgICAgICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAg
ICAgIGZmbHVzaChzdGRlcnIpOwotICAgICAgICAKICAgICAgICAgbV9nb3RGaW5hbE1lc3NhZ2Ug
PSB0cnVlOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5k
ZXggNDk2NDFlOWVlNDNlNzg5Y2Q5NTlmNGI0ZGRhYmU0NjhjZjk2MzgzYi4uZDBkYmZmNDVkY2U4
ODI2YWVmMjRkY2M3MjMxZGRmZmJkMDVlOTlmNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaApAQCAtNDYsOSArNDYsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgZHVtcFdlYlByb2Nlc3NVbnJlc3BvbnNpdmVuZXNzKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91
dCk7CiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rk
b3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZhbHNl
KTsKKyAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CisgICAgc3RhdGljIHZvaWQgZHVtcChjb25zdCBj
aGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAsIGJvb2wgY2xv
c2VPdXRwdXRDaGFubmVscyA9IGZhbHNlKTsKICAgICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKTsKICAgICBi
b29sIGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJb
MzNdKTsKKworICAgIC8vIFNvbWUgcGxhdGZvcm1zIHdhbnQgdG8gZm9yY2UgYSByZXBhaW50IGJl
Zm9yZSBnZW5lcmF0aW5nIHBpeGVsIHJlc3VsdC4KKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybU5l
ZWRGb3JjZVJlcGFpbnRCZWZvcmVEdW1waW5nUGl4ZWxzKCk7CisgICAgdm9pZCBmb3JjZVJlcGFp
bnQoKTsKKyAgICBzdGF0aWMgdm9pZCBmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJl
Ziwgdm9pZCogY29udGV4dCk7CiAgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IG1fdXJs
OwogICAgIHN0ZDo6c3RyaW5nIG1fcGF0aE9yVVJMOwpAQCAtNjEsNiArNjcsMTAgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fZ290RmluYWxNZXNzYWdlOwogICAgIGJvb2wgbV9nb3RSZXBhaW50Owog
ICAgIGJvb2wgbV9lcnJvcjsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtX3RleHRP
dXRwdXQ7CisgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKKyAgICBX
S1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52
b2NhdGlvbkNhaXJvLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9j
YXRpb25DYWlyby5jcHAKaW5kZXggZDNmYmZkMmVmMmRmNDcwNGFhZjRhMTNmMDE0YjkzMmNjMGEw
NzJhYS4uZTc0NTBhYjk5ZDc3YWIzYzM1ODJkN2FlMThjN2U3MDYwZWZiNDEyZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3Bw
CkBAIC04OSw0ICs4OSw5IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21w
YXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgd2tJbWFnZSwgV0tBcnJhCiAgICAgY2Fpcm9fc3Vy
ZmFjZV9kZXN0cm95KHN1cmZhY2UpOwogfQogCitib29sIFRlc3RJbnZvY2F0aW9uOjpwbGF0Zm9y
bU5lZWRGb3JjZVJlcGFpbnRCZWZvcmVEdW1waW5nUGl4ZWxzKCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y2cvVGVzdEludm9jYXRpb25DRy5jcHAKaW5kZXggNWI2OGRhYzVjNTRkNDYxZTBhMzRmYjQ2NDlm
MjJjMGMzNTVkYWY1Ny4uYWM0MTI0MTU0ODc5ZjY4NGJlOTkwM2FkZGM1Mzc2ZGU3MjcyY2M3MCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCkBA
IC0xNzksNCArMTc5LDkgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZSwgV0tBcnJheVIKICAgICAgICAgZHVtcEJp
dG1hcChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKIH0KIAorYm9vbCBUZXN0SW52b2NhdGlv
bjo6cGxhdGZvcm1OZWVkRm9yY2VSZXBhaW50QmVmb3JlRHVtcGluZ1BpeGVscygpCit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKaW5kZXggMjJlM2ZjNTk2OGVmZjEz
YzZkMjM5OTc5YmI1YzQ2MGViYzEwZWNlNi4uNThiNTM3Y2U4ZjUxY2E1NzE1ODI2M2Q4ZjY2ZGJi
YjcwZGQ2Njg2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9y
bVdlYlZpZXdRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdl
YlZpZXdRdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxRRXZlbnRMb29wPgogI2lu
Y2x1ZGUgPFFRbWxQcm9wZXJ0eT4KICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja1ZpZXc+CisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0ltYWdlUXQuaD4KICNpbmNsdWRlIDxxcGEvcXdpbmRvd3N5c3RlbWlu
dGVyZmFjZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTE1Miw3ICsxNTMsNyBAQCBXS1JldGFp
blB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHBy
b2Nlc3MsCiAgICAgLy8gd2hpY2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBs
aWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdLSW1hZ2VDcmVh
dGVGcm9tUUltYWdlKFFJbWFnZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcAppbmRleCAwMTYzMGQ5
OGE2ZjNiNTE1Yjk5ZTAzODgxZmI1NmI2MmNlNjZlNjlhLi43OTFiODA4N2NkNzliZGM5Y2MwOTMy
YjY3ZTc0MWQyMWMwNmIyN2Y5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0
L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVz
dEludm9jYXRpb25RdC5jcHAKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIlRlc3RJbnZv
Y2F0aW9uLmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFFCdWZmZXI+CiAjaW5jbHVkZSA8UUNyeXB0b2dyYXBo
aWNIYXNoPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZVF0Lmg+CkBAIC02NCwxMCArNjYsMTcg
QEAgc3RhdGljIHZvaWQgZHVtcEltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCiAKIHZvaWQgVGVz
dEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYg
aW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQogewotICAgIC8vRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODg3MAotICAgIFVOVVNFRF9QQVJB
TShyZXBhaW50UmVjdHMpOworICAgIFFJbWFnZSBpbWFnZTsKKyAgICBpZiAobV9nb3RSZXBhaW50
KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90ID0gVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90SW1hZ2Uo
KTsKKyAgICAgICAgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUltYWdlKHdpbmRvd1NuYXBzaG90Lmdl
dCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUgdGVzdCBoYXJuZXNzIGV4cGVjdHMg
YW4gaW1hZ2Ugc28gd2Ugb3V0cHV0IGFuIGVtcHR5IG9uZS4KKyAgICAgICAgV0tSZWN0IHdpbmRv
d1JlY3QgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2luZG93RnJh
bWUoKTsKKyAgICAgICAgaW1hZ2UgPSBRSW1hZ2UoUVNpemUod2luZG93UmVjdC5zaXplLndpZHRo
LCB3aW5kb3dSZWN0LnNpemUuaGVpZ2h0KSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRp
cGxpZWQpOworICAgICAgICBpbWFnZS5maWxsKFF0OjpibGFjayk7CisgICAgfQogCi0gICAgUUlt
YWdlIGltYWdlID0gV0tJbWFnZUNyZWF0ZVFJbWFnZShpbWFnZVJlZik7CiAgICAgUUNyeXB0b2dy
YXBoaWNIYXNoIGhhc2goUUNyeXB0b2dyYXBoaWNIYXNoOjpNZDUpOwogICAgIGZvciAodW5zaWdu
ZWQgcm93ID0gMDsgcm93IDwgaW1hZ2UuaGVpZ2h0KCk7ICsrcm93KQogICAgICAgICBoYXNoLmFk
ZERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaW1hZ2UuY29uc3RTY2FuTGluZShy
b3cpKSwgaW1hZ2UuYnl0ZXNQZXJMaW5lKCkpOwpAQCAtODAsNCArODksOSBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlUmVmLCBXS0FycgogICAgIH0KIH0KIAorYm9vbCBUZXN0SW52b2NhdGlvbjo6cGxhdGZvcm1O
ZWVkRm9yY2VSZXBhaW50QmVmb3JlRHVtcGluZ1BpeGVscygpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vVGVzdEludm9jYXRpb25XaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93
aW4vVGVzdEludm9jYXRpb25XaW4uY3BwCmluZGV4IDg5NDVhYTY4YTNiMmIwYzUyZjZlYzAxNmY1
NWVhNTdhZWQwYTgzMDIuLmY0ZjRmOTkxMDM2NjdjNTJjN2Y1MTA3ZDFiMzg1ZjI1N2ZmODgyMWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2lu
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlvbldpbi5j
cHAKQEAgLTMyLDYgKzMyLDExIEBAIG5hbWVzcGFjZSBXVFIgewogdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJl
ZikKIHsKIH0KKworYm9vbCBUZXN0SW52b2NhdGlvbjo6cGxhdGZvcm1OZWVkRm9yY2VSZXBhaW50
QmVmb3JlRHVtcGluZ1BpeGVscygpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168028</attachid>
            <date>2012-10-10 10:33:05 -0700</date>
            <delta_ts>2012-10-11 05:47:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98654-20121010193153.patch</filename>
            <type>text/plain</type>
            <size>7257</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWVhMDRmZjMyYTY2MGQx
YjQxZTg3YWJjYmU5NDhhMGQ5ZDRkZWEzYS4uZGEzNTQwN2Q4NTkxZWM0YjRmNjk0M2MzMmY0NGQ1
NmI5NjY0NGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTEwICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dUUl0gRG8g
YSBmb3JjZWQgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODY1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBjb252
ZXJ0IGEgUUltYWdlIHRvIGEgV0tJbWFnZSBzbyB3ZSBjYW4KKyAgICAgICAgcGFzcyBpdCB0byBj
cm9zcy1wbGF0Zm9ybSBjb2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VR
dC5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oOgorCiAyMDEyLTEwLTEwICBKb2NlbHluIFR1cmNvdHRl
ICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFJFR1JF
U1NJT04ocjEzMDg3OSk6IEl0IG1hZGUgZmFzdC9ldmVudHMvdG91Y2gvKiB0ZXN0cyBjcmFzaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcAppbmRleCBkMDk3
NWY2NTMwZTA3YTE1NDgwY2VlYWM3MGUwMGM0YjU3MDNlOGEzLi42MDM4OGY0ZmEyN2UxZmMzMjNh
YjI1YjY3ZTU4ODFhMTVjMjQ1NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvcXQvV0tJbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
cXQvV0tJbWFnZVF0LmNwcApAQCAtMjUsMTAgKzI1LDMwIEBACiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViSW1h
Z2UuaCIKKyNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFFJbWFnZSBXS0ltYWdlQ3JlYXRl
UUltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChpbWFnZVJl
ZiktPmJpdG1hcCgpLT5jcmVhdGVRSW1hZ2UoKS5jb3B5KCk7CiB9CisKK1dLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21RSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSkKK3sKKyAgICBpZiAoaW1h
Z2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGltYWdlLmJ5dGVz
UGVyTGluZSgpID09IGltYWdlLndpZHRoKCkgKiA0KTsKKworICAgIFJlZlB0cjxXZWJJbWFnZT4g
d2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGltYWdlLnNpemUoKSwgc3RhdGljX2Nhc3Q8SW1h
Z2VPcHRpb25zPigwKSk7CisgICAgaWYgKCF3ZWJJbWFnZS0+Yml0bWFwKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IHdl
YkltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgUVBhaW50ZXIq
IHBhaW50ZXIgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIHBhaW50
ZXItPmRyYXdJbWFnZShRUG9pbnQoMCwgMCksIGltYWdlKTsKKyAgICByZXR1cm4gdG9BUEkod2Vi
SW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvcXQvV0tJbWFnZVF0LmgKaW5kZXggMWU1MDczYTA4Y2IzNDA1Mjk4YmMzNDYxYjY0YWZhZTdl
ZTk1N2JkMy4uNWFiZWY0ODE4MzA4N2FjNTU2OTE1ZmNiMjY2ODE0NzY2ODczNWM1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaApAQCAtMjcsNSArMjcsNiBA
QAogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZS5oPgogCiBXS19FWFBPUlQgUUltYWdlIFdLSW1h
Z2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZSk7CitXS19FWFBPUlQgV0tJbWFnZVJlZiBX
S0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKTsKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzgwMGQz
ZTVhNTRkNzgxZTYzNjNiNTM2ODgzYTM3OTNlZjg5Y2FmNC4uMzAzYWJkMzA3NzA0ZWU1MWNkZDI2
NTM1NjllYTg1YmYxM2JjNWUzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTEwICBCYWxhenMgS2VsZW1l
biAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dUUl0gRG8gYSBmb3JjZWQg
cmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODY1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIGEgZm9yY2VkIHJlcGFpbnQgYmVmb3Jl
IGdyYWJiaW5nIHRoZSBwaXhlbCBzbmFwc2hvdC4gVGhpcyBleHRyYQorICAgICAgICBzeW5jaHJv
bmlzYXRpb24gaXMgbmVjZXNzYXJ5IHdpdGggdGhlIENvb3JkaW5hdGVkR3JhcGhpY3MgcmVuZGVy
aW5nCisgICAgICAgIGJhY2tlbmQgYmVjYXVzZSBpdCBoYXMgYSBmdWxseSBhc3luY2hyb25vdXMg
bmF0dXJlLiBUaGlzIHBhdGNoIG1ha2UKKyAgICAgICAgdXMgdXNpbmcgdGhlIHdpbmRvdyBzbmFw
c2hvdCBmb3IgcGl4ZWwgcmVzdWx0cyB3aGljaCBpcyBuZWNlc3NhcnkKKyAgICAgICAgdG8gY2Fw
dHVyZSBhbmltYXRpb25zIGFuZCBvdGhlciBkeW5hbWljIGNvbnRlbnQuIFRoZSBhY3R1YWwgZ3Jh
YmJpbmcKKyAgICAgICAgb2YgdGhlIHdpbmRvdyBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgaW4g
dGhpcyBwYXRjaC4gSXQgd2lsbCBjb21lIGluCisgICAgICAgIGEgZm9sbG93LXVwLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAoVGVzdElu
dm9jYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9u
ZUNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmll
d1F0LmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdElt
YWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZSk6CisgICAg
ICAgIChXVFIpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQpOgorCiAyMDEyLTEwLTEwICBBbmRyZWFzIEtsaW5nICA8a2xpbmdA
d2Via2l0Lm9yZz4KIAogICAgICAgICBGdXR1cmUtcHJvb2YgdGhlIFdURi5Eb3VibGVIYXNoQ29s
bGlzaW9ucyB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4
IDQ5NjQxZTllZTQzZTc4OWNkOTU5ZjRiNGRkYWJlNDY4Y2Y5NjM4M2IuLjEyZTAzNmQ4YzNiMmU3
NzE5MDM0YjQ5ZDU4NjlkZmEwMGUyZTg2MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9
IDAsIGJvb2wgc2VlbkVycm9yID0gZmFsc2UpOwogICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOwogICAg
IGJvb2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hh
clszM10pOworCisgICAgLy8gU29tZSBwbGF0Zm9ybXMgd2FudCB0byBmb3JjZSBhIHJlcGFpbnQg
YmVmb3JlIGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0LgorICAgIHN0YXRpYyB2b2lkIGZvcmNlUmVw
YWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxUZXN0SW52b2NhdGlvbio+KGNvbnRleHQpLT5mb3JjZVJlcGFp
bnREb25lKCk7CisgICAgfQorICAgIHZvaWQgZm9yY2VSZXBhaW50RG9uZSgpOwogICAgIAogICAg
IFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3VybDsKICAgICBzdGQ6OnN0cmluZyBtX3BhdGhPclVS
TDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3
UXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAK
aW5kZXggOTRhNTU2MzA3NjE5NzZlMmMyZDg0NjcwZWJhZGUzOGRhMjM1MGI3NC4uNThiNTM3Y2U4
ZjUxY2E1NzE1ODI2M2Q4ZjY2ZGJiYjcwZGQ2Njg2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBXS1Jl
dGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2Uo
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJ
IHByb2Nlc3MsCiAgICAgLy8gd2hpY2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5n
cyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdLSW1hZ2VD
cmVhdGVGcm9tUUltYWdlKFFJbWFnZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcAppbmRleCA5ODFj
MjAzMmEyOTc4NzAyZjZiNmNhMjRhMTk4ZGY0OTkxNGRjZjNmLi45NDc2MWFjYzA2MGU4ZDE3NTM3
NmUyMjZiZWUzN2Y0ZjhiZjY4YzdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQv
VGVzdEludm9jYXRpb25RdC5jcHAKQEAgLTI0LDkgKzI0LDEwIEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiVGVzdEludm9jYXRpb24uaCIKIAorI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
UUJ1ZmZlcj4KICNpbmNsdWRlIDxRQ3J5cHRvZ3JhcGhpY0hhc2g+CiAjaW5jbHVkZSA8UXRHdWkv
UVBhaW50ZXI+CkBAIC02Myw5ICs2NCwyOSBAQCBzdGF0aWMgdm9pZCBkdW1wSW1hZ2UoY29uc3Qg
UUltYWdlJiBpbWFnZSkKICAgICBmZmx1c2goc3Rkb3V0KTsKIH0KIAordm9pZCBUZXN0SW52b2Nh
dGlvbjo6Zm9yY2VSZXBhaW50RG9uZSgpCit7CisgICAgbV9nb3RSZXBhaW50ID0gdHJ1ZTsKKyAg
ICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOworfQorCiB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykKIHsKLSAgICBRSW1hZ2UgaW1hZ2UgPSBX
S0ltYWdlQ3JlYXRlUUltYWdlKGltYWdlUmVmKTsKKyAgICBXS1BhZ2VSZWYgcGFnZSA9IFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5wYWdlKCk7CisgICAgV0tQYWdlRm9y
Y2VSZXBhaW50KHBhZ2UsIHRoaXMsIGZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBU
ZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RSZXBhaW50LCBUZXN0Q29udHJv
bGxlcjo6U2hvcnRUaW1lb3V0KTsKKworICAgIFFJbWFnZSBpbWFnZTsKKyAgICBpZiAobV9nb3RS
ZXBhaW50KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90
ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90
SW1hZ2UoKTsKKyAgICAgICAgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUltYWdlKHdpbmRvd1NuYXBz
aG90LmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUgdGVzdCBoYXJuZXNzIGV4
cGVjdHMgYW4gaW1hZ2Ugc28gd2Ugb3V0cHV0IGFuIGVtcHR5IG9uZS4KKyAgICAgICAgV0tSZWN0
IHdpbmRvd1JlY3QgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2lu
ZG93RnJhbWUoKTsKKyAgICAgICAgaW1hZ2UgPSBRSW1hZ2UoUVNpemUod2luZG93UmVjdC5zaXpl
LndpZHRoLCB3aW5kb3dSZWN0LnNpemUuaGVpZ2h0KSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1By
ZW11bHRpcGxpZWQpOworICAgICAgICBpbWFnZS5maWxsKFF0OjpibGFjayk7CisgICAgfQogCiAg
ICAgaWYgKHJlcGFpbnRSZWN0cykgewogICAgICAgICBRSW1hZ2UgbWFzayhpbWFnZS5zaXplKCks
IGltYWdlLmZvcm1hdCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168202</attachid>
            <date>2012-10-11 05:47:15 -0700</date>
            <delta_ts>2012-10-11 08:47:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98654-20121011144612.patch</filename>
            <type>text/plain</type>
            <size>10800</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjU0NWJmMWJhM2M4NjI5
NWM0ZWIxMGQ4NGViMzM3YzE1NjA2YmFiYy4uMDMwNTg5ZjU5MTE3MzJkNGE5NzA4M2JhY2UwMmZi
ZmQ4YzU5OTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTExICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dUUl0gRG8g
YSBmb3JjZWQgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODY1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBjb252
ZXJ0IGEgUUltYWdlIHRvIGEgV0tJbWFnZSBzbyB3ZSBjYW4KKyAgICAgICAgcGFzcyBpdCB0byBj
cm9zcy1wbGF0Zm9ybSBjb2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VR
dC5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oOgorCiAyMDEyLTEwLTEwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FsbG93IGZ1bGwgc2NyZWVuIG1vZGUga2V5
Ym9hcmQgYWNjZXNzIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9x
dC9XS0ltYWdlUXQuY3BwCmluZGV4IGQwOTc1ZjY1MzBlMDdhMTU0ODBjZWVhYzcwZTAwYzRiNTcw
M2U4YTMuLjYwMzg4ZjRmYTI3ZTFmYzMyM2FiMjViNjdlNTg4MWExNWMyNDU2OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCkBAIC0yNSwxMCArMjUs
MzAgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgPFFQYWludGVyPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRT
aXplLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogUUltYWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsK
ICAgICByZXR1cm4gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCktPmNyZWF0ZVFJbWFnZSgpLmNv
cHkoKTsKIH0KKworV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBRSW1h
Z2UmIGltYWdlKQoreworICAgIGlmIChpbWFnZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBBU1NFUlQoaW1hZ2UuYnl0ZXNQZXJMaW5lKCkgPT0gaW1hZ2Uud2lkdGgoKSAqIDQp
OworCisgICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1h
Z2Uuc2l6ZSgpLCBzdGF0aWNfY2FzdDxJbWFnZU9wdGlvbnM+KDApKTsKKyAgICBpZiAoIXdlYklt
YWdlLT5iaXRtYXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGdyYXBoaWNzQ29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludCgwLCAwKSwgaW1h
Z2UpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaAppbmRleCAxZTUwNzNh
MDhjYjM0MDUyOThiYzM0NjFiNjRhZmFlN2VlOTU3YmQzLi41YWJlZjQ4MTgzMDg3YWM1NTY5MTVm
Y2IyNjY4MTQ3NjY4NzM1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvcXQvV0tJbWFnZVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dL
SW1hZ2VRdC5oCkBAIC0yNyw1ICsyNyw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlLmg+
CiAKIFdLX0VYUE9SVCBRSW1hZ2UgV0tJbWFnZUNyZWF0ZVFJbWFnZShXS0ltYWdlUmVmIGltYWdl
KTsKK1dLX0VYUE9SVCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKGNvbnN0IFFJ
bWFnZSYgaW1hZ2UpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAxMTRkYjRkNDRlNTg0N2M3ODJjNjJhOGU5Nzg4NTU4MjQ3OTRj
YjhkLi44YzFjMmNjYzE0OWYzMDJiMWViZWE2N2Q5NzRjOWU1ZTM4ZWQ3NjRkIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTItMTAtMTEgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV1RSXSBEbyBhIGZvcmNlZCByZXBhaW50IGJlZm9yZSBnZW5lcmF0aW5nIHBpeGVs
IHJlc3VsdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG8gYSBmb3JjZWQgcmVwYWludCBiZWZvcmUgZ3JhYmJpbmcgdGhlIHBpeGVsIHNuYXBzaG90LiBU
aGlzIGV4dHJhCisgICAgICAgIHN5bmNocm9uaXNhdGlvbiBpcyBuZWNlc3Nhcnkgd2l0aCB0aGUg
Q29vcmRpbmF0ZWRHcmFwaGljcyByZW5kZXJpbmcKKyAgICAgICAgYmFja2VuZCBiZWNhdXNlIGl0
IGhhcyBhIGZ1bGx5IGFzeW5jaHJvbm91cyBuYXR1cmUuIFRoaXMgcGF0Y2ggbWFrZQorICAgICAg
ICB1cyB1c2luZyB0aGUgd2luZG93IHNuYXBzaG90IGZvciBwaXhlbCByZXN1bHRzIHdoaWNoIGlz
IG5lY2Vzc2FyeSB0bworICAgICAgICBjYXB0dXJlIGFuaW1hdGlvbnMgYW5kIG90aGVyIGR5bmFt
aWMgY29udGVudC4gVGhlIGFjdHVhbCBncmFiYmluZyBvZgorICAgICAgICB0aGUgd2luZG93IGhh
cyBub3QgYmVlbiBpbXBsZW1lbnRlZCBpbiB0aGlzIHBhdGNoLiBJdCB3aWxsIGNvbWUgaW4KKyAg
ICAgICAgYSBmb2xsb3ctdXAuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wKTogU3RvcmUgcmVzdWx0cyBpbiBtZW1iZXIg
dmFyaWFibGVzLgorICAgICAgICBEb24ndCBjbG9zZSBvdXRwdXQgY2hhbm5lbHMgeWV0LgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMpOiBBZGRlZC4gVGhpcyBpcyB3
aGVyZSB3ZSBkdW1wCisgICAgICAgIHRoZSByZXN1bHRzIGlmIG5vIGVycm9yIGhhcHBlbmVkLgor
ICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChUZXN0SW52b2NhdGlvbik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHA6CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk6CisgICAgICAgIChXVFIpOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQp
OgorCiAyMDEyLTEwLTEwICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgQXBwbGUgTWFjIFNub3cgTGVvcGFyZCBib3RzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBhNjI1NGQ5ZmQ1MTA2ZTJmY2Ji
YmIwMDlkNmZiYTBiYWE0ZTNkY2JmLi5kYzY2MzlkMmUyOThhMDMwZDU5ODMwMWU0ZjIzMDc3ZjM2
MTE0Mzg3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
MTkyLDYgKzE5Miw4IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAgICAgICAgIGdv
dG8gZW5kOwogICAgIH0KIAorICAgIGR1bXBSZXN1bHRzKCk7CisKIGVuZDoKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmIChtX2dvdEluaXRpYWxSZXNwb25zZSkKQEAgLTIzNSw2ICsyMzcs
MTcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQs
IGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciwgYm8KICAgICBmZmx1c2goc3RkZXJyKTsKIH0KIAor
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFJlc3VsdHMoKQoreworICAgIGR1bXAodG9XVEZTdHJp
bmcobV90ZXh0T3V0cHV0LmdldCgpKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChtX2R1bXBQ
aXhlbHMgJiYgbV9waXhlbFJlc3VsdCkKKyAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQobV9waXhlbFJlc3VsdC5nZXQoKSwgbV9yZXBhaW50UmVjdHMuZ2V0KCkpOworCisg
ICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91dCk7CisgICAgZmZsdXNoKHN0ZG91dCk7Cit9CisKIGJv
b2wgVGVzdEludm9jYXRpb246OmNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1
bHRzKGNvbnN0IGNoYXIgYWN0dWFsSGFzaFszM10pCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgaGFz
aCBvZiB0aGUgYml0bWFwIGNvbnRleHQgcGl4ZWxzCkBAIC0yNzgsMjYgKzI5MSwxNSBAQCB2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlE
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CiAK
ICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRleHRPdXRwdXRLZXkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRleHRPdXRwdXQiKSk7Ci0gICAgICAgIFdL
U3RyaW5nUmVmIHRleHRPdXRwdXQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHRleHRPdXRwdXRLZXkuZ2V0
KCkpKTsKKyAgICAgICAgbV90ZXh0T3V0cHV0ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0ZXh0T3V0cHV0
S2V5LmdldCgpKSk7CiAKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBpeGVsUmVz
dWx0S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGl4ZWxSZXN1
bHQiKSk7Ci0gICAgICAgIFdLSW1hZ2VSZWYgcGl4ZWxSZXN1bHQgPSBzdGF0aWNfY2FzdDxXS0lt
YWdlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwg
cGl4ZWxSZXN1bHRLZXkuZ2V0KCkpKTsKLSAgICAgICAgQVNTRVJUKCFwaXhlbFJlc3VsdCB8fCBt
X2R1bXBQaXhlbHMpOwotICAgICAgICAKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHJlcGFpbnRSZWN0c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlJlcGFpbnRSZWN0cyIpKTsKLSAgICAgICAgV0tBcnJheVJlZiByZXBhaW50UmVjdHMgPSBzdGF0
aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgcmVwYWludFJlY3RzS2V5LmdldCgpKSk7ICAgICAgICAKKyAgICAgICAgbV9w
aXhlbFJlc3VsdCA9IHN0YXRpY19jYXN0PFdLSW1hZ2VSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBwaXhlbFJlc3VsdEtleS5nZXQoKSkpOworICAg
ICAgICBBU1NFUlQoIW1fcGl4ZWxSZXN1bHQgfHwgbV9kdW1wUGl4ZWxzKTsKIAotICAgICAgICAv
LyBEdW1wIHRleHQuCi0gICAgICAgIGR1bXAodG9XVEZTdHJpbmcodGV4dE91dHB1dCkudXRmOCgp
LmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRHVtcCBwaXhlbHMgKGlmIG5lY2Vzc2FyeSkuCi0gICAg
ICAgIGlmIChtX2R1bXBQaXhlbHMgJiYgcGl4ZWxSZXN1bHQpCi0gICAgICAgICAgICBkdW1wUGl4
ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChwaXhlbFJlc3VsdCwgcmVwYWludFJlY3RzKTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHJlcGFpbnRSZWN0c0tleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlJlcGFpbnRSZWN0cyIpKTsKKyAgICAgICAg
bV9yZXBhaW50UmVjdHMgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgcmVwYWludFJlY3RzS2V5LmdldCgpKSk7
CiAKLSAgICAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91dCk7Ci0gICAgICAgIGZmbHVzaChzdGRv
dXQpOwotICAgICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICAgICAgCiAgICAgICAgIG1fZ290Rmlu
YWxNZXNzYWdlID0gdHJ1ZTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlm
eURvbmUoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCmluZGV4IDQ5NjQxZTllZTQzZTc4OWNkOTU5ZjRiNGRkYWJlNDY4Y2Y5NjM4M2IuLmI1
NTA2NTUxYjE5MWVjNjVlMTU1MTY4NDY5YzlmNTc2NzNkMWZlYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQ2LDkgKzQ2LDE1IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIGR1bXBXZWJQcm9jZXNzVW5yZXNwb25zaXZlbmVzcyhjb25zdCBjaGFyKiB0
ZXh0VG9TdGRvdXQpOwogcHJpdmF0ZToKKyAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAgICAgc3Rh
dGljIHZvaWQgZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRU
b1N0ZGVyciA9IDAsIGJvb2wgc2VlbkVycm9yID0gZmFsc2UpOwogICAgIHZvaWQgZHVtcFBpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVj
dHMpOwogICAgIGJvb2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMo
Y29uc3QgY2hhclszM10pOworCisjaWYgUExBVEZPUk0oUVQpCisgICAgc3RhdGljIHZvaWQgZm9y
Y2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpOworICAgIHZv
aWQgZm9yY2VSZXBhaW50RG9uZSgpOworI2VuZGlmCiAgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IG1fdXJsOwogICAgIHN0ZDo6c3RyaW5nIG1fcGF0aE9yVVJMOwpAQCAtNjEsNiArNjcs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZ290RmluYWxNZXNzYWdlOwogICAgIGJvb2wgbV9n
b3RSZXBhaW50OwogICAgIGJvb2wgbV9lcnJvcjsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtX3RleHRPdXRwdXQ7CisgICAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gbV9waXhlbFJl
c3VsdDsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3JlcGFpbnRSZWN0czsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRm
b3JtV2ViVmlld1F0LmNwcAppbmRleCA5NGE1NTYzMDc2MTk3NmUyYzJkODQ2NzBlYmFkZTM4ZGEy
MzUwYjc0Li41OGI1MzdjZThmNTFjYTU3MTU4MjYzZDhmNjZkYmJiNzBkZDY2ODZkIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcApAQCAtMTUz
LDcgKzE1Myw3IEBAIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2lu
ZG93U25hcHNob3RJbWFnZSgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJl
IHBpeGVscyBpbiB0aGUgVUkgcHJvY2VzcywKICAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5
IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UoUUltYWdlKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdElu
dm9jYXRpb25RdC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9u
UXQuY3BwCmluZGV4IDk4MWMyMDMyYTI5Nzg3MDJmNmI2Y2EyNGExOThkZjQ5OTE0ZGNmM2YuLmRl
NjU5MWI5ZDgzOWUyMWZkNjk3ZDNlNGI1NjY0MGVhMjdlM2JmZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcApAQCAtMjcsNiArMjcsOCBAQAog
CiAjaW5jbHVkZSAiVGVzdEludm9jYXRpb24uaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmll
dy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8UUJ1ZmZlcj4KICNp
bmNsdWRlIDxRQ3J5cHRvZ3JhcGhpY0hhc2g+CiAjaW5jbHVkZSA8UXRHdWkvUVBhaW50ZXI+CkBA
IC02Myw5ICs2NSwyOSBAQCBzdGF0aWMgdm9pZCBkdW1wSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFn
ZSkKICAgICBmZmx1c2goc3Rkb3V0KTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6Zm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZvaWQgKmNvbnRleHQpCit7CisgICAgcmVp
bnRlcnByZXRfY2FzdDxUZXN0SW52b2NhdGlvbio+KGNvbnRleHQpLT5tX2dvdFJlcGFpbnQgPSB0
cnVlOworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7Cit9CisKIHZv
aWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1h
Z2VSZWYgaW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQogewotICAgIFFJbWFnZSBp
bWFnZSA9IFdLSW1hZ2VDcmVhdGVRSW1hZ2UoaW1hZ2VSZWYpOworICAgIFdLUGFnZVJlZiBwYWdl
ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnBhZ2UoKTsKKyAgICBX
S1BhZ2VGb3JjZVJlcGFpbnQocGFnZSwgdGhpcywgJmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7
CisKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RSZXBhaW50LCBU
ZXN0Q29udHJvbGxlcjo6U2hvcnRUaW1lb3V0KTsKKworICAgIFFJbWFnZSBpbWFnZTsKKyAgICBp
ZiAobV9nb3RSZXBhaW50KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRv
d1NuYXBzaG90ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRv
d1NuYXBzaG90SW1hZ2UoKTsKKyAgICAgICAgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUltYWdlKHdp
bmRvd1NuYXBzaG90LmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUgdGVzdCBo
YXJuZXNzIGV4cGVjdHMgYW4gaW1hZ2Ugc28gd2Ugb3V0cHV0IGFuIGVtcHR5IG9uZS4KKyAgICAg
ICAgV0tSZWN0IHdpbmRvd1JlY3QgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZp
ZXcoKS0+d2luZG93RnJhbWUoKTsKKyAgICAgICAgaW1hZ2UgPSBRSW1hZ2UoUVNpemUod2luZG93
UmVjdC5zaXplLndpZHRoLCB3aW5kb3dSZWN0LnNpemUuaGVpZ2h0KSwgUUltYWdlOjpGb3JtYXRf
QVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgICAgICBpbWFnZS5maWxsKFF0OjpibGFjayk7Cisg
ICAgfQogCiAgICAgaWYgKHJlcGFpbnRSZWN0cykgewogICAgICAgICBRSW1hZ2UgbWFzayhpbWFn
ZS5zaXplKCksIGltYWdlLmZvcm1hdCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168235</attachid>
            <date>2012-10-11 08:47:16 -0700</date>
            <delta_ts>2012-10-12 09:12:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98654-20121011174612.patch</filename>
            <type>text/plain</type>
            <size>10846</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGZhMzNjNjQzMmVlZGI1
ZGU0NTYxZjIyZGZkOTFhMzZhY2NhMDhlNS4uMmVjMjU0ZDVjZTNiZTU0YTYxMDE2NjEyZmVlYWY1
MjQ5ODliNzk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTExICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dUUl0gRG8g
YSBmb3JjZWQgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODY1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBjb252
ZXJ0IGEgUUltYWdlIHRvIGEgV0tJbWFnZSBzbyB3ZSBjYW4KKyAgICAgICAgcGFzcyBpdCB0byBj
cm9zcy1wbGF0Zm9ybSBjb2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VR
dC5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oOgorCiAyMDEyLTEwLTExICBaZW5vIEFsYmlzc2VyICA8
emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gSW1wbGVtZW50IEdyYXBoaWNzU3VyZmFj
ZVRva2VuIHRvIHJlcGxhY2UgdWludDY0X3QgYXMgdG9rZW4gdHlwZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHAKaW5kZXggZDA5NzVmNjUzMGUwN2ExNTQ4
MGNlZWFjNzBlMDBjNGI1NzAzZThhMy4uNjAzODhmNGZhMjdlMWZjMzIzYWIyNWI2N2U1ODgxYTE1
YzI0NTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1h
Z2VRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5j
cHAKQEAgLTI1LDEwICsyNSwzMCBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2lu
Y2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCisjaW5jbHVk
ZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBRSW1hZ2UgV0tJbWFnZUNyZWF0ZVFJbWFnZShXS0ltYWdl
UmVmIGltYWdlUmVmKQogewogICAgIHJldHVybiB0b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS0+
Y3JlYXRlUUltYWdlKCkuY29weSgpOwogfQorCitXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9t
UUltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKGltYWdlLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChpbWFnZS5ieXRlc1BlckxpbmUoKSA9PSBp
bWFnZS53aWR0aCgpICogNCk7CisKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IHdlYkltYWdlID0gV2Vi
SW1hZ2U6OmNyZWF0ZShpbWFnZS5zaXplKCksIHN0YXRpY19jYXN0PEltYWdlT3B0aW9ucz4oMCkp
OworICAgIGlmICghd2ViSW1hZ2UtPmJpdG1hcCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFw
KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIFFQYWludGVyKiBwYWludGVyID0gZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBwYWludGVyLT5kcmF3SW1hZ2Uo
UVBvaW50KDAsIDApLCBpbWFnZSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L3F0L1dLSW1hZ2VRdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VR
dC5oCmluZGV4IDFlNTA3M2EwOGNiMzQwNTI5OGJjMzQ2MWI2NGFmYWU3ZWU5NTdiZDMuLjVhYmVm
NDgxODMwODdhYzU1NjkxNWZjYjI2NjgxNDc2Njg3MzVjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmgKQEAgLTI3LDUgKzI3LDYgQEAKICNpbmNsdWRlIDxX
ZWJLaXQyL1dLSW1hZ2UuaD4KIAogV0tfRVhQT1JUIFFJbWFnZSBXS0ltYWdlQ3JlYXRlUUltYWdl
KFdLSW1hZ2VSZWYgaW1hZ2UpOworV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZy
b21RSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcwMmM2ZTY4ZmZkODdlNDgwMTA1
ZWU4M2IzZGU0ODk3MGM0MzQyMDcuLjdiZTI0OGZiMGEzZWM2NmEwYzMwNzQ5MGYwMzcwYjUxMDZi
NWY1NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNSBAQAorMjAxMi0xMC0xMSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXVFJdIERvIGEgZm9yY2VkIHJlcGFpbnQgYmVmb3Jl
IGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTg2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEbyBhIGZvcmNlZCByZXBhaW50IGJlZm9yZSBncmFiYmluZyB0aGUg
cGl4ZWwgc25hcHNob3QuIFRoaXMgZXh0cmEKKyAgICAgICAgc3luY2hyb25pc2F0aW9uIGlzIG5l
Y2Vzc2FyeSB3aXRoIHRoZSBDb29yZGluYXRlZEdyYXBoaWNzIHJlbmRlcmluZworICAgICAgICBi
YWNrZW5kIGJlY2F1c2UgaXQgaGFzIGEgZnVsbHkgYXN5bmNocm9ub3VzIG5hdHVyZS4gVGhpcyBw
YXRjaCBtYWtlCisgICAgICAgIHVzIHVzaW5nIHRoZSB3aW5kb3cgc25hcHNob3QgZm9yIHBpeGVs
IHJlc3VsdHMgd2hpY2ggaXMgbmVjZXNzYXJ5IHRvCisgICAgICAgIGNhcHR1cmUgYW5pbWF0aW9u
cyBhbmQgb3RoZXIgZHluYW1pYyBjb250ZW50LiBUaGUgYWN0dWFsIGdyYWJiaW5nIG9mCisgICAg
ICAgIHRoZSB3aW5kb3cgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGluIHRoaXMgcGF0Y2guIEl0
IHdpbGwgY29tZSBpbgorICAgICAgICBhIGZvbGxvdy11cC4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6aW52b2tlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXApOiBTdG9yZSBy
ZXN1bHRzIGluIG1lbWJlciB2YXJpYWJsZXMuCisgICAgICAgIERvbid0IGNsb3NlIG91dHB1dCBj
aGFubmVscyB5ZXQuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cyk6
IEFkZGVkLiBUaGlzIGlzIHdoZXJlIHdlIGR1bXAKKyAgICAgICAgdGhlIHJlc3VsdHMgaWYgbm8g
ZXJyb3IgaGFwcGVuZWQuCisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9u
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoK
KyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdUUik6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29t
cGFyZVdpdGhFeHBlY3RlZCk6CisKIDIwMTItMTAtMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJp
c3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBKYXZhc2NyaXB0IHBvcHVwIGJveGVzIHRvIE1pbmlCcm93c2VyCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGE2MjU0ZDlmZDUxMDZlMmZjYmJiYjAw
OWQ2ZmJhMGJhYTRlM2RjYmYuLmRjNjYzOWQyZTI5OGEwMzBkNTk4MzAxZTRmMjMwNzdmMzYxMTQz
ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xOTIs
NiArMTkyLDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICAgICAgZ290byBl
bmQ7CiAgICAgfQogCisgICAgZHVtcFJlc3VsdHMoKTsKKwogZW5kOgogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgaWYgKG1fZ290SW5pdGlhbFJlc3BvbnNlKQpAQCAtMjM1LDYgKzIzNywxNyBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29u
c3QgY2hhciogdGV4dFRvU3RkZXJyLCBibwogICAgIGZmbHVzaChzdGRlcnIpOwogfQogCit2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkdW1wUmVzdWx0cygpCit7CisgICAgZHVtcCh0b1dURlN0cmluZyht
X3RleHRPdXRwdXQuZ2V0KCkpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKG1fZHVtcFBpeGVs
cyAmJiBtX3BpeGVsUmVzdWx0KQorICAgICAgICBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChtX3BpeGVsUmVzdWx0LmdldCgpLCBtX3JlcGFpbnRSZWN0cy5nZXQoKSk7CisKKyAgICBm
cHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKK30KKwogYm9vbCBU
ZXN0SW52b2NhdGlvbjo6Y29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMo
Y29uc3QgY2hhciBhY3R1YWxIYXNoWzMzXSkKIHsKICAgICAvLyBDb21wdXRlIHRoZSBoYXNoIG9m
IHRoZSBiaXRtYXAgY29udGV4dCBwaXhlbHMKQEAgLTI3OCwyNiArMjkxLDE1IEBAIHZvaWQgVGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKIAogICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGV4dE91dHB1dEtleShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGV4dE91dHB1dCIpKTsKLSAgICAgICAgV0tTdHJp
bmdSZWYgdGV4dE91dHB1dCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGV4dE91dHB1dEtleS5nZXQoKSkp
OworICAgICAgICBtX3RleHRPdXRwdXQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHRleHRPdXRwdXRLZXku
Z2V0KCkpKTsKIAogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGl4ZWxSZXN1bHRL
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQaXhlbFJlc3VsdCIp
KTsKLSAgICAgICAgV0tJbWFnZVJlZiBwaXhlbFJlc3VsdCA9IHN0YXRpY19jYXN0PFdLSW1hZ2VS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBwaXhl
bFJlc3VsdEtleS5nZXQoKSkpOwotICAgICAgICBBU1NFUlQoIXBpeGVsUmVzdWx0IHx8IG1fZHVt
cFBpeGVscyk7Ci0gICAgICAgIAotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcmVw
YWludFJlY3RzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVw
YWludFJlY3RzIikpOwotICAgICAgICBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyA9IHN0YXRpY19j
YXN0PFdLQXJyYXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCByZXBhaW50UmVjdHNLZXkuZ2V0KCkpKTsgICAgICAgIAorICAgICAgICBtX3BpeGVs
UmVzdWx0ID0gc3RhdGljX2Nhc3Q8V0tJbWFnZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIHBpeGVsUmVzdWx0S2V5LmdldCgpKSk7CisgICAgICAg
IEFTU0VSVCghbV9waXhlbFJlc3VsdCB8fCBtX2R1bXBQaXhlbHMpOwogCi0gICAgICAgIC8vIER1
bXAgdGV4dC4KLSAgICAgICAgZHVtcCh0b1dURlN0cmluZyh0ZXh0T3V0cHV0KS51dGY4KCkuZGF0
YSgpKTsKLQotICAgICAgICAvLyBEdW1wIHBpeGVscyAoaWYgbmVjZXNzYXJ5KS4KLSAgICAgICAg
aWYgKG1fZHVtcFBpeGVscyAmJiBwaXhlbFJlc3VsdCkKLSAgICAgICAgICAgIGR1bXBQaXhlbHNB
bmRDb21wYXJlV2l0aEV4cGVjdGVkKHBpeGVsUmVzdWx0LCByZXBhaW50UmVjdHMpOworICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcmVwYWludFJlY3RzS2V5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUmVwYWludFJlY3RzIikpOworICAgICAgICBtX3Jl
cGFpbnRSZWN0cyA9IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCByZXBhaW50UmVjdHNLZXkuZ2V0KCkpKTsKIAot
ICAgICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKLSAgICAgICAgZmZsdXNoKHN0ZG91dCk7
Ci0gICAgICAgIGZmbHVzaChzdGRlcnIpOwotICAgICAgICAKICAgICAgICAgbV9nb3RGaW5hbE1l
c3NhZ2UgPSB0cnVlOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9u
ZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKaW5kZXggNDk2NDFlOWVlNDNlNzg5Y2Q5NTlmNGI0ZGRhYmU0NjhjZjk2MzgzYi4uYjU1MDY1
NTFiMTkxZWM2NWUxNTUxNjg0NjljOWY1NzY3M2QxZmVhZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaApAQCAtNDYsOSArNDYsMTUgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgZHVtcFdlYlByb2Nlc3NVbnJlc3BvbnNpdmVuZXNzKGNvbnN0IGNoYXIqIHRleHRU
b1N0ZG91dCk7CiBwcml2YXRlOgorICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKICAgICBzdGF0aWMg
dm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3Rk
ZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7CiAgICAgdm9pZCBkdW1wUGl4ZWxzQW5k
Q29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7
CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25z
dCBjaGFyWzMzXSk7CisKKyNpZiBQTEFURk9STShRVCkKKyAgICBzdGF0aWMgdm9pZCBmb3JjZVJl
cGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCk7CisgICAgdm9pZCBm
b3JjZVJlcGFpbnREb25lKCk7CisjZW5kaWYKICAgICAKICAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gbV91cmw7CiAgICAgc3RkOjpzdHJpbmcgbV9wYXRoT3JVUkw7CkBAIC02MSw2ICs2NywxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9nb3RGaW5hbE1lc3NhZ2U7CiAgICAgYm9vbCBtX2dvdFJl
cGFpbnQ7CiAgICAgYm9vbCBtX2Vycm9yOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1fdGV4dE91dHB1dDsKKyAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0
OworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Bs
YXRmb3JtV2ViVmlld1F0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1X
ZWJWaWV3UXQuY3BwCmluZGV4IDk0YTU1NjMwNzYxOTc2ZTJjMmQ4NDY3MGViYWRlMzhkYTIzNTBi
NzQuLjU4YjUzN2NlOGY1MWNhNTcxNTgyNjNkOGY2NmRiYmI3MGRkNjY4NmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCkBAIC0xNTMsNyAr
MTUzLDcgQEAgV0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dT
bmFwc2hvdEltYWdlKCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIGNhcHR1cmUgcGl4
ZWxzIGluIHRoZSBVSSBwcm9jZXNzLAogICAgIC8vIHdoaWNoIG1heSBiZSBuZWNlc3NhcnkgdG8g
Y2FwdHVyZSB0aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShRSW1hZ2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2Nh
dGlvblF0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5j
cHAKaW5kZXggOTgxYzIwMzJhMjk3ODcwMmY2YjZjYTI0YTE5OGRmNDk5MTRkY2YzZi4uNjE1NzM1
YzdjNThkYTJkYjMwZjRmMTUxNGE1MDgxYThkYWU0ODFiYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAKICNp
bmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3Lmgi
CisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxRQnVmZmVyPgogI2luY2x1
ZGUgPFFDcnlwdG9ncmFwaGljSGFzaD4KICNpbmNsdWRlIDxRdEd1aS9RUGFpbnRlcj4KQEAgLTYz
LDkgKzY1LDI5IEBAIHN0YXRpYyB2b2lkIGR1bXBJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKQog
ICAgIGZmbHVzaChzdGRvdXQpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFp
bnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBzdGF0aWNf
Y2FzdDxUZXN0SW52b2NhdGlvbio+KGNvbnRleHQpLT5tX2dvdFJlcGFpbnQgPSB0cnVlOworICAg
IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7Cit9CisKIHZvaWQgVGVzdElu
dm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1h
Z2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQogewotICAgIFFJbWFnZSBpbWFnZSA9IFdL
SW1hZ2VDcmVhdGVRSW1hZ2UoaW1hZ2VSZWYpOworICAgIFdLUGFnZVJlZiBwYWdlID0gVGVzdENv
bnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnBhZ2UoKTsKKyAgICBXS1BhZ2VGb3Jj
ZVJlcGFpbnQocGFnZSwgdGhpcywgJmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBU
ZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RSZXBhaW50LCBUZXN0Q29udHJv
bGxlcjo6U2hvcnRUaW1lb3V0KTsKKworICAgIFFJbWFnZSBpbWFnZTsKKyAgICBpZiAobV9nb3RS
ZXBhaW50KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90
ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90
SW1hZ2UoKTsKKyAgICAgICAgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUltYWdlKHdpbmRvd1NuYXBz
aG90LmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGUgdGVzdCBoYXJuZXNzIGV4
cGVjdHMgYW4gaW1hZ2Ugc28gd2Ugb3V0cHV0IGFuIGVtcHR5IG9uZS4KKyAgICAgICAgV0tSZWN0
IHdpbmRvd1JlY3QgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2lu
ZG93RnJhbWUoKTsKKyAgICAgICAgaW1hZ2UgPSBRSW1hZ2UoUVNpemUod2luZG93UmVjdC5zaXpl
LndpZHRoLCB3aW5kb3dSZWN0LnNpemUuaGVpZ2h0KSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1By
ZW11bHRpcGxpZWQpOworICAgICAgICBpbWFnZS5maWxsKFF0OjpyZWQpOworICAgIH0KIAogICAg
IGlmIChyZXBhaW50UmVjdHMpIHsKICAgICAgICAgUUltYWdlIG1hc2soaW1hZ2Uuc2l6ZSgpLCBp
bWFnZS5mb3JtYXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168433</attachid>
            <date>2012-10-12 09:12:12 -0700</date>
            <delta_ts>2012-10-15 10:17:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98654-20121012181105.patch</filename>
            <type>text/plain</type>
            <size>10721</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTk5YzhhNDVjN2ViYmE3
YTYxZjVkNTBiMGMwZDJlY2NhNjQ4Mjk5Mi4uYzJlMWI3ZTk4YjJiYjlhODQ3ZTFjN2E0MDhhMjYz
ODgyYjYwZWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTEyICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dUUl0gRG8g
YSBmb3JjZWQgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODY1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBjb252
ZXJ0IGEgUUltYWdlIHRvIGEgV0tJbWFnZSBzbyB3ZSBjYW4KKyAgICAgICAgcGFzcyBpdCB0byBj
cm9zcy1wbGF0Zm9ybSBjb2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VR
dC5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oOgorCiAyMDEyLTEwLTEyICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTMxMTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0
L1dLSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0
LmNwcAppbmRleCBkMDk3NWY2NTMwZTA3YTE1NDgwY2VlYWM3MGUwMGM0YjU3MDNlOGEzLi42MDM4
OGY0ZmEyN2UxZmMzMjNhYjI1YjY3ZTU4ODFhMTVjMjQ1NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcApAQCAtMjUsMTAgKzI1LDMwIEBACiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV2ViSW1hZ2UuaCIKKyNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFFJbWFn
ZSBXS0ltYWdlQ3JlYXRlUUltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAgcmV0dXJu
IHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLT5jcmVhdGVRSW1hZ2UoKS5jb3B5KCk7CiB9CisK
K1dLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSkK
K3sKKyAgICBpZiAoaW1hZ2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNT
RVJUKGltYWdlLmJ5dGVzUGVyTGluZSgpID09IGltYWdlLndpZHRoKCkgKiA0KTsKKworICAgIFJl
ZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGltYWdlLnNpemUoKSwg
c3RhdGljX2Nhc3Q8SW1hZ2VPcHRpb25zPigwKSk7CisgICAgaWYgKCF3ZWJJbWFnZS0+Yml0bWFw
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBo
aWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
CisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpOworICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoMCwgMCksIGltYWdlKTsKKyAgICBy
ZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmgKaW5kZXggMWU1MDczYTA4Y2IzNDA1Mjk4
YmMzNDYxYjY0YWZhZTdlZTk1N2JkMy4uNWFiZWY0ODE4MzA4N2FjNTU2OTE1ZmNiMjY2ODE0NzY2
ODczNWM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1h
Z2VRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaApA
QCAtMjcsNSArMjcsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZS5oPgogCiBXS19FWFBP
UlQgUUltYWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZSk7CitXS19FWFBP
UlQgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdl
KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMTdmNDg0NTg3MDFkMmJjYTdmOTEwZDBmMDFhYzE1YmYyMTk3NmZjNC4uZWNhZDQx
N2EyNTUxZWQzMGY3ZWJiOGM0YTcxOWE2OTBmNmQ3ZTY1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEwLTEy
ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dU
Ul0gRG8gYSBmb3JjZWQgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODY1NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIGEgZm9yY2Vk
IHJlcGFpbnQgYmVmb3JlIGdyYWJiaW5nIHRoZSBwaXhlbCBzbmFwc2hvdC4gVGhpcyBleHRyYQor
ICAgICAgICBzeW5jaHJvbmlzYXRpb24gaXMgbmVjZXNzYXJ5IHdpdGggdGhlIENvb3JkaW5hdGVk
R3JhcGhpY3MgcmVuZGVyaW5nCisgICAgICAgIGJhY2tlbmQgYmVjYXVzZSBpdCBoYXMgYSBmdWxs
eSBhc3luY2hyb25vdXMgbmF0dXJlLiBUaGlzIHBhdGNoIG1ha2UKKyAgICAgICAgdXMgdXNpbmcg
dGhlIHdpbmRvdyBzbmFwc2hvdCBmb3IgcGl4ZWwgcmVzdWx0cyB3aGljaCBpcyBuZWNlc3Nhcnkg
dG8KKyAgICAgICAgY2FwdHVyZSBhbmltYXRpb25zIGFuZCBvdGhlciBkeW5hbWljIGNvbnRlbnQu
IFRoZSBhY3R1YWwgZ3JhYmJpbmcgb2YKKyAgICAgICAgdGhlIHdpbmRvdyBoYXMgbm90IGJlZW4g
aW1wbGVtZW50ZWQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBjb21lIGluCisgICAgICAgIGEgZm9s
bG93LXVwLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZHVtcCk6IFN0b3JlIHJlc3VsdHMgaW4gbWVtYmVyIHZhcmlhYmxlcy4K
KyAgICAgICAgRG9uJ3QgY2xvc2Ugb3V0cHV0IGNoYW5uZWxzIHlldC4KKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmR1bXBSZXN1bHRzKTogQWRkZWQuIFRoaXMgaXMgd2hlcmUgd2UgZHVt
cAorICAgICAgICB0aGUgcmVzdWx0cyBpZiBubyBlcnJvciBoYXBwZW5lZC4KKyAgICAgICAgKFdU
Uik6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oOgorICAgICAgICAoVGVzdEludm9jYXRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQv
VGVzdEludm9jYXRpb25RdC5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpmb3Jj
ZVJlcGFpbnREb25lQ2FsbGJhY2spOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKKwogMjAxMi0x
MC0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMTE2MC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYTYyNTRkOWZkNTEwNmUyZmNiYmJiMDA5ZDZmYmEw
YmFhNGUzZGNiZi4uZGM2NjM5ZDJlMjk4YTAzMGQ1OTgzMDFlNGYyMzA3N2YzNjExNDM4NyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE5Miw2ICsxOTIs
OCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogICAgICAgICBnb3RvIGVuZDsKICAg
ICB9CiAKKyAgICBkdW1wUmVzdWx0cygpOworCiBlbmQ6CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBpZiAobV9nb3RJbml0aWFsUmVzcG9uc2UpCkBAIC0yMzUsNiArMjM3LDE3IEBAIHZvaWQg
VGVzdEludm9jYXRpb246OmR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFy
KiB0ZXh0VG9TdGRlcnIsIGJvCiAgICAgZmZsdXNoKHN0ZGVycik7CiB9CiAKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmR1bXBSZXN1bHRzKCkKK3sKKyAgICBkdW1wKHRvV1RGU3RyaW5nKG1fdGV4dE91
dHB1dC5nZXQoKSkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBpZiAobV9kdW1wUGl4ZWxzICYmIG1f
cGl4ZWxSZXN1bHQpCisgICAgICAgIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKG1f
cGl4ZWxSZXN1bHQuZ2V0KCksIG1fcmVwYWludFJlY3RzLmdldCgpKTsKKworICAgIGZwdXRzKCIj
RU9GXG4iLCBzdGRvdXQpOworICAgIGZmbHVzaChzdGRvdXQpOworfQorCiBib29sIFRlc3RJbnZv
Y2F0aW9uOjpjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBj
aGFyIGFjdHVhbEhhc2hbMzNdKQogewogICAgIC8vIENvbXB1dGUgdGhlIGhhc2ggb2YgdGhlIGJp
dG1hcCBjb250ZXh0IHBpeGVscwpAQCAtMjc4LDI2ICsyOTEsMTUgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9
IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOwogCiAgICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXh0T3V0cHV0S2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJUZXh0T3V0cHV0IikpOwotICAgICAgICBXS1N0cmluZ1JlZiB0
ZXh0T3V0cHV0ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0ZXh0T3V0cHV0S2V5LmdldCgpKSk7CisgICAg
ICAgIG1fdGV4dE91dHB1dCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGV4dE91dHB1dEtleS5nZXQoKSkp
OwogCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwaXhlbFJlc3VsdEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBpeGVsUmVzdWx0IikpOwotICAg
ICAgICBXS0ltYWdlUmVmIHBpeGVsUmVzdWx0ID0gc3RhdGljX2Nhc3Q8V0tJbWFnZVJlZj4oV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHBpeGVsUmVzdWx0
S2V5LmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVCghcGl4ZWxSZXN1bHQgfHwgbV9kdW1wUGl4ZWxz
KTsKLSAgICAgICAgCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVj
dHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVj
dHMiKSk7Ci0gICAgICAgIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzID0gc3RhdGljX2Nhc3Q8V0tB
cnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnks
IHJlcGFpbnRSZWN0c0tleS5nZXQoKSkpOyAgICAgICAgCisgICAgICAgIG1fcGl4ZWxSZXN1bHQg
PSBzdGF0aWNfY2FzdDxXS0ltYWdlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgcGl4ZWxSZXN1bHRLZXkuZ2V0KCkpKTsKKyAgICAgICAgQVNTRVJU
KCFtX3BpeGVsUmVzdWx0IHx8IG1fZHVtcFBpeGVscyk7CiAKLSAgICAgICAgLy8gRHVtcCB0ZXh0
LgotICAgICAgICBkdW1wKHRvV1RGU3RyaW5nKHRleHRPdXRwdXQpLnV0ZjgoKS5kYXRhKCkpOwot
Ci0gICAgICAgIC8vIER1bXAgcGl4ZWxzIChpZiBuZWNlc3NhcnkpLgotICAgICAgICBpZiAobV9k
dW1wUGl4ZWxzICYmIHBpeGVsUmVzdWx0KQotICAgICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQocGl4ZWxSZXN1bHQsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiByZXBhaW50UmVjdHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJSZXBhaW50UmVjdHMiKSk7CisgICAgICAgIG1fcmVwYWludFJl
Y3RzID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSht
ZXNzYWdlQm9keURpY3Rpb25hcnksIHJlcGFpbnRSZWN0c0tleS5nZXQoKSkpOwogCi0gICAgICAg
IGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOwotICAgICAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICAg
ICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgICAgIAogICAgICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9
IHRydWU7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRl
eCA0OTY0MWU5ZWU0M2U3ODljZDk1OWY0YjRkZGFiZTQ2OGNmOTYzODNiLi5iNTUwNjU1MWIxOTFl
YzY1ZTE1NTE2ODQ2OWM5ZjU3NjczZDFmZWFmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCkBAIC00Niw5ICs0NiwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBkdW1wV2ViUHJvY2Vzc1VucmVzcG9uc2l2ZW5lc3MoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0
KTsKIHByaXZhdGU6CisgICAgdm9pZCBkdW1wUmVzdWx0cygpOwogICAgIHN0YXRpYyB2b2lkIGR1
bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAw
LCBib29sIHNlZW5FcnJvciA9IGZhbHNlKTsKICAgICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKTsKICAgICBi
b29sIGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJb
MzNdKTsKKworI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0YXRpYyB2b2lkIGZvcmNlUmVwYWludERv
bmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKKyAgICB2b2lkIGZvcmNlUmVw
YWludERvbmUoKTsKKyNlbmRpZgogICAgIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3Vy
bDsKICAgICBzdGQ6OnN0cmluZyBtX3BhdGhPclVSTDsKQEAgLTYxLDYgKzY3LDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZTsKICAgICBib29sIG1fZ290UmVwYWludDsK
ICAgICBib29sIG1fZXJyb3I7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbV90ZXh0
T3V0cHV0OworICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IG1fcGl4ZWxSZXN1bHQ7CisgICAg
V0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gbV9yZXBhaW50UmVjdHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1X
ZWJWaWV3UXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdR
dC5jcHAKaW5kZXggOTRhNTU2MzA3NjE5NzZlMmMyZDg0NjcwZWJhZGUzOGRhMjM1MGI3NC4uMjc4
MjMyZjI5YTA4ODIzODY0NTI3YjYwOGI4ZWU3YTU1MzRjNzNiNyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBA
QCBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4g
dGhlIFVJIHByb2Nlc3MsCiAgICAgLy8gd2hpY2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJl
IHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFk
b3B0V0soV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UoUUltYWdlKCkpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZv
Y2F0aW9uUXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0
LmNwcAppbmRleCA5ODFjMjAzMmEyOTc4NzAyZjZiNmNhMjRhMTk4ZGY0OTkxNGRjZjNmLi5iNjk2
NTQ0MzY0ZDc4ZDhhNjgyZmQwNmEwNWE2NTY2ZTkzOTcyMzMwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAKQEAgLTI3LDYgKzI3LDggQEAKIAog
I2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcu
aCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFFCdWZmZXI+CiAjaW5j
bHVkZSA8UUNyeXB0b2dyYXBoaWNIYXNoPgogI2luY2x1ZGUgPFF0R3VpL1FQYWludGVyPgpAQCAt
NjMsOSArNjUsMjggQEAgc3RhdGljIHZvaWQgZHVtcEltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2Up
CiAgICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmZvcmNlUmVw
YWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkICpjb250ZXh0KQoreworICAgIHN0YXRp
Y19jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29udGV4dCktPm1fZ290UmVwYWludCA9IHRydWU7Cisg
ICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKK30KKwogdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBp
bWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCiB7Ci0gICAgUUltYWdlIGltYWdlID0g
V0tJbWFnZUNyZWF0ZVFJbWFnZShpbWFnZVJlZik7CisgICAgV0tQYWdlUmVmIHBhZ2UgPSBUZXN0
Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpOworICAgIFdLUGFnZUZv
cmNlUmVwYWludChwYWdlLCB0aGlzLCAmZm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKKworICAg
IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ydW5VbnRpbChtX2dvdFJlcGFpbnQsIFRlc3RDb250
cm9sbGVyOjpTaG9ydFRpbWVvdXQpOworCisgICAgUUltYWdlIGltYWdlOworICAgIGlmIChtX2dv
dFJlcGFpbnQpCisgICAgICAgIGltYWdlID0gV0tJbWFnZUNyZWF0ZVFJbWFnZShUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2luZG93U25hcHNob3RJbWFnZSgpLmdldCgp
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gVGhlIHRlc3QgaGFybmVzcyBleHBlY3RzIGFuIGlt
YWdlIHNvIHdlIG91dHB1dCBhbiBlbXB0eSBvbmUuCisgICAgICAgIFdLUmVjdCB3aW5kb3dSZWN0
ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd0ZyYW1lKCk7
CisgICAgICAgIGltYWdlID0gUUltYWdlKFFTaXplKHdpbmRvd1JlY3Quc2l6ZS53aWR0aCwgd2lu
ZG93UmVjdC5zaXplLmhlaWdodCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVk
KTsKKyAgICAgICAgaW1hZ2UuZmlsbChRdDo6cmVkKTsKKyAgICB9CiAKICAgICBpZiAocmVwYWlu
dFJlY3RzKSB7CiAgICAgICAgIFFJbWFnZSBtYXNrKGltYWdlLnNpemUoKSwgaW1hZ2UuZm9ybWF0
KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>