<?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>95974</bug_id>
          
          <creation_ts>2012-09-06 04:35:11 -0700</creation_ts>
          <short_desc>[WK2][WTR] WebKitTestRunner UI process should be aware of Custom Policy Delegate</short_desc>
          <delta_ts>2012-10-11 00:32:38 -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>WebKit2</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>98994</dependson>
          <blocked>98527</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>kenneth</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713164</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-06 04:35:11 -0700</bug_when>
    <thetext>Currently WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction considers only &apos;WKBundlePagePolicyActionUse&apos; policy action returned by the
InjectedBundle and skips the &apos;WKBundlePagePolicyActionPassThrough&apos; result. It&apos;s leading to fast/loader/onload-policy-ignore-for-frame.html test failure.

The reason for it is apparently that &apos;WKBundlePagePolicyActionPassThrough&apos; is returned also from InjectedBundlePagePolicyClient when there is no 
WKBundlePagePolicyClient callback provided. So we do not distinguish between two cases: 
1) there&apos;s no WKBundlePagePolicyClient decidePolicyForNavigationAction callback provided 
2) WKBundlePagePolicyClient decidePolicyForNavigationAction callback returns &apos;WKBundlePagePolicyActionPassThrough&apos; value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713166</commentid>
    <comment_count>1</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-06 04:40:12 -0700</bug_when>
    <thetext>&gt; It&apos;s leading to fast/loader/onload-policy-ignore-for-frame.html test failure.

Actually fast/loader/onload-policy-ignore-for-frame.html will need also bug42546 to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713184</commentid>
    <comment_count>2</comment_count>
      <attachid>162480</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-06 05:16:10 -0700</bug_when>
    <thetext>Created attachment 162480
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713237</commentid>
    <comment_count>3</comment_count>
      <attachid>162480</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 06:25:32 -0700</bug_when>
    <thetext>Comment on attachment 162480
patch

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

Where is the unskipped test?

&gt; Source/WebKit2/ChangeLog:11
&gt; +        Before the change WebFrameLoaderClient::dispatchDecidePolicy callbacks considered only &apos;WKBundlePagePolicyActionUse&apos; policy action returned by the
&gt; +        InjectedBundle and skipped the &apos;WKBundlePagePolicyActionPassThrough&apos; affecting fast/loader/onload-policy-ignore-for-frame.html test output.
&gt; +
&gt; +        The reason for it was apparently that &apos;WKBundlePagePolicyActionPassThrough&apos; was returned also from InjectedBundlePagePolicyClient when there was no 

I would wrap this a bit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713239</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-06 06:31:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 162480 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162480&amp;action=review
&gt; 
&gt; Where is the unskipped test?
&gt; 
test fast/loader/onload-policy-ignore-for-frame.html will be unskipped 
in bug42546 patch, I&apos;m working at it at the moment.
&gt; 
&gt; I would wrap this a bit...
Could you please clarify?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713422</commentid>
    <comment_count>5</comment_count>
      <attachid>162480</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-06 10:22:10 -0700</bug_when>
    <thetext>Comment on attachment 162480
patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:40
&gt; +bool InjectedBundlePagePolicyClient::decidePolicyForNavigationAction(WebPage* page, WebFrame* frame, InjectedBundleNavigationAction* action, const ResourceRequest&amp; resourceRequest, WKBundlePagePolicyAction&amp; result, RefPtr&lt;APIObject&gt;&amp; userData)
&gt;  {
&gt;      if (!m_client.decidePolicyForNavigationAction)
&gt; -        return WKBundlePagePolicyActionPassThrough;
&gt; +        return false;

This doesn&apos;t really look right to me. What&apos;s the caller to do with two separate results - a boolean and a WKBundlePagePolicyAction? Calling decidePolicyForNavigationAction must result in a decision, not in an array of vaguely defined data points the caller is advised to make its own decision from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713490</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-06 11:14:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 162480 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162480&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:40
&gt; &gt; +bool InjectedBundlePagePolicyClient::decidePolicyForNavigationAction(WebPage* page, WebFrame* frame, InjectedBundleNavigationAction* action, const ResourceRequest&amp; resourceRequest, WKBundlePagePolicyAction&amp; result, RefPtr&lt;APIObject&gt;&amp; userData)
&gt; &gt;  {
&gt; &gt;      if (!m_client.decidePolicyForNavigationAction)
&gt; &gt; -        return WKBundlePagePolicyActionPassThrough;
&gt; &gt; +        return false;
&gt; 
&gt; This doesn&apos;t really look right to me. What&apos;s the caller to do with two separate results - a boolean and a WKBundlePagePolicyAction? Calling decidePolicyForNavigationAction must result in a decision, not in an array of vaguely defined data points the caller is advised to make its own decision from.

boolean result just shows who actually should make the decision: injected bundle or UI process. If returns &apos;true&apos; decision is taken from injected bundle otherwise from UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713515</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-06 11:41:25 -0700</bug_when>
    <thetext>Yes, this is exactly what looks not quite right to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713695</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-06 14:21:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 162480 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162480&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:40
&gt; &gt; &gt; +bool InjectedBundlePagePolicyClient::decidePolicyForNavigationAction(WebPage* page, WebFrame* frame, InjectedBundleNavigationAction* action, const ResourceRequest&amp; resourceRequest, WKBundlePagePolicyAction&amp; result, RefPtr&lt;APIObject&gt;&amp; userData)
&gt; &gt; &gt;  {
&gt; &gt; &gt;      if (!m_client.decidePolicyForNavigationAction)
&gt; &gt; &gt; -        return WKBundlePagePolicyActionPassThrough;
&gt; &gt; &gt; +        return false;
&gt; &gt; 
&gt; &gt; This doesn&apos;t really look right to me. What&apos;s the caller to do with two separate results - a boolean and a WKBundlePagePolicyAction? Calling decidePolicyForNavigationAction must result in a decision, not in an array of vaguely defined data points the caller is advised to make its own decision from.
&gt; 
&gt; boolean result just shows who actually should make the decision: injected bundle or UI process. If returns &apos;true&apos; decision is taken from injected bundle otherwise from UI process.

That is what pass through is supposed to mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714186</commentid>
    <comment_count>9</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-06 23:46:00 -0700</bug_when>
    <thetext>&gt; &gt; boolean result just shows who actually should make the decision: injected bundle or UI process. If returns &apos;true&apos; decision is taken from injected bundle otherwise from UI process.
&gt; 
&gt; That is what pass through is supposed to mean.
Yes, currently &apos;pass through&apos; from injected bundle means that injected bundle 
does not make decision and should be ignored. But in some cases this &apos;pass through&apos; from injected bundle should be applied to frame loader, and 
fast/loader/onload-policy-ignore-for-frame.html, for instance, relies on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714279</commentid>
    <comment_count>10</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-07 01:41:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Yes, this is exactly what looks not quite right to me.

Yeah, my current makes the InjectedBundlePagePolicyClient interface weird, will try to find better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714386</commentid>
    <comment_count>11</comment_count>
      <attachid>162737</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-07 04:26:03 -0700</bug_when>
    <thetext>Created attachment 162737
patch v2

The proposed solution adds new method &apos;isNull()&apos; to the base APIClient class. This method returns &apos;true&apos; if
API client was not initialized and returns &apos;false&apos; otherwise. This method is then
used to detect who should make the policy decision in WebFrameLoaderClient (bundle client if WKBundlePagePolicyClient
is initialized and UIProcess otherwise).

Also ChangeLog description improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714401</commentid>
    <comment_count>12</comment_count>
      <attachid>162744</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-07 04:44:22 -0700</bug_when>
    <thetext>Created attachment 162744
patch v3

Found a problem in my previous patch: m_isNull was not reset in initialize() method. Fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717435</commentid>
    <comment_count>13</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-11 11:41:56 -0700</bug_when>
    <thetext>Alexey, Sam could you please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717706</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-11 16:32:18 -0700</bug_when>
    <thetext>Sam or Anders should review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719767</commentid>
    <comment_count>15</comment_count>
      <attachid>162744</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-09-13 12:12:45 -0700</bug_when>
    <thetext>Comment on attachment 162744
patch v3

I don&apos;t think this is correct. &quot;Pass through&quot; isn&apos;t the same thing as ignore. Due to the way state is managed in the UI process, it&apos;s not possible to ignore a load from the bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731457</commentid>
    <comment_count>16</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-01 01:10:06 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 162744 [details])
&gt; I don&apos;t think this is correct. &quot;Pass through&quot; isn&apos;t the same thing as ignore. Due to the way state is managed in the UI process, it&apos;s not possible to ignore a load from the bundle.

Thanks for taking a look!
Yeah, my problem was probably that I treated &quot;Pass through&quot; as &quot;Ignore&quot;.
I guess proper fix should add &quot;Ignore&quot; policy for bundle client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731466</commentid>
    <comment_count>17</comment_count>
      <attachid>166423</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-01 01:21:44 -0700</bug_when>
    <thetext>Created attachment 166423
patch v4

Added WKBundlePagePolicyActionIgnore policy to be used by bundle client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731796</commentid>
    <comment_count>18</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-01 10:47:31 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 162744 [details] [details])
&gt; &gt; I don&apos;t think this is correct. &quot;Pass through&quot; isn&apos;t the same thing as ignore. Due to the way state is managed in the UI process, it&apos;s not possible to ignore a load from the bundle.
&gt; 
&gt; Thanks for taking a look!
&gt; Yeah, my problem was probably that I treated &quot;Pass through&quot; as &quot;Ignore&quot;.
&gt; I guess proper fix should add &quot;Ignore&quot; policy for bundle client.

Like I said, if we add an Ignore policy things get out of sync in the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731804</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-01 10:52:26 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; (From update of attachment 162744 [details] [details] [details])
&gt; &gt; &gt; I don&apos;t think this is correct. &quot;Pass through&quot; isn&apos;t the same thing as ignore. Due to the way state is managed in the UI process, it&apos;s not possible to ignore a load from the bundle.
&gt; &gt; 
&gt; &gt; Thanks for taking a look!
&gt; &gt; Yeah, my problem was probably that I treated &quot;Pass through&quot; as &quot;Ignore&quot;.
&gt; &gt; I guess proper fix should add &quot;Ignore&quot; policy for bundle client.
&gt; 
&gt; Like I said, if we add an Ignore policy things get out of sync in the UI process.

I&apos;ll add more to what Anders is saying.

What we have here is a failing layout test.  To fix it we should not add Ignore to the WebProcess.  Instead we should properly implement Ignore support in the UIProcess of WebKitTestRunner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735482</commentid>
    <comment_count>20</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-05 01:23:36 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I&apos;ll add more to what Anders is saying.
&gt; 
&gt; What we have here is a failing layout test.  To fix it we should not add Ignore to the WebProcess.  Instead we should properly implement Ignore support in the UIProcess of WebKitTestRunner.

Thank you very much indeed for the hint! 
Changing the bug title accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735497</commentid>
    <comment_count>21</comment_count>
      <attachid>167283</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-05 01:51:52 -0700</bug_when>
    <thetext>Created attachment 167283
patch v5

WTR bundle client notifies UI process about Custom Policy Delegate via newly added message, so that TestController is aware of whether Custom Policy Delegate as enabled and permissive. This data is used then in PlatformWebViewEfl.cpp to unskip
fast/loader/onload-policy-ignore-for-frame.html for EFL WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736926</commentid>
    <comment_count>22</comment_count>
      <attachid>167283</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-08 12:24:26 -0700</bug_when>
    <thetext>Comment on attachment 167283
patch v5

I - admittedly - haven&apos;t looked at WKTR to get the answer to this myself.  But could this not be done in a cross platform way?  This policy delegate isn&apos;t really about platform specific ports so much as it is the cross platform UI Process of WKTR itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737661</commentid>
    <comment_count>23</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-09 04:34:53 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 167283 [details])
