<?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>99355</bug_id>
          
          <creation_ts>2012-10-15 12:47:17 -0700</creation_ts>
          <short_desc>plugins: Allow a plugin to dictate whether it can process drag or not</short_desc>
          <delta_ts>2012-10-17 12:00:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sadrul Habib Chowdhury">sadrul</reporter>
          <assigned_to name="Sadrul Habib Chowdhury">sadrul</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>mjs</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742314</commentid>
    <comment_count>0</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 12:47:17 -0700</bug_when>
    <thetext>plugins: Allow a plugin to dictate whether it can process drag or not</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742319</commentid>
    <comment_count>1</comment_count>
      <attachid>168763</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 12:48:44 -0700</bug_when>
    <thetext>Created attachment 168763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742328</commentid>
    <comment_count>2</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 12:54:51 -0700</bug_when>
    <thetext>Hi! I would love to add a test for this that works for all ports. However, it doesn&apos;t look like there is a way of testing PluginViewBase interface? So I have just updated the chromium test.

Please add additional reviewers as you see fit. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742367</commentid>
    <comment_count>3</comment_count>
      <attachid>168763</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-15 13:34:47 -0700</bug_when>
    <thetext>Comment on attachment 168763
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        Need the bug URL (OOPS!).

Need the bug URL (other ChangeLog files too).

&gt; Source/WebCore/page/DragController.cpp:557
&gt; +    if (result.innerNonSharedNode()-&gt;isPluginElement()) {
&gt; +        HTMLPlugInElement* plugin = static_cast&lt;HTMLPlugInElement*&gt;(result.innerNonSharedNode());

It seems a bit weird that DragController needs to handle plugin elements specially.  I guess DragController::operationForLoad also special cases plugins, so maybe that&apos;s not a big deal.

&gt; Source/WebCore/page/DragController.cpp:560
&gt; +        if (!plugin-&gt;canProcessDrag(*dragData))
&gt; +            return false;
&gt; +    } else if (!result.innerNonSharedNode()-&gt;rendererIsEditable())

Doesn&apos;t this change the default behavior? If canProcessDrag returns the default value, we&apos;ll never get to check the contentEditable case.  I.e., pages that currently have contentEditable on an &lt;embed&gt; will no longer process drags.

&gt; LayoutTests/platform/chromium/plugins/drag-events.html:12
&gt; -&lt;embed id=&quot;plugin&quot; type=&quot;application/x-webkit-test-webplugin&quot; contentEditable&gt;&lt;/embed&gt;
&gt; +&lt;embed id=&quot;plugin&quot; type=&quot;application/x-webkit-test-webplugin&quot;&gt;&lt;/embed&gt;

This looks like we&apos;re replacing an old test with a new test.  Can we test both (editable + !canProcessDrag and !editable + canProcessDrag)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742450</commentid>
    <comment_count>4</comment_count>
      <attachid>168783</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 14:25:15 -0700</bug_when>
    <thetext>Created attachment 168783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742453</commentid>
    <comment_count>5</comment_count>
      <attachid>168763</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 14:26:24 -0700</bug_when>
    <thetext>Comment on attachment 168763
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:4
&gt;&gt; +        Need the bug URL (OOPS!).
&gt; 
&gt; Need the bug URL (other ChangeLog files too).

Whoops. Done. (sorry, still getting used to webkit-patch)

&gt;&gt; Source/WebCore/page/DragController.cpp:560
&gt;&gt; +    } else if (!result.innerNonSharedNode()-&gt;rendererIsEditable())
&gt; 
&gt; Doesn&apos;t this change the default behavior? If canProcessDrag returns the default value, we&apos;ll never get to check the contentEditable case.  I.e., pages that currently have contentEditable on an &lt;embed&gt; will no longer process drags.

Fixed.

&gt;&gt; LayoutTests/platform/chromium/plugins/drag-events.html:12
&gt;&gt; +&lt;embed id=&quot;plugin&quot; type=&quot;application/x-webkit-test-webplugin&quot;&gt;&lt;/embed&gt;
&gt; 
&gt; This looks like we&apos;re replacing an old test with a new test.  Can we test both (editable + !canProcessDrag and !editable + canProcessDrag)?

I have updated the test for this.

Note that chromium plugins never used to receive drag events at all until very recently (~last week), even when marked contentEditable. This goes back to that behaviour, and this is unlikely to break any existing plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742488</commentid>
    <comment_count>6</comment_count>
      <attachid>168783</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-15 14:59:29 -0700</bug_when>
    <thetext>Comment on attachment 168783
Patch

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

&gt; Note that chromium plugins never used to receive drag events at all until very recently (~last week), even when marked contentEditable. This goes back to that behaviour, and this is unlikely to break any existing plugins.

I see, the same is true of Safari?  I.e., we&apos;re going back to the previous behavior of plugins not receiving drag events, even if contentEditable.

