<?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>21868</bug_id>
          
          <creation_ts>2008-10-24 14:22:31 -0700</creation_ts>
          <short_desc>Remove layerX and layerY on mouse events</short_desc>
          <delta_ts>2023-12-30 01:17:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69951</dependson>
    
    <dependson>70051</dependson>
    
    <dependson>70052</dependson>
    
    <dependson>86264</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>andrea.giammarchi</cc>
    
    <cc>annevk</cc>
    
    <cc>aphplix</cc>
    
    <cc>aroben</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mathias</cc>
    
    <cc>mrobinson</cc>
    
    <cc>priyajeet.hora</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>zcorpan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>96582</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-10-24 14:22:31 -0700</bug_when>
    <thetext>MouseRelatedEvent::receivedTarget() has this comment:

    // Adjust layerX/Y to be relative to the layer.
    // FIXME: We&apos;re pretty sure this is the wrong defintion of &quot;layer.&quot;
    // Our RenderLayer is a more modern concept, and layerX/Y is some
    // other notion about groups of elements (left over from the Netscape 4 days?);
    // we should test and fix this.

I was not able to find a description of &quot;layer&quot; here, but it seems to refer to the parent positioned element. This is not necessarily the parent RenderLayer (since we make RenderLayers for opacity etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442321</commentid>
    <comment_count>1</comment_count>
      <attachid>102017</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-07-26 09:53:22 -0700</bug_when>
    <thetext>Created attachment 102017
Proposed fix: Match Firefox&apos;s behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442326</commentid>
    <comment_count>2</comment_count>
      <attachid>102017</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-26 10:04:56 -0700</bug_when>
    <thetext>Comment on attachment 102017
Proposed fix: Match Firefox&apos;s behavior.

I&apos;d prefer to just remove layerX/layerY. Can you mail mozilla folks and see if they&apos;d agree with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442393</commentid>
    <comment_count>3</comment_count>
      <attachid>102017</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-07-26 11:23:01 -0700</bug_when>
    <thetext>Comment on attachment 102017
Proposed fix: Match Firefox&apos;s behavior.

&gt; I&apos;d prefer to just remove layerX/layerY. Can you mail mozilla folks and see if they&apos;d agree with this?

I have discussed briefly about this path on Mozilla&apos;s #content channel and the answer was mixed (we lack data to say if it is safe to do so). Filed https://bugzilla.mozilla.org/show_bug.cgi?id=674292 about removing the support on Mozilla side, we will see how it unfolds. Holding the review until we have better visibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446555</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-04 09:29:14 -0700</bug_when>
    <thetext>It looks like Mozilla is fine with deprecating layerX and layerY then removing them after some time.

On our side, removing them will involve changing 3 APIs that are exposing those 2 properties to the outside world: Mac (objc), Win (COM) and Chromium. I talked with Darin Fisher who is fine with a removal on Chromium side. Not sure about the policy for the 2 others&apos; APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453051</commentid>
    <comment_count>5</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2011-08-18 08:18:45 -0700</bug_when>
    <thetext>
quick consideration for both you and Mozilla folks.

We are in an &quot;online game through canvas&quot; era and with complex/floating/positioned layouts it&apos;s nearly impossible to understand where a *touch* on the screen has been fired in *canvas* *coordinate*, where x=0,y=0 is the top-left corner of the touched canvas.

AFAIK, there is no standard way to understand the touch/click inside a generic DOM element and if you guys remove layerX and layerY it would be really nice if you can introduce at least something like:

document.getElementPagePosition(HTMLElement)
// returns {pageX: 20, pageY: 738}

So that at least developers can subtract these coordinates accordingly with touch/mouse pageX/pageY coordinates and calculate the difference in the target to simulate the intention of layerX and layerY

If you see the &quot;mess&quot;, as example, jQuery.offset() method is:
https://github.com/jquery/jquery/blob/master/src/offset.js
you can realize such task is one of the most overcomplicated at least I know in a DOM context.

Thanks for your patience and Best Regards,
    Andrea Giammarchi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453058</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-18 08:29:22 -0700</bug_when>
    <thetext>Did you try event.offsetX/offsetY?

There&apos;s discussion in the standards bodies about mapping points between the coordinate spaces of different elements. WebKit already has window.webkitConvertPointFromPageToNode/webkitConvertPointFromNodeToPage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453063</commentid>
    <comment_count>7</comment_count>
    <who name="Andrea Giammarchi">andrea.giammarchi</who>
    <bug_when>2011-08-18 08:37:00 -0700</bug_when>
    <thetext>Simon I am not sure I get the point then ... is it about being standard and well defined or just about not being well defined ?

AFAIK Mozilla does not support offsetX and offsetY
https://developer.mozilla.org/en/DOM/Event/UIEvent/MouseEvent

Also I wonder if these are exposed through Touch events as well and accordingly with W3 Touch Interface these are not.

Could you give me some more info about this

window.webkitConvertPointFromPageToNode

and who&apos;s gonna implement it as well and when/if it is going to be standard?

Many thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457645</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-08-26 10:56:17 -0700</bug_when>
    <thetext>These attributes are exposed through the COM API on Windows. I don&apos;t think anyone actually uses that part of the API, so removing them should be safe. But it would be even safer to rename the functions to &quot;unused1&quot; and &quot;unused2&quot; (keeping the same arguments as today), to preserve ABI compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457651</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-08-26 11:03:58 -0700</bug_when>
    <thetext>Sam, I heard you are the one to ask for an ObjC API removal question.

Here is the problem: layerX / layerY are exposed through the ObjC API which means that we would need to remove them from the API too.

The API is in @interface DOMUIEvent (see Source/WebCore/bindings/objc/PublicDOMInterfaces.h).

What would be the best course of action for that? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478794</commentid>
    <comment_count>10</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-05 17:02:38 -0700</bug_when>
    <thetext>Sam, ping about a question on the obj-C API removal policy. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479458</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-06 14:00:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Sam, ping about a question on the obj-C API removal policy. Thanks!

We would probably need to start by marking them deprecated, as they are public API.  That step would be acceptable if we want to remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572035</commentid>
    <comment_count>12</comment_count>
    <who name="Flame">aphplix</who>
    <bug_when>2012-03-06 11:49:36 -0800</bug_when>
    <thetext>layerX/Y are supported in Firefox, Chrome &amp; IE. They have been supported for many years and work as expected and as documented.

As far as I can tell from the test results posted here the only failure was with Transformed content?

I can&apos;t see the justification for the removal of useful perfectly working cross-browser compatible functionality with no equivalent functionality to replace it.

I use layerX/Y extensively and have done so for many years, I&apos;m sure that I can&apos;t be the only person who will be caused massive problems by the removal of these properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572069</commentid>
    <comment_count>13</comment_count>
    <who name="Flame">aphplix</who>
    <bug_when>2012-03-06 12:33:53 -0800</bug_when>
    <thetext>just to clarify, in IE the properties are named x/y but they have the same functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572082</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-06 12:58:44 -0800</bug_when>
    <thetext>Documented where? Please provide URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572102</commentid>
    <comment_count>15</comment_count>
    <who name="Flame">aphplix</who>
    <bug_when>2012-03-06 13:27:03 -0800</bug_when>
    <thetext>Mozilla documentation is here:
https://developer.mozilla.org/en/Document_Object_Model_(DOM)/event.layerX
https://developer.mozilla.org/en/Document_Object_Model_(DOM)/event.layerY

which states that when the event occurs inside a positioned element the returned value is &quot;relative to the top left of the positioned element&quot;.

MSDN documentation for x/y is here:
http://msdn.microsoft.com/en-us/library/ff974658(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ff974659(v=vs.85).aspx

which states that the values of the properties are the coordinates of the mouse pointer, &quot;relative to the last positioned ancestor element&quot;.

MSDN documentation for layerX/Y cross-browser compatibility is here:
http://msdn.microsoft.com/en-us/library/gg130967(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/gg130968(v=vs.85).aspx

Further MSDN documentation detailing layerX/Y in IE9 is here:
http://msdn.microsoft.com/en-us/library/ms530302%28VS.85%29.aspx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572124</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-06 13:50:48 -0800</bug_when>
    <thetext>The point is that there is no W3C standard for layerX (or x). CSS OM View does not describe the &apos;x&apos; property, despite what the MS documentation says.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572145</commentid>
    <comment_count>17</comment_count>
    <who name="Flame">aphplix</who>
    <bug_when>2012-03-06 14:12:42 -0800</bug_when>
    <thetext>So what is the W3C standard equivalent of layerX then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572148</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-06 14:14:58 -0800</bug_when>
    <thetext>There isn&apos;t one, that&apos;s the point. If you think it&apos;s needed, you should argue for it in what-wg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572153</commentid>
    <comment_count>19</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-06 14:28:03 -0800</bug_when>
    <thetext>&gt; I can&apos;t see the justification for the removal of useful perfectly working cross-browser compatible functionality with no equivalent functionality to replace it.

I don&apos;t think you can call layer{X|Y} cross-browser as:
1) IE used to not support the property as-is (it was called x / y) but just started supporting it with IE9 (http://msdn.microsoft.com/en-us/library/ms530302%28VS.85%29.aspx)
2) Our implementation has been broken for some times: we don&apos;t return the same results as FF in non-simple cases (like add zoom-factor, overflow / opacity layers, transforms ...)