&gt; I - admittedly - haven&apos;t looked at WKTR to get the answer to this myself.  But could this not be done in a cross platform way?  This policy delegate isn&apos;t really about platform specific ports so much as it is the cross platform UI Process of WKTR itself.

It is possible to make solution cross platform if WTR Test controller sets PagePolicyClient. The reason why I did not do it from the beginning is that PagePolicyClient is usually set in port implementation and it has some logic that won&apos;t be tested if PagePolicyClient is reset by WTR.
However I see that other clients (WKPageUIClient, WKPageLoaderClient) are reset in WTR and probably PagePolicyClient should not be exception. Obviously port-specific logic is supposed to be tested by port-specific API unit tests rather than by WTR. So I will change my solution. Thanks for having a look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737737</commentid>
    <comment_count>24</comment_count>
      <attachid>167748</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-09 06:29:06 -0700</bug_when>
    <thetext>Created attachment 167748
patch v6

Added PagePolicyClient to WTR so that solution applies to all the ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739023</commentid>
    <comment_count>25</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-10 09:31:44 -0700</bug_when>
    <thetext>Could please anyone review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739325</commentid>
    <comment_count>26</comment_count>
      <attachid>167748</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 15:11:28 -0700</bug_when>
    <thetext>Comment on attachment 167748
patch v6

Clearing flags on attachment: 167748

Committed r130967: &lt;http://trac.webkit.org/changeset/130967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739326</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 15:11:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739667</commentid>
    <comment_count>28</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-11 00:32:38 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 167748 [details])
&gt; Clearing flags on attachment: 167748
&gt; 
&gt; Committed r130967: &lt;http://trac.webkit.org/changeset/130967&gt;

It caused a regression on Qt-WK2 - https://bugs.webkit.org/show_bug.cgi?id=98994
Could you check and fix it, please?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162480</attachid>
            <date>2012-09-06 05:16:10 -0700</date>
            <delta_ts>2012-09-07 01:41:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug95974</filename>
            <type>text/plain</type>
            <size>11815</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGU4NjcxZDYyMWFjMWVmM2Q4NzRiZTAwMTUzODc0Mjg4MjNlOGRhYjMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VGh1IFNlcCA2IDE1OjE1OjAyIDIwMTIgKzAzMDAKCiAgICBidWc5NTk3NAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA1NmE5OGYyLi5jMDRhZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDkt
MDYgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW1dLXSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3kg
bWV0aG9kcyBzaG91bGQgY29uc2lkZXIgJ1dLQnVuZGxlUGFnZVBvbGljeUFjdGlvblBhc3NUaHJv
dWdoJyBwb2xpY3kgYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NTk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJlZm9yZSB0aGUgY2hhbmdlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeSBjYWxsYmFja3MgY29uc2lkZXJlZCBvbmx5ICdXS0J1bmRsZVBhZ2VQb2xp
Y3lBY3Rpb25Vc2UnIHBvbGljeSBhY3Rpb24gcmV0dXJuZWQgYnkgdGhlCisgICAgICAgIEluamVj
dGVkQnVuZGxlIGFuZCBza2lwcGVkIHRoZSAnV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Ro
cm91Z2gnIGFmZmVjdGluZyBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJh
bWUuaHRtbCB0ZXN0IG91dHB1dC4KKworICAgICAgICBUaGUgcmVhc29uIGZvciBpdCB3YXMgYXBw
YXJlbnRseSB0aGF0ICdXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhyb3VnaCcgd2FzIHJl
dHVybmVkIGFsc28gZnJvbSBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQgd2hlbiB0aGVy
ZSB3YXMgbm8gCisgICAgICAgIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudCBjYWxsYmFjayBwcm92
aWRlZC4gU28gd2UgZGlkIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHR3byBmb2xsb3dpbmcgY2Fz
ZXM6IAorICAgICAgICBUaGVyZSdzIG5vIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudCAnZGVjaWRl
UG9saWN5JyBjYWxsYmFjayBwcm92aWRlZC4gCisgICAgICAgIFdLQnVuZGxlUGFnZVBvbGljeUNs
aWVudCAnZGVjaWRlUG9saWN5JyBjYWxsYmFjayByZXR1cm5zICdXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb25QYXNzVGhyb3VnaCcgdmFsdWUuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZml4IHRoZSBw
cm9ibGVtIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudCB3ZXJlIG1vZGlmaWVkIHNvIHRo
YXQgdGhleSByZXR1cm4gZmFsc2Ugd2hlbiB0aGVyZSBpcyBubyBjYWxsYmFjayBwcm92aWRlZAor
ICAgICAgICAocmV0dXJuIHRydWUgb3RoZXJ3aXNlKSBhbmQgdGhlIHJlc3VsdGluZyBwb2xpY3kg
YWN0aW9uIGlzIHJlY29yZGVkIGludG8gYSBuZXcgJ3Jlc3VsdCcgb3V0cHV0IHBhcmFtZXRlci4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
UG9saWN5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9s
aWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lD
bGllbnQ6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oOgorICAgICAgICAo
SW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxMi0w
OS0wNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBXZWJNZW1vcnlTYW1wbGVyLmNwcCBpcyBpbmNsdWRlZCB0d2ljZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlUG9saWN5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNwcAppbmRleCBiOTBjZjFm
Li5kMWVkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lD
bGllbnQuY3BwCkBAIC0zNCw0NCArMzQsNDQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1XS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRC
dW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uKiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWZQ
dHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCitib29sIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlKiBwYWdlLCBXZWJG
cmFtZSogZnJhbWUsIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiogYWN0aW9uLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uJiByZXN1bHQsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pCi0gICAgICAgIHJldHVybiBX
S0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhyb3VnaDsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0Ojpj
cmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7Ci0gICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IG1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkoYWN0aW9uKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgcmVzdWx0ID0gbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShhY3Rpb24pLCB0
b0FQSShyZXF1ZXN0LmdldCgpKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwotICAg
IHJldHVybiBwb2xpY3k7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLVdLQnVuZGxlUGFnZVBvbGlj
eUFjdGlvbiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIEluamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbiogYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24qIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBXS0J1bmRsZVBhZ2VQ
b2xpY3lBY3Rpb24mIHJlc3VsdCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQogewogICAg
IGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQotICAgICAgICBy
ZXR1cm4gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2g7CisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFJlZlB0cjxXZWJVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gV2ViVVJMUmVx
dWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFU
b1Bhc3MgPSAwOwotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSBtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKGZyYW1l
KSwgdG9BUEkoYWN0aW9uKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksIHRvQVBJKGZyYW1lTmFtZS5p
bXBsKCkpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHJlc3Vs
dCA9IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0b0FQSShwYWdlKSwg
dG9BUEkoZnJhbWUpLCB0b0FQSShhY3Rpb24pLCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgdG9BUEko
ZnJhbWVOYW1lLmltcGwoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7
CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKLSAgICBy
ZXR1cm4gcG9saWN5OworICAgIHJldHVybiB0cnVlOwogfQogCi1XS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb24gSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCitib29sIEluamVjdGVkQnVuZGxlUGFn
ZVBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZSogcGFnZSwgV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgV0tCdW5kbGVQYWdlUG9saWN5
QWN0aW9uJiByZXN1bHQsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAo
IW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKQotICAgICAgICByZXR1cm4gV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2g7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIFJlZlB0cjxXZWJVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBXZWJVUkxSZXNwb25zZTo6Y3Jl
YXRlKHJlc291cmNlUmVzcG9uc2UpOwogICAgIFJlZlB0cjxXZWJVUkxSZXF1ZXN0PiByZXF1ZXN0
ID0gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAKICAgICBXS1R5cGVS
ZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xp
Y3kgPSBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh0b0FQSShwYWdlKSwgdG9BUEko
ZnJhbWUpLCB0b0FQSShyZXNwb25zZS5nZXQoKSksIHRvQVBJKHJlcXVlc3QuZ2V0KCkpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHJlc3VsdCA9IG1fY2xpZW50
LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KHJlc3BvbnNlLmdldCgpKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywg
bV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNl
ckRhdGFUb1Bhc3MpKTsKLSAgICByZXR1cm4gcG9saWN5OworICAgIHJldHVybiB0cnVlOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudDo6dW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3koV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmgKaW5kZXggM2NkYmViZS4uOGQ0
NGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5o
CkBAIC00NSw5ICs0NSw5IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxl
UGFnZVBvbGljeUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlUG9saWN5Q2xp
ZW50LCBrV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50Q3VycmVudFZlcnNpb24+IHsKIHB1YmxpYzoK
LSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihXZWJQYWdlKiwgV2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24q
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNl
ckRhdGEpOwotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oV2ViUGFnZSosIFdlYkZyYW1lKiwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7Ci0gICAgV0tCdW5kbGVQYWdl
UG9saWN5QWN0aW9uIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2UqLCBXZWJGcmFtZSos
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworICAgIGJvb2wgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlKiwgV2ViRnJhbWUqLCBJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
S0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24mIHJlc3VsdCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJE
YXRhKTsKKyAgICBib29sIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlKiwg
V2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgV0tCdW5kbGVQYWdl
UG9saWN5QWN0aW9uJiByZXN1bHQsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAg
Ym9vbCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uJiByZXN1bHQsIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSk7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJQYWdlKiwgV2Vi
RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgUmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NmE4MDE5My4uYTVkMzE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTY1NSw5ICs2NTUsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICBSZWZQdHI8QVBJ
T2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1l
LCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwotICAgIGlmIChwb2xpY3kgPT0gV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIFdL
QnVuZGxlUGFnZVBvbGljeUFjdGlvbiBidW5kbGVQb2xpY3lBY3Rpb247CisgICAgaWYgKHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
d2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGJ1bmRsZVBvbGljeUFjdGlvbiwg
dXNlckRhdGEpKSB7CisgICAgICAgIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24gPSAoYnVuZGxl
UG9saWN5QWN0aW9uID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgPyBQb2xpY3lVc2Ug
OiBQb2xpY3lJZ25vcmU7CisgICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkt
PnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShwb2xpY3lBY3Rpb24pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC02ODYsMTMgKzY4NywxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bgogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGFjdGlvbiA9IElu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25B
Y3Rpb24sIGZvcm1TdGF0ZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0g
ICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVu
ZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2Us
IG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7Ci0g
ICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAg
KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rp
b24pKFBvbGljeVVzZSk7CisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIGJ1bmRsZVBvbGlj
eUFjdGlvbjsKKyAgICBpZiAod2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5k
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdl
dCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGJ1bmRsZVBvbGljeUFjdGlvbiwgdXNlckRhdGEpKSB7
CisgICAgICAgIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24gPSAoYnVuZGxlUG9saWN5QWN0aW9u
ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgPyBQb2xpY3lVc2UgOiBQb2xpY3lJZ25v
cmU7CisgICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnBvbGljeUNoZWNr
ZXIoKS0+KmZ1bmN0aW9uKShwb2xpY3lBY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0KICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
cihmdW5jdGlvbik7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KQEAgLTcxNiw5ICs3
MTcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOwogCiAgICAg
Ly8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlv
biBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCBy
ZXF1ZXN0LCB1c2VyRGF0YSk7Ci0gICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb25Vc2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+cG9s
aWN5Q2hlY2tlcigpLT4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uIGJ1bmRsZVBvbGljeUFjdGlvbjsKKyAgICBpZiAod2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBh
Z2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgYnVuZGxlUG9saWN5QWN0aW9uLCB1
c2VyRGF0YSkpIHsKKyAgICAgICAgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiA9IChidW5kbGVQ
b2xpY3lBY3Rpb24gPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSA/IFBvbGljeVVzZSA6
IFBvbGljeUlnbm9yZTsKKyAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+
cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rpb24pKHBvbGljeUFjdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162737</attachid>
            <date>2012-09-07 04:26:03 -0700</date>
            <delta_ts>2012-09-07 04:35:30 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug95974_v2</filename>
            <type>text/plain</type>
            <size>7338</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDUwNTJlMmFhZDhhZGYxYWNlODc0ZWI4ZDRlNmE5ZWY5ZDIwMDljMDQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIFNlcCA3IDE0OjA5OjE3IDIwMTIgKzAzMDAKCiAgICBidWc5NTk3NAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBhYzdhNTJlLi45YjUxOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDAgQEAKIDIwMTItMDkt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAK
KyAgICAgICAgW1dLMl0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
IG1ldGhvZHMgc2hvdWxkIGNvbnNpZGVyICdXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhy
b3VnaCcgcG9saWN5IGFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU5NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGVjaWRlUG9saWN5IGZ1bmN0aW9ucyBj
YW4gaGF2ZSB0d28gc291cmNlcyBmb3IgZ2V0dGluZyB0aGUgcG9saWN5OgorICAgICAgICBidW5k
bGUgY2xpZW50IGFuZCBVSVByb2Nlc3MuIEJlZm9yZSB0aGlzIGNoYW5nZSB3ZSBoYWQgZm9sbG93
aW5nIGxvZ2ljIG9mIGNob29zaW5nIHdobyBtYWtlcyBwb2xpY3kgZGVjaXNpb246CisgICAgICAg
IEZpcnN0IGJ1bmRsZSBjbGllbnQgd2FzIGFza2VkIGFuZCBpZiBpdCByZXR1cm5lZCAnV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uVXNlJyBpdCB3YXMgYXBwbGllZCwKKyAgICAgICAgb3RoZXJ3aXNl
IHRoZSBjb250cm9sIHdhcyBnaXZlbiB0byBVSVByb2Nlc3MuIFRoaXMgbG9naWMgaG93ZXZlciBj
YXVzZWQgYSBwcm9ibGVtIGluIGNhc2Ugd2hlbiBidW5kbGUgY2xpZW50CisgICAgICAgIG5lZWRl
ZCB0byBhcHBseSAnV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2gnIHBvbGljeTog
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2gnIHJlc3VsdCB3YXMgc2tpcHBlZAor
ICAgICAgICBiZWNhdXNlIGl0IHdhcyB0cmVhdGVkIGFzIGlmIFdLQnVuZGxlUGFnZVBvbGljeUNs
aWVudCBjYWxsYmFjayB3YXMgbm90IGluaXRpYWxpemVkLgorICAgICAgICBTbyB3ZSBuZWVkZWQg
dG8gZmluZCBhIHdheSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHR3byBjYXNlczoKKyAgICAgICAg
V0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50IGlzIG5vdCBwcm92aWRlZC4KKyAgICAgICAgV0tCdW5k
bGVQYWdlUG9saWN5Q2xpZW50IGlzIHByb3ZpZGVkIGFuZCB3YW50cyAnV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uUGFzc1Rocm91Z2gnIHBvbGljeSB0byBiZSBhcHBsaWVkLgorCisgICAgICAgIFRo
ZSBwcm9wb3NlZCBzb2x1dGlvbiBhZGRzIG5ldyBtZXRob2QgJ2lzTnVsbCgpJyB0byB0aGUgYmFz
ZSBBUElDbGllbnQgY2xhc3MuIFRoaXMgbWV0aG9kIHJldHVybnMgJ3RydWUnIGlmCisgICAgICAg
IEFQSSBjbGllbnQgd2FzIG5vdCBpbml0aWFsaXplZCBhbmQgcmV0dXJucyAnZmFsc2UnIG90aGVy
d2lzZS4gVGhpcyBtZXRob2QgaXMgdGhlbgorICAgICAgICB1c2VkIHRvIGRldGVjdCB3aG8gc2hv
dWxkIG1ha2UgdGhlIHBvbGljeSBkZWNpc2lvbiBpbiBXZWJGcmFtZUxvYWRlckNsaWVudCAoYnVu
ZGxlIGNsaWVudCBpZiBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQKKyAgICAgICAgaXMgaW5pdGlh
bGl6ZWQgYW5kIFVJUHJvY2VzcyBvdGhlcndpc2UpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbG9h
ZGVyL29ubG9hZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5odG1sCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OkFQSUNsaWVudDo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChBUElDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpBUElDbGllbnQ6OmlzTnVs
bCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmVQb2xpY3lBY3Rpb24pOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKToKKworMjAxMi0wOS0wNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlr
aGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKwogICAgICAgICBbV0syXSBBUElDbGllbnRUcmFp
dHM8V0tQYWdlTG9hZGVyQ2xpZW50PiBhbmQgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudD4gYXJlIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseQogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwNzkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SUNsaWVudC5oCmluZGV4IGJlNmVmM2EuLmU2MmRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xp
ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENsaWVudEludGVyZmFjZSwgaW50IGN1cnJlbnRWZXJzaW9uPiBjbGFzcyBBUElDbGll
bnQgewogcHVibGljOgotICAgIEFQSUNsaWVudCgpCisgICAgQVBJQ2xpZW50KCkgOiBtX2lzTnVs
bCh0cnVlKQogICAgIHsKICAgICAgICAgaW5pdGlhbGl6ZSgwKTsKICAgICB9CkBAIC00MywxNyAr
NDMsMjYgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT52ZXJzaW9u
ID09IGN1cnJlbnRWZXJzaW9uKSB7CiAgICAgICAgICAgICBtX2NsaWVudCA9ICpjbGllbnQ7Cisg
ICAgICAgICAgICBtX2lzTnVsbCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgbWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6ZW9mKG1fY2xpZW50KSk7CiAK
LSAgICAgICAgaWYgKGNsaWVudCAmJiBjbGllbnQtPnZlcnNpb24gPCBjdXJyZW50VmVyc2lvbikK
KyAgICAgICAgaWYgKGNsaWVudCAmJiBjbGllbnQtPnZlcnNpb24gPCBjdXJyZW50VmVyc2lvbikg
ewogICAgICAgICAgICAgbWVtY3B5KCZtX2NsaWVudCwgY2xpZW50LCBBUElDbGllbnRUcmFpdHM8
Q2xpZW50SW50ZXJmYWNlPjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bY2xpZW50LT52ZXJzaW9u
XSk7CisgICAgICAgICAgICBtX2lzTnVsbCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCBpc051bGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNOdWxsOwog
ICAgIH0KICAgICAKIHByb3RlY3RlZDoKICAgICBDbGllbnRJbnRlcmZhY2UgbV9jbGllbnQ7Cisg
ICAgYm9vbCBtX2lzTnVsbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA2YTgwMTkzLi5iZTViOGQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNjQxLDYgKzY0MSwxMSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0K
IAorc3RhdGljIGlubGluZSBQb2xpY3lBY3Rpb24gY29yZVBvbGljeUFjdGlvbihXS0J1bmRsZVBh
Z2VQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKQoreworICAgIHJldHVybiAocG9saWN5QWN0aW9u
ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgPyBQb2xpY3lVc2UgOiBQb2xpY3lJZ25v
cmU7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtNjU1LDkgKzY2MCw5IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7
CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCku
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uod2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2UsIHJlcXVl
c3QsIHVzZXJEYXRhKTsKLSAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlv
blVzZSkgewotICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lD
aGVja2VyKCktPipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBpZiAoIXdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiA9IGNvcmVQb2xpY3lBY3Rpb24od2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQ
b2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1lLCBy
ZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpKTsKKyAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rpb24pKHBvbGljeUFjdGlvbik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY4NiwxMyArNjkxLDEyIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lUG9saWN5RnVuCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUobV9mcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVu
ZGxlIGNsaWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUs
IHVzZXJEYXRhKTsKLSAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVz
ZSkgewotICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVj
a2VyKCktPipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBpZiAoIXdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlUG9saWN5Q2xpZW50KCkuaXNOdWxsKCkpIHsgICAgICAgIAorICAgICAgICBQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uID0gY29yZVBvbGljeUFjdGlvbih3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJQYWdl
LCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgdXNlckRhdGEpKTsK
KyAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigp
LT4qZnVuY3Rpb24pKHBvbGljeUFjdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLQog
ICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1
bmN0aW9uKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgpAQCAtNzE2LDkgKzcyMCw5
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbj4gYWN0aW9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUobV9mcmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZm9ybVN0YXRlKTsKIAogICAgIC8vIE5v
dGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9s
aWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVz
dCwgdXNlckRhdGEpOwotICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9u
VXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnBvbGljeUNo
ZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIGlmICghd2ViUGFnZS0+aW5qZWN0
ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5pc051bGwoKSkgeworICAgICAgICBQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uID0gY29yZVBvbGljeUFjdGlvbih3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBv
bGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViUGFnZSwgbV9m
cmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCB1c2VyRGF0YSkpOworICAgICAgICAobV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipmdW5jdGlvbikocG9s
aWN5QWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162744</attachid>
            <date>2012-09-07 04:44:22 -0700</date>
            <delta_ts>2012-10-01 01:10:17 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug95974_v3</filename>
            <type>text/plain</type>
            <size>7364</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDVlN2NlMjg1Y2FlZjVjZjcxMmZkYWJmMGRiNTdhNmI1NjZmZjc5NjMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIFNlcCA3IDE0OjA5OjE3IDIwMTIgKzAzMDAKCiAgICBidWc5NTk3NAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBhYzdhNTJlLi45YjUxOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDAgQEAKIDIwMTItMDkt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAK
KyAgICAgICAgW1dLMl0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
IG1ldGhvZHMgc2hvdWxkIGNvbnNpZGVyICdXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhy
b3VnaCcgcG9saWN5IGFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU5NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGVjaWRlUG9saWN5IGZ1bmN0aW9ucyBj
YW4gaGF2ZSB0d28gc291cmNlcyBmb3IgZ2V0dGluZyB0aGUgcG9saWN5OgorICAgICAgICBidW5k
bGUgY2xpZW50IGFuZCBVSVByb2Nlc3MuIEJlZm9yZSB0aGlzIGNoYW5nZSB3ZSBoYWQgZm9sbG93
aW5nIGxvZ2ljIG9mIGNob29zaW5nIHdobyBtYWtlcyBwb2xpY3kgZGVjaXNpb246CisgICAgICAg
IEZpcnN0IGJ1bmRsZSBjbGllbnQgd2FzIGFza2VkIGFuZCBpZiBpdCByZXR1cm5lZCAnV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uVXNlJyBpdCB3YXMgYXBwbGllZCwKKyAgICAgICAgb3RoZXJ3aXNl
IHRoZSBjb250cm9sIHdhcyBnaXZlbiB0byBVSVByb2Nlc3MuIFRoaXMgbG9naWMgaG93ZXZlciBj
YXVzZWQgYSBwcm9ibGVtIGluIGNhc2Ugd2hlbiBidW5kbGUgY2xpZW50CisgICAgICAgIG5lZWRl
ZCB0byBhcHBseSAnV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2gnIHBvbGljeTog
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2gnIHJlc3VsdCB3YXMgc2tpcHBlZAor
ICAgICAgICBiZWNhdXNlIGl0IHdhcyB0cmVhdGVkIGFzIGlmIFdLQnVuZGxlUGFnZVBvbGljeUNs
aWVudCBjYWxsYmFjayB3YXMgbm90IGluaXRpYWxpemVkLgorICAgICAgICBTbyB3ZSBuZWVkZWQg
dG8gZmluZCBhIHdheSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHR3byBjYXNlczoKKyAgICAgICAg
V0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50IGlzIG5vdCBwcm92aWRlZC4KKyAgICAgICAgV0tCdW5k
bGVQYWdlUG9saWN5Q2xpZW50IGlzIHByb3ZpZGVkIGFuZCB3YW50cyAnV0tCdW5kbGVQYWdlUG9s
aWN5QWN0aW9uUGFzc1Rocm91Z2gnIHBvbGljeSB0byBiZSBhcHBsaWVkLgorCisgICAgICAgIFRo
ZSBwcm9wb3NlZCBzb2x1dGlvbiBhZGRzIG5ldyBtZXRob2QgJ2lzTnVsbCgpJyB0byB0aGUgYmFz
ZSBBUElDbGllbnQgY2xhc3MuIFRoaXMgbWV0aG9kIHJldHVybnMgJ3RydWUnIGlmCisgICAgICAg
IEFQSSBjbGllbnQgd2FzIG5vdCBpbml0aWFsaXplZCBhbmQgcmV0dXJucyAnZmFsc2UnIG90aGVy
d2lzZS4gVGhpcyBtZXRob2QgaXMgdGhlbgorICAgICAgICB1c2VkIHRvIGRldGVjdCB3aG8gc2hv
dWxkIG1ha2UgdGhlIHBvbGljeSBkZWNpc2lvbiBpbiBXZWJGcmFtZUxvYWRlckNsaWVudCAoYnVu
ZGxlIGNsaWVudCBpZiBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQKKyAgICAgICAgaXMgaW5pdGlh
bGl6ZWQgYW5kIFVJUHJvY2VzcyBvdGhlcndpc2UpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbG9h
ZGVyL29ubG9hZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5odG1sCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OkFQSUNsaWVudDo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChBUElDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpBUElDbGllbnQ6OmlzTnVs
bCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmVQb2xpY3lBY3Rpb24pOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKToKKworMjAxMi0wOS0wNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlr
aGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKwogICAgICAgICBbV0syXSBBUElDbGllbnRUcmFp
dHM8V0tQYWdlTG9hZGVyQ2xpZW50PiBhbmQgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudD4gYXJlIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseQogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwNzkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SUNsaWVudC5oCmluZGV4IGJlNmVmM2EuLjEwNGQxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xp
ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENsaWVudEludGVyZmFjZSwgaW50IGN1cnJlbnRWZXJzaW9uPiBjbGFzcyBBUElDbGll
bnQgewogcHVibGljOgotICAgIEFQSUNsaWVudCgpCisgICAgQVBJQ2xpZW50KCkgOiBtX2lzTnVs
bCh0cnVlKQogICAgIHsKICAgICAgICAgaW5pdGlhbGl6ZSgwKTsKICAgICB9CkBAIC00MywxNyAr
NDMsMjcgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT52ZXJzaW9u
ID09IGN1cnJlbnRWZXJzaW9uKSB7CiAgICAgICAgICAgICBtX2NsaWVudCA9ICpjbGllbnQ7Cisg
ICAgICAgICAgICBtX2lzTnVsbCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgbWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6ZW9mKG1fY2xpZW50KSk7Cisg
ICAgICAgIG1faXNOdWxsID0gdHJ1ZTsKIAotICAgICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+
dmVyc2lvbiA8IGN1cnJlbnRWZXJzaW9uKQorICAgICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+
dmVyc2lvbiA8IGN1cnJlbnRWZXJzaW9uKSB7CiAgICAgICAgICAgICBtZW1jcHkoJm1fY2xpZW50
LCBjbGllbnQsIEFQSUNsaWVudFRyYWl0czxDbGllbnRJbnRlcmZhY2U+OjppbnRlcmZhY2VTaXpl
c0J5VmVyc2lvbltjbGllbnQtPnZlcnNpb25dKTsKKyAgICAgICAgICAgIG1faXNOdWxsID0gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9pc051bGw7CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgogICAgIENs
aWVudEludGVyZmFjZSBtX2NsaWVudDsKKyAgICBib29sIG1faXNOdWxsOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDZh
ODAxOTMuLmJlNWI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02
NDEsNiArNjQxLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygp
CiAgICAgd2ViUGFnZS0+c2hvdygpOwogfQogCitzdGF0aWMgaW5saW5lIFBvbGljeUFjdGlvbiBj
b3JlUG9saWN5QWN0aW9uKFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pCit7
CisgICAgcmV0dXJuIChwb2xpY3lBY3Rpb24gPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
KSA/IFBvbGljeVVzZSA6IFBvbGljeUlnbm9yZTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CkBAIC02NTUsOSArNjYwLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNs
aWVudC4KLSAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdl
LCBtX2ZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwotICAgIGlmIChwb2xpY3kg
PT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2Up
OworICAgIGlmICghd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5pc051bGwo
KSkgeworICAgICAgICBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uID0gY29yZVBvbGljeUFjdGlv
bih3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlKHdlYlBhZ2UsIG1fZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSkpOwor
ICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkt
PipmdW5jdGlvbikocG9saWN5QWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
Njg2LDEzICs2OTEsMTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIFdLQnVuZGxlUGFnZVBv
bGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgp
LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24u
Z2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgdXNlckRhdGEpOwotICAgIGlmIChwb2xpY3kgPT0g
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOwor
ICAgIGlmICghd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5pc051bGwoKSkg
eyAgICAgICAgCisgICAgICAgIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24gPSBjb3JlUG9saWN5
QWN0aW9uKHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVz
dCwgZnJhbWVOYW1lLCB1c2VyRGF0YSkpOworICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipmdW5jdGlvbikocG9saWN5QWN0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJh
bWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOwogCiAgICAgLy8gTm90aWZ5IHRoZSBV
SVByb2Nlc3MuCkBAIC03MTYsOSArNzIwLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBhY3Rpb24gPSBJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShtX2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9u
LCBmb3JtU3RhdGUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIFdL
QnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBv
bGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViUGFnZSwgbV9m
cmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCB1c2VyRGF0YSk7Ci0gICAgaWYgKHBvbGljeSA9
PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rpb24pKFBvbGljeVVzZSk7
CisgICAgaWYgKCF3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmlzTnVsbCgp
KSB7CisgICAgICAgIFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24gPSBjb3JlUG9saWN5QWN0aW9u
KHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIHVz
ZXJEYXRhKSk7CisgICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnBvbGlj
eUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShwb2xpY3lBY3Rpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAo=
</data>
<flag name="review"
          id="173936"
          type_id="1"
          status="-"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="173937"
          type_id="3"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166423</attachid>
            <date>2012-10-01 01:21:44 -0700</date>
            <delta_ts>2012-10-05 01:51:52 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug95974_v4</filename>
            <type>text/plain</type>
            <size>7612</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGYzNTc2MmNhZTk3MmNjZDcwYjQzMTNkMWUyYjNlYTg1ZjI3MGMxOTgKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE9jdCAxIDExOjE4OjM4IDIwMTIgKzAzMDAKCiAgICBidWc5NTk3NAoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkYzA0