&gt; Source/WebCore/html/HTMLPlugInElement.cpp:78
&gt; +bool HTMLPlugInElement::canProcessDrag(const DragData&amp; dragData) const
&gt; +{
&gt; +    const PluginViewBase* plugin = pluginWidget() &amp;&amp; pluginWidget()-&gt;isPluginViewBase() ? static_cast&lt;const PluginViewBase*&gt;(pluginWidget()) : 0;
&gt; +    return plugin ? plugin-&gt;canProcessDrag(dragData) : false;

Why do we pass in dragData here?  It doesn&apos;t look like we ever use it.

&gt; Source/WebCore/page/DragController.cpp:559
&gt; +        if (!plugin-&gt;canProcessDrag(*dragData) &amp;&amp; !result.innerNonSharedNode()-&gt;rendererIsEditable())
&gt; +            return false;

From your description above, it sounds like we want to remove the rendererIsEditable() check here, right?  That is, contentEditable shouldn&apos;t influence whether or not drag events are sent to the plugin.

&gt; LayoutTests/platform/chromium/plugins/drag-events.html:27
&gt; +    var positionX = plugin.offsetLeft + 10;
&gt; +    var positionY = plugin.offsetTop + 10;

Can we target the middle of the plugin rather than hard code the offset of 10?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742498</commentid>
    <comment_count>7</comment_count>
      <attachid>168790</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 15:13:17 -0700</bug_when>
    <thetext>Created attachment 168790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742500</commentid>
    <comment_count>8</comment_count>
      <attachid>168783</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 15:14:17 -0700</bug_when>
    <thetext>Comment on attachment 168783
Patch

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

&gt;&gt; Source/WebCore/html/HTMLPlugInElement.cpp:78
&gt;&gt; +    return plugin ? plugin-&gt;canProcessDrag(dragData) : false;
&gt; 
&gt; Why do we pass in dragData here?  It doesn&apos;t look like we ever use it.

I was trying to future-proof this in case a plugin might want to conditionally accept/reject drags. But there&apos;s no use for it now. I have removed it.

&gt;&gt; Source/WebCore/page/DragController.cpp:559
&gt;&gt; +            return false;
&gt; 
&gt; From your description above, it sounds like we want to remove the rendererIsEditable() check here, right?  That is, contentEditable shouldn&apos;t influence whether or not drag events are sent to the plugin.

contentEditable plugins did not receive drag events in chromium. However, this may not have been the case for other ports. So with this change, drag interaction for such plugins remains the same on these ports. For chromium-port, a plugin can now choose to accept drag events.

&gt;&gt; LayoutTests/platform/chromium/plugins/drag-events.html:27
&gt;&gt; +    var positionY = plugin.offsetTop + 10;
&gt; 
&gt; Can we target the middle of the plugin rather than hard code the offset of 10?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742515</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-15 15:24:29 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742530</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-15 15:51:05 -0700</bug_when>
    <thetext>This change seems fine to me.  I&apos;m not 100% sure about the modifications to HTMLPluginElement, but one of the API reviewers can verify whether that&apos;s OK or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742535</commentid>
    <comment_count>11</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-15 15:54:12 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; This change seems fine to me.  I&apos;m not 100% sure about the modifications to HTMLPluginElement, but one of the API reviewers can verify whether that&apos;s OK or not.

Thanks for the quick reviews! I will wait for review from API reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742771</commentid>
    <comment_count>12</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-15 21:03:27 -0700</bug_when>
    <thetext>Is this a change we should be making in other ports too? Is it worthy of a feature announcement maybe? http://www.webkit.org/coding/adding-features.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743388</commentid>
    <comment_count>13</comment_count>
      <attachid>168790</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-16 12:01:42 -0700</bug_when>
    <thetext>Comment on attachment 168790
Patch

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

&gt; Source/WebKit/chromium/public/WebPlugin.h:73
&gt; +    virtual bool canProcessDrag() const { return false; }

API change LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743392</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-16 12:04:57 -0700</bug_when>
    <thetext>&gt; Is this a change we should be making in other ports too?

Are other ports interested in elaborating their plugin support?  My understanding is that other ports are only interested in supporting the existing plugin APIs.

&gt; Is it worthy of a feature announcement maybe  http://www.webkit.org/coding/adding-features.html

I wouldn&apos;t think so.  This isn&apos;t functionality exposed to the web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743841</commentid>
    <comment_count>15</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-16 21:54:25 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Is this a change we should be making in other ports too?
&gt; 
&gt; Are other ports interested in elaborating their plugin support?  My understanding is that other ports are only interested in supporting the existing plugin APIs.

I don&apos;t actually understand the nature or purpose of this change (the Description is not very explanatory) so it&apos;s hard to say.

I had the vague impression that it was already possible to Drag &amp; Drop to and from plugins such as Flash or Java (e.g. demo here &lt;http://www.hellokeita.in/xp/DragDrop/&gt;) so I was wondering if this is a performance optimization for non-drag-supporting plugins, or if my understanding of the state of plugin DnD was wrong.

If it&apos;s actually something totally specific to Pepper (which maybe is what you&apos;re implying) then it probably would not be of interest to other ports, but that wasn&apos;t clear from the bug or the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743847</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-16 22:06:27 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; &gt; Is this a change we should be making in other ports too?
&gt; &gt; 
&gt; &gt; Are other ports interested in elaborating their plugin support?  My understanding is that other ports are only interested in supporting the existing plugin APIs.
&gt; 
&gt; I don&apos;t actually understand the nature or purpose of this change (the Description is not very explanatory) so it&apos;s hard to say.

That&apos;s a good point.  @sadrul, would you be willing to add more details to the ChangeLog about the nature and purpose of this change?

&gt; I had the vague impression that it was already possible to Drag &amp; Drop to and from plugins such as Flash or Java (e.g. demo here &lt;http://www.hellokeita.in/xp/DragDrop/&gt;) so I was wondering if this is a performance optimization for non-drag-supporting plugins, or if my understanding of the state of plugin DnD was wrong.

I&apos;m not super familiar with NPAPI, but I suspect that these plugins talk directly to the OS to handle drag and drop rather than going through an API that can be properly sandboxed.

&gt; If it&apos;s actually something totally specific to Pepper (which maybe is what you&apos;re implying) then it probably would not be of interest to other ports, but that wasn&apos;t clear from the bug or the patch.

The overarching context here is that sadrul is creating a plugin, called the BrowserPlugin, that re-embeds WebKit as seamlessly as possible.  If you&apos;re familiar with Chrome Frame, you can think of it as Chrome Frame for Chrome as opposed to IE.

Part of this work involves elaborating the plugin API to fill in some missing details.  For example, a previous patch improved the focus traversal so that the plugin could participate in focus traversal more like an iframe than a single monolithic blob.

BrowserPlugin happens to be a PPAPI plugin, but it would make sense to add similar enhancements to NPAPI if you were interested in improving NPAPI.  My understanding, however, is that most WebKit contributors have little interest in elaborating NPAPI.

It&apos;s possible that we&apos;ll expose these APIs to other plugin authors in the future, but at the moment, we&apos;re just using them internally in BrowserPlugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743900</commentid>
    <comment_count>17</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-16 23:33:01 -0700</bug_when>
    <thetext>(In reply to comment #16)

&gt; 
&gt; &gt; I had the vague impression that it was already possible to Drag &amp; Drop to and from plugins such as Flash or Java (e.g. demo here &lt;http://www.hellokeita.in/xp/DragDrop/&gt;) so I was wondering if this is a performance optimization for non-drag-supporting plugins, or if my understanding of the state of plugin DnD was wrong.
&gt; 
&gt; I&apos;m not super familiar with NPAPI, but I suspect that these plugins talk directly to the OS to handle drag and drop rather than going through an API that can be properly sandboxed.

Good point, that is certainly a possibility.

&gt; 
&gt; &gt; If it&apos;s actually something totally specific to Pepper (which maybe is what you&apos;re implying) then it probably would not be of interest to other ports, but that wasn&apos;t clear from the bug or the patch.
&gt; 
&gt; The overarching context here is that sadrul is creating a plugin, called the BrowserPlugin, that re-embeds WebKit as seamlessly as possible.  If you&apos;re familiar with Chrome Frame, you can think of it as Chrome Frame for Chrome as opposed to IE.
&gt; 
&gt; Part of this work involves elaborating the plugin API to fill in some missing details.  For example, a previous patch improved the focus traversal so that the plugin could participate in focus traversal more like an iframe than a single monolithic blob.

Thanks for the context!

&gt; 
&gt; BrowserPlugin happens to be a PPAPI plugin, but it would make sense to add similar enhancements to NPAPI if you were interested in improving NPAPI.  My understanding, however, is that most WebKit contributors have little interest in elaborating NPAPI.
&gt; 
&gt; It&apos;s possible that we&apos;ll expose these APIs to other plugin authors in the future, but at the moment, we&apos;re just using them internally in BrowserPlugin.

It might be interesting for someone interested in NPAPI to propose something to plugin-futures in the future, but given what you say and the fact that plugins seem to be getting by otherwise, it does not seem urgent.

I agree with you that a better ChangeLog entry for this patch would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744268</commentid>
    <comment_count>18</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-17 08:45:11 -0700</bug_when>
    <thetext>&gt; 
&gt; That&apos;s a good point.  @sadrul, would you be willing to add more details to the ChangeLog about the nature and purpose of this change?
&gt; 

Sure. I have updated the changelog. Please feel free to suggest amendments (I am not very good with words :) ).

&gt; &gt; I had the vague impression that it was already possible to Drag &amp; Drop to and from plugins such as Flash or Java (e.g. demo here &lt;http://www.hellokeita.in/xp/DragDrop/&gt;) so I was wondering if this is a performance optimization for non-drag-supporting plugins, or if my understanding of the state of plugin DnD was wrong.
&gt; 

Looking at the source of the web-page, it looks like the plugin calls into JS functions in the page to complete the drag, and the JS functions listen for mousemove events, as opposed to drag events.

In any case, this particular change is about being able to drag things from outside the plugin into the plugin. This is currently not supported (without using native system calls, anyway). For example: in http://www.paciellogroup.com/blog/misc/adobe/flash/samples/form.html try to drag some text (from the location-bar in the browser, for example) into one of the textfields into the plugin. You will notice that the cursor indicates that you cannot drop onto the plugin during the drag, and dropping actually doesn&apos;t do anything.


&gt; BrowserPlugin happens to be a PPAPI plugin, but it would make sense to add similar enhancements to NPAPI if you were interested in improving NPAPI.  My understanding, however, is that most WebKit contributors have little interest in elaborating NPAPI.
&gt; 

Just a quick correction here: in the current incarnation, BrowserPlugin is neither an NPAPI or a PPAPI plugin. It&apos;s a different kind of plugin. However it implements the same WebPlugin interface as PPAPI/NPAPI, so code in WebKit isn&apos;t aware of the differences, and it doesn&apos;t need to do any special-casing for browser-plugins.

&gt; It&apos;s possible that we&apos;ll expose these APIs to other plugin authors in the future, but at the moment, we&apos;re just using them internally in BrowserPlugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744272</commentid>
    <comment_count>19</comment_count>
      <attachid>169191</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-10-17 08:46:52 -0700</bug_when>
    <thetext>Created attachment 169191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744437</commentid>
    <comment_count>20</comment_count>
      <attachid>169191</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 11:18:16 -0700</bug_when>
    <thetext>Comment on attachment 169191
Patch

Clearing flags on attachment: 169191

Committed r131625: &lt;http://trac.webkit.org/changeset/131625&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744438</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 11:18:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744478</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-17 12:00:17 -0700</bug_when>
    <thetext>&gt; Just a quick correction here: in the current incarnation, BrowserPlugin is neither an NPAPI or a PPAPI plugin. It&apos;s a different kind of plugin. However it implements the same WebPlugin interface as PPAPI/NPAPI, so code in WebKit isn&apos;t aware of the differences, and it doesn&apos;t need to do any special-casing for browser-plugins.

Oh, interesting.  I didn&apos;t know that.  Thanks for the correction.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168763</attachid>
            <date>2012-10-15 12:48:44 -0700</date>
            <delta_ts>2012-10-15 14:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99355-20121015154734.patch</filename>
            <type>text/plain</type>
            <size>10731</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgxOWRiODVmMGMzZDg5
MzY0MTFmZTFiMzY4OTdjZjE0OWI3YTYxOC4uZDc3NDYwZjk3MTc1NDQ0ZjRlY2ZiYjZhYzRjOTAx
NzMxYWY5ZWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTE1ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBwbHVn
aW5zOiBBbGxvdyBhIHBsdWdpbiB0byBkaWN0YXRlIHdoZXRoZXIgaXQgY2FuIHByb2Nlc3MgZHJh
ZyBvciBub3QuCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGRvaW5nIGEgZHJhZywg
YXNrIHRoZSBwbHVnaW4gd2hldGhlciBpdCBjYW4gYWNjZXB0IGRyYWcvZHJvcCB0byBkZWNpZGUg
d2hldGhlciBkcmFnL2Ryb3AgaXMgcG9zc2libGUgb3Igbm90LgorCisgICAgICAgICogaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dDo6Y2FuUHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MUGx1
Z0luRWxlbWVudCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcpOgorICAgICAgICAqIHBs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlld0Jhc2U6OmNhblByb2Nlc3NEcmFnKToKKwogMjAxMi0xMC0xNSAgRG9t
aW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04oMTMwNjEzKTogUmVpbnRyb2R1Y2VzIGNyYXNoZXMgd2hlbiB1c2luZyBzb3Vw
J3MgdGltZW91dCBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc2
MjdhNGU0ODRlYTkwYTdjN2VhMTFjOTA3NzgzMDU3ZTA5MjZlZWMuLjMzZGVhMzkyODAyYmZiYzA5
NzAxNGQ0ODU2ZTkzMDk5ZTM5NjkxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTItMTAtMTUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIHBsdWdpbnM6IEFsbG93IGEgcGx1Z2luIHRvIGRpY3Rh
dGUgd2hldGhlciBpdCBjYW4gcHJvY2VzcyBkcmFnIG9yIG5vdC4KKyAgICAgICAgTmVlZCB0aGUg
YnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludHJvZHVjZSBXZWJQbHVnaW46OmNhblByb2Nlc3NEcmFnKCkgYW5kIHVzZSB0
aGF0IHRvIGltcGxlbWVudCBQbHVnaW5WaWV3QmFzZTo6Y2FuUHJvY2Vzc0RyYWcuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbjo6Y2Fu
UHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViUGx1Z2luKToKKyAgICAgICAgKiBzcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OmNhblByb2Nlc3NEcmFnKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAq
IHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChXZWJQbHVnaW5Db250YWlu
ZXJJbXBsKToKKwogMjAxMi0xMC0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0
aGF0IGFyZSBjb3B5YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cAppbmRleCA5OTQ3YTczNmVjODg2ZTgzNGMyYTJkZGY5NjQyYjY1MzM2NjNlMjM4Li5kN2U3NGUz
NGUyNDQ5ODM0ODQ0ZTlkNjhjYjQ1NWNmYjE3Yzc5ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtNzIsNiArNzIsMTIgQEAgSFRNTFBsdWdJbkVsZW1l
bnQ6On5IVE1MUGx1Z0luRWxlbWVudCgpCiAjZW5kaWYKIH0KIAorYm9vbCBIVE1MUGx1Z0luRWxl
bWVudDo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKSBjb25zdAorewor
ICAgIGNvbnN0IFBsdWdpblZpZXdCYXNlKiBwbHVnaW4gPSBwbHVnaW5XaWRnZXQoKSAmJiBwbHVn
aW5XaWRnZXQoKS0+aXNQbHVnaW5WaWV3QmFzZSgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgUGx1Z2lu
Vmlld0Jhc2UqPihwbHVnaW5XaWRnZXQoKSkgOiAwOworICAgIHJldHVybiBwbHVnaW4gPyBwbHVn
aW4tPmNhblByb2Nlc3NEcmFnKGRyYWdEYXRhKSA6IGZhbHNlOworfQorCiB2b2lkIEhUTUxQbHVn
SW5FbGVtZW50OjpkZXRhY2goKQogewogICAgIG1faW5zdGFuY2UuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCBkN2JjYjE2NmVjYmQ4YzI1Yjk2MTA0
ZWM2NjY1NTVkMzlmZDljMWQxLi4yMjJlYTNlMDAwZTNjMTEzYTFjYjA0Y2EzYjlmZDI4NWJhMjAx
OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0zNCw2ICsz
NCw3IEBAIHN0cnVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBE
cmFnRGF0YTsKIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0OwogY2xhc3MgUmVuZGVyV2lkZ2V0
OwogY2xhc3MgV2lkZ2V0OwpAQCAtNjYsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNh
bkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIGJv
b2wgY2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKSBjb25zdDsKKwogcHJvdGVjdGVkOgog
ICAgIEhUTUxQbHVnSW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYzc0NGMx
ODllYmRiZjRmMGE0MGI4YTk5ZDhlNzlhMjVkYjBhNmQ2OC4uZGExM2UwMGIwNmNlY2RhOGUxNjg1
MTgxMDRiODY1NjQ2NjA2YjhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCkBAIC01NTIsNyAr
NTUzLDExIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKERyYWdEYXRhKiBk
cmFnRGF0YSkKICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zRmlsZXMoKSAmJiBhc0ZpbGVJbnB1
dChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcklzRWRpdGFibGUo
KSkKKyAgICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5pc1BsdWdpbkVsZW1lbnQo
KSkgeworICAgICAgICBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z2luID0gc3RhdGljX2Nhc3Q8SFRN
TFBsdWdJbkVsZW1lbnQqPihyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOworICAgICAgICBp
ZiAoIXBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWcoKmRyYWdEYXRhKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPnJl
bmRlcmVySXNFZGl0YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9k
aWRJbml0aWF0ZURyYWcgJiYgbV9kb2N1bWVudFVuZGVyTW91c2UgPT0gbV9kcmFnSW5pdGlhdG9y
ICYmIHJlc3VsdC5pc1NlbGVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXdCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdC
YXNlLmgKaW5kZXggZmM3ZTk4ZWZkYjk5NjMxMmIxNzVmNDM2YjY1Y2Q5MWM4MzBjZGFjMy4uYzc2
YzBhYmM1YjljNTFlMGFmYWU4MDA2MDBjYzI4NjYxODM2MjAyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIFNjcm9sbGJh
cjsKIAogLy8gUGx1Z2luVmlld0Jhc2UgaXMgYSB3aWRnZXQgdGhhdCBhbGwgcGx1Zy1pbiB2aWV3
cyBpbmhlcml0IGZyb20sIGJvdGggaW4gV2Via2l0IGFuZCBXZWJLaXQyLgpAQCAtNjEsNiArNjIs
NyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBoYWNrIHRoYXQgd29ya3MgYXJv
dW5kIHRoZSBmYWN0IHRoYXQgdGhlIFdlYktpdDIgUGx1Z2luVmlldyBpc24ndCBhIFNjcm9sbGFi
bGVBcmVhLgogICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlib2FyZEZvY3VzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJh
Z0RhdGEmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgUGx1Z2luVmlld0Jhc2UoUGxhdGZvcm1XaWRnZXQgd2lkZ2V0ID0gMCkgOiBXaWRnZXQod2lk
Z2V0KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luLmgKaW5kZXgg
YzcyZmZmMzI1OWRmYmM5MjNlYWE3NzFmNjc5NmUzZmYxOTRkNDlhMy4uYzZhMGE1OTk3ZmQ2MWRl
MGRkMGM4MzQ1MWU5N2Q4MmE5MzAxZmNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGx1Z2luLmgKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBnZXRGb3JtVmFsdWUoV2ViU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNLZXlib2FyZEZvY3VzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIHZpcnR1YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpID0g
MDsKIAogICAgIC8vIENvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgY29udGFpbmluZyB3
aW5kb3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwCmluZGV4IDY4OTE1NDA1ODNhOGM0YWI5YjhjNjVlNTRhNDliY2Y5YTlj
ZWZlYWUuLjI2NmExMDU2ZTFiM2JkZGNkMjZlOGE4ZTJmOWQ4NGU5ZWZlY2YyMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
Y3BwCkBAIC01NzcsNiArNTc3LDExIEBAIGJvb2wgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c3Vw
cG9ydHNLZXlib2FyZEZvY3VzKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJQbHVnaW4tPnN1cHBv
cnRzS2V5Ym9hcmRGb2N1cygpOwogfQogCitib29sIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmNh
blByb2Nlc3NEcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikgY29uc3QKK3sKKyAgICByZXR1
cm4gbV93ZWJQbHVnaW4tPmNhblByb2Nlc3NEcmFnKCk7Cit9CisKIHZvaWQgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6d2lsbERlc3Ryb3lQbHVnaW5Mb2FkT2JzZXJ2ZXIoV2ViUGx1Z2luTG9hZE9i
c2VydmVyKiBvYnNlcnZlcikKIHsKICAgICBzaXplX3QgcG9zID0gbV9wbHVnaW5Mb2FkT2JzZXJ2
ZXJzLmZpbmQob2JzZXJ2ZXIpOwpAQCAtNjYxLDcgKzY2Niw4IEBAIHZvaWQgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6aGFuZGxlTW91c2VFdmVudChNb3VzZUV2ZW50KiBldmVudCkKICAgICBBU1NF
UlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwogCiAgICAgaWYgKGV2ZW50LT5pc0RyYWdFdmVu
dCgpKSB7Ci0gICAgICAgIGhhbmRsZURyYWdFdmVudChldmVudCk7CisgICAgICAgIGlmIChtX3dl
YlBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWcoKSkKKyAgICAgICAgICAgIGhhbmRsZURyYWdFdmVudChl
dmVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAppbmRleCBlODlhZjA5ODc5NmFm
ODI1MzUxZGVjOWRlMzc5NTZiNGYxNTFmYWJlLi4xNjVmOTk2MGQyMmFlNGIyM2U2ODJjN2VmMmYw
MzVlYWJiMzRiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGx1Z2luQ29udGFpbmVySW1wbC5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICAvLyBQ
bHVnaW5WaWV3QmFzZSBtZXRob2RzCiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNLZXlib2FyZEZvY3VzKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGNhblByb2Nlc3NEcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikg
Y29uc3Q7CiAKICAgICAvLyBXaWRnZXQgbWV0aG9kcwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFt
ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRhNjE5ZTcxNWY1MGRiZGUxOWQ4OWM1ZDFkMTcx
YzA2NDk3MDkwYTEuLmU2YzUwZDg1ZDk3NzUwNTgxMmFjZDk3YjEzMzBmNTllOTE3ZjJiZTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0xMC0xNSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgcGx1Z2luczogQWxsb3cgYSBwbHVnaW4gdG8gZGljdGF0ZSB3
aGV0aGVyIGl0IGNhbiBwcm9jZXNzIGRyYWcgb3Igbm90LgorICAgICAgICBOZWVkIHRoZSBidWcg
VVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRoZSBUZXN0V2ViUGx1Z2luIHRvIGltcGxlbWVudCB0aGUgbmV3IHxjYW5Q
cm9jZXNzRHJhZ3wgaW50ZXJmYWNlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFdlYlBsdWdpbi5oOgorICAgICAgICAoVGVzdFdlYlBsdWdpbjo6Y2FuUHJvY2Vzc0Ry
YWcpOgorCiAyMDEyLTEwLTE1ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lh
LmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0IFdlYktpdCBpbnRvIFF0IFdlYktpdCBh
bmQgUXQgV2ViS2l0IFdpZGdldHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RXZWJQbHVnaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RXZWJQbHVnaW4uaAppbmRleCBhYTY1MzNlMzJjNjEyNjk0NTkxNjdlYWMwNWRmYWY4OWQxMWU3
MjM3Li41M2M2NjQzZjE4NzM1NmE3YWQ0NjIyYzNkMmJmZDMyMDEyNzFiNTczIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2luLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5oCkBAIC01Niw2ICs1Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJLaXQ6OldlYlBsdWdp
bkNvbnRhaW5lciopOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAgICAgdmlydHVhbCBO
UE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KFdlYktpdDo6V2ViQ2FudmFzKiwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYg
ZnJhbWVSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmIGNsaXBSZWN0LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzYWYxYjM1NGQ0ZDZlZTUwN2YzYzQwNjBkNmE1
ZGY0NmEyOTM4NjkuLjNiM2QyYjY1OGQyZTViZjFjOTI3NmU0OWNkYThiZTdhYWI1OWQ5NWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMC0xNSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAg
PHNhZHJ1bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcGx1Z2luczogQWxsb3cgYSBwbHVnaW4g
dG8gZGljdGF0ZSB3aGV0aGVyIGl0IGNhbiBwcm9jZXNzIGRyYWcgb3Igbm90LgorICAgICAgICBO
ZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgdG8gbm90IHNldCBjb250ZW50RWRpdGFibGUg
b24gdGhlIHBsdWdpbiBhbnltb3JlLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1
Z2lucy9kcmFnLWV2ZW50cy5odG1sOgorCiAyMDEyLTEwLTE1ICBUdWxsaW8gTHVjZW5hICA8dHVs
bGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gVW5za2lwIGFuZCByZWJh
c2Ugbm93IHBhc3NpbmcgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLmh0bWwKaW5kZXggYzU5MTRkYTJhNjg1YjkyOWE1
NDE0MjIxOWFjOGZmMGIwOGJlN2QwZi4uZjZjMzUxNzU4MzY5MjUwMzQxNzFiZjRmMTQzNWNhNWQ5
MGJmZGY2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lu
cy9kcmFnLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Bs
dWdpbnMvZHJhZy1ldmVudHMuaHRtbApAQCAtOSw3ICs5LDcgQEAKIDwvaGVhZD4KIAogPGJvZHkg
b25sb2FkPSJ0ZXN0KCk7Ij4KLTxlbWJlZCBpZD0icGx1Z2luIiB0eXBlPSJhcHBsaWNhdGlvbi94
LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIgY29udGVudEVkaXRhYmxlPjwvZW1iZWQ+Cis8ZW1iZWQg
aWQ9InBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC13ZWJwbHVnaW4iPjwv
ZW1iZWQ+CiA8ZGl2IGlkPSd0ZXh0Jz48c3Bhbj5Tb21lIHRleHQgdG8gZHJhZzwvc3Bhbj48L2Rp
dj4KIDxzY3JpcHQ+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168783</attachid>
            <date>2012-10-15 14:25:15 -0700</date>
            <delta_ts>2012-10-15 15:14:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99355-20121015172405.patch</filename>
            <type>text/plain</type>
            <size>16267</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgxOWRiODVmMGMzZDg5
MzY0MTFmZTFiMzY4OTdjZjE0OWI3YTYxOC4uZTI4ZjUzNmQ1Y2MwOTUzOWYyMjVlM2JiMjk1ZmJj
ZTE4NTE0OWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTE1ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBwbHVn
aW5zOiBBbGxvdyBhIHBsdWdpbiB0byBkaWN0YXRlIHdoZXRoZXIgaXQgY2FuIHByb2Nlc3MgZHJh
ZyBvciBub3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05OTM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gZG9pbmcgYSBkcmFnLCBhc2sgdGhlIHBsdWdpbiB3aGV0aGVyIGl0IGNhbiBhY2NlcHQg
ZHJhZy9kcm9wIHRvIGRlY2lkZSB3aGV0aGVyIGRyYWcvZHJvcCBpcyBwb3NzaWJsZSBvciBub3Qu
CisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50OjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEhUTUxQbHVnSW5FbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNz
RHJhZyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZTo6Y2FuUHJvY2Vzc0RyYWcp
OgorCiAyMDEyLTEwLTE1ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bp
bnRlbC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigxMzA2MTMpOiBSZWludHJvZHVjZXMgY3Jh
c2hlcyB3aGVuIHVzaW5nIHNvdXAncyB0aW1lb3V0IGZ1bmN0aW9uYWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNzYyN2E0ZTQ4NGVhOTBhN2M3ZWExMWM5MDc3ODMwNTdlMDkyNmVl
Yy4uZWEyMTE2Zjk4YzE5M2QxMzRjMjU1ZWNkMGE1MDBiMzJiMjc3M2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMC0xNSAgU2FkcnVsIEhhYmli
IENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcGx1Z2luczogQWxs
b3cgYSBwbHVnaW4gdG8gZGljdGF0ZSB3aGV0aGVyIGl0IGNhbiBwcm9jZXNzIGRyYWcgb3Igbm90
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1
Y2UgV2ViUGx1Z2luOjpjYW5Qcm9jZXNzRHJhZygpIGFuZCB1c2UgdGhhdCB0byBpbXBsZW1lbnQg
UGx1Z2luVmlld0Jhc2U6OmNhblByb2Nlc3NEcmFnLgorCisgICAgICAgICogcHVibGljL1dlYlBs
dWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46OmNhblByb2Nlc3NEcmFnKToKKyAg
ICAgICAgKFdlYlBsdWdpbik6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYW5Qcm9jZXNz
RHJhZyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisKIDIwMTIt
MTAtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIFVzZXJT
Y3JpcHQgYW5kIFVzZXJTdHlsZVNoZWV0IHZhbHVlIG9iamVjdHMgdGhhdCBhcmUgY29weWFibGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggOTk0N2E3MzZl
Yzg4NmU4MzRjMmEyZGRmOTY0MmI2NTMzNjYzZTIzOC4uZDdlNzRlMzRlMjQ0OTgzNDg0NGU5ZDY4
Y2I0NTVjZmIxN2M3OTg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKQEAgLTcyLDYgKzcyLDEyIEBAIEhUTUxQbHVnSW5FbGVtZW50Ojp+SFRNTFBsdWdJbkVs
ZW1lbnQoKQogI2VuZGlmCiB9CiAKK2Jvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OmNhblByb2Nlc3NE
cmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkgY29uc3QKK3sKKyAgICBjb25zdCBQbHVnaW5W
aWV3QmFzZSogcGx1Z2luID0gcGx1Z2luV2lkZ2V0KCkgJiYgcGx1Z2luV2lkZ2V0KCktPmlzUGx1
Z2luVmlld0Jhc2UoKSA/IHN0YXRpY19jYXN0PGNvbnN0IFBsdWdpblZpZXdCYXNlKj4ocGx1Z2lu
V2lkZ2V0KCkpIDogMDsKKyAgICByZXR1cm4gcGx1Z2luID8gcGx1Z2luLT5jYW5Qcm9jZXNzRHJh
ZyhkcmFnRGF0YSkgOiBmYWxzZTsKK30KKwogdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGV0YWNo
KCkKIHsKICAgICBtX2luc3RhbmNlLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmgKaW5kZXggZDdiY2IxNjZlY2JkOGMyNWI5NjEwNGVjNjY2NTU1ZDM5ZmQ5YzFk
MS4uMjIyZWEzZTAwMGUzYzExM2ExY2IwNGNhM2I5ZmQyODViYTIwMThhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgTlBP
YmplY3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBS
ZW5kZXJFbWJlZGRlZE9iamVjdDsKIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFdpZGdldDsK
QEAgLTY2LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQ
b2ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBib29sIGNhblByb2Nlc3NEcmFn
KGNvbnN0IERyYWdEYXRhJikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGM3NDRjMTg5ZWJkYmY0ZjBhNDBiOGE5
OWQ4ZTc5YTI1ZGIwYTZkNjguLjE1NDhhM2U4YWU5Yzc5ZDUzMmQxMmYwZmI2MmFkOTE5NmM0MDY2
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBsdWdJbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgpAQCAtNTUyLDcgKzU1MywxMSBAQCBib29sIERy
YWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYg
KGRyYWdEYXRhLT5jb250YWluc0ZpbGVzKCkgJiYgYXNGaWxlSW5wdXQocmVzdWx0LmlubmVyTm9u
U2hhcmVkTm9kZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIXJlc3VsdC5p
bm5lck5vblNoYXJlZE5vZGUoKS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCisgICAgaWYgKHJlc3Vs
dC5pbm5lck5vblNoYXJlZE5vZGUoKS0+aXNQbHVnaW5FbGVtZW50KCkpIHsKKyAgICAgICAgSFRN
TFBsdWdJbkVsZW1lbnQqIHBsdWdpbiA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4o
cmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICAgICAgaWYgKCFwbHVnaW4tPmNhblBy
b2Nlc3NEcmFnKCpkcmFnRGF0YSkgJiYgIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+cmVu
ZGVyZXJJc0VkaXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNl
IGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcklzRWRpdGFibGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fZGlkSW5pdGlhdGVEcmFnICYmIG1f
ZG9jdW1lbnRVbmRlck1vdXNlID09IG1fZHJhZ0luaXRpYXRvciAmJiByZXN1bHQuaXNTZWxlY3Rl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4IGZjN2U5OGVm
ZGI5OTYzMTJiMTc1ZjQzNmI2NWNkOTFjODMwY2RhYzMuLmM3NmMwYWJjNWI5YzUxZTBhZmFlODAw
NjAwY2MyODY2MTgzNjIwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlld0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNl
LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBTY3JvbGxiYXI7CiAKIC8vIFBsdWdpblZpZXdC
YXNlIGlzIGEgd2lkZ2V0IHRoYXQgYWxsIHBsdWctaW4gdmlld3MgaW5oZXJpdCBmcm9tLCBib3Ro
IGluIFdlYmtpdCBhbmQgV2ViS2l0Mi4KQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0aGF0IHdvcmtzIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHRo
ZSBXZWJLaXQyIFBsdWdpblZpZXcgaXNuJ3QgYSBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFs
IGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsdWdpblZpZXdCYXNlKFBs
YXRmb3JtV2lkZ2V0IHdpZGdldCA9IDApIDogV2lkZ2V0KHdpZGdldCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbi5oCmluZGV4IGM3MmZmZjMyNTlkZmJjOTIzZWFh
NzcxZjY3OTZlM2ZmMTk0ZDQ5YTMuLmM2YTBhNTk5N2ZkNjFkZTBkZDBjODM0NTFlOTdkODJhOTMw
MWZjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbi5oCkBAIC03
MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFdlYlN0
cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5Ym9h
cmRGb2N1cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
UHJvY2Vzc0RyYWcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKICAgICAvLyBDb29yZGlu
YXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgd2luZG93LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRl
eCA2ODkxNTQwNTgzYThjNGFiOWI4YzY1ZTU0YTQ5YmNmOWE5Y2VmZWFlLi4yNjZhMTA1NmUxYjNi
ZGRjZDI2ZThhOGUyZjlkODRlOWVmZWNmMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTc3LDYgKzU3Nywx
MSBAQCBib29sIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnN1cHBvcnRzS2V5Ym9hcmRGb2N1cygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViUGx1Z2luLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsK
IH0KIAorYm9vbCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYW5Qcm9jZXNzRHJhZyhjb25zdCBX
ZWJDb3JlOjpEcmFnRGF0YSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGx1Z2luLT5jYW5Q
cm9jZXNzRHJhZygpOworfQorCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0
cm95UGx1Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdpbkxvYWRPYnNlcnZlciogb2JzZXJ2ZXIpCiB7
CiAgICAgc2l6ZV90IHBvcyA9IG1fcGx1Z2luTG9hZE9ic2VydmVycy5maW5kKG9ic2VydmVyKTsK
QEAgLTY2MSw3ICs2NjYsOCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZU1v
dXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1l
VmlldygpKTsKIAogICAgIGlmIChldmVudC0+aXNEcmFnRXZlbnQoKSkgewotICAgICAgICBoYW5k
bGVEcmFnRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAobV93ZWJQbHVnaW4tPmNhblByb2Nlc3NE
cmFnKCkpCisgICAgICAgICAgICBoYW5kbGVEcmFnRXZlbnQoZXZlbnQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmgKaW5kZXggZTg5YWYwOTg3OTZhZjgyNTM1MWRlYzlkZTM3OTU2YjRm
MTUxZmFiZS4uMTY1Zjk5NjBkMjJhZTRiMjNlNjgyYzdlZjJmMDM1ZWFiYjM0YmYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
aApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGx1Z2luVmlld0Jhc2UgbWV0aG9k
cwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJik7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5Q
cm9jZXNzRHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIGNvbnN0OwogCiAgICAgLy8gV2lk
Z2V0IG1ldGhvZHMKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0YTYxOWU3MTVmNTBkYmRlMTlkODljNWQxZDE3MWMwNjQ5NzA5MGExLi42ZTczZDRi
ZTQ3NDI5ZGU3YzAyMzQwZTM1MTZiNGQ2NTY4NGI3MmM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTUg
IFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IHBsdWdpbnM6IEFsbG93IGEgcGx1Z2luIHRvIGRpY3RhdGUgd2hldGhlciBpdCBjYW4gcHJvY2Vz
cyBkcmFnIG9yIG5vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5MzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRoZSBUZXN0V2ViUGx1Z2luIHRvIGltcGxlbWVudCB0aGUgbmV3IHxjYW5Q
cm9jZXNzRHJhZ3wgaW50ZXJmYWNlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFdlYlBsdWdpbi5oOgorICAgICAgICAoVGVzdFdlYlBsdWdpbjo6Y2FuUHJvY2Vzc0Ry
YWcpOgorCiAyMDEyLTEwLTE1ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lh
LmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0IFdlYktpdCBpbnRvIFF0IFdlYktpdCBh
bmQgUXQgV2ViS2l0IFdpZGdldHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFdlYlBsdWdpbi5jcHAKaW5kZXggYzU0ZWJlZGVhMzIwMGQ0MTFiNmNhOTE5NmY5Y2UyMTZi
MWJlMGRlMS4uNzA4MGJlZjE4YTJiNDIzOTlhMDgyOTQ5ZjliZTEyOGMxYTVlZTc1MyAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAKQEAgLTEy
NSw2ICsxMjUsNyBAQCBUZXN0V2ViUGx1Z2luOjpUZXN0V2ViUGx1Z2luKFdlYktpdDo6V2ViRnJh
bWUqIGZyYW1lLAogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX2FjY2VwdHNUb3VjaEV2ZW50
KGZhbHNlKQogICAgICwgbV9wcmludEV2ZW50RGV0YWlscyhmYWxzZSkKKyAgICAsIG1fY2FuUHJv
Y2Vzc0RyYWcoZmFsc2UpCiB7CiAgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRl
UHJpbWl0aXZlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJpbWl0aXZlIik7CiAgICAgc3RhdGlj
IGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlQmFja2dyb3VuZENvbG9yID0gV2ViU3RyaW5nOjpm
cm9tVVRGOCgiYmFja2dyb3VuZC1jb2xvciIpOwpAQCAtMTMyLDYgKzEzMyw3IEBAIFRlc3RXZWJQ
bHVnaW46OlRlc3RXZWJQbHVnaW4oV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsCiAgICAgc3RhdGlj
IGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlT3BhY2l0eSA9IFdlYlN0cmluZzo6ZnJvbVVURjgo
Im9wYWNpdHkiKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVBY2NlcHRz
VG91Y2ggPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2NlcHRzLXRvdWNoIik7CiAgICAgc3RhdGlj
IGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlUHJpbnRFdmVudERldGFpbHMgPSBXZWJTdHJpbmc6
OmZyb21VVEY4KCJwcmludC1ldmVudC1kZXRhaWxzIik7CisgICAgc3RhdGljIGNvbnN0IFdlYlN0
cmluZyBrQXR0cmlidXRlQ2FuUHJvY2Vzc0RyYWcgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJjYW4t
cHJvY2Vzcy1kcmFnIik7CiAKICAgICBBU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUo
KSA9PSBwYXJhbXMuYXR0cmlidXRlVmFsdWVzLnNpemUoKSk7CiAgICAgc2l6ZV90IHNpemUgPSBw
YXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpOwpAQCAtMTUxLDYgKzE1Myw4IEBAIFRlc3RXZWJQ
bHVnaW46OlRlc3RXZWJQbHVnaW4oV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsCiAgICAgICAgICAg
ICBtX2FjY2VwdHNUb3VjaEV2ZW50ID0gcGFyc2VCb29sZWFuKGF0dHJpYnV0ZVZhbHVlKTsKICAg
ICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBrQXR0cmlidXRlUHJpbnRFdmVudERldGFp
bHMpCiAgICAgICAgICAgICBtX3ByaW50RXZlbnREZXRhaWxzID0gcGFyc2VCb29sZWFuKGF0dHJp
YnV0ZVZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBrQXR0cmlidXRl
Q2FuUHJvY2Vzc0RyYWcpCisgICAgICAgICAgICBtX2NhblByb2Nlc3NEcmFnID0gcGFyc2VCb29s
ZWFuKGF0dHJpYnV0ZVZhbHVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uaAppbmRleCBhYTY1MzNlMzJjNjEyNjk0NTkxNjdlYWMw
NWRmYWY4OWQxMWU3MjM3Li40OWZkZTg1YWFkYzFlMzEzOTBjNmYzMDY5NjlkZGRiOGUyZWIxMWQ1
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2lu
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5oCkBA
IC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShXZWJL
aXQ6OldlYlBsdWdpbkNvbnRhaW5lciopOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAg
ICAgdmlydHVhbCBOUE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb2Nl
c3NEcmFnOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYktpdDo6V2ViQ2FudmFzKiwgY29u
c3QgV2ViS2l0OjpXZWJSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5
KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgZnJhbWVSZWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGNsaXBSZWN0LApAQCAtMTMyLDYgKzEz
Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYWNjZXB0c1RvdWNoRXZlbnQ7CiAgICAgYm9v
bCBtX3ByaW50RXZlbnREZXRhaWxzOworICAgIGJvb2wgbV9jYW5Qcm9jZXNzRHJhZzsKIH07CiAK
ICNlbmRpZiAvLyBUZXN0UGVwcGVyUGx1Z2luX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyM2FmMWIzNTRkNGQ2ZWU1MDdm
M2M0MDYwZDZhNWRmNDZhMjkzODY5Li5hOWRhOTI3M2RhOTIyZGVhYmUwNGFmOGQyMmI5M2Q2YWE2
MzA2YWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTUgIFNhZHJ1bCBIYWJpYiBD
aG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHBsdWdpbnM6IEFsbG93
IGEgcGx1Z2luIHRvIGRpY3RhdGUgd2hldGhlciBpdCBjYW4gcHJvY2VzcyBkcmFnIG9yIG5vdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRl
c3QgdG8gbm90IHNldCBjb250ZW50RWRpdGFibGUgb24gdGhlIHBsdWdpbiBhbnltb3JlLgorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy5odG1s
OgorCiAyMDEyLTEwLTE1ICBUdWxsaW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFtRdF0gVW5za2lwIGFuZCByZWJhc2Ugbm93IHBhc3NpbmcgdGVzdHMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWct
ZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdp
bnMvZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0CmluZGV4IDI2MTQzZWY3MjA3ZWQzNDNlZTEyYzRi
MTI2NDBkMGYxOWIzODM0NGMuLjIyMTBiYjM4MTk2N2ZlZTkzZTAwMTNlMThiZjRmOWU1Yzc0Njc0
MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvZHJh
Zy1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3BsdWdpbnMvZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDI1OiBEcmFnZ2luZyBvdmVyIHBsdWdpbl9kcmFnCiBQbHVnaW4gcmVj
ZWl2ZWQgZXZlbnQ6IE1vdXNlRW50ZXIKIFBsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VNb3Zl
CiBQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IERyYWdFbnRlcgpAQCAtNiw1ICs3LDE0IEBAIFBsdWdp
biByZWNlaXZlZCBldmVudDogRHJhZ0xlYXZlCiBQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IERyYWdF
bnRlcgogUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBEcmFnT3ZlcgogUGx1Z2luIHJlY2VpdmVkIGV2
ZW50OiBEcmFnRHJvcAotCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTGVhdmUKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAyNTogRHJhZ2dpbmcgb3ZlciBwbHVnaW5fZWRpdGFibGUKK1BsdWdp
biByZWNlaXZlZCBldmVudDogTW91c2VFbnRlcgorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3Vz
ZU1vdmUKK1BsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VMZWF2ZQorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDI1OiBEcmFnZ2luZyBvdmVyIHBsdWdpbgorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBN
b3VzZUVudGVyCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQorUGx1Z2luIHJlY2Vp
dmVkIGV2ZW50OiBNb3VzZUxlYXZlCisgIAogU29tZSB0ZXh0IHRvIGRyYWcKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvZHJhZy1ldmVudHMuaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvZHJhZy1ldmVudHMuaHRtbApp
bmRleCBjNTkxNGRhMmE2ODViOTI5YTU0MTQyMjE5YWM4ZmYwYjA4YmU3ZDBmLi5lN2RiMDY3MWM0
N2FiODQ1YzZjYTJiODhkMmE5ZGE4N2Y3MzIyZTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy5odG1sCkBAIC05LDM3ICs5
LDQ4IEBACiA8L2hlYWQ+CiAKIDxib2R5IG9ubG9hZD0idGVzdCgpOyI+Ci08ZW1iZWQgaWQ9InBs
dWdpbiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC13ZWJwbHVnaW4iIGNvbnRlbnRF
ZGl0YWJsZT48L2VtYmVkPgorCis8ZW1iZWQgaWQ9InBsdWdpbl9kcmFnIiB0eXBlPSJhcHBsaWNh
dGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIgY2FuLXByb2Nlc3MtZHJhZz0idHJ1ZSIgY29u
dGVudEVkaXRhYmxlPSJmYWxzZSI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luX2VkaXRhYmxl
IiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIgY29udGVudEVkaXRh
YmxlPSJ0cnVlIj48L2VtYmVkPgorPGVtYmVkIGlkPSJwbHVnaW4iIHR5cGU9ImFwcGxpY2F0aW9u
L3gtd2Via2l0LXRlc3Qtd2VicGx1Z2luIj48L2VtYmVkPgogPGRpdiBpZD0ndGV4dCc+PHNwYW4+
U29tZSB0ZXh0IHRvIGRyYWc8L3NwYW4+PC9kaXY+CiA8c2NyaXB0PgogCitmdW5jdGlvbiBkcmFn
T3ZlclBsdWdpbihwbHVnaW4pIHsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RleHQnKTsKKyAgICBkaXYuZm9jdXMoKTsKKyAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBz
ZShkaXYsIDApOworICAgIGdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2ZvcndhcmQn
LCAnd29yZCcpOworCisgICAgY29uc29sZS5sb2coIkRyYWdnaW5nIG92ZXIgIiArIHBsdWdpbi5p
ZCk7CisgICAgdmFyIHBvc2l0aW9uWCA9IHBsdWdpbi5vZmZzZXRMZWZ0ICsgMTA7CisgICAgdmFy
IHBvc2l0aW9uWSA9IHBsdWdpbi5vZmZzZXRUb3AgKyAxMDsKKworICAgIHZhciBzdGFydFggPSBk
aXYub2Zmc2V0TGVmdCArIGRpdi5maXJzdENoaWxkLm9mZnNldFdpZHRoIC8gNTsKKyAgICB2YXIg
c3RhcnRZID0gZGl2Lm9mZnNldFRvcCArIGRpdi5vZmZzZXRIZWlnaHQgLyAyOzsKKworICAgIC8v
IERyYWcgaW50byB0aGUgcGx1Z2luIGFuZCBkcmFnIG91dCBiZWZvcmUgZHJvcHBpbmcuCisgICAg
ZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSB0cnVlOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0WCwgc3RhcnRZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVu
dFNlbmRlci5sZWFwRm9yd2FyZCgyNTApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBv
c2l0aW9uWCwgcG9zaXRpb25ZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3NpdGlv
blggKyAyLCBwb3NpdGlvblkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwg
c3RhcnRZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3NpdGlvblgsIHBvc2l0aW9u
WSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKDI1MCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOwor
fQorCiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdp
bmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICBkb2N1bWVudC53cml0ZSgiVGhpcyB0ZXN0IGRv
ZXMgbm90IHdvcmsgaW4gbWFudWFsIG1vZGUuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLSAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXh0Jyk7Ci0gICAgICAgIGRpdi5mb2N1cygpOwotICAgICAgICBnZXRTZWxl
Y3Rpb24oKS5jb2xsYXBzZShkaXYsIDApOwotICAgICAgICBnZXRTZWxlY3Rpb24oKS5tb2RpZnko
J2V4dGVuZCcsICdmb3J3YXJkJywgJ3dvcmQnKTsKLQotICAgICAgICB2YXIgcG9zaXRpb25YID0g
cGx1Z2luLm9mZnNldExlZnQgKyAxMDsKLSAgICAgICAgdmFyIHBvc2l0aW9uWSA9IHBsdWdpbi5v
ZmZzZXRUb3AgKyAxMDsKLQotICAgICAgICB2YXIgc3RhcnRYID0gZGl2Lm9mZnNldExlZnQgKyBk
aXYuZmlyc3RDaGlsZC5vZmZzZXRXaWR0aCAvIDU7Ci0gICAgICAgIHZhciBzdGFydFkgPSBkaXYu
b2Zmc2V0VG9wICsgZGl2Lm9mZnNldEhlaWdodCAvIDI7OwotCi0gICAgICAgIC8vIERyYWcgaW50
byB0aGUgcGx1Z2luIGFuZCBkcmFnIG91dCBiZWZvcmUgZHJvcHBpbmcuCi0gICAgICAgIGV2ZW50
U2VuZGVyLmRyYWdNb2RlID0gdHJ1ZTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRYLCBzdGFydFkpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICAg
ICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjUwKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8ocG9zaXRpb25YLCBwb3NpdGlvblkpOwotICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhwb3NpdGlvblggKyAyLCBwb3NpdGlvblkpOwotICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHBvc2l0aW9uWCwgcG9zaXRpb25ZKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgICAgICBkcmFnT3ZlclBsdWdpbihwbHVnaW5fZHJhZyk7CisgICAgICAgIGRyYWdPdmVy
UGx1Z2luKHBsdWdpbl9lZGl0YWJsZSk7CisgICAgICAgIGRyYWdPdmVyUGx1Z2luKHBsdWdpbik7
CiAgICAgfQogfQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168790</attachid>
            <date>2012-10-15 15:13:17 -0700</date>
            <delta_ts>2012-10-17 08:46:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99355-20121015181207.patch</filename>
            <type>text/plain</type>
            <size>15855</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgxOWRiODVmMGMzZDg5
MzY0MTFmZTFiMzY4OTdjZjE0OWI3YTYxOC4uZTI4ZjUzNmQ1Y2MwOTUzOWYyMjVlM2JiMjk1ZmJj
ZTE4NTE0OWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTE1ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBwbHVn
aW5zOiBBbGxvdyBhIHBsdWdpbiB0byBkaWN0YXRlIHdoZXRoZXIgaXQgY2FuIHByb2Nlc3MgZHJh
ZyBvciBub3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05OTM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gZG9pbmcgYSBkcmFnLCBhc2sgdGhlIHBsdWdpbiB3aGV0aGVyIGl0IGNhbiBhY2NlcHQg
ZHJhZy9kcm9wIHRvIGRlY2lkZSB3aGV0aGVyIGRyYWcvZHJvcCBpcyBwb3NzaWJsZSBvciBub3Qu
CisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50OjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEhUTUxQbHVnSW5FbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNz
RHJhZyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZTo6Y2FuUHJvY2Vzc0RyYWcp
OgorCiAyMDEyLTEwLTE1ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bp
bnRlbC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigxMzA2MTMpOiBSZWludHJvZHVjZXMgY3Jh
c2hlcyB3aGVuIHVzaW5nIHNvdXAncyB0aW1lb3V0IGZ1bmN0aW9uYWxpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNzYyN2E0ZTQ4NGVhOTBhN2M3ZWExMWM5MDc3ODMwNTdlMDkyNmVl
Yy4uZWEyMTE2Zjk4YzE5M2QxMzRjMjU1ZWNkMGE1MDBiMzJiMjc3M2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMC0xNSAgU2FkcnVsIEhhYmli
IENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcGx1Z2luczogQWxs
b3cgYSBwbHVnaW4gdG8gZGljdGF0ZSB3aGV0aGVyIGl0IGNhbiBwcm9jZXNzIGRyYWcgb3Igbm90
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1
Y2UgV2ViUGx1Z2luOjpjYW5Qcm9jZXNzRHJhZygpIGFuZCB1c2UgdGhhdCB0byBpbXBsZW1lbnQg
UGx1Z2luVmlld0Jhc2U6OmNhblByb2Nlc3NEcmFnLgorCisgICAgICAgICogcHVibGljL1dlYlBs
dWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW46OmNhblByb2Nlc3NEcmFnKToKKyAg
ICAgICAgKFdlYlBsdWdpbik6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYW5Qcm9jZXNz
RHJhZyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisKIDIwMTIt
MTAtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIFVzZXJT
Y3JpcHQgYW5kIFVzZXJTdHlsZVNoZWV0IHZhbHVlIG9iamVjdHMgdGhhdCBhcmUgY29weWFibGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggOTk0N2E3MzZl
Yzg4NmU4MzRjMmEyZGRmOTY0MmI2NTMzNjYzZTIzOC4uMmQ5NjU2MjRhNGVmZDZmYzA4YWY2MGQ5
NjA3NzYyMTYwZjdmZjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKQEAgLTcyLDYgKzcyLDEyIEBAIEhUTUxQbHVnSW5FbGVtZW50Ojp+SFRNTFBsdWdJbkVs
ZW1lbnQoKQogI2VuZGlmCiB9CiAKK2Jvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OmNhblByb2Nlc3NE
cmFnKCkgY29uc3QKK3sKKyAgICBjb25zdCBQbHVnaW5WaWV3QmFzZSogcGx1Z2luID0gcGx1Z2lu
V2lkZ2V0KCkgJiYgcGx1Z2luV2lkZ2V0KCktPmlzUGx1Z2luVmlld0Jhc2UoKSA/IHN0YXRpY19j
YXN0PGNvbnN0IFBsdWdpblZpZXdCYXNlKj4ocGx1Z2luV2lkZ2V0KCkpIDogMDsKKyAgICByZXR1
cm4gcGx1Z2luID8gcGx1Z2luLT5jYW5Qcm9jZXNzRHJhZygpIDogZmFsc2U7Cit9CisKIHZvaWQg
SFRNTFBsdWdJbkVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgbV9pbnN0YW5jZS5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IGQ3YmNiMTY2ZWNiZDhj
MjViOTYxMDRlYzY2NjU1NWQzOWZkOWMxZDEuLjg1OWFjMmVkYzIzOTNmMGYxM2ExMjAxMmZmMmRh
ZWE0MDMwZTlhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAg
LTY2LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2lu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBib29sIGNhblByb2Nlc3NEcmFnKCkg
Y29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IGM3NDRjMTg5ZWJkYmY0ZjBhNDBiOGE5OWQ4ZTc5YTI1ZGIwYTZkNjgu
LjJlMGFhZmI5NjY2YzI2MjY3NTZlZGJlOGE2YjBlMzhiNjIzNWJkMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRN
TEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgpAQCAtNTUyLDcgKzU1MywxMSBAQCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Q
cm9jZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYgKGRyYWdEYXRhLT5jb250YWlu
c0ZpbGVzKCkgJiYgYXNGaWxlSW5wdXQocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCisgICAgaWYgKHJlc3VsdC5pbm5lck5vblNoYXJlZE5v
ZGUoKS0+aXNQbHVnaW5FbGVtZW50KCkpIHsKKyAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBs
dWdpbiA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4ocmVzdWx0LmlubmVyTm9uU2hh
cmVkTm9kZSgpKTsKKyAgICAgICAgaWYgKCFwbHVnaW4tPmNhblByb2Nlc3NEcmFnKCkgJiYgIXJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKG1fZGlkSW5pdGlhdGVEcmFnICYmIG1fZG9jdW1lbnRVbmRlck1vdXNlID09IG1fZHJh
Z0luaXRpYXRvciAmJiByZXN1bHQuaXNTZWxlY3RlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3QmFzZS5oCmluZGV4IGZjN2U5OGVmZGI5OTYzMTJiMTc1ZjQzNmI2NWNkOTFjODMw
Y2RhYzMuLmYwYTY1MDRkZWE1MmUyMmQwZjA4ZTYxNWM1NTYwNWNiYWUzYjUwMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0aGF0IHdvcmtzIGFyb3VuZCB0aGUgZmFj
dCB0aGF0IHRoZSBXZWJLaXQyIFBsdWdpblZpZXcgaXNuJ3QgYSBTY3JvbGxhYmxlQXJlYS4KICAg
ICB2aXJ0dWFsIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsdWdpblZpZXdCYXNlKFBsYXRmb3Jt
V2lkZ2V0IHdpZGdldCA9IDApIDogV2lkZ2V0KHdpZGdldCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlBsdWdpbi5oCmluZGV4IGM3MmZmZjMyNTlkZmJjOTIzZWFhNzcxZjY3
OTZlM2ZmMTk0ZDQ5YTMuLmM2YTBhNTk5N2ZkNjFkZTBkZDBjODM0NTFlOTdkODJhOTMwMWZjYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbi5oCkBAIC03MCw2ICs3
MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFdlYlN0cmluZyYp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5Ym9hcmRGb2N1
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vz
c0RyYWcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSA9IDA7CiAKICAgICAvLyBDb29yZGluYXRlcyBh
cmUgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5pbmcgd2luZG93LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCA2ODkx
NTQwNTgzYThjNGFiOWI4YzY1ZTU0YTQ5YmNmOWE5Y2VmZWFlLi4wYWUwMzM5YjA0YmE5Njg2MGU0
MDY1YzIxMjhjYWVmMTQ0ZTgwYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTc3LDYgKzU3NywxMSBAQCBi
b29sIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fd2ViUGx1Z2luLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsKIH0KIAor
Ym9vbCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjYW5Qcm9jZXNzRHJhZygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fd2ViUGx1Z2luLT5jYW5Qcm9jZXNzRHJhZygpOworfQorCiB2b2lkIFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdp
bkxvYWRPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgc2l6ZV90IHBvcyA9IG1fcGx1Z2luTG9h
ZE9ic2VydmVycy5maW5kKG9ic2VydmVyKTsKQEAgLTY2MSw3ICs2NjYsOCBAQCB2b2lkIFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAg
ICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsKIAogICAgIGlmIChldmVudC0+aXNE
cmFnRXZlbnQoKSkgewotICAgICAgICBoYW5kbGVEcmFnRXZlbnQoZXZlbnQpOworICAgICAgICBp
ZiAobV93ZWJQbHVnaW4tPmNhblByb2Nlc3NEcmFnKCkpCisgICAgICAgICAgICBoYW5kbGVEcmFn
RXZlbnQoZXZlbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKaW5kZXggZTg5YWYw
OTg3OTZhZjgyNTM1MWRlYzlkZTM3OTU2YjRmMTUxZmFiZS4uODlmMjk3MWI3MjMyOWUwZmQ2NjQ3
OTc2NTZmYTAzYzJkOTQxNWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gUGx1Z2luVmlld0Jhc2UgbWV0aG9kcwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFs
dWUoU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5Ym9hcmRGb2N1cygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0OwogCiAgICAgLy8g
V2lkZ2V0IG1ldGhvZHMKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA0YTYxOWU3MTVmNTBkYmRlMTlkODljNWQxZDE3MWMwNjQ5NzA5MGExLi42ZTcz
ZDRiZTQ3NDI5ZGU3YzAyMzQwZTM1MTZiNGQ2NTY4NGI3MmM3IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAt
MTUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIHBsdWdpbnM6IEFsbG93IGEgcGx1Z2luIHRvIGRpY3RhdGUgd2hldGhlciBpdCBjYW4gcHJv
Y2VzcyBkcmFnIG9yIG5vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk5MzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIHRoZSBUZXN0V2ViUGx1Z2luIHRvIGltcGxlbWVudCB0aGUgbmV3IHxj
YW5Qcm9jZXNzRHJhZ3wgaW50ZXJmYWNlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFdlYlBsdWdpbi5oOgorICAgICAgICAoVGVzdFdlYlBsdWdpbjo6Y2FuUHJvY2Vz
c0RyYWcpOgorCiAyMDEyLTEwLTE1ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRp
Z2lhLmNvbT4KIAogICAgICAgICBbUXRdIFNlcGFyYXRlIFF0IFdlYktpdCBpbnRvIFF0IFdlYktp
dCBhbmQgUXQgV2ViS2l0IFdpZGdldHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFdlYlBsdWdpbi5jcHAKaW5kZXggYzU0ZWJlZGVhMzIwMGQ0MTFiNmNhOTE5NmY5Y2Uy
MTZiMWJlMGRlMS4uNzA4MGJlZjE4YTJiNDIzOTlhMDgyOTQ5ZjliZTEyOGMxYTVlZTc1MyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAKQEAg
LTEyNSw2ICsxMjUsNyBAQCBUZXN0V2ViUGx1Z2luOjpUZXN0V2ViUGx1Z2luKFdlYktpdDo6V2Vi
RnJhbWUqIGZyYW1lLAogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX2FjY2VwdHNUb3VjaEV2
ZW50KGZhbHNlKQogICAgICwgbV9wcmludEV2ZW50RGV0YWlscyhmYWxzZSkKKyAgICAsIG1fY2Fu
UHJvY2Vzc0RyYWcoZmFsc2UpCiB7CiAgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmli
dXRlUHJpbWl0aXZlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJpbWl0aXZlIik7CiAgICAgc3Rh
dGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlQmFja2dyb3VuZENvbG9yID0gV2ViU3RyaW5n
Ojpmcm9tVVRGOCgiYmFja2dyb3VuZC1jb2xvciIpOwpAQCAtMTMyLDYgKzEzMyw3IEBAIFRlc3RX
ZWJQbHVnaW46OlRlc3RXZWJQbHVnaW4oV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsCiAgICAgc3Rh
dGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlT3BhY2l0eSA9IFdlYlN0cmluZzo6ZnJvbVVU
RjgoIm9wYWNpdHkiKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVBY2Nl
cHRzVG91Y2ggPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2NlcHRzLXRvdWNoIik7CiAgICAgc3Rh
dGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlUHJpbnRFdmVudERldGFpbHMgPSBXZWJTdHJp
bmc6OmZyb21VVEY4KCJwcmludC1ldmVudC1kZXRhaWxzIik7CisgICAgc3RhdGljIGNvbnN0IFdl
YlN0cmluZyBrQXR0cmlidXRlQ2FuUHJvY2Vzc0RyYWcgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJj
YW4tcHJvY2Vzcy1kcmFnIik7CiAKICAgICBBU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNp
emUoKSA9PSBwYXJhbXMuYXR0cmlidXRlVmFsdWVzLnNpemUoKSk7CiAgICAgc2l6ZV90IHNpemUg
PSBwYXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpOwpAQCAtMTUxLDYgKzE1Myw4IEBAIFRlc3RX
ZWJQbHVnaW46OlRlc3RXZWJQbHVnaW4oV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsCiAgICAgICAg
ICAgICBtX2FjY2VwdHNUb3VjaEV2ZW50ID0gcGFyc2VCb29sZWFuKGF0dHJpYnV0ZVZhbHVlKTsK
ICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBrQXR0cmlidXRlUHJpbnRFdmVudERl
dGFpbHMpCiAgICAgICAgICAgICBtX3ByaW50RXZlbnREZXRhaWxzID0gcGFyc2VCb29sZWFuKGF0
dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBrQXR0cmli
dXRlQ2FuUHJvY2Vzc0RyYWcpCisgICAgICAgICAgICBtX2NhblByb2Nlc3NEcmFnID0gcGFyc2VC
b29sZWFuKGF0dHJpYnV0ZVZhbHVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RXZWJQbHVnaW4uaAppbmRleCBhYTY1MzNlMzJjNjEyNjk0NTkxNjdl
YWMwNWRmYWY4OWQxMWU3MjM3Li40OWZkZTg1YWFkYzFlMzEzOTBjNmYzMDY5NjlkZGRiOGUyZWIx
MWQ1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1
Z2luLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5o
CkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShX
ZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lciopOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7
CiAgICAgdmlydHVhbCBOUE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCB7IHJldHVybiBtX2NhblBy
b2Nlc3NEcmFnOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYktpdDo6V2ViQ2FudmFzKiwg
Y29uc3QgV2ViS2l0OjpXZWJSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21l
dHJ5KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgZnJhbWVSZWN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGNsaXBSZWN0LApAQCAtMTMyLDYg
KzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYWNjZXB0c1RvdWNoRXZlbnQ7CiAgICAg
Ym9vbCBtX3ByaW50RXZlbnREZXRhaWxzOworICAgIGJvb2wgbV9jYW5Qcm9jZXNzRHJhZzsKIH07
CiAKICNlbmRpZiAvLyBUZXN0UGVwcGVyUGx1Z2luX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyM2FmMWIzNTRkNGQ2ZWU1
MDdmM2M0MDYwZDZhNWRmNDZhMjkzODY5Li5hOWRhOTI3M2RhOTIyZGVhYmUwNGFmOGQyMmI5M2Q2
YWE2MzA2YWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTUgIFNhZHJ1bCBIYWJp
YiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHBsdWdpbnM6IEFs
bG93IGEgcGx1Z2luIHRvIGRpY3RhdGUgd2hldGhlciBpdCBjYW4gcHJvY2VzcyBkcmFnIG9yIG5v
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IHRlc3QgdG8gbm90IHNldCBjb250ZW50RWRpdGFibGUgb24gdGhlIHBsdWdpbiBhbnltb3JlLgor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy5o
dG1sOgorCiAyMDEyLTEwLTE1ICBUdWxsaW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFtRdF0gVW5za2lwIGFuZCByZWJhc2Ugbm93IHBhc3NpbmcgdGVz
dHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2Ry
YWctZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Bs
dWdpbnMvZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0CmluZGV4IDI2MTQzZWY3MjA3ZWQzNDNlZTEy
YzRiMTI2NDBkMGYxOWIzODM0NGMuLjIyMTBiYjM4MTk2N2ZlZTkzZTAwMTNlMThiZjRmOWU1Yzc0
Njc0MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMv
ZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3BsdWdpbnMvZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNCBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDI1OiBEcmFnZ2luZyBvdmVyIHBsdWdpbl9kcmFnCiBQbHVnaW4g
cmVjZWl2ZWQgZXZlbnQ6IE1vdXNlRW50ZXIKIFBsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VN
b3ZlCiBQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IERyYWdFbnRlcgpAQCAtNiw1ICs3LDE0IEBAIFBs
dWdpbiByZWNlaXZlZCBldmVudDogRHJhZ0xlYXZlCiBQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IERy
YWdFbnRlcgogUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBEcmFnT3ZlcgogUGx1Z2luIHJlY2VpdmVk
IGV2ZW50OiBEcmFnRHJvcAotCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTGVhdmUKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAyNTogRHJhZ2dpbmcgb3ZlciBwbHVnaW5fZWRpdGFibGUKK1Bs
dWdpbiByZWNlaXZlZCBldmVudDogTW91c2VFbnRlcgorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBN
b3VzZU1vdmUKK1BsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VMZWF2ZQorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDI1OiBEcmFnZ2luZyBvdmVyIHBsdWdpbgorUGx1Z2luIHJlY2VpdmVkIGV2ZW50
OiBNb3VzZUVudGVyCitQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQorUGx1Z2luIHJl
Y2VpdmVkIGV2ZW50OiBNb3VzZUxlYXZlCisgIAogU29tZSB0ZXh0IHRvIGRyYWcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvZHJhZy1ldmVudHMuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3BsdWdpbnMvZHJhZy1ldmVudHMuaHRt
bAppbmRleCBjNTkxNGRhMmE2ODViOTI5YTU0MTQyMjE5YWM4ZmYwYjA4YmU3ZDBmLi5lZmFiYWI2
MGY3ZTE2MDVhMDRmOTBiYWMyOGEwYzA0YWE1NWU5MDhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy5odG1sCkBAIC05LDM3
ICs5LDQ4IEBACiA8L2hlYWQ+CiAKIDxib2R5IG9ubG9hZD0idGVzdCgpOyI+Ci08ZW1iZWQgaWQ9
InBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC13ZWJwbHVnaW4iIGNvbnRl
bnRFZGl0YWJsZT48L2VtYmVkPgorCis8ZW1iZWQgaWQ9InBsdWdpbl9kcmFnIiB0eXBlPSJhcHBs
aWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIgY2FuLXByb2Nlc3MtZHJhZz0idHJ1ZSIg
Y29udGVudEVkaXRhYmxlPSJmYWxzZSI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luX2VkaXRh
YmxlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIgY29udGVudEVk
aXRhYmxlPSJ0cnVlIj48L2VtYmVkPgorPGVtYmVkIGlkPSJwbHVnaW4iIHR5cGU9ImFwcGxpY2F0
aW9uL3gtd2Via2l0LXRlc3Qtd2VicGx1Z2luIj48L2VtYmVkPgogPGRpdiBpZD0ndGV4dCc+PHNw
YW4+U29tZSB0ZXh0IHRvIGRyYWc8L3NwYW4+PC9kaXY+CiA8c2NyaXB0PgogCitmdW5jdGlvbiBk
cmFnT3ZlclBsdWdpbihwbHVnaW4pIHsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RleHQnKTsKKyAgICBkaXYuZm9jdXMoKTsKKyAgICBnZXRTZWxlY3Rpb24oKS5jb2xs
YXBzZShkaXYsIDApOworICAgIGdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2Zvcndh
cmQnLCAnd29yZCcpOworCisgICAgY29uc29sZS5sb2coIkRyYWdnaW5nIG92ZXIgIiArIHBsdWdp
bi5pZCk7CisgICAgdmFyIHBvc2l0aW9uWCA9IHBsdWdpbi5vZmZzZXRMZWZ0ICsgcGx1Z2luLm9m
ZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgcG9zaXRpb25ZID0gcGx1Z2luLm9mZnNldFRvcCArIHBs
dWdpbi5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgdmFyIHN0YXJ0WCA9IGRpdi5vZmZzZXRMZWZ0
ICsgZGl2LmZpcnN0Q2hpbGQub2Zmc2V0V2lkdGggLyA1OworICAgIHZhciBzdGFydFkgPSBkaXYu
b2Zmc2V0VG9wICsgZGl2Lm9mZnNldEhlaWdodCAvIDI7OworCisgICAgLy8gRHJhZyBpbnRvIHRo
ZSBwbHVnaW4gYW5kIGRyYWcgb3V0IGJlZm9yZSBkcm9wcGluZy4KKyAgICBldmVudFNlbmRlci5k
cmFnTW9kZSA9IHRydWU7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFy
dFkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBG
b3J3YXJkKDI1MCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zaXRpb25YLCBwb3Np
dGlvblkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBvc2l0aW9uWCArIDIsIHBvc2l0
aW9uWSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBvc2l0aW9uWCwgcG9zaXRpb25ZKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjUwKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7Cit9CisKIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmV2ZW50U2Vu
ZGVyKSB7CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCJUaGlzIHRlc3QgZG9lcyBub3Qgd29yayBp
biBtYW51YWwgbW9kZS4iKTsKICAgICB9IGVsc2UgewogICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLQotICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQnKTsKLSAgICAgICAgZGl2LmZvY3VzKCk7Ci0gICAgICAgIGdldFNlbGVjdGlvbigpLmNvbGxh
cHNlKGRpdiwgMCk7Ci0gICAgICAgIGdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2Zv
cndhcmQnLCAnd29yZCcpOwotCi0gICAgICAgIHZhciBwb3NpdGlvblggPSBwbHVnaW4ub2Zmc2V0
TGVmdCArIDEwOwotICAgICAgICB2YXIgcG9zaXRpb25ZID0gcGx1Z2luLm9mZnNldFRvcCArIDEw
OwotCi0gICAgICAgIHZhciBzdGFydFggPSBkaXYub2Zmc2V0TGVmdCArIGRpdi5maXJzdENoaWxk
Lm9mZnNldFdpZHRoIC8gNTsKLSAgICAgICAgdmFyIHN0YXJ0WSA9IGRpdi5vZmZzZXRUb3AgKyBk
aXYub2Zmc2V0SGVpZ2h0IC8gMjs7Ci0KLSAgICAgICAgLy8gRHJhZyBpbnRvIHRoZSBwbHVnaW4g
YW5kIGRyYWcgb3V0IGJlZm9yZSBkcm9wcGluZy4KLSAgICAgICAgZXZlbnRTZW5kZXIuZHJhZ01v
ZGUgPSB0cnVlOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0
WSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgICAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCgyNTApOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3Np
dGlvblgsIHBvc2l0aW9uWSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBvc2l0
aW9uWCArIDIsIHBvc2l0aW9uWSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0WCwgc3RhcnRZKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zaXRpb25Y
LCBwb3NpdGlvblkpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIGRy
YWdPdmVyUGx1Z2luKHBsdWdpbl9kcmFnKTsKKyAgICAgICAgZHJhZ092ZXJQbHVnaW4ocGx1Z2lu
X2VkaXRhYmxlKTsKKyAgICAgICAgZHJhZ092ZXJQbHVnaW4ocGx1Z2luKTsKICAgICB9CiB9CiA8
L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169191</attachid>
            <date>2012-10-17 08:46:52 -0700</date>
            <delta_ts>2012-10-17 11:18:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99355-20121017114539.patch</filename>
            <type>text/plain</type>
            <size>16411</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyNWIzMjE4YjA4YjM4
MjFiMDI0YTdkNTI3MzU3M2U2OTBkMjMyMC4uMWNmMWNmOTBkNmNmOWFhOWU1ODM2MmE3NmVlZGJl
MzJkYTQwY2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTE1ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBwbHVn
aW5zOiBBbGxvdyBhIHBsdWdpbiB0byBkaWN0YXRlIHdoZXRoZXIgaXQgY2FuIHJlY2VpdmUgZHJh
ZyBldmVudHMgb3Igbm90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTkzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGRvaW5nIGEgZHJhZyBvdmVyIGEgcGx1Z2luLCBhc2sgdGhlIHBsdWdpbiB3
aGV0aGVyIGl0IGNhbiBhY2NlcHQKKyAgICAgICAgZHJhZy9kcm9wIHRvIGRlY2lkZSB3aGV0aGVy
IGRyYWcvZHJvcCBpcyBwb3NzaWJsZSBvciBub3QuIEF0IHByZXNlbnQsCisgICAgICAgIHBsdWdp
bnMgZG8gbm90IHJlY2VpdmUgZHJhZyBldmVudHMgdGhyb3VnaCBXZWJDb3JlIChpLmUuIHZhcmlv
dXMKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIFBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZl
bnQgaWdub3JlcyB0aGUKKyAgICAgICAgZHJvcC1ldmVudHMpLiBUaGlzIGNoYW5nZSBtYWtlcyBp
dCBwb3NzaWJsZSBmb3IgdGhlIHBvcnRzIHRvIGFzayB0aGUKKyAgICAgICAgcGx1Z2luIGZpcnN0
IHRvIGRlY2lkZSB3aGV0aGVyIGl0IGNhbiAob3Igd2FudHMgdG8pIGFjY2VwdCBkcmFnIGV2ZW50
cy4KKyAgICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmVtYWlucyB0aGUgc2FtZSwg
aS5lLiBwbHVnaW5zIGRvIG5vdCByZWNlaXZlCisgICAgICAgIGRyYWcgZXZlbnRzLiBGb3IgY2hy
b21pdW0sIHRoZSBvdmVycmlkZGVuIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlCisgICAgICAgIFdl
YlBsdWdpbiBpbnRlcmZhY2UgdG8gY2hlY2sgd2hldGhlciB0aGUgcGx1Z2luIGNhbiBhY2NlcHQg
ZHJhZyBldmVudHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpjYW5Qcm9jZXNzRHJhZyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxQbHVnSW5FbGVtZW50KToKKyAgICAgICAgKiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3QmFzZTo6Y2Fu
UHJvY2Vzc0RyYWcpOgorCiAyMDEyLTEwLTE1ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXMu
YnVnQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGaXggbWVtb3J5IGxlYWsg
aW4gVHJlZU91dGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzQ4YjVkNzEwOWZi
YWJlMzNlZmM2M2UzNGQ4Nzc5MWIzZjEwYTM2MS4uNWY5NmRmYjc4YmZkZmMyMDIxZGVlOTdhZWM2
YTQ2MjBlMGE4NTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0xMC0xNSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgcGx1Z2luczogQWxsb3cgYSBwbHVnaW4gdG8gZGljdGF0ZSB3aGV0aGVy
IGl0IGNhbiByZWNlaXZlIGRyYWcgZXZlbnRzIG9yIG5vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdlYlBsdWdpbjo6Y2FuUHJvY2Vz
c0RyYWcoKSBhbmQgdXNlIHRoYXQgdG8gaW1wbGVtZW50IFBsdWdpblZpZXdCYXNlOjpjYW5Qcm9j
ZXNzRHJhZy4KKworICAgICAgICAqIHB1YmxpYy9XZWJQbHVnaW4uaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGx1Z2luOjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAgIChXZWJQbHVnaW4pOgorICAg
ICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y2FuUHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlTW91c2VF
dmVudCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaDoKKyAgICAgICAg
KFdlYlBsdWdpbkNvbnRhaW5lckltcGwpOgorCiAyMDEyLTEwLTE1ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVk
IERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IDk5
NDdhNzM2ZWM4ODZlODM0YzJhMmRkZjk2NDJiNjUzMzY2M2UyMzguLjJkOTY1NjI0YTRlZmQ2ZmMw
OGFmNjBkOTYwNzc2MjE2MGY3ZmY1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwCkBAIC03Miw2ICs3MiwxMiBAQCBIVE1MUGx1Z0luRWxlbWVudDo6fkhUTUxQ
bHVnSW5FbGVtZW50KCkKICNlbmRpZgogfQogCitib29sIEhUTUxQbHVnSW5FbGVtZW50OjpjYW5Q
cm9jZXNzRHJhZygpIGNvbnN0Cit7CisgICAgY29uc3QgUGx1Z2luVmlld0Jhc2UqIHBsdWdpbiA9
IHBsdWdpbldpZGdldCgpICYmIHBsdWdpbldpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkgPyBz
dGF0aWNfY2FzdDxjb25zdCBQbHVnaW5WaWV3QmFzZSo+KHBsdWdpbldpZGdldCgpKSA6IDA7Cisg
ICAgcmV0dXJuIHBsdWdpbiA/IHBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWcoKSA6IGZhbHNlOworfQor
CiB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZXRhY2goKQogewogICAgIG1faW5zdGFuY2UuY2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCBkN2JjYjE2
NmVjYmQ4YzI1Yjk2MTA0ZWM2NjY1NTVkMzlmZDljMWQxLi44NTlhYzJlZGMyMzkzZjBmMTNhMTIw
MTJmZjJkYWVhNDAzMGU5YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuQ29udGFpblJhbmdl
RW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgYm9vbCBjYW5Qcm9jZXNz
RHJhZygpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCBjNzQ0YzE4OWViZGJmNGYwYTQwYjhhOTlkOGU3OWEyNWRi
MGE2ZDY4Li4yZTBhYWZiOTY2NmMyNjI2NzU2ZWRiZThhNmIwZTM4YjYyMzViZDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKQEAgLTU1Miw3ICs1NTMsMTEgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6Y2FuUHJvY2Vzc0RyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnRGF0YS0+
Y29udGFpbnNGaWxlcygpICYmIGFzRmlsZUlucHV0KHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCktPnJlbmRlcmVySXNFZGl0YWJsZSgpKQorICAgIGlmIChyZXN1bHQuaW5uZXJOb25T
aGFyZWROb2RlKCktPmlzUGx1Z2luRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxQbHVnSW5FbGVt
ZW50KiBwbHVnaW4gPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgIGlmICghcGx1Z2luLT5jYW5Qcm9jZXNzRHJhZygp
ICYmICFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPnJlbmRlcmVySXNFZGl0YWJsZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSBpZiAoIXJlc3VsdC5pbm5lck5v
blNoYXJlZE5vZGUoKS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChtX2RpZEluaXRpYXRlRHJhZyAmJiBtX2RvY3VtZW50VW5kZXJNb3VzZSA9
PSBtX2RyYWdJbml0aWF0b3IgJiYgcmVzdWx0LmlzU2VsZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCBmYzdlOThlZmRiOTk2MzEyYjE3NWY0MzZiNjVj
ZDkxYzgzMGNkYWMzLi5mMGE2NTA0ZGVhNTJlMjJkMGYwOGU2MTVjNTU2MDVjYmFlM2I1MDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdGhhdCB3b3JrcyBhcm91bmQg
dGhlIGZhY3QgdGhhdCB0aGUgV2ViS2l0MiBQbHVnaW5WaWV3IGlzbid0IGEgU2Nyb2xsYWJsZUFy
ZWEuCiAgICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0tleWJvYXJkRm9jdXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBQbHVnaW5WaWV3QmFzZShQ
bGF0Zm9ybVdpZGdldCB3aWRnZXQgPSAwKSA6IFdpZGdldCh3aWRnZXQpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4uaAppbmRleCBjNzJmZmYzMjU5ZGZiYzkyM2Vh
YTc3MWY2Nzk2ZTNmZjE5NGQ0OWEzLi5jNmEwYTU5OTdmZDYxZGUwZGQwYzgzNDUxZTk3ZDgyYTkz
MDFmY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4uaApAQCAt
NzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShXZWJT
dHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0tleWJv
YXJkRm9jdXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBib29sIGNh
blByb2Nlc3NEcmFnKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JikgPSAwOwogCiAgICAgLy8gQ29vcmRp
bmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIHdpbmRvdy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5k
ZXggNjg5MTU0MDU4M2E4YzRhYjliOGM2NWU1NGE0OWJjZjlhOWNlZmVhZS4uMGFlMDMzOWIwNGJh
OTY4NjBlNDA2NWMyMTI4Y2FlZjE0NGU4MGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKQEAgLTU3Nyw2ICs1Nzcs
MTEgQEAgYm9vbCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzdXBwb3J0c0tleWJvYXJkRm9jdXMo
KSBjb25zdAogICAgIHJldHVybiBtX3dlYlBsdWdpbi0+c3VwcG9ydHNLZXlib2FyZEZvY3VzKCk7
CiB9CiAKK2Jvb2wgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y2FuUHJvY2Vzc0RyYWcoKSBjb25z
dAoreworICAgIHJldHVybiBtX3dlYlBsdWdpbi0+Y2FuUHJvY2Vzc0RyYWcoKTsKK30KKwogdm9p
ZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp3aWxsRGVzdHJveVBsdWdpbkxvYWRPYnNlcnZlcihX
ZWJQbHVnaW5Mb2FkT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIHNpemVfdCBwb3MgPSBtX3Bs
dWdpbkxvYWRPYnNlcnZlcnMuZmluZChvYnNlcnZlcik7CkBAIC02NjEsNyArNjY2LDggQEAgdm9p
ZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqIGV2
ZW50KQogICAgIEFTU0VSVChwYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSk7CiAKICAgICBpZiAoZXZl
bnQtPmlzRHJhZ0V2ZW50KCkpIHsKLSAgICAgICAgaGFuZGxlRHJhZ0V2ZW50KGV2ZW50KTsKKyAg
ICAgICAgaWYgKG1fd2ViUGx1Z2luLT5jYW5Qcm9jZXNzRHJhZygpKQorICAgICAgICAgICAgaGFu
ZGxlRHJhZ0V2ZW50KGV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4
IGU4OWFmMDk4Nzk2YWY4MjUzNTFkZWM5ZGUzNzk1NmI0ZjE1MWZhYmUuLjg5ZjI5NzFiNzIzMjll
MGZkNjY0Nzk3NjU2ZmEwM2MyZDk0MTVmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVi
bGljOgogICAgIC8vIFBsdWdpblZpZXdCYXNlIG1ldGhvZHMKICAgICB2aXJ0dWFsIGJvb2wgZ2V0
Rm9ybVZhbHVlKFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0tleWJvYXJkRm9j
dXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdDsKIAog
ICAgIC8vIFdpZGdldCBtZXRob2RzCiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMWU3YmNiYzgyOWUzMWVmOTQyZjY0ZTcxZjkyYzlkYmU4NTJlNDhi
OS4uMjMzM2MxYjdlZjBiNjA3MmRiZGM1NWY4MWJlZWRmZmEyODIzZDgzMSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTEwLTE1ICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBwbHVnaW5zOiBBbGxvdyBhIHBsdWdpbiB0byBkaWN0YXRlIHdoZXRoZXIgaXQg
Y2FuIHJlY2VpdmUgZHJhZyBldmVudHMgb3Igbm90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIFRlc3RXZWJQbHVnaW4gdG8gaW1wbGVt
ZW50IHRoZSBuZXcgfGNhblByb2Nlc3NEcmFnfCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2luLmg6CisgICAgICAgIChUZXN0V2ViUGx1
Z2luOjpjYW5Qcm9jZXNzRHJhZyk6CisKIDIwMTItMTAtMTUgIE9qYW4gVmFmYWkgIDxvamFuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBMb3dlciB0aGUgbWluaW11bSB0aW1lIHJlcXVpcmVkIHRv
IGtlZXAgYSB0ZXN0IGluIHRoZSB0ZXN0IHJlc3VsdHMganNvbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViUGx1Z2luLmNwcAppbmRleCBjNTRlYmVkZWEzMjAwZDQx
MWI2Y2E5MTk2ZjljZTIxNmIxYmUwZGUxLi43MDgwYmVmMThhMmI0MjM5OWEwODI5NDlmOWJlMTI4
YzFhNWVlNzUzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
V2ViUGx1Z2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2Vi
UGx1Z2luLmNwcApAQCAtMTI1LDYgKzEyNSw3IEBAIFRlc3RXZWJQbHVnaW46OlRlc3RXZWJQbHVn
aW4oV2ViS2l0OjpXZWJGcmFtZSogZnJhbWUsCiAgICAgLCBtX2NvbnRleHQoMCkKICAgICAsIG1f
YWNjZXB0c1RvdWNoRXZlbnQoZmFsc2UpCiAgICAgLCBtX3ByaW50RXZlbnREZXRhaWxzKGZhbHNl
KQorICAgICwgbV9jYW5Qcm9jZXNzRHJhZyhmYWxzZSkKIHsKICAgICBzdGF0aWMgY29uc3QgV2Vi
U3RyaW5nIGtBdHRyaWJ1dGVQcmltaXRpdmUgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJwcmltaXRp
dmUiKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVCYWNrZ3JvdW5kQ29s
b3IgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJiYWNrZ3JvdW5kLWNvbG9yIik7CkBAIC0xMzIsNiAr
MTMzLDcgQEAgVGVzdFdlYlBsdWdpbjo6VGVzdFdlYlBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiBm
cmFtZSwKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVPcGFjaXR5ID0gV2Vi
U3RyaW5nOjpmcm9tVVRGOCgib3BhY2l0eSIpOwogICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcg
a0F0dHJpYnV0ZUFjY2VwdHNUb3VjaCA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImFjY2VwdHMtdG91
Y2giKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVQcmludEV2ZW50RGV0
YWlscyA9IFdlYlN0cmluZzo6ZnJvbVVURjgoInByaW50LWV2ZW50LWRldGFpbHMiKTsKKyAgICBz
dGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZyA9IFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImNhbi1wcm9jZXNzLWRyYWciKTsKIAogICAgIEFTU0VSVChwYXJhbXMuYXR0
cmlidXRlTmFtZXMuc2l6ZSgpID09IHBhcmFtcy5hdHRyaWJ1dGVWYWx1ZXMuc2l6ZSgpKTsKICAg
ICBzaXplX3Qgc2l6ZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXplKCk7CkBAIC0xNTEsNiAr
MTUzLDggQEAgVGVzdFdlYlBsdWdpbjo6VGVzdFdlYlBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiBm
cmFtZSwKICAgICAgICAgICAgIG1fYWNjZXB0c1RvdWNoRXZlbnQgPSBwYXJzZUJvb2xlYW4oYXR0
cmlidXRlVmFsdWUpOwogICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGtBdHRyaWJ1
dGVQcmludEV2ZW50RGV0YWlscykKICAgICAgICAgICAgIG1fcHJpbnRFdmVudERldGFpbHMgPSBw
YXJzZUJvb2xlYW4oYXR0cmlidXRlVmFsdWUpOworICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVO
YW1lID09IGtBdHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZykKKyAgICAgICAgICAgIG1fY2FuUHJvY2Vz
c0RyYWcgPSBwYXJzZUJvb2xlYW4oYXR0cmlidXRlVmFsdWUpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5oCmluZGV4IGFhNjUzM2Uz
MmM2MTI2OTQ1OTE2N2VhYzA1ZGZhZjg5ZDExZTcyMzcuLjQ5ZmRlODVhYWRjMWUzMTM5MGM2ZjMw
Njk2OWRkZGI4ZTJlYjExZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RXZWJQbHVnaW4uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0V2ViUGx1Z2luLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpbml0aWFsaXplKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVyKik7CiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3koKTsKICAgICB2aXJ0dWFsIE5QT2JqZWN0KiBzY3JpcHRhYmxlT2JqZWN0KCkg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FuUHJvY2Vzc0RyYWc7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViS2l0
OjpXZWJDYW52YXMqLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBmcmFtZVJlY3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgY2xpcFJl
Y3QsCkBAIC0xMzIsNiArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9hY2NlcHRzVG91
Y2hFdmVudDsKICAgICBib29sIG1fcHJpbnRFdmVudERldGFpbHM7CisgICAgYm9vbCBtX2NhblBy
b2Nlc3NEcmFnOwogfTsKIAogI2VuZGlmIC8vIFRlc3RQZXBwZXJQbHVnaW5faApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUw
MDFlODQ0ZGE4MDVmNzE5ZjFkNTU1YjM1N2UyYTgwMjlhZGIyNWYuLmZhYjJjOGJiM2Y4NzdmZTY3
ODJhYWM5NjVlMzIwNDMzZTFkYTQxOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0x
NSAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcGx1Z2luczogQWxsb3cgYSBwbHVnaW4gdG8gZGljdGF0ZSB3aGV0aGVyIGl0IGNhbiByZWNl
aXZlIGRyYWcgZXZlbnRzIG9yIG5vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5MzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgdG8gbm90IHNldCBjb250ZW50RWRpdGFibGUgb24g
dGhlIHBsdWdpbiBhbnltb3JlLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lu
cy9kcmFnLWV2ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
cGx1Z2lucy9kcmFnLWV2ZW50cy5odG1sOgorCiAyMDEyLTEwLTE1ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExheW91dCBUZXN0IHdlYmF1ZGlvL2NvZGVj
LXRlc3RzL3ZvcmJpcy92YnItNzBrYnBzLTQ0a2h6Lmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWctZXZl
bnRzLWV4cGVjdGVkLnR4dAppbmRleCAyNjE0M2VmNzIwN2VkMzQzZWUxMmM0YjEyNjQwZDBmMTli
MzgzNDRjLi4yMjEwYmIzODE5NjdmZWU5M2UwMDEzZTE4YmY0ZjllNWM3NDY3NDJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2Ry
YWctZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAyNTogRHJhZ2dpbmcgb3ZlciBwbHVnaW5fZHJhZwogUGx1Z2luIHJlY2VpdmVkIGV2ZW50
OiBNb3VzZUVudGVyCiBQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTW92ZQogUGx1Z2luIHJl
Y2VpdmVkIGV2ZW50OiBEcmFnRW50ZXIKQEAgLTYsNSArNywxNCBAQCBQbHVnaW4gcmVjZWl2ZWQg
ZXZlbnQ6IERyYWdMZWF2ZQogUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBEcmFnRW50ZXIKIFBsdWdp
biByZWNlaXZlZCBldmVudDogRHJhZ092ZXIKIFBsdWdpbiByZWNlaXZlZCBldmVudDogRHJhZ0Ry
b3AKLQorUGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZUxlYXZlCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjU6IERyYWdnaW5nIG92ZXIgcGx1Z2luX2VkaXRhYmxlCitQbHVnaW4gcmVjZWl2ZWQg
ZXZlbnQ6IE1vdXNlRW50ZXIKK1BsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VNb3ZlCitQbHVn
aW4gcmVjZWl2ZWQgZXZlbnQ6IE1vdXNlTGVhdmUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNTog
RHJhZ2dpbmcgb3ZlciBwbHVnaW4KK1BsdWdpbiByZWNlaXZlZCBldmVudDogTW91c2VFbnRlcgor
UGx1Z2luIHJlY2VpdmVkIGV2ZW50OiBNb3VzZU1vdmUKK1BsdWdpbiByZWNlaXZlZCBldmVudDog
TW91c2VMZWF2ZQorICAKIFNvbWUgdGV4dCB0byBkcmFnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9wbHVnaW5zL2RyYWctZXZlbnRzLmh0bWwKaW5kZXggYzU5MTRk
YTJhNjg1YjkyOWE1NDE0MjIxOWFjOGZmMGIwOGJlN2QwZi4uZWZhYmFiNjBmN2UxNjA1YTA0Zjkw
YmFjMjhhMGMwNGFhNTVlOTA4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vcGx1Z2lucy9kcmFnLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3BsdWdpbnMvZHJhZy1ldmVudHMuaHRtbApAQCAtOSwzNyArOSw0OCBAQAogPC9o
ZWFkPgogCiA8Ym9keSBvbmxvYWQ9InRlc3QoKTsiPgotPGVtYmVkIGlkPSJwbHVnaW4iIHR5cGU9
ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3Qtd2VicGx1Z2luIiBjb250ZW50RWRpdGFibGU+PC9l
bWJlZD4KKworPGVtYmVkIGlkPSJwbHVnaW5fZHJhZyIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC13ZWJwbHVnaW4iIGNhbi1wcm9jZXNzLWRyYWc9InRydWUiIGNvbnRlbnRFZGl0YWJs
ZT0iZmFsc2UiPjwvZW1iZWQ+Cis8ZW1iZWQgaWQ9InBsdWdpbl9lZGl0YWJsZSIgdHlwZT0iYXBw
bGljYXRpb24veC13ZWJraXQtdGVzdC13ZWJwbHVnaW4iIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+
PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LXdlYnBsdWdpbiI+PC9lbWJlZD4KIDxkaXYgaWQ9J3RleHQnPjxzcGFuPlNvbWUgdGV4dCB0
byBkcmFnPC9zcGFuPjwvZGl2PgogPHNjcmlwdD4KIAorZnVuY3Rpb24gZHJhZ092ZXJQbHVnaW4o
cGx1Z2luKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Jyk7
CisgICAgZGl2LmZvY3VzKCk7CisgICAgZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZGl2LCAwKTsK
KyAgICBnZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ3dvcmQnKTsK
KworICAgIGNvbnNvbGUubG9nKCJEcmFnZ2luZyBvdmVyICIgKyBwbHVnaW4uaWQpOworICAgIHZh
ciBwb3NpdGlvblggPSBwbHVnaW4ub2Zmc2V0TGVmdCArIHBsdWdpbi5vZmZzZXRXaWR0aCAvIDI7
CisgICAgdmFyIHBvc2l0aW9uWSA9IHBsdWdpbi5vZmZzZXRUb3AgKyBwbHVnaW4ub2Zmc2V0SGVp
Z2h0IC8gMjsKKworICAgIHZhciBzdGFydFggPSBkaXYub2Zmc2V0TGVmdCArIGRpdi5maXJzdENo
aWxkLm9mZnNldFdpZHRoIC8gNTsKKyAgICB2YXIgc3RhcnRZID0gZGl2Lm9mZnNldFRvcCArIGRp
di5vZmZzZXRIZWlnaHQgLyAyOzsKKworICAgIC8vIERyYWcgaW50byB0aGUgcGx1Z2luIGFuZCBk
cmFnIG91dCBiZWZvcmUgZHJvcHBpbmcuCisgICAgZXZlbnRTZW5kZXIuZHJhZ01vZGUgPSB0cnVl
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgyNTApOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBvc2l0aW9uWCwgcG9zaXRpb25ZKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3NpdGlvblggKyAyLCBwb3NpdGlvblkpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhwb3NpdGlvblgsIHBvc2l0aW9uWSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDI1MCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOworfQorCiBmdW5jdGlvbiB0ZXN0KCkgewogICAg
IGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAg
ICBkb2N1bWVudC53cml0ZSgiVGhpcyB0ZXN0IGRvZXMgbm90IHdvcmsgaW4gbWFudWFsIG1vZGUu
Iik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLSAg
ICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Jyk7Ci0gICAgICAg
IGRpdi5mb2N1cygpOwotICAgICAgICBnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShkaXYsIDApOwot
ICAgICAgICBnZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ3dvcmQn
KTsKLQotICAgICAgICB2YXIgcG9zaXRpb25YID0gcGx1Z2luLm9mZnNldExlZnQgKyAxMDsKLSAg
ICAgICAgdmFyIHBvc2l0aW9uWSA9IHBsdWdpbi5vZmZzZXRUb3AgKyAxMDsKLQotICAgICAgICB2
YXIgc3RhcnRYID0gZGl2Lm9mZnNldExlZnQgKyBkaXYuZmlyc3RDaGlsZC5vZmZzZXRXaWR0aCAv
IDU7Ci0gICAgICAgIHZhciBzdGFydFkgPSBkaXYub2Zmc2V0VG9wICsgZGl2Lm9mZnNldEhlaWdo
dCAvIDI7OwotCi0gICAgICAgIC8vIERyYWcgaW50byB0aGUgcGx1Z2luIGFuZCBkcmFnIG91dCBi
ZWZvcmUgZHJvcHBpbmcuCi0gICAgICAgIGV2ZW50U2VuZGVyLmRyYWdNb2RlID0gdHJ1ZTsKLSAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBzdGFydFkpOwotICAgICAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQo
MjUwKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zaXRpb25YLCBwb3NpdGlv
blkpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3NpdGlvblggKyAyLCBwb3Np
dGlvblkpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7
Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHBvc2l0aW9uWCwgcG9zaXRpb25ZKTsK
LSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICBkcmFnT3ZlclBsdWdpbihw
bHVnaW5fZHJhZyk7CisgICAgICAgIGRyYWdPdmVyUGx1Z2luKHBsdWdpbl9lZGl0YWJsZSk7Cisg
ICAgICAgIGRyYWdPdmVyUGx1Z2luKHBsdWdpbik7CiAgICAgfQogfQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>