jQuery and dojo have found some replacements due to our warnings but I don&apos;t know what they used.

&gt; The point is that there is no W3C standard for layerX (or x). CSS OM View does not describe the &apos;x&apos; property, despite what the MS documentation says.

http://www.w3.org/TR/cssom-view/#dom-mouseevent-x seems to say that x is clientX?

I concur with Simon, this should be brought to the WHATWG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572217</commentid>
    <comment_count>20</comment_count>
    <who name="Flame">aphplix</who>
    <bug_when>2012-03-06 15:42:00 -0800</bug_when>
    <thetext>jQuery and Dojo have not found a replacement, they have simply dropped layerX/Y from their normalized event objects.

I can achieve most of my required functionality with offsetX/Y however offsetX/Y is implemented inconsistently across the browsers and is not implemented at all in Mozilla.

x/y in IE may have different names but they are the same properties as layerX/Y and therefore the layerX/Y functionality is present and consistent in the majority of current browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625848</commentid>
    <comment_count>21</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-16 14:08:49 -0700</bug_when>
    <thetext>For the record, we have decided to remove the warning for several reasons:
* we need to assess the web-compatibility issues.
* we need to engage the standard bodies to get a replacement.

See bug 86264 for more context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171573</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Pieters (:zcorpan)">zcorpan</who>
    <bug_when>2016-03-07 07:04:53 -0800</bug_when>
    <thetext>Spec bug: https://www.w3.org/Bugs/Public/show_bug.cgi?id=29518</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821098</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-07 10:22:31 -0800</bug_when>
    <thetext>https://github.com/web-platform-tests/interop-2022/issues/37</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2000905</commentid>
    <comment_count>24</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-12-19 16:44:29 -0800</bug_when>
    <thetext>https://github.com/w3c/uievents/issues/135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2002280</commentid>
    <comment_count>25</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-12-30 01:17:31 -0800</bug_when>
    <thetext>WONTFIX given these got standardized. If there&apos;s still a need to adjust them because our behavior doesn&apos;t match the specification, that&apos;s best done as a new bug I think (and hopefully with plenty of WPTs for the various edge cases).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102017</attachid>
            <date>2011-07-26 09:53:22 -0700</date>
            <delta_ts>2011-07-26 11:23:00 -0700</delta_ts>
            <desc>Proposed fix: Match Firefox&apos;s behavior.</desc>
            <filename>bug-21868-20110726095321.patch</filename>
            <type>text/plain</type>
            <size>13988</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE2ODcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MDE3YmY0YmEwNjg1OTk0Yzk0ZDEw