Y2U3Li4wMTdhOGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMDEgIE1pa2hhaWwg
UG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgW1dL
Ml0gQnVuZGxlIGNsaWVudCBzaGFsbCBiZSBhYmxlIHRvIHByb3ZpZGUgJ0lnbm9yZScgcG9saWN5
IGFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU5NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
bnNraXBwZWQgZmFzdC9sb2FkZXIvb25sb2FkLXBvbGljeS1pZ25vcmUtZm9yLWZyYW1lLmh0bWwg
Zm9yIFdLMi4KKworICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDEyLTA5LTMwICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CiAKICAgICAgICAgU2ln
biBpbiBmcm9udCBvZiBrZXlmcmFtZSBzZWxlY3RvciBjYXVzZXMgc3R5bGVzaGVldCBwYXJzaW5n
IHRvIGFib3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGY0ZWFmYmEuLmMyMDFjNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zCkBAIC01NTQsMTEgKzU1NCw2IEBAIGZhc3QvdGV4dC1hdXRvc2l6aW5nCiBpbnNwZWN0
b3IvZ2VvbG9jYXRpb24tZXJyb3IuaHRtbAogaW5zcGVjdG9yL2dlb2xvY2F0aW9uLXN1Y2Nlc3Mu
aHRtbAogCi0jIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeSBtZXRo
b2RzIHNob3VsZCBjb25zaWRlciAKLSMgJ1dLQnVuZGxlUGFnZVBvbGljeUFjdGlvblBhc3NUaHJv
dWdoJyBwb2xpY3kgYWN0aW9uIAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTU5NzQKLWZhc3QvbG9hZGVyL29ubG9hZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS5o
dG1sCi0KICMjIyBFTkQgT0YgKDEpIENsYXNzaWZpZWQgZmFpbHVyZXMgd2l0aCBidWcgcmVwb3J0
cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggN2RmNjI2OC4uYWI4NWYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEw
LTAxICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtXSzJdIEJ1bmRsZSBjbGllbnQgc2hhbGwgYmUgYWJsZSB0byBwcm92aWRlICdJ
Z25vcmUnIHBvbGljeSBhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1OTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uSWdub3JlIHBvbGljeSB0
byBiZSB1c2VkIGJ5IGJ1bmRsZSBjbGllbnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOiBBZGRlZCBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb25JZ25vcmUgcG9saWN5IHRvIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBlbnVtLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojpjb3JlUG9saWN5QWN0aW9uKTogQXV4IGZ1bmN0aW9uIGFkZGVk
IGZvciBjb252ZW5pZW5jZS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKTogSGFu
ZGxpbmcgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uSWdub3JlIGZyb20gYnVuZGxlIGNsaWVudC4K
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBE
aXR0by4KKwogMjAxMi0wOS0zMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dLMl1bR1RLXSBBZGQgQVBJIHRvIGdldCB0aGUgZmF2aWNvbiBm
b3IgYSBXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRleCBjMmIzNzg5
Li5iYzg3NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTE2NCw3ICsxNjQsOCBA
QCBlbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uID0gNCB9Owog
CiBlbnVtIHsKICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhyb3VnaCwKLSAgICBX
S0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2UKKyAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25V
c2UsCisgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uSWdub3JlCiB9OwogdHlwZWRlZiB1aW50
MzJfdCBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggMTM5OGZmMC4uODBmZDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTYzMSw2ICs2MzEsMTkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hTaG93KCkKICAgICB3ZWJQYWdlLT5zaG93KCk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgUG9saWN5QWN0aW9uIGNvcmVQb2xpY3lBY3Rpb24oV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgeworICAgIGNhc2Ug
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlOgorICAgICAgICByZXR1cm4gUG9saWN5VXNlOwor
ICAgIGNhc2UgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uSWdub3JlOgorICAgICAgICByZXR1cm4g
UG9saWN5SWdub3JlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBQb2xpY3lVc2U7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtNjQ2
LDggKzY1OSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAKICAgICAvLyBOb3RpZnkgdGhl
IGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2Uod2ViUGFnZSwgbV9mcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIHVzZXJEYXRhKTsKLSAgICBp
ZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICAobV9m
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipmdW5jdGlvbiko
UG9saWN5VXNlKTsKKyAgICBpZiAocG9saWN5ICE9IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblBh
c3NUaHJvdWdoKSB7CisgICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnBv
bGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShjb3JlUG9saWN5QWN0aW9uKHBvbGljeSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzcsOCArNjkwLDggQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQ
b2xpY3lGdW4KIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRs
ZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lD
bGllbnQoKS5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwg
YWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIHVzZXJEYXRhKTsKLSAgICBpZiAocG9s
aWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZSkgewotICAgICAgICAobV9mcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipmdW5jdGlvbikoUG9saWN5
VXNlKTsKKyAgICBpZiAocG9saWN5ICE9IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblBhc3NUaHJv
dWdoKSB7CisgICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnBvbGljeUNo
ZWNrZXIoKS0+KmZ1bmN0aW9uKShjb3JlUG9saWN5QWN0aW9uKHBvbGljeSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03MDcsOCArNzIwLDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5
RnUKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQ
b2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQo
KS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlv
bi5nZXQoKSwgcmVxdWVzdCwgdXNlckRhdGEpOwotICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQ
YWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+KmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIGlmIChw
b2xpY3kgIT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2gpIHsKKyAgICAgICAg
KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT4qZnVuY3Rp
b24pKGNvcmVQb2xpY3lBY3Rpb24ocG9saWN5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YzNkNmJiNzAwLi5iYjJlODA1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMDEgIE1pa2hhaWwgUG96ZG55
YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQnVu
ZGxlIGNsaWVudCBzaGFsbCBiZSBhYmxlIHRvIHByb3ZpZGUgJ0lnbm9yZScgcG9saWN5IGFjdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKSBpcyBub3cgdXNp
bmcgbmV3bHkgYWRkZWQKKyAgICAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uSWdub3JlIHBv
bGljeS4gCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTItMDktMzAgIFRhaWp1IFRzdWlr
aSAgPHR6aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGluZyBteXNl
bGYgYXMgYSBjb21taXR0ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggMTM4OWIyOC4u
ZDQ3NzRmNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMTMyMCw3ICsxMzIwLDcgQEAg
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUGFnZTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXS0IKIAogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkudGVzdFJ1bm5lcigpLT5pc1BvbGljeURlbGVnYXRlUGVybWlzc2l2ZSgpKQogICAgICAgICBy
ZXR1cm4gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlOwotICAgIHJldHVybiBXS0J1bmRsZVBh
Z2VQb2xpY3lBY3Rpb25QYXNzVGhyb3VnaDsKKyAgICByZXR1cm4gV0tCdW5kbGVQYWdlUG9saWN5
QWN0aW9uSWdub3JlOwogfQogCiBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYsIFdLVVJMUmVxdWVz
dFJlZiwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiopCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167283</attachid>
            <date>2012-10-05 01:51:52 -0700</date>
            <delta_ts>2012-10-09 04:35:18 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>bug95974_v5</filename>
            <type>text/plain</type>
            <size>12633</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDY5YjY0MzA0NjEzYjY4MzYwYTFmOGU3ZDAyYWJlNTMxNTFkZTY3ZjYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE9jdCA1IDExOjQ0OjA1IDIwMTIgKzAzMDAKCiAgICBidWc5NTk3NAoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZmQ2
OTQ4Li40NmU2MGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMDUgIE1pa2hhaWwg
UG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgW1dL
Ml1bV1RSXSBXZWJLaXRUZXN0UnVubmVyIFVJIHByb2Nlc3Mgc2hvdWxkIGJlIGF3YXJlIG9mIEN1
c3RvbSBQb2xpY3kgRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1OTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVW5za2lwcGVkIGZhc3QvbG9hZGVyL29ubG9hZC1wb2xpY3ktaWdub3JlLWZv
ci1mcmFtZS5odG1sIGZvciBXSzIgRUZMLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25z
OiBDaGFuZ2VkIGRlc2NyaXB0aW9uIGZvciBmYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9y
ZS1mb3ItZnJhbWUuaHRtbCBmYWlsdXJlLgorCiAyMDEyLTEwLTA0ICBLdW5paGlrbyBTYWthbW90
byAgPGtzYWthbW90b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgPGlucHV0PiBzaXplIGF0dHJp
YnV0ZSBzaG91bGQgdGhyb3cgSU5ERVhfU0laRV9FUlIgd2hlbiBzZXQgdG8gMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDJlYjFlZmUuLjQ0
ZGIyMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTI5LDYgKzI5LDggQEAKICMgUEFTU0lORyBURVNUUwogIy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KIAorZmFzdC9sb2FkZXIvb25sb2FkLXBvbGljeS1pZ25vcmUtZm9yLWZy
YW1lLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMg
VEVTVFMgRVhQRUNURUQgVE8gRkFJTAogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTNhZmQ2Ni4u
ZjBiOWEwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTU1MiwxMSArNTUyLDYgQEAgZmFzdC90ZXh0LWF1dG9zaXppbmcKIGluc3BlY3Rvci9nZW9sb2Nh
dGlvbi1lcnJvci5odG1sCiBpbnNwZWN0b3IvZ2VvbG9jYXRpb24tc3VjY2Vzcy5odG1sCiAKLSMg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5IG1ldGhvZHMgc2hvdWxk
IGNvbnNpZGVyIAotIyAnV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2gnIHBvbGlj
eSBhY3Rpb24gCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk3
NAotZmFzdC9sb2FkZXIvb25sb2FkLXBvbGljeS1pZ25vcmUtZm9yLWZyYW1lLmh0bWwKLQogIyMj
IEVORCBPRiAoMSkgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRoIGJ1ZyByZXBvcnRzCiAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTgxOSw2ICs4MTQsMTAgQEAg
aHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCiAjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgdGVzdFJ1bm5lci5kaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMKIGh0
dHAvdGVzdHMvbG9hZGluZy9kZWxldGVkLWhvc3QtaW4tcmVzb3VyY2UtbG9hZC1kZWxlZ2F0ZS1j
YWxsYmFjay5odG1sCiAKKyMgQ3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSBzaG91bGQgYmUgY29uc2lk
ZXJlZCBpbiBXVFIgVUkgcHJvY2VzcyB3aGlsZQorIyBtYWtpbmcgbmF2aWdhdGlvbiBwb2xpY3kg
ZGVjaXNpb24gKFNlZSBpbXBsZW1lbnRhdGlvbiBmb3IgV1RSIEVGTCkuCitmYXN0L2xvYWRlci9v
bmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbAorCiAjIyMgRU5EIE9GICgyKSBDbGFz
c2lmaWVkIGZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMgKHlldCkKICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYxYzliY2IuLjE0ZDk3MmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAx
Mi0xMC0wNSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNv
bT4KKworICAgICAgICBbV0syXVtXVFJdIFdlYktpdFRlc3RSdW5uZXIgVUkgcHJvY2VzcyBzaG91
bGQgYmUgYXdhcmUgb2YgQ3VzdG9tIFBvbGljeSBEZWxlZ2F0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVFIgYnVuZGxlIGNsaWVudCBub3RpZmllcyBV
SSBwcm9jZXNzIGFib3V0IEN1c3RvbSBQb2xpY3kgRGVsZWdhdGUgdmlhIG5ld2x5IGFkZGVkIG1l
c3NhZ2UsCisgICAgICAgIHNvIHRoYXQgVGVzdENvbnRyb2xsZXIgaXMgYXdhcmUgb2Ygd2hldGhl
ciBDdXN0b20gUG9saWN5IERlbGVnYXRlIGFzIGVuYWJsZWQgYW5kCisgICAgICAgIHBlcm1pc3Np
dmUuIFRoaXMgZGF0YSBpcyB1c2VkIHRoZW4gaW4gUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCB0byB1
bnNraXAKKyAgICAgICAgZmFzdC9sb2FkZXIvb25sb2FkLXBvbGljeS1pZ25vcmUtZm9yLWZyYW1l
Lmh0bWwuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldEN1c3RvbVBv
bGljeURlbGVnYXRlKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OlRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOgorICAgICAgICAo
V1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgIChUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwb2xp
Y3lEZWxlZ2F0ZUVuYWJsZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cG9saWN5
RGVsZWdhdGVQZXJtaXNzaXZlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9Q
bGF0Zm9ybVdlYlZpZXdFZmwuY3BwOgorICAgICAgICAoV1RSOjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2Vi
Vmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKwogMjAxMi0xMC0wNCAgS3l1bmdUYWUgS2ltICA8a3Rm
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEZpeCBkZXN0aW5hdGlvbiBw
YXRoIHdoZW4gZG93bmxvYWQgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgb24gdGhlIE1pbmlicm93
c2VyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIyNmU1N2EuLjBkMWQ0OGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC00MjgsNCArNDI4LDIxIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihXS1N0cmluZ1JlZiBlcnJvCiAgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2Fn
ZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJv
b2wgZW5hYmxlZCwgYm9vbCBwZXJtaXNzaXZlKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUiKSk7CisKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3Jl
YXRlKCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVuYWJsZWRLZXlXSyhBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZW5hYmxlZCIpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS0Jvb2xlYW5SZWY+IGVuYWJsZWRXSyhBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUo
ZW5hYmxlZCkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGVu
YWJsZWRLZXlXSy5nZXQoKSwgZW5hYmxlZFdLLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBwZXJtaXNzaXZlS2V5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInBlcm1pc3NpdmUiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBw
ZXJtaXNzaXZlV0soQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHBlcm1pc3NpdmUpKTsKKyAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBwZXJtaXNzaXZlS2V5V0suZ2V0
KCksIHBlcm1pc3NpdmVXSy5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVu
ZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCA0NGJiY2MxLi44NzI0NzI3IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCkBAIC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3Vy
YWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92aWRl
c0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVz
SGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVk
KTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihX
S1N0cmluZ1JlZiBlcnJvck1lc3NhZ2UpOwogCisgICAgLy8gUG9saWN5IGRlbGVnYXRlLgorICAg
IHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBlcm1pc3Np
dmUpOwogcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZSgpOwogICAgIH5JbmplY3RlZEJ1bmRs
ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggZGMyZjJlMi4uZGQ4NjhkMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMjMsMTEg
KzEyMywxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OmR1bXBBc1RleHQoYm9vbCBkdW1wUGl4ZWxzKQog
ICAgIG1fZHVtcFBpeGVscyA9IGR1bXBQaXhlbHM7CiB9CiAKLS8vIEZJWE1FOiBOZWVkcyBhIGZ1
bGwgaW1wbGVtZW50YXRpb24gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjU0Ngogdm9pZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29s
IGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBtX3BvbGljeURlbGVnYXRlRW5hYmxl
ZCA9IGVuYWJsZWQ7CiAgICAgbV9wb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUgPSBwZXJtaXNzaXZl
OworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnNldEN1c3RvbVBvbGljeURlbGVnYXRl
KGVuYWJsZWQsIHBlcm1pc3NpdmUpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDNmNmY5ZjEuLjUxMWJlOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC05Myw2ICs5Myw4IEBAIFRlc3RDb250cm9sbGVyOjpUZXN0Q29udHJvbGxl
cihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICwgbV9iZWZvcmVVbmxvYWRSZXR1
cm5WYWx1ZSh0cnVlKQogICAgICwgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldChmYWxzZSkK
ICAgICAsIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25BbGxvd2VkKGZhbHNlKQorICAgICwgbV9w
b2xpY3lEZWxlZ2F0ZUVuYWJsZWQoZmFsc2UpCisgICAgLCBtX3BvbGljeURlbGVnYXRlUGVybWlz
c2l2ZShmYWxzZSkKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICAsIG1fZXZlbnRTZW5kZXJQcm94eShuZXcgRXZl
bnRTZW5kZXJQcm94eSh0aGlzKSkKICNlbmRpZgpAQCAtNTI4LDYgKzUzMCw5IEBAIGJvb2wgVGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIG1faXNHZW9s
b2NhdGlvblBlcm1pc3Npb25TZXQgPSBmYWxzZTsKICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNz
aW9uQWxsb3dlZCA9IGZhbHNlOwogCisgICAgLy8gUmVzZXQgQ3VzdG9tIFBvbGljeSBEZWxlZ2F0
ZS4KKyAgICBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShmYWxzZSwgZmFsc2UpOworCiAgICAgLy8g
UmVzZXQgbWFpbiBwYWdlIGJhY2sgdG8gYWJvdXQ6YmxhbmsKICAgICBtX2RvbmVSZXNldHRpbmcg
PSBmYWxzZTsKIApAQCAtMTAyMiw2ICsxMDI3LDEyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Omhh
bmRsZUdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tHZW9sb2NhdGlvblBlcm1pc3Npb25S
CiAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdElmUG9zc2li
bGUoKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUo
Ym9vbCBlbmFibGVkLCBib29sIHBlcm1pc3NpdmUpCit7CisgICAgbV9wb2xpY3lEZWxlZ2F0ZUVu
YWJsZWQgPSBlbmFibGVkOworICAgIG1fcG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlID0gcGVybWlz
c2l2ZTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdElmUG9zc2libGUoKQogewogICAgIGlmICghbV9pc0dlb2xvY2F0
aW9uUGVybWlzc2lvblNldCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApp
bmRleCBkNzExMWM1Li45OTc3YzI2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCkBAIC03Myw2ICs3MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV0tTdHJpbmdSZWYgZXJyb3JNZXNzYWdlKTsK
ICAgICB2b2lkIGhhbmRsZUdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UmVmKTsKIAorICAgIC8vIFBvbGljeSBkZWxlZ2F0ZS4KKyAgICB2
b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgZW5hYmxlZCwgYm9vbCBwZXJtaXNzaXZl
KTsKKyAgICBib29sIHBvbGljeURlbGVnYXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9s
aWN5RGVsZWdhdGVFbmFibGVkOyB9CisgICAgYm9vbCBwb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUo
KSBjb25zdCB7IHJldHVybiBtX3BvbGljeURlbGVnYXRlUGVybWlzc2l2ZTsgfQorCiAgICAgYm9v
bCByZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKIHByaXZhdGU6CkBAIC0xNTgsNiAr
MTYzLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7
CiAgICAgYm9vbCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uQWxsb3dlZDsKIAorICAgIGJvb2wg
bV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQ7CisgICAgYm9vbCBtX3BvbGljeURlbGVnYXRlUGVybWlz
c2l2ZTsKKwogICAgIEV2ZW50U2VuZGVyUHJveHkqIG1fZXZlbnRTZW5kZXJQcm94eTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMTRiYTRkMy4u
YTYyNTRkOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTQxNCw2ICs0MTQsMjIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICAgICAg
V0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGlj
dGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOworCisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBlbmFibGVkS2V5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ImVuYWJsZWQiKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBlbmFibGVkV0sgPSBzdGF0aWNfY2Fz
dDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCBlbmFibGVkS2V5V0suZ2V0KCkpKTsKKyAgICAgICAgYm9vbCBlbmFibGVkID0gV0tC
b29sZWFuR2V0VmFsdWUoZW5hYmxlZFdLKTsKKworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gcGVybWlzc2l2ZUtleVdLKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJwZXJtaXNzaXZlIikpOworICAgICAgICBXS0Jvb2xlYW5SZWYgcGVybWlzc2l2ZVdLID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgcGVybWlzc2l2ZUtleVdLLmdldCgpKSk7CisgICAgICAgIGJvb2wg
cGVybWlzc2l2ZSA9IFdLQm9vbGVhbkdldFZhbHVlKHBlcm1pc3NpdmVXSyk7CisKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGVuYWJsZWQs
IHBlcm1pc3NpdmUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Bs
YXRmb3JtV2ViVmlld0VmbC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9y
bVdlYlZpZXdFZmwuY3BwCmluZGV4IGY0MzAwZGMuLmU4MDc2YzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcApAQCAtMTksNiArMTks
NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3Lmgi
CisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAj
aW5jbHVkZSAiV2ViS2l0Mi9XS0FQSUNhc3QuaCIKQEAgLTQwLDExICs0MSwyMSBAQCBzdGF0aWMg
RWNvcmVfRXZhcyogaW5pdEVjb3JlRXZhcygpCiAgICAgcmV0dXJuIGVjb3JlRXZhczsKIH0KIAor
c3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih2b2lkKiwgRXZhc19P
YmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uKiBwb2xpY3lEZWNpc2lvbiA9IHN0YXRpY19jYXN0PEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbio+KGV2ZW50SW5mbyk7CisgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uKTsKKwor
ICAgIGlmIChUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucG9saWN5RGVsZWdhdGVFbmFibGVkKCkg
JiYgIVRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5wb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUoKSkK
KyAgICAgICAgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3JlamVjdChwb2xpY3lEZWNp
c2lvbik7Cit9CisKIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCiB7CiAgICAgbV93aW5kb3cgPSBp
bml0RWNvcmVFdmFzKCk7CiAgICAgRXZhcyogZXZhcyA9IGVjb3JlX2V2YXNfZ2V0KG1fd2luZG93
KTsKICAgICBtX3ZpZXcgPSB0b0ltcGwoV0tWaWV3Q3JlYXRlKGV2YXMsIGNvbnRleHQsIHBhZ2VH
cm91cCkpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3ZpZXcsICJwb2xp
Y3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24s
IDApOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fdmlldywgVEhFTUVfRElSIi9kZWZhdWx0
LmVkaiIpOwogICAgIG1fd2luZG93SXNLZXkgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167748</attachid>
            <date>2012-10-09 06:29:06 -0700</date>
            <delta_ts>2012-10-10 15:11:28 -0700</delta_ts>
            <desc>patch v6</desc>
            <filename>bug95974_v6</filename>
            <type>text/plain</type>
            <size>12014</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDFiZmNiYmY5YzA3NDhlZWMzZGJjNDQ3ZTM3MjgyM2M2M2Y1ZTA5MGIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIE9jdCA5IDE2OjIwOjI1IDIwMTIgKzAzMDAKCiAgICBidWc5NTk3NAoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTBi
MDcyLi5kOGZjMjY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMDkgIE1pa2hhaWwg
UG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgW1dL
Ml1bV1RSXSBXZWJLaXRUZXN0UnVubmVyIFVJIHByb2Nlc3Mgc2hvdWxkIGJlIGF3YXJlIG9mIEN1
c3RvbSBQb2xpY3kgRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1OTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVW5za2lwcGVkIGZhc3QvbG9hZGVyL29ubG9hZC1wb2xpY3ktaWdub3JlLWZv
ci1mcmFtZS5odG1sIGZvciBXSzIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAxMi0xMC0wOSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFlbC5r
dWJvLmRhLmNvc3RhQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBNYXJrIGEgZmV3IHRlc3Rz
IHNraXBwZWQgaW4gcjEzMDc0NSBhcyBmYWlsdXJlcyBpbnN0ZWFkIG9mIHRpbWVvdXRzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlZTRjMzQ2Li5jZmEw
Y2Q0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTUy
LDExICs1NTIsNiBAQCBmYXN0L3RleHQtYXV0b3NpemluZwogaW5zcGVjdG9yL2dlb2xvY2F0aW9u
LWVycm9yLmh0bWwKIGluc3BlY3Rvci9nZW9sb2NhdGlvbi1zdWNjZXNzLmh0bWwKIAotIyBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3kgbWV0aG9kcyBzaG91bGQgY29u
c2lkZXIgCi0jICdXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25QYXNzVGhyb3VnaCcgcG9saWN5IGFj
dGlvbiAKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTc0Ci1m
YXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbAotCiAjIyMgRU5E
IE9GICgxKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGggYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdlN2NmOTYuLjI1NmY1ZjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxMi0xMC0wOSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtXVFJdIFdlYktpdFRlc3RSdW5uZXIgVUkgcHJvY2VzcyBz
aG91bGQgYmUgYXdhcmUgb2YgQ3VzdG9tIFBvbGljeSBEZWxlZ2F0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBUZXN0Q29udHJvbGxlcjo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigpIGZ1bmN0aW9uIGFzIGEgJ2RlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24nIFdLUGFnZVBvbGljeUNsaWVudCBjYWxsYmFjaworICAgICAg
ICBmb3IgV1RSIFVJIHByb2Nlc3MuIFdUUiBidW5kbGUgY2xpZW50IG5vdGlmaWVzIFVJIHByb2Nl
c3MgYWJvdXQgQ3VzdG9tIFBvbGljeSBEZWxlZ2F0ZSB2aWEgbmV3bHkgYWRkZWQgbWVzc2FnZSwK
KyAgICAgICAgc28gdGhhdCBUZXN0Q29udHJvbGxlciBpcyBhd2FyZSBvZiB3aGV0aGVyIEN1c3Rv
bSBQb2xpY3kgRGVsZWdhdGUgYXMgZW5hYmxlZCBhbmQKKyAgICAgICAgcGVybWlzc2l2ZS4gVGhp
cyBkYXRhIGlzIHVzZWQgdGhlbiBpbiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbiBmb3IgbWFraW5nIHBvbGljeSBkZWNpc2lvbi4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOgorICAgICAg
ICAoV1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChUZXN0Q29udHJvbGxlcik6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisK
IDIwMTItMTAtMDkgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGViYTBk
Zjc5Li4yZjM1YzUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDI5LDQgKzQyOSwyMSBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3IoV0tTdHJpbmdSZWYgZXJybwogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1l
c3NhZ2VOYW1lLmdldCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxl
OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEN1c3RvbVBvbGljeURlbGVnYXRlIikpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRv
cHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBlbmFibGVkS2V5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImVuYWJsZWQiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBlbmFibGVk
V0soQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKGVuYWJsZWQpKTsKKyAgICBXS0RpY3Rpb25hcnlB
ZGRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBlbmFibGVkS2V5V0suZ2V0KCksIGVuYWJsZWRXSy5n
ZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGVybWlzc2l2ZUtleVdLKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwZXJtaXNzaXZlIikpOworICAg
IFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gcGVybWlzc2l2ZVdLKEFkb3B0V0ssIFdLQm9vbGVh
bkNyZWF0ZShwZXJtaXNzaXZlKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShtZXNzYWdlQm9k
eS5nZXQoKSwgcGVybWlzc2l2ZUtleVdLLmdldCgpLCBwZXJtaXNzaXZlV0suZ2V0KCkpOworCisg
ICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXgg
NDRiYmNjMS4uODllYzEwYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtOTUsNiArOTUsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBk
b3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29s
IHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV0tTdHJpbmdSZWYgZXJyb3JNZXNzYWdlKTsKIAor
ICAgIC8vIFBvbGljeSBkZWxlZ2F0ZS4KKyAgICB2b2lkIHNldEN1c3RvbVBvbGljeURlbGVnYXRl
KGJvb2wgZW5hYmxlZCwgYm9vbCBwZXJtaXNzaXZlKTsKKwogcHJpdmF0ZToKICAgICBJbmplY3Rl
ZEJ1bmRsZSgpOwogICAgIH5JbmplY3RlZEJ1bmRsZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMGZkYzM3NC4u
YTcwMDc2MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMjMsMTEgKzEyMywxMiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmR1bXBBc1RleHQoYm9vbCBkdW1wUGl4ZWxzKQogICAgIG1fZHVtcFBpeGVscyA9IGR1bXBQaXhl
bHM7CiB9CiAKLS8vIEZJWE1FOiBOZWVkcyBhIGZ1bGwgaW1wbGVtZW50YXRpb24gc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU0Ngogdm9pZCBUZXN0UnVubmVy
OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkK
IHsKICAgICBtX3BvbGljeURlbGVnYXRlRW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgbV9wb2xpY3lE
ZWxlZ2F0ZVBlcm1pc3NpdmUgPSBwZXJtaXNzaXZlOworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGVuYWJsZWQsIHBlcm1pc3NpdmUpOwogfQog
CiB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDQyYjgxMmUuLmI0NGU0YmIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05Myw2ICs5Myw4IEBA
IFRlc3RDb250cm9sbGVyOjpUZXN0Q29udHJvbGxlcihpbnQgYXJnYywgY29uc3QgY2hhciogYXJn
dltdKQogICAgICwgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSh0cnVlKQogICAgICwgbV9pc0dl
b2xvY2F0aW9uUGVybWlzc2lvblNldChmYWxzZSkKICAgICAsIG1faXNHZW9sb2NhdGlvblBlcm1p
c3Npb25BbGxvd2VkKGZhbHNlKQorICAgICwgbV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQoZmFsc2Up
CisgICAgLCBtX3BvbGljeURlbGVnYXRlUGVybWlzc2l2ZShmYWxzZSkKICNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAg
ICAsIG1fZXZlbnRTZW5kZXJQcm94eShuZXcgRXZlbnRTZW5kZXJQcm94eSh0aGlzKSkKICNlbmRp
ZgpAQCAtNDMyLDYgKzQzNCwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgIDAsIC8vIGRpZExheW91dAogICAg
IH07CiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCks
ICZwYWdlTG9hZGVyQ2xpZW50KTsKKworICAgIFdLUGFnZVBvbGljeUNsaWVudCBwYWdlUG9saWN5
Q2xpZW50ID0geworICAgICAgICBrV0tQYWdlUG9saWN5Q2xpZW50Q3VycmVudFZlcnNpb24sCisg
ICAgICAgIHRoaXMsCisgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbgorICAgICAgICAwLCAv
LyBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZQorICAgICAgICAwLCAvLyB1bmFibGVUb0ltcGxlbWVu
dFBvbGljeQorICAgIH07CisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChtX21haW5XZWJW
aWV3LT5wYWdlKCksICZwYWdlUG9saWN5Q2xpZW50KTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxl
cjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygpCkBAIC01MTUsNiArNTI3LDkgQEAgYm9v
bCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgbV9p
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9IGZhbHNlOwogICAgIG1faXNHZW9sb2NhdGlvblBl
cm1pc3Npb25BbGxvd2VkID0gZmFsc2U7CiAKKyAgICAvLyBSZXNldCBDdXN0b20gUG9saWN5IERl
bGVnYXRlLgorICAgIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKGZhbHNlLCBmYWxzZSk7CisKICAg
ICAvLyBSZXNldCBtYWluIHBhZ2UgYmFjayB0byBhYm91dDpibGFuawogICAgIG1fZG9uZVJlc2V0
dGluZyA9IGZhbHNlOwogCkBAIC0xMDA5LDYgKzEwMjQsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6aGFuZGxlR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS0dlb2xvY2F0aW9uUGVybWlz
c2lvblIKICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0SWZQ
b3NzaWJsZSgpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxl
Z2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKK3sKKyAgICBtX3BvbGljeURlbGVn
YXRlRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgbV9wb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUgPSBw
ZXJtaXNzaXZlOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0SWZQb3NzaWJsZSgpCiB7CiAgICAgaWYgKCFtX2lzR2Vv
bG9jYXRpb25QZXJtaXNzaW9uU2V0KQpAQCAtMTAzNCw0ICsxMDU1LDE5IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tTCiAgICAgV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdEFsbG93KHJl
cXVlc3QpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBX
S0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obGlz
dGVuZXIpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3sKKyAgICBpZiAo
bV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQgJiYgIW1fcG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlKSB7
CisgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9yZShsaXN0ZW5lcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAppbmRleCBkNzExMWM1Li5mZDY1YjdiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihXS1N0cmluZ1JlZiBlcnJvck1l
c3NhZ2UpOwogICAgIHZvaWQgaGFuZGxlR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYpOwogCisgICAgLy8gUG9saWN5IGRlbGVnYXRl
LgorICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBl
cm1pc3NpdmUpOworCiAgICAgYm9vbCByZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAK
IHByaXZhdGU6CkBAIC0xMTAsNiArMTEzLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBX
S1NlY3VyaXR5T3JpZ2luUmVmLCBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBj
b25zdCB2b2lkKik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RSZWYpOwogCisgICAgLy8gV0tQYWdlUG9saWN5Q2xpZW50CisgICAg
c3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVu
dE1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZik7CisKICAgICBzdGF0aWMgV0tQYWdl
UmVmIGNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYgb2xkUGFnZSwgV0tVUkxSZXF1ZXN0UmVmLCBX
S0RpY3Rpb25hcnlSZWYsIFdLRXZlbnRNb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgY29u
c3Qgdm9pZCopOwogCiAgICAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKQEAgLTE1OCw2ICsxNjUsOSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldDsKICAgICBib29sIG1faXNHZW9sb2NhdGlvblBl
cm1pc3Npb25BbGxvd2VkOwogCisgICAgYm9vbCBtX3BvbGljeURlbGVnYXRlRW5hYmxlZDsKKyAg
ICBib29sIG1fcG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlOworCiAgICAgRXZlbnRTZW5kZXJQcm94
eSogbV9ldmVudFNlbmRlclByb3h5OwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCAxNGJhNGQzLi5hNjI1NGQ5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNDE0LDYgKzQxNCwyMiBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRDdXN0b21Qb2xpY3lEZWxlZ2F0
ZSIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlE
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVuYWJsZWRLZXlXSyhBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZW5hYmxlZCIpKTsKKyAgICAgICAgV0tCb29s
ZWFuUmVmIGVuYWJsZWRXSyA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGVuYWJsZWRLZXlXSy5nZXQoKSkp
OworICAgICAgICBib29sIGVuYWJsZWQgPSBXS0Jvb2xlYW5HZXRWYWx1ZShlbmFibGVkV0spOwor
CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwZXJtaXNzaXZlS2V5V0soQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBlcm1pc3NpdmUiKSk7CisgICAgICAg
IFdLQm9vbGVhblJlZiBwZXJtaXNzaXZlV0sgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBwZXJtaXNzaXZl
S2V5V0suZ2V0KCkpKTsKKyAgICAgICAgYm9vbCBwZXJtaXNzaXZlID0gV0tCb29sZWFuR2V0VmFs
dWUocGVybWlzc2l2ZVdLKTsKKworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuc2V0
Q3VzdG9tUG9saWN5RGVsZWdhdGUoZW5hYmxlZCwgcGVybWlzc2l2ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>