ZTFhOTRlMzNlYTRlYzc4M2E3Li40NTAwYzM1ZDAyZDE5OTc0MzQ5MGI1OGUxNDY4ZDFjOTJkYWJj
NTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMjYgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgbGF5ZXJYIGFuZCBsYXllclkgb24g
bW91c2UgZXZlbnRzIGFyZSB2ZXJ5IHByb2JhYmx5IHdyb25nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvbW91c2UtZXZlbnQtbGF5
ZXJYLWxheWVyWS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMv
bW91c2UtZXZlbnQtbGF5ZXJYLWxheWVyWS5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvbW91c2UtZXZlbnQtbGF5ZXJYLWxheWVyWS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICBOZXcgdGVzdCB0byBjaGVjayB0aGUgZGlmZmVyZW50IGNhc2VzLgorCisgICAgICAgICogZmFz
dC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0aW9uLmh0bWw6CisgICAgICAgIFVwZGF0
ZWQgdGhlIGV4cGVjdGVkIHJlc3VsdHMgaGVyZSwgaXQgc2hvdWxkIGJlIGZpbmUgYXMgdGhlIG9y
aWdpbmFsCisgICAgICAgIGJ1ZyB3YXMgYWJvdXQgcmVjYWxjdWxhdGluZyB0aGUgdmFsdWVzIHRv
byBvZnRlbiBub3QgYWJvdXQgdGhlIHNwZWNpZmljCisgICAgICAgIHZhbHVlcy4KKwogMjAxMS0w
Ny0yNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gamFwYW5lc2Utcmwtc2VsZWN0aW9uLWNsZWFyIGJyb2tlbiBieSBJQ1Ugcm9sbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtZXZlbnQtbGF5ZXJYLWxheWVy
WS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1ldmVudC1sYXll
clgtbGF5ZXJZLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGFiNTYyZWRiNWU3YWM4NTZjYmNl
ZDY5ZjNmYjQ2OGI0ZTNlYTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbW91c2UtZXZlbnQtbGF5ZXJYLWxheWVyWS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2
NyBAQAorVGVzdGluZyBlbGVtZW50IDAKK1BBU1Mgb2Zmc2V0VG9wIGlzIDEwMAorUEFTUyBvZmZz
ZXRMZWZ0IGlzIDEwMAorUEFTUyBldmVudC5sYXllclggaXMgMTAKK1BBU1MgZXZlbnQubGF5ZXJZ
IGlzIDE1CitQQVNTIGV2ZW50LmxheWVyWCBpcyAzMAorUEFTUyBldmVudC5sYXllclkgaXMgMjUK
K1BBU1MgZXZlbnQubGF5ZXJYIGlzIDgwCitQQVNTIGV2ZW50LmxheWVyWSBpcyA4NQorVGVzdGlu
ZyBlbGVtZW50IDEKK1BBU1Mgb2Zmc2V0VG9wIGlzIDEwMAorUEFTUyBvZmZzZXRMZWZ0IGlzIDMw
MAorUEFTUyBldmVudC5sYXllclggaXMgMTAKK1BBU1MgZXZlbnQubGF5ZXJZIGlzIDE1CitQQVNT
IGV2ZW50LmxheWVyWCBpcyA1NQorUEFTUyBldmVudC5sYXllclkgaXMgNTAKK1BBU1MgZXZlbnQu
bGF5ZXJYIGlzIDgwCitQQVNTIGV2ZW50LmxheWVyWSBpcyA4NQorVGVzdGluZyBlbGVtZW50IDIK
K1BBU1Mgb2Zmc2V0VG9wIGlzIDMwMAorUEFTUyBvZmZzZXRMZWZ0IGlzIDEwMAorUEFTUyBldmVu
dC5sYXllclggaXMgMTAKK1BBU1MgZXZlbnQubGF5ZXJZIGlzIDE1CitQQVNTIGV2ZW50LmxheWVy
WCBpcyAzMAorUEFTUyBldmVudC5sYXllclkgaXMgMjUKK1BBU1MgZXZlbnQubGF5ZXJYIGlzIDgw
CitQQVNTIGV2ZW50LmxheWVyWSBpcyA4NQorVGVzdGluZyBlbGVtZW50IDMKK1BBU1Mgb2Zmc2V0
VG9wIGlzIDMwMAorUEFTUyBvZmZzZXRMZWZ0IGlzIDMwMAorUEFTUyBldmVudC5sYXllclggaXMg
MTAKK1BBU1MgZXZlbnQubGF5ZXJZIGlzIDE1CitQQVNTIGV2ZW50LmxheWVyWCBpcyA1NQorUEFT
UyBldmVudC5sYXllclkgaXMgNTAKK1BBU1MgZXZlbnQubGF5ZXJYIGlzIDgwCitQQVNTIGV2ZW50
LmxheWVyWSBpcyA4NQorVGVzdGluZyBlbGVtZW50IDQKK1BBU1Mgb2Zmc2V0VG9wIGlzIDUwMAor
UEFTUyBvZmZzZXRMZWZ0IGlzIDEwMAorRkFJTCBldmVudC5sYXllclggc2hvdWxkIGJlIDEwLiBX
YXMgLTE1LgorRkFJTCBldmVudC5sYXllclkgc2hvdWxkIGJlIDE1LiBXYXMgLTEwLgorRkFJTCBl
dmVudC5sYXllclggc2hvdWxkIGJlIDU1LiBXYXMgMzAuCitGQUlMIGV2ZW50LmxheWVyWSBzaG91
bGQgYmUgNTAuIFdhcyAyNS4KK0ZBSUwgZXZlbnQubGF5ZXJYIHNob3VsZCBiZSA4MC4gV2FzIDU1
LgorRkFJTCBldmVudC5sYXllclkgc2hvdWxkIGJlIDg1LiBXYXMgNjAuCitUZXN0aW5nIGVsZW1l
bnQgNQorUEFTUyBvZmZzZXRUb3AgaXMgNTAwCitQQVNTIG9mZnNldExlZnQgaXMgMzAwCitQQVNT
IGV2ZW50LmxheWVyWCBpcyAxMAorUEFTUyBldmVudC5sYXllclkgaXMgMTUKK1BBU1MgZXZlbnQu
bGF5ZXJYIGlzIDU1CitQQVNTIGV2ZW50LmxheWVyWSBpcyA1MAorUEFTUyBldmVudC5sYXllclgg
aXMgODAKK1BBU1MgZXZlbnQubGF5ZXJZIGlzIDg1CitUZXN0aW5nIGVsZW1lbnQgNgorUEFTUyBv
ZmZzZXRUb3AgaXMgNTAwCitQQVNTIG9mZnNldExlZnQgaXMgNzAwCitQQVNTIGV2ZW50LmxheWVy
WCBpcyAxMAorUEFTUyBldmVudC5sYXllclkgaXMgMTUKK1BBU1MgZXZlbnQubGF5ZXJYIGlzIDU1
CitQQVNTIGV2ZW50LmxheWVyWSBpcyA1MAorUEFTUyBldmVudC5sYXllclggaXMgODAKK1BBU1Mg
ZXZlbnQubGF5ZXJZIGlzIDg1CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2Ut
ZXZlbnQtbGF5ZXJYLWxheWVyWS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2Ut
ZXZlbnQtbGF5ZXJYLWxheWVyWS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlNzgwNzE0ZmQxOGZlMWYwNDI1
MjJjOTU2ZjMyNTkzM2Y3OGQyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZS1ldmVudC1sYXllclgtbGF5ZXJZLmh0bWwKQEAgLTAsMCArMSwyNyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgc3R5bGU9ImhlaWdodDogMTAwMHB4OyI+CisgICAg
PCEtLSBGRiBkb2VzIG5vdCB0cmFjayBtb3ZlIGV2ZW50cyBvbiB0aGUgYm9keSBidXQgd3JhcHBp
bmcgb3VyIGNvZGUgaW4gYSBkaXYgZG9lcyBub3QgaGVscCA6KCAtLT4KKyAgICA8IS0tIGZpeGVk
IGxheWVyIGZvciB0ZXN0aW5nLCBsYXllcntYfFl9IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGlz
IGVsZW1lbnQuIC0tPgorICAgIDxkaXYgaWQ9IjAiIHN0eWxlPSJwb3NpdGlvbjpmaXhlZDsgdG9w
OiAxMDBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dy
b3VuZC1jb2xvcjogbGltZSI+PGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHRvcDogMjVw
eDsgbGVmdDogMjVweDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xv
cjogYmx1ZSI+PC9kaXY+PC9kaXY+CisgICAgPCEtLSBhYnNvbHV0ZSBsYXllciBvbiBhbiBpbmxp
bmUgc3BhbiwgbGF5ZXJ7WHxZfSBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhpcyBlbGVtZW50LiAt
LT4KKyAgICA8c3BhbiBpZD0iMSIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDEwMHB4
OyBsZWZ0OiAzMDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBuYXZ5Ij48L3NwYW4+CisgICAgPCEtLSBmaXhlZCBsYXllciB3aXRoIHJlbGF0aXZlIGxh
eWVyLCBsYXllcntYfFl9IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGlzIGVsZW1lbnQgYW5kIGl0
cyBjaGlsZC4gLS0+CisgICAgPGRpdiBpZD0iMiIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6
IDMwMHB4OyBsZWZ0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBuYXZ5Ij48ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMjVw
eDsgbGVmdDogMjVweDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xv
cjogcmVkIj48L2Rpdj48L2Rpdj4KKyAgICA8IS0tIGZpeGVkIGxheWVyIHdpdGggYSB0cmFuc3Bh
cmVudCBsYXllciwgbGF5ZXJ7WHxZfSBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhpcyBlbGVtZW50
LiAtLT4KKyAgICA8ZGl2IGlkPSIzIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7IHRvcDogMzAwcHg7
IGxlZnQ6IDMwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBuYXZ5OyBwYWRkaW5nOiAyNXB4OyI+PGRp
diBzdHlsZT0ib3BhY2l0eTogMC4yOyB3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaW1lIj48L2Rpdj48L2Rpdj4KKyAgICA8IS0tIFRyYW5zZm9ybWVkIGNvbnRl
bnQsIGxheWVye1h8WX0gc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoaXMgZWxlbWVudC4gLS0+Cisg
ICAgPGRpdiBpZD0iNCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6IDUyNXB4OyBsZWZ0OiAx
MjVweDsiPjxkaXYgc3R5bGU9InRyYW5zZm9ybTogc2NhbGUoMiwgMik7IC13ZWJraXQtdHJhbnNm
b3JtOiBzY2FsZSgyLCAyKTsgLW1vei10cmFuc2Zvcm06IHNjYWxlKDIsIDIpOyB3aWR0aDogNTBw
eDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2UiPjwvZGl2PjwvZGl2Pgor
ICAgIDwhLS0gZGVlcCBoaWVyYXJjaHkgd2l0aCBmaXhlZCBlbGVtZW50LCBsYXllcntYfFl9IHNo
b3VsZCBiZSByZWxhdGl2ZSB0byB0aGlzIGVsZW1lbnQuIC0tPgorICAgIDxkaXYgaWQ9IjUiIHN0
eWxlPSJwb3NpdGlvbjpmaXhlZDsgdG9wOiA1MDBweDsgbGVmdDogMzAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IG5hdnk7IHBhZGRpbmc6IDI1cHg7Ij48ZGl2PjxkaXY+PGRpdiBzdHlsZT0id2lkdGg6
IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkIj48L2Rpdj48L2Rpdj48
L2Rpdj48L2Rpdj4KKyAgICA8IS0tIHpvb20gZmFjdG9yIGluIHRoaXMgY3ViZSwgbGF5ZXJ7WHxZ
fSBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhpcyBlbGVtZW50LiAtLT4KKyAgICA8ZGl2IGlkPSI2
IiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7IHRvcDogNTAwcHg7IGxlZnQ6IDcwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBuYXZ5OyBwYWRkaW5nOiAyNXB4OyI+PGRpdiBzdHlsZT0id2lkdGg6IDUwcHg7
IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB6b29tOiAyIj48L2Rpdj48L2Rp
dj4KKyAgICA8cCBpZD0iY29uc29sZSIgc3R5bGU9ImhlaWdodDogNjBweDsgb3ZlcmZsb3c6IGhp
ZGRlbiI+PC9wPgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbW91c2UtZXZlbnQtbGF5ZXJY
LWxheWVyWS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUt
cG9zaXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGMyYWVjZjAyYjU3MGNkODRlODI3Y2Q4ZDEyNTMw
ODlhMjEzZTAyYTQuLjBhZTk2ODY5MjEyZjc2ZjkxZTM3YmFlMDgyODg4MDQ0YjBhNWI5N2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0aW9u
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1yZWxhdGl2
ZS1wb3NpdGlvbi1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBzcGFuCiAKIFBBU1Mgc2lt
dWxhdGVFbGVtZW50Q2xpY2sodGVzdEVsZW1lbnQsIFsxMDAsIDEwMCwgMjAwLCAyMDBdKTsgaXMg
JzEwMCwgMTAwLCAyMDAsIDIwMCcKLVBBU1Mgc2ltdWxhdGVFbGVtZW50Q2xpY2soc3BhbkVsZW1l
bnQsIFsxNiwgMTAsIDE2LCAxMF0pOyBpcyAnMTYsIDEwLCAxNiwgMTAnCi1QQVNTIHNpbXVsYXRl
RWxlbWVudENsaWNrKGlucHV0RWxlbWVudCwgWzQwLCAxMCwgNDAsIDEwXSk7IGlzICc0MCwgMTAs
IDQwLCAxMCcKK1BBU1Mgc2ltdWxhdGVFbGVtZW50Q2xpY2soc3BhbkVsZW1lbnQsIFsxNiwgMTAs
IDExNiwgMTEwXSk7IGlzICcxNiwgMTAsIDExNiwgMTEwJworUEFTUyBzaW11bGF0ZUVsZW1lbnRD
bGljayhpbnB1dEVsZW1lbnQsIFs0MCwgMTAsIDk1LCAxMF0pOyBpcyAnNDAsIDEwLCA5NSwgMTAn
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBv
c2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1yZWxhdGl2ZS1wb3Np
dGlvbi5odG1sCmluZGV4IGNhYWEyMWU4OTg4MmVjYWZiMTYwMGJhMWEwNzVjZTlmMGJiY2JjNzMu
LjE4OTQ2M2I0NzM1NWE1OTIwNzE3ZTUxYjBhNjBjYTM3NGI4YWM0MjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0aW9uLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24uaHRtbApAQCAt
OTcsNyArOTcsNyBAQAogICAgIHZhciBpbnB1dEVsZW1lbnQgPSB0ZXN0RWxlbWVudDIuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CiAKICAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVt
ZW50Q2xpY2sodGVzdEVsZW1lbnQsIFsxMDAsIDEwMCwgMjAwLCAyMDBdKTsiLCAiJzEwMCwgMTAw
LCAyMDAsIDIwMCciKTsKLSAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVtZW50Q2xpY2soc3BhbkVs
ZW1lbnQsIFsxNiwgMTAsIDE2LCAxMF0pOyIsICInMTYsIDEwLCAxNiwgMTAnIik7Ci0gICAgc2hv
dWxkQmUoInNpbXVsYXRlRWxlbWVudENsaWNrKGlucHV0RWxlbWVudCwgWzQwLCAxMCwgNDAsIDEw
XSk7IiwgIic0MCwgMTAsIDQwLCAxMCciKTsKKyAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVtZW50
Q2xpY2soc3BhbkVsZW1lbnQsIFsxNiwgMTAsIDExNiwgMTEwXSk7IiwgIicxNiwgMTAsIDExNiwg
MTEwJyIpOworICAgIHNob3VsZEJlKCJzaW11bGF0ZUVsZW1lbnRDbGljayhpbnB1dEVsZW1lbnQs
IFs0MCwgMTAsIDk1LCAxMF0pOyIsICInNDAsIDEwLCA5NSwgMTAnIik7CiA8L3NjcmlwdD4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tb3Vz
ZS1ldmVudC1sYXllclgtbGF5ZXJZLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3Vy
Y2VzL21vdXNlLWV2ZW50LWxheWVyWC1sYXllclkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY0YmNkYmY0OTNj
YWU2Mjk4NjlmOGFmMmJiYmM4ZGQ1NzQ3OWRkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tb3VzZS1ldmVudC1sYXllclgtbGF5ZXJZLmpzCkBA
IC0wLDAgKzEsNjcgQEAKK2lmICghd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgYWxlcnQoIlRo
aXMgdGVzdCBpcyBiZXN0IHJ1biB1bmRlciBEUlQuIFRvIHRlc3QgbWFudWFsbHksIGNsaWNrIG9u
IHRoZSBkaWZmZXJlbnQgcmVjdGFuZ2xlcyBhbmQgY2hlY2sgdGhhdCB0aGUgdmFsdWVzIG9mIGxh
eWVyWC9sYXllclkgYXJlIGNvcnJlY3QuIik7CisgICAgZnVuY3Rpb24gZHVtcEV2ZW50TGF5ZXJJ
bmZvKGUpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgPSAiZS5sYXllclg6ICIgKyBlLmxheWVyWCArICI8YnI+ZS5sYXllclk6ICIgKyBlLmxh
eWVyWTsKKyAgICB9CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs
IGR1bXBFdmVudExheWVySW5mbywgZmFsc2UpOworCit9IGVsc2UgeworCisgICAgdmFyIHRvcExl
ZnRQb2ludCA9IFsgMTAsIDE1IF07CisgICAgdmFyIG1pZGRsZVBvaW50ID0gWyA1NSwgNTAgXTsK
KyAgICB2YXIgYm90dG9tUmlnaHRQb2ludCA9IFsgODAsIDg1IF07CisKKyAgICAvLyBFeHBlY3Rl
ZCB2YWx1ZXMgZm9yIHtsYXllclgsIGxheWVyWX0gZm9yIHRoZSAzIHBvaW50cyB3ZSB0ZXN0ICh0
b3AtbGVmdCwgbWlkZGxlUG9pbnQsIGJvdHRvbS1sZWZ0IHBvaW50cykuCisgICAgdmFyIGV4cGVj
dGVkID0gWyBbIHRvcExlZnRQb2ludCwgWzMwLCAyNV0sIGJvdHRvbVJpZ2h0UG9pbnQgXSwKKyAg
ICAgICAgICAgICAgICAgICAgWyB0b3BMZWZ0UG9pbnQsIG1pZGRsZVBvaW50LCBib3R0b21SaWdo
dFBvaW50IF0sCisgICAgICAgICAgICAgICAgICAgIFsgdG9wTGVmdFBvaW50LCBbMzAsIDI1XSwg
Ym90dG9tUmlnaHRQb2ludCBdLAorICAgICAgICAgICAgICAgICAgICBbIHRvcExlZnRQb2ludCwg
bWlkZGxlUG9pbnQsIGJvdHRvbVJpZ2h0UG9pbnQgXSwKKyAgICAgICAgICAgICAgICAgICAgWyB0
b3BMZWZ0UG9pbnQsIG1pZGRsZVBvaW50LCBib3R0b21SaWdodFBvaW50IF0sCisgICAgICAgICAg
ICAgICAgICAgIFsgdG9wTGVmdFBvaW50LCBtaWRkbGVQb2ludCwgYm90dG9tUmlnaHRQb2ludCBd
LAorICAgICAgICAgICAgICAgICAgICBbIHRvcExlZnRQb2ludCwgbWlkZGxlUG9pbnQsIGJvdHRv
bVJpZ2h0UG9pbnQgXSwKKyAgICAgICAgICAgICAgICBdOworCisgICAgZnVuY3Rpb24gdGVzdChp
ZCwgcmVzdWx0cykgeworICAgICAgICB2YXIgdGVzdERvbmUgPSAwOworICAgICAgICBmdW5jdGlv
biBkdW1wVGFyZ2V0WFkoZSkgeworICAgICAgICAgICAgZXZlbnQgPSBlOworICAgICAgICAgICAg
cmVzdWx0cyA9IGV4cGVjdGVkW2lkXVt0ZXN0RG9uZV07CisgICAgICAgICAgICBzaG91bGRCZSgi
ZXZlbnQubGF5ZXJYIiwgc3RyaW5naWZ5KHJlc3VsdHNbMF0pKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC5sYXllclkiLCBzdHJpbmdpZnkocmVzdWx0c1sxXSkpOworICAgICAgICAgICAg
dGVzdERvbmUrKzsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICBvZmZzZXRUb3AgPSAgZWxlbWVudC5vZmZzZXRU
b3A7CisgICAgICAgIG9mZnNldExlZnQgPSAgZWxlbWVudC5vZmZzZXRMZWZ0OworCisgICAgICAg
IC8vIEZvciBhIHNjYWxlZCBib3gsIG9mZnNldExlZnQgYW5kIG9mZnNldFRvcCBhcmUgd3Jvbmcg
YW5kIGdpdmUgdGhlIG1pZGRsZSBvZiB0aGUgYm94LiBDb3JyZWN0IGl0IGhlcmUuCisgICAgICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIHdoZW4gdGhpcyBpcyBmaXhlZC4KKyAgICAgICAg
aWYgKGlkID09PSA0KSB7CisgICAgICAgICAgICBvZmZzZXRUb3AgPSA1MDA7CisgICAgICAgICAg
ICBvZmZzZXRMZWZ0ID0gMTAwOworICAgICAgICB9CisgICAgICAgIC8vIFdlIGR1bXAgdGhlIG9m
ZnNldFRvcCBhbmQgb2Zmc2V0TGVmdCBhcyBtb3N0IG9mIHRoZSByZXN1bHRzIGRlcGVuZHMgb24g
Z2V0dGluZyB0aG9zZSByaWdodC4KKyAgICAgICAgc2hvdWxkQmUoIm9mZnNldFRvcCIsIHN0cmlu
Z2lmeShvZmZzZXRUb3ApKTsKKyAgICAgICAgc2hvdWxkQmUoIm9mZnNldExlZnQiLCBzdHJpbmdp
Znkob2Zmc2V0TGVmdCkpOworCisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xp
Y2snLCBkdW1wVGFyZ2V0WFksIGZhbHNlKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8ob2Zmc2V0TGVmdCArIHRvcExlZnRQb2ludFswXSwgb2Zmc2V0VG9wICsgdG9wTGVmdFBvaW50
WzFdKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ob2Zmc2V0TGVm
dCArIG1pZGRsZVBvaW50WzBdLCBvZmZzZXRUb3AgKyBtaWRkbGVQb2ludFsxXSk7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG9mZnNldExlZnQgKyBib3R0b21SaWdo
dFBvaW50WzBdLCBvZmZzZXRUb3AgKyBib3R0b21SaWdodFBvaW50WzFdKTsKKyAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGR1bXBUYXJnZXRYWSwg
ZmFsc2UpOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgZGVidWcoIlRlc3RpbmcgZWxlbWVudCAiICsgaSk7CisgICAgICAg
IHZhciByZXN1bHRzID0gZXhwZWN0ZWRbaV1bMF07CisgICAgICAgIHRlc3QoaSwgcmVzdWx0cyk7
CisgICAgfQorfQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUwYWM3ZTE2NWFmODgwMDMyMzBmMDhmMGM1Nzc5OGVjYTVhMTEyZi4uM2JmZDE1ZmNkMDUxYjQ5
YjU2OWE1MGVmZGY1YWYzYmRhMTBiMjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDExLTA3LTI2ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisg
ICAgICAgIGxheWVyWCBhbmQgbGF5ZXJZIG9uIG1vdXNlIGV2ZW50cyBhcmUgdmVyeSBwcm9iYWJs
eSB3cm9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0OiBmYXN0L2V2ZW50cy9tb3VzZS1ldmVudC1sYXllclgtbGF5ZXJZLmh0bWwKKworICAgICAg
ICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJl
bGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24pOiBNYXRjaCBGRiBiZWhhdmlvciBo
ZXJlIChpdCBpcworICAgICAgICB0aGUgb25seSBicm93c2VyIHN1cHBvcnRpbmcgbGF5ZXJ7WHxZ
fSBhcGFydCBmcm9tIHVzKSBieSBnaXZpbmcgdGhlIHBvc2l0aW9uIHJlbGF0aXZlCisgICAgICAg
IHRvIG91ciBjbG9zZXN0IHBvc2l0aW9uZWQgb3IgcmVsYXRpdmVseSBwb3NpdGlvbmVkIHRhcmdl
dCBub2RlJ3MgYW5jZXN0b3IuCisKIDIwMTEtMDctMjUgIEFybm8gUmVuZXZpZXIgIDxhcm5vQHJl
bmV2aWVyLm5ldD4KIAogICAgICAgICByZW1vdmVzIGxhc3QgRU5BQkxFKERSQUdfU1VQUE9SVCkg
Z3RrIGNoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCA4
YzJiMDIxZjdjMWFiZjYzZjkzMjYzZjU4Y2U5M2YyNDA5NDJhYzQxLi4wNGJmZGM4ZDRjYWNkMGVi
MmYxZWQwYzYxZTBlYTdmOWJmZjZjMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAKQEAgLTE1NywyMCArMTU3LDE4IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6
OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFk
anVzdCBsYXllckxvY2F0aW9uIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBsYXllci4KLSAgICAvLyBG
SVhNRTogV2UncmUgcHJldHR5IHN1cmUgdGhpcyBpcyB0aGUgd3JvbmcgZGVmaW5pdGlvbiBvZiAi
bGF5ZXIuIgotICAgIC8vIE91ciBSZW5kZXJMYXllciBpcyBhIG1vcmUgbW9kZXJuIGNvbmNlcHQs
IGFuZCBsYXllclgvWSBpcyBzb21lCi0gICAgLy8gb3RoZXIgbm90aW9uIGFib3V0IGdyb3VwcyBv
ZiBlbGVtZW50cyAobGVmdCBvdmVyIGZyb20gdGhlIE5ldHNjYXBlIDQgZGF5cz8pOwotICAgIC8v
IHdlIHNob3VsZCB0ZXN0IGFuZCBmaXggdGhpcy4KLSAgICBOb2RlKiBuID0gdGFyZ2V0Tm9kZTsK
LSAgICB3aGlsZSAobiAmJiAhbi0+cmVuZGVyZXIoKSkKLSAgICAgICAgbiA9IG4tPnBhcmVudE5v
ZGUoKTsKLQotICAgIFJlbmRlckxheWVyKiBsYXllcjsKLSAgICBpZiAobiAmJiAobGF5ZXIgPSBu
LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKSkgewotICAgICAgICBsYXllci0+dXBkYXRl
TGF5ZXJQb3NpdGlvbigpOwotICAgICAgICBmb3IgKDsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBh
cmVudCgpKSB7Ci0gICAgICAgICAgICBtX2xheWVyTG9jYXRpb24gLT0gdG9TaXplKGxheWVyLT5s
b2NhdGlvbigpKTsKKyAgICAvLyBNb3ppbGxhIGZpbmRzIGEgcG9zaXRpb25lZCBvciByZWxhdGl2
ZWx5IHBvc2l0aW9uZWQgbm9kZSBpbiB0aGUgYW5jZXN0b3IgY2hhaW4gKGluY2x1ZGluZyB0aGUg
dGFyZ2V0IG5vZGUpCisgICAgLy8gYW5kIHJldHVybnMgdGhlIGNvb3JkaW5hdGVzIHJlbGF0aXZl
IHRvIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhpcyBlbGVtZW50LiBXZSBtYXRjaCB0aGVtIGhl
cmUuCisgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0Tm9kZS0+cmVuZGVy
ZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAg
IGlmIChyZW5kZXJlci0+aXNQb3NpdGlvbmVkKCkgfHwgcmVuZGVyZXItPmlzUmVsUG9zaXRpb25l
ZCgpKSB7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9zID0gcmVuZGVyZXItPmFic29s
dXRlVG9Mb2NhbChhYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAg
IG1fbGF5ZXJMb2NhdGlvbiA9IHJvdW5kZWRJbnRQb2ludChsb2NhbFBvcyk7CisgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXMgbm90IGRlYWwgcHJvcGVybHkgd2l0aCB0cmFuc2Zv
cm1hdGlvbiBhbmQgdGh1cworICAgICAgICAgICAgLy8gZG9lcyBub3QgbWF0Y2ggbW96aWxsYS4g
U2VlIGZhc3QvZXZlbnRzL21vdXNlLWV2ZW50LWxheWVyWC1sYXllclkuaHRtbC4KKyAgICAgICAg
ICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMSAvIHBhZ2Vab29tRmFjdG9yKHRoaXMpOworICAgICAg
ICAgICAgaWYgKHNjYWxlRmFjdG9yICE9IDEuMGYpCisgICAgICAgICAgICAgICAgbV9sYXllckxv
Y2F0aW9uLnNjYWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>