<?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>52788</bug_id>
          
          <creation_ts>2011-01-19 23:40:02 -0800</creation_ts>
          <short_desc>Any class other than Element should not use setShadowHost()</short_desc>
          <delta_ts>2011-10-03 09:39:42 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52905</dependson>
    
    <dependson>59005</dependson>
          <blocked>48698</blocked>
    
    <blocked>52963</blocked>
    
    <blocked>54179</blocked>
    
    <blocked>58703</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>krit</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337159</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-19 23:40:02 -0800</bug_when>
    <thetext>Any class other than Element should not use setShadowHost(). 
They should use host-&gt;setShadowRoot(this) or host-&gt;removeShadowRoot() instead 
because only these APIs guarantee mutual-link between host and root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346500</commentid>
    <comment_count>1</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-07 00:42:01 -0800</bug_when>
    <thetext>Agreed. In addition, neither should be called from the constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381608</commentid>
    <comment_count>2</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-07 13:11:04 -0700</bug_when>
    <thetext>Why should neither setShadowRoot/Host be called from the constructor?

As part of bug 57813 I am removing setShadowRoot in favor of ensureShadowRoot. So setShadowHost could become a protocol between Element::ensureShadowRoot and ShadowRoot::create.

However there are still some uses of setShadowHost with FIXMEs that we need to clean up to make this happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387493</commentid>
    <comment_count>3</comment_count>
      <attachid>89980</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-17 18:48:54 -0700</bug_when>
    <thetext>Created attachment 89980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387494</commentid>
    <comment_count>4</comment_count>
      <attachid>89980</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-17 18:53:49 -0700</bug_when>
    <thetext>Comment on attachment 89980
Patch

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

&gt; Source/WebCore/ChangeLog:1
&gt; +2011-04-17  Dominic Cooney  &lt;dominicc@chromium.org&gt;

WIP This divorces SVGShadowRootElement from ShadowRoot. Now ShadowRoot owns the IsShadowRoot flag and shadowHost accessor and SVGShadowRootElement gets an isSVGShadowRoot virtual and svgShadowHost accessor. The divorce is moderately messy because a bunch of special cases for shadows are now two-way tests. Because there is often special-casing for SVG nearby, I wonder if a more aggressive clean-up will yield a cleaner result… Alternatively, we could try replacing SVGShadowRootElement with ShadowRoot. What makes that tricky is that ShadowRoot isn’t an SVGElement, which a lot of SVG-special casing is predicated on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388040</commentid>
    <comment_count>5</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-18 14:24:10 -0700</bug_when>
    <thetext>Blocks bug 58703.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388075</commentid>
    <comment_count>6</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-18 14:54:12 -0700</bug_when>
    <thetext>I very much like the clear distinction of SVGShadowRoot vs. &quot;normal&quot; (non-SVG) shadow root in your patch!

One question: So far, setShadowHost set/cleared the IsShadowRootFlag - how will this be handled with isSVGShadowRoot? Will only SVG shadow root elements have this flag set, or will it also be set in ShadowRoot instances?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388100</commentid>
    <comment_count>7</comment_count>
      <attachid>89980</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-18 15:27:00 -0700</bug_when>
    <thetext>Comment on attachment 89980
Patch

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

Looks great, just a few nits.

&gt; Source/WebCore/dom/EventDispatcher.cpp:136
&gt; +            if ((*i)-&gt;isShadowRoot() || (*i)-&gt;isSVGShadowRoot()) {

This (and hereon) should be an inline helper function.

&gt; Source/WebCore/dom/EventDispatcher.cpp:246
&gt; +            ancestor = ancestor-&gt;isShadowRoot() ? ancestor-&gt;shadowHost() : ancestor-&gt;svgShadowHost();

You are querying isShadowRoot twice here. Perhaps optimize the loop a bit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388198</commentid>
    <comment_count>8</comment_count>
      <attachid>90125</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-18 18:39:33 -0700</bug_when>
    <thetext>Created attachment 90125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388201</commentid>
    <comment_count>9</comment_count>
      <attachid>90125</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-18 18:45:44 -0700</bug_when>
    <thetext>Comment on attachment 90125
Patch

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

&gt; Source/WebCore/dom/EventDispatcher.cpp:248
&gt; +        bool isSVGShadowRoot = ancestor-&gt;isSVGShadowRoot();

This avoids doing the test twice. I tried something more adventurous splitting this into three branches for shadows, SVG shadows and ordinary nodes, but I couldn’t find a clean way to make it work without some (excessive?) duplication. But I could try with fresh eyes tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388202</commentid>
    <comment_count>10</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-18 18:47:05 -0700</bug_when>
    <thetext>Roland: Ultimately IsShadowRoot flag is only set for ShadowRoot instances (and could be made a virtual as follow-up clean-up.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388245</commentid>
    <comment_count>11</comment_count>
      <attachid>90125</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-18 19:42:10 -0700</bug_when>
    <thetext>Comment on attachment 90125
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388309</commentid>
    <comment_count>12</comment_count>
      <attachid>90125</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-18 22:44:37 -0700</bug_when>
    <thetext>Comment on attachment 90125
Patch

Clearing flags on attachment: 90125

Committed r84225: &lt;http://trac.webkit.org/changeset/84225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388311</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-18 22:44:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388337</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 00:23:10 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; All reviewed patches have been landed.  Closing bug.

This patch broke the Qt Linux Release minimal build:

&lt;http://build.webkit.org/builders/Qt%20Linux%20Release%20minimal/builds/23373/steps/compile-webkit/logs/stdio&gt;

In particular, the error is:

[[
../../../Source/WebCore/dom/EventDispatcher.cpp: In member function ‘void WebCore::EventDispatcher::ensureEventAncestors(WebCore::Event*)’:
../../../Source/WebCore/dom/EventDispatcher.cpp:252: error: ‘class WebCore::Node’ has no member named ‘svgShadowHost’
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388339</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-19 00:31:26 -0700</bug_when>
    <thetext>Committed attempt to fix the build in changeset 84226 &lt;http://trac.webkit.org/changeset/84226&gt;.

I added an ENABLE(SVG) guard around the call to Node::svgShadowHost() since this method is only defined when building with SVG enabled. I was unsure whether this was the best place to add the guard or to add it around the local variable isSVGShadowRoot, such that isSVGShadowRoot is defined to be false when building with SVG disabled. I decided to place the guard closest to the call that required it, Node::svgShadowHost().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388340</commentid>
    <comment_count>16</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-04-19 00:35:40 -0700</bug_when>
    <thetext>Sorry I broke this. The placement of the #if in r84226 looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477026</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-03 09:31:45 -0700</bug_when>
    <thetext>This added virtual function call (isSVGShadowRoot()) to Node::parentNode():

 inline ContainerNode* Node::parentNode() const
 {
-    return getFlag(IsShadowRootFlag) ? 0 : parent();
+    return getFlag(IsShadowRootFlag) || isSVGShadowRoot() ? 0 : parent();
 }

This is not acceptable from performance perspective. I noticed the regression from samples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477034</commentid>
    <comment_count>18</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-03 09:39:42 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=69266</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89980</attachid>
            <date>2011-04-17 18:48:54 -0700</date>
            <delta_ts>2011-04-18 18:39:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52788-20110417184853.patch</filename>
            <type>text/plain</type>
            <size>13906</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MjQ4OTAyODMwZTJhYjk1
MzQzYTAxNjAzOGU0ZjVjMzU5YjkwYzI0Li5kMGI0NmNjZGJjZmM4ZDUzNGVmNTQ5ODE1YTkyMTIx
NmZjNGNmNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDQtMTcgIERvbWlu
aWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIFNWRyBzaGFkb3cgcm9vdHMgYW5kIERP
TSBzaGFkb3cgcm9vdHMgZGlzdGluY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Mjc4OAorCisgICAgICAgIE5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdl
LiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFNWRyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVsZW1lbnRJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmFkanVzdFRvU2hhZG93Qm91bmRhcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmFkanVzdFJlbGF0ZWRUYXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2Vz
dG9ycyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c2V0U2hhZG93SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzdmdTaGFkb3dIb3N0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNoYWRvd1RyZWVSb290Tm9kZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU1ZHU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXI6On5SZW5kZXJTVkdTaGFkb3dUcmVl
Um9vdENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFkb3dUcmVlUm9v
dENvbnRhaW5lcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NoYWRvd1Ry
ZWVSb290RWxlbWVudDo6U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6YXR0YWNoRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNsZWFyU1ZHU2hhZG93SG9zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6aXNTVkdTaGFkb3dSb290KToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHls
ZWRFbGVtZW50Ojp0aXRsZSk6CisKIDIwMTEtMDQtMTQgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6
a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBmZGE0ZDg4NmFhN2VmOWUyZjEx
MDdkYTZlMjlmZWI4YjVlMmViOGNlLi43ZjFjZTZiZDI1MmUzN2Q2Y2ZkY2RiYjQzMDMzMWIwNGQ2
NWRkMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNjUsMTAg
KzY1LDEwIEBAIHN0YXRpYyBFdmVudFRhcmdldCogZmluZEVsZW1lbnRJbnN0YW5jZShOb2RlKiBy
ZWZlcmVuY2VOb2RlKQogICAgIC8vIFNwZWM6IFRoZSBldmVudCBoYW5kbGluZyBmb3IgdGhlIG5v
bi1leHBvc2VkIHRyZWUgd29ya3MgYXMgaWYgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBoYWQgYmVl
biB0ZXh0dWFsbHkgaW5jbHVkZWQKICAgICAvLyBhcyBhIGRlZXBseSBjbG9uZWQgY2hpbGQgb2Yg
dGhlICd1c2UnIGVsZW1lbnQsIGV4Y2VwdCB0aGF0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0
aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKICAgICBmb3IgKE5vZGUqIG4gPSByZWZlcmVu
Y2VOb2RlOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmICghbi0+aXNTaGFk
b3dSb290KCkgfHwgIW4tPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBpZiAoIW4tPmlzU1ZHU2hh
ZG93Um9vdCgpIHx8ICFuLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIEVsZW1lbnQqIHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50ID0gbi0+c2hhZG93SG9z
dCgpOworICAgICAgICBFbGVtZW50KiBzaGFkb3dUcmVlUGFyZW50RWxlbWVudCA9IG4tPnN2Z1No
YWRvd0hvc3QoKTsKICAgICAgICAgQVNTRVJUKHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50LT5oYXNU
YWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKTsKIAogICAgICAgICBpZiAoU1ZHRWxlbWVudEluc3Rh
bmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQqPihzaGFkb3dUcmVlUGFy
ZW50RWxlbWVudCktPmluc3RhbmNlRm9yU2hhZG93VHJlZUVsZW1lbnQocmVmZXJlbmNlTm9kZSkp
CkBAIC0xMzMsNyArMTMzLDcgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRj
aGVyOjphZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2QKICAgICBib29sIGRp
dmVyZ2VkID0gZmFsc2U7CiAgICAgZm9yIChWZWN0b3I8Tm9kZSo+Ojpjb25zdF9pdGVyYXRvciBp
ID0gcmVsYXRlZFRhcmdldEFuY2VzdG9ycy5lbmQoKSAtIDE7IGkgPj0gcmVsYXRlZFRhcmdldEFu
Y2VzdG9ycy5iZWdpbigpOyAtLWkpIHsKICAgICAgICAgaWYgKGRpdmVyZ2VkKSB7Ci0gICAgICAg
ICAgICBpZiAoKCppKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGlmICgoKmkpLT5p
c1NoYWRvd1Jvb3QoKSB8fCAoKmkpLT5pc1NWR1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAg
ICAgIGZpcnN0RGl2ZXJnZW50Qm91bmRhcnkgPSBpICsgMTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiBFdmVudERpc3BhdGNoZXI6OmFkanVzdFRvU2hhZG93Qm91bmRhcmllcyhQYXNzUmVmUHRy
PE5vZAogCiAgICAgICAgIHRhcmdldEFuY2VzdG9yLS07CiAKLSAgICAgICAgaWYgKCgqaSktPmlz
U2hhZG93Um9vdCgpKQorICAgICAgICBpZiAoKCppKS0+aXNTaGFkb3dSb290KCkgfHwgKCppKS0+
aXNTVkdTaGFkb3dSb290KCkpCiAgICAgICAgICAgICBsb3dlc3RDb21tb25Cb3VuZGFyeSA9IHRh
cmdldEFuY2VzdG9yOwogCiAgICAgICAgIGlmICgoKmkpICE9ICgqdGFyZ2V0QW5jZXN0b3IpLm5v
ZGUoKSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBFdmVudERp
c3BhdGNoZXI6OmFkanVzdFRvU2hhZG93Qm91bmRhcmllcyhQYXNzUmVmUHRyPE5vZAogCiAgICAg
aWYgKCFkaXZlcmdlZCkgewogICAgICAgICAvLyBUaGUgcmVsYXRlZFRhcmdldCBpcyBhIHBhcmVu
dCBvciBzaGFkb3dIb3N0IG9mIHRoZSB0YXJnZXQuCi0gICAgICAgIGlmIChtX25vZGUtPmlzU2hh
ZG93Um9vdCgpKQorICAgICAgICBpZiAobV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX25vZGUt
PmlzU1ZHU2hhZG93Um9vdCgpKQogICAgICAgICAgICAgbG93ZXN0Q29tbW9uQm91bmRhcnkgPSBt
X2FuY2VzdG9ycy5iZWdpbigpOwogICAgIH0gZWxzZSBpZiAoKCpmaXJzdERpdmVyZ2VudEJvdW5k
YXJ5KSA9PSBtX25vZGUuZ2V0KCkpIHsKICAgICAgICAgLy8gU2luY2UgYW5jZXN0b3JzIGRvZXMg
bm90IGNvbnRhaW4gdGFyZ2V0IGl0c2VsZiwgd2UgbXVzdCBhY2NvdW50CkBAIC0yMDMsNyArMjAz
LDcgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRjaGVyOjphZGp1c3RSZWxh
dGVkVGFyZ2V0KEV2ZW50KiBldmVudCwgUGFzc1IKICAgICBWZWN0b3I8Tm9kZSo+IHJlbGF0ZWRU
YXJnZXRBbmNlc3RvcnM7CiAgICAgTm9kZSogb3V0ZXJtb3N0U2hhZG93Qm91bmRhcnkgPSByZWxh
dGVkVGFyZ2V0LmdldCgpOwogICAgIGZvciAoTm9kZSogbiA9IG91dGVybW9zdFNoYWRvd0JvdW5k
YXJ5OyBuOyBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChuLT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpIHx8IG4tPmlzU1ZHU2hh
ZG93Um9vdCgpKQogICAgICAgICAgICAgb3V0ZXJtb3N0U2hhZG93Qm91bmRhcnkgPSBuLT5wYXJl
bnRPckhvc3ROb2RlKCk7CiAgICAgICAgIGlmICghbm9Db21tb25Cb3VuZGFyeSkKICAgICAgICAg
ICAgIHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnMuYXBwZW5kKG4pOwpAQCAtMjQwLDEwICsyNDAsMTAg
QEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmVuc3VyZUV2ZW50QW5jZXN0b3JzKEV2ZW50KiBldmVu
dCkKICAgICBFdmVudFRhcmdldCogdGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFy
Z2V0UnVsZXMoYW5jZXN0b3IpOwogICAgIGJvb2wgc2hvdWxkU2tpcE5leHRBbmNlc3RvciA9IGZh
bHNlOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChhbmNlc3Rvci0+aXNTaGFkb3dS
b290KCkpIHsKKyAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NoYWRvd1Jvb3QoKSB8fCBhbmNlc3Rv
ci0+aXNTVkdTaGFkb3dSb290KCkpIHsKICAgICAgICAgICAgIGlmIChiZWhhdmlvciA9PSBTdGF5
SW5zaWRlU2hhZG93RE9NKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGFu
Y2VzdG9yID0gYW5jZXN0b3ItPnNoYWRvd0hvc3QoKTsKKyAgICAgICAgICAgIGFuY2VzdG9yID0g
YW5jZXN0b3ItPmlzU2hhZG93Um9vdCgpID8gYW5jZXN0b3ItPnNoYWRvd0hvc3QoKSA6IGFuY2Vz
dG9yLT5zdmdTaGFkb3dIb3N0KCk7CiAgICAgICAgICAgICBpZiAoIXNob3VsZFNraXBOZXh0QW5j
ZXN0b3IpCiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gYW5jZXN0b3I7CiAgICAgICAgIH0gZWxz
ZQpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFu
Y2VzdG9ycyhFdmVudCogZXZlbnQpCiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAvLyBTa2lw
IFNWR1NoYWRvd1RyZWVSb290RWxlbWVudC4KLSAgICAgICAgc2hvdWxkU2tpcE5leHRBbmNlc3Rv
ciA9IGFuY2VzdG9yLT5pc1NWR0VsZW1lbnQoKSAmJiBhbmNlc3Rvci0+aXNTaGFkb3dSb290KCk7
CisgICAgICAgIHNob3VsZFNraXBOZXh0QW5jZXN0b3IgPSBhbmNlc3Rvci0+aXNTVkdTaGFkb3dS
b290KCk7CiAgICAgICAgIGlmIChzaG91bGRTa2lwTmV4dEFuY2VzdG9yKQogICAgICAgICAgICAg
Y29udGludWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAzODY4MGE1YjE4NTVlNzgwMjcx
MThkMjY0NGZjZjk4NWQ4MGU4Y2VhLi4yM2Y0ZGJhZmZiZTZhNTVlOGY2ZTUwN2NjNDJmYTIxNjQ5
NzdiOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC01NTIsNyArNTUyLDcgQEAgRWxlbWVudCogTm9k
ZTo6c2hhZG93SG9zdCgpIGNvbnN0CiAKIHZvaWQgTm9kZTo6c2V0U2hhZG93SG9zdChFbGVtZW50
KiBob3N0KQogewotICAgIEFTU0VSVCghcGFyZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQoIXBhcmVu
dE5vZGUoKSAmJiAhaXNTVkdTaGFkb3dSb290KCkpOwogICAgIGlmIChob3N0KQogICAgICAgICBz
ZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpOwogICAgIGVsc2UKQEAgLTE2MDUsNiArMTYwNSwxMyBA
QCBib29sIE5vZGU6OmNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50
T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0Tm9kZSgpLT5jYW5TdGFydFNlbGVjdGlvbigpIDog
dHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShTVkcpCitTVkdVc2VFbGVtZW50KiBOb2RlOjpzdmdTaGFk
b3dIb3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTVkdTaGFkb3dSb290KCkgPyBzdGF0aWNf
Y2FzdDxTVkdVc2VFbGVtZW50Kj4ocGFyZW50KCkpIDogMDsKK30KKyNlbmRpZgorCiBOb2RlKiBO
b2RlOjpzaGFkb3dBbmNlc3Rvck5vZGUoKQogewogI2lmIEVOQUJMRShTVkcpCkBAIC0xNjI2LDcg
KzE2MzMsNyBAQCBOb2RlKiBOb2RlOjpzaGFkb3dUcmVlUm9vdE5vZGUoKQogewogICAgIE5vZGUq
IHJvb3QgPSB0aGlzOwogICAgIHdoaWxlIChyb290KSB7Ci0gICAgICAgIGlmIChyb290LT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgaWYgKHJvb3QtPmlzU2hhZG93Um9vdCgpIHx8IHJvb3QtPmlz
U1ZHU2hhZG93Um9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CiAgICAgICAgIHJvb3Qg
PSByb290LT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggYThmYjNhYWMxNGIxMmEzZTQwMWY0YTE4YjFlMmVhZjYwZDg1NjkwNy4uYzliM2UwYTM5
NjQ5OWM3Njk5OTZhMjNlNmFjM2I3MGNlOTk4OTdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03MSw2ICs3
MSw5IEBAIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CisjaWYgRU5BQkxFKFNWRykKK2Ns
YXNzIFNWR1VzZUVsZW1lbnQ7CisjZW5kaWYKIGNsYXNzIFRhZ05vZGVMaXN0OwogY2xhc3MgVHJl
ZVNjb3BlOwogCkBAIC0xOTEsNiArMTk0LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzSFRNTEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSFRNTEZsYWcpOyB9CiAKICAgICBib29s
IGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTVkdGbGFnKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1NWR1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
I2lmIEVOQUJMRShTVkcpCisgICAgU1ZHVXNlRWxlbWVudCogc3ZnU2hhZG93SG9zdCgpIGNvbnN0
OworI2VuZGlmCiAKICNpZiBFTkFCTEUoV01MKQogICAgIHZpcnR1YWwgYm9vbCBpc1dNTEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjExLDkgKzIxOCw5IEBAIHB1YmxpYzoK
ICAgICBOb2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICBOb2RlKiBzaGFkb3dUcmVlUm9v
dE5vZGUoKTsKICAgICBib29sIGlzSW5TaGFkb3dUcmVlKCk7Ci0gICAgLy8gTm9kZSdzIHBhcmVu
dCBvciBzaGFkb3cgdHJlZSBob3N0LgorICAgIC8vIE5vZGUncyBwYXJlbnQsIHNoYWRvdyB0cmVl
IGhvc3QsIG9yIFNWRyB1c2UuCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9kZSgp
IGNvbnN0OwotICAgIC8vIFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRvd0hv
c3QgaXMgMC4KKyAgICAvLyBVc2Ugd2hlbiBpdCdzIGd1YXJhbnRlZWQgdG8gdGhhdCBzaGFkb3dI
b3N0IGlzIDAgYW5kIHN2Z1NoYWRvd0hvc3QgaXMgMC4KICAgICBDb250YWluZXJOb2RlKiBwYXJl
bnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCkgY29uc3Q7CiAKICAgICBFbGVtZW50KiBzaGFkb3dI
b3N0KCkgY29uc3Q7CkBAIC03MzMsNyArNzQwLDcgQEAgaW5saW5lIHZvaWQgYWRkU3VicmVzb3Vy
Y2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKIAogaW5saW5l
IENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBn
ZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpID8gMCA6IHBhcmVudCgpOworICAgIHJldHVybiBnZXRG
bGFnKElzU2hhZG93Um9vdEZsYWcpIHx8IGlzU1ZHU2hhZG93Um9vdCgpID8gMCA6IHBhcmVudCgp
OwogfQogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNv
bnN0CkBAIC03NDMsNyArNzUwLDcgQEAgaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVu
dE9ySG9zdE5vZGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50
Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFnZXRGbGFnKElz
U2hhZG93Um9vdEZsYWcpKTsKKyAgICBBU1NFUlQoIWdldEZsYWcoSXNTaGFkb3dSb290RmxhZykg
JiYgIWlzU1ZHU2hhZG93Um9vdCgpKTsKICAgICByZXR1cm4gcGFyZW50T3JIb3N0Tm9kZSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YWRvd1RyZWVSb290Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwCmluZGV4IDU3MzYzMzM5NjZiZjQ3
YzZiOGU3ZDdjYzQ4ZTI4ZTIyZjQ2MDc4YjQuLmQyYTExMDM4MjhmM2FhZTIzNWQwOWY3NGU3MmNk
NGJkYjk5Y2NhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyOjp+UmVuZGVyU1ZHU2hh
ZG93VHJlZVJvb3RDb250YWluZXIoKQogewogICAgIGlmIChtX3NoYWRvd1Jvb3QgJiYgbV9zaGFk
b3dSb290LT5hdHRhY2hlZCgpKSB7CiAgICAgICAgIG1fc2hhZG93Um9vdC0+ZGV0YWNoKCk7Ci0g
ICAgICAgIG1fc2hhZG93Um9vdC0+Y2xlYXJTaGFkb3dIb3N0KCk7CisgICAgICAgIG1fc2hhZG93
Um9vdC0+Y2xlYXJTVkdTaGFkb3dIb3N0KCk7CiAgICAgfQogfQogCkBAIC01OSw3ICs1OSw3IEBA
IHZvaWQgUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXI6OnVwZGF0ZUZyb21FbGVtZW50
KCkKICAgICAgICAgdXNlRWxlbWVudC0+YnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKICAgICB9CiAK
LSAgICBBU1NFUlQobV9zaGFkb3dSb290LT5zaGFkb3dIb3N0KCkgPT0gdXNlRWxlbWVudCk7Cisg
ICAgQVNTRVJUKG1fc2hhZG93Um9vdC0+c3ZnU2hhZG93SG9zdCgpID09IHVzZUVsZW1lbnQpOwog
CiAgICAgYm9vbCBzaG91bGRSZWNyZWF0ZVRyZWUgPSBtX3JlY3JlYXRlVHJlZTsKICAgICBpZiAo
bV9yZWNyZWF0ZVRyZWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcAppbmRleCA5Y2NkZWYwZTNhM2UxN2FiNWQ5OWVl
NzE5MjQ5N2YzMzZhOTViNzg1Li5hYzRhNjNlZDU2NjRmYWZhYzFlZDk1ZmM2ZWMyY2UwNGE3YmQx
YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1Ry
ZWVFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFk
b3dUcmVlRWxlbWVudHMuY3BwCkBAIC01MywyMSArNTMsMjEgQEAgUGFzc1JlZlB0cjxFbGVtZW50
PiBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXMKIH0KIC8vIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudAogCi1pbmxpbmUgU1ZHU2hhZG93
VHJlZVJvb3RFbGVtZW50OjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBTVkdVc2VFbGVtZW50KiBzaGFkb3dQYXJlbnQpCitpbmxpbmUgU1ZHU2hhZG93VHJlZVJv
b3RFbGVtZW50OjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBT
VkdVc2VFbGVtZW50KiBob3N0KQogICAgIDogU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQo
ZG9jdW1lbnQpCiB7Ci0gICAgc2V0U2hhZG93SG9zdChzaGFkb3dQYXJlbnQpOworICAgIHNldFBh
cmVudChob3N0KTsKICAgICBzZXRJbkRvY3VtZW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHU2hh
ZG93VHJlZVJvb3RFbGVtZW50PiBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQsIFNWR1VzZUVsZW1lbnQqIHNoYWRvd1BhcmVudCkKK1Bhc3NSZWZQdHI8
U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50PiBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQsIFNWR1VzZUVsZW1lbnQqIGhvc3QpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoZG9jdW1lbnQsIHNoYWRvd1Bh
cmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50
KGRvY3VtZW50LCBob3N0KSk7CiB9CiAKIHZvaWQgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50Ojph
dHRhY2hFbGVtZW50KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJBcmVuYSog
YXJlbmEpCiB7Ci0gICAgQVNTRVJUKHNoYWRvd0hvc3QoKSk7CisgICAgQVNTRVJUKHN2Z1NoYWRv
d0hvc3QoKSk7CiAKICAgICAvLyBDcmVhdGUgdGhlIHJlbmRlcmVyIHdpdGggdGhlIHNwZWNpZmll
ZCBzdHlsZQogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcihhcmVu
YSwgc3R5bGUuZ2V0KCkpOwpAQCAtODEsMTIgKzgxLDEyIEBAIHZvaWQgU1ZHU2hhZG93VHJlZVJv
b3RFbGVtZW50OjphdHRhY2hFbGVtZW50KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBS
ZW5kCiAKICAgICAvLyBBZGQgdGhlIHJlbmRlcmVyIHRvIHRoZSByZW5kZXIgdHJlZQogICAgIGlm
IChyZW5kZXJlcikKLSAgICAgICAgc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpLT5hZGRDaGlsZChy
ZW5kZXJlcik7CisgICAgICAgIHN2Z1NoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQo
cmVuZGVyZXIpOwogfQogCi12b2lkIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6Y2xlYXJTaGFk
b3dIb3N0KCkKK3ZvaWQgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OjpjbGVhclNWR1NoYWRvd0hv
c3QoKQogewotICAgIHNldFNoYWRvd0hvc3QoMCk7CisgICAgc2V0UGFyZW50KDApOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVF
bGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxl
bWVudHMuaAppbmRleCAyOTUyZTM1ODllMjZmNjEzMjEzM2Y4YjZjMzIzMTg3MGM4ODFhMTA2Li44
Y2JkNGI3YzMxYjgyODliNzE2YmJjMDJlOTdlNjFjZDdhN2M4MDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKQEAgLTUz
LDEzICs1MywxNSBAQCBwcml2YXRlOgogCiBjbGFzcyBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQg
OiBwdWJsaWMgU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNWR1NoYWRvd1RyZWVSb290RWxlbWVudD4gY3JlYXRlKERvY3VtZW50
KiwgU1ZHVXNlRWxlbWVudCogc2hhZG93UGFyZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIFNWR1VzZUVsZW1lbnQq
IGhvc3QpOwogCiAgICAgdm9pZCBhdHRhY2hFbGVtZW50KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
LCBSZW5kZXJBcmVuYSopOwotICAgIHZvaWQgY2xlYXJTaGFkb3dIb3N0KCk7CisgICAgdm9pZCBj
bGVhclNWR1NoYWRvd0hvc3QoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1NWR1NoYWRvd1Jvb3Qo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHU2hhZG93VHJlZVJv
b3RFbGVtZW50KERvY3VtZW50KiwgU1ZHVXNlRWxlbWVudCogc2hhZG93UGFyZW50KTsKKyAgICBT
VkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoRG9jdW1lbnQqLCBTVkdVc2VFbGVtZW50KiBob3N0KTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA1NzQw
YjA1MmFhNTk2YWMwZmE1YjE1MmU4ZjA4OTU2MDNmMmMwMmE1Li43OWUxNjMzZTAxZjdlY2ExZWFk
YmU5OGUwMDQ2MWRmZWQ2N2MxOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuY3BwCkBAIC04MSwxMyArODEsMTMgQEAgU3RyaW5nIFNWR1N0eWxlZEVsZW1lbnQ6OnRpdGxl
KCkgY29uc3QKICAgICAvLyBXYWxrIHVwIHRoZSB0cmVlLCB0byBmaW5kIG91dCB3aGV0aGVyIHdl
J3JlIGluc2lkZSBhIDx1c2U+IHNoYWRvdyB0cmVlLCB0byBmaW5kIHRoZSByaWdodCB0aXRsZS4K
ICAgICBOb2RlKiBwYXJlbnQgPSBjb25zdF9jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPih0aGlzKTsK
ICAgICB3aGlsZSAocGFyZW50KSB7Ci0gICAgICAgIGlmICghcGFyZW50LT5pc1NoYWRvd1Jvb3Qo
KSkgeworICAgICAgICBpZiAoIXBhcmVudC0+aXNTVkdTaGFkb3dSb290KCkpIHsKICAgICAgICAg
ICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEdldCB0
aGUgPHVzZT4gZWxlbWVudC4KLSAgICAgICAgRWxlbWVudCogc2hhZG93UGFyZW50ID0gcGFyZW50
LT5zaGFkb3dIb3N0KCk7CisgICAgICAgIEVsZW1lbnQqIHNoYWRvd1BhcmVudCA9IHBhcmVudC0+
c3ZnU2hhZG93SG9zdCgpOwogICAgICAgICBpZiAoc2hhZG93UGFyZW50ICYmIHNoYWRvd1BhcmVu
dC0+aXNTVkdFbGVtZW50KCkgJiYgc2hhZG93UGFyZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1
c2VUYWcpKSB7CiAgICAgICAgICAgICBTVkdVc2VFbGVtZW50KiB1c2VFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8U1ZHVXNlRWxlbWVudCo+KHNoYWRvd1BhcmVudCk7CiAgICAgICAgICAgICAvLyBJZiB0
aGUgPHVzZT4gdGl0bGUgaXMgbm90IGVtcHR5IHdlIGZvdW5kIHRoZSB0aXRsZSB0byB1c2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90125</attachid>
            <date>2011-04-18 18:39:33 -0700</date>
            <delta_ts>2011-04-18 22:44:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52788-20110418183932.patch</filename>
            <type>text/plain</type>
            <size>14418</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQyMTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyM2FjNDdhODIxMTY3MmFl
ZGM4YTUxOTA2YzA2YzQ0NWJiOTYzODUxLi4zZmVkMWVhZmZiNWM4ZmI1MTAyNzY5ODcyMDc4ZjE5
OGVkMzZkZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDQtMTcgIERvbWlu
aWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIFNWRyBzaGFkb3cgcm9vdHMgYW5kIERP
TSBzaGFkb3cgcm9vdHMgZGlzdGluY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Mjc4OAorCisgICAgICAgIE5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdl
LiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFNWRyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVsZW1lbnRJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmFkanVzdFRvU2hhZG93Qm91bmRhcmll
cyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmFkanVzdFJlbGF0ZWRUYXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2Vz
dG9ycyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c2V0U2hhZG93SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzdmdTaGFkb3dIb3N0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNoYWRvd1RyZWVSb290Tm9kZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU1ZHU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXI6On5SZW5kZXJTVkdTaGFkb3dUcmVl
Um9vdENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFkb3dUcmVlUm9v
dENvbnRhaW5lcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NoYWRvd1Ry
ZWVSb290RWxlbWVudDo6U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6YXR0YWNoRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNsZWFyU1ZHU2hhZG93SG9zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6aXNTVkdTaGFkb3dSb290KToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHls
ZWRFbGVtZW50Ojp0aXRsZSk6CisKIDIwMTEtMDQtMTggIEplc3NpZSBCZXJsaW4gIDxqYmVybGlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBGYWxrZW5idXJnLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBmZGE0ZDg4NmFhN2VmOWUyZjEx
MDdkYTZlMjlmZWI4YjVlMmViOGNlLi5jYzFhNzgwZDY3NTFkMDEyMTk4MzlhOTM0NzM0Y2MzMWJj
MGNiM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNjUsMTAg
KzY1LDEwIEBAIHN0YXRpYyBFdmVudFRhcmdldCogZmluZEVsZW1lbnRJbnN0YW5jZShOb2RlKiBy
ZWZlcmVuY2VOb2RlKQogICAgIC8vIFNwZWM6IFRoZSBldmVudCBoYW5kbGluZyBmb3IgdGhlIG5v
bi1leHBvc2VkIHRyZWUgd29ya3MgYXMgaWYgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBoYWQgYmVl
biB0ZXh0dWFsbHkgaW5jbHVkZWQKICAgICAvLyBhcyBhIGRlZXBseSBjbG9uZWQgY2hpbGQgb2Yg
dGhlICd1c2UnIGVsZW1lbnQsIGV4Y2VwdCB0aGF0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0
aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKICAgICBmb3IgKE5vZGUqIG4gPSByZWZlcmVu
Y2VOb2RlOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmICghbi0+aXNTaGFk
b3dSb290KCkgfHwgIW4tPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBpZiAoIW4tPmlzU1ZHU2hh
ZG93Um9vdCgpIHx8ICFuLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIEVsZW1lbnQqIHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50ID0gbi0+c2hhZG93SG9z
dCgpOworICAgICAgICBFbGVtZW50KiBzaGFkb3dUcmVlUGFyZW50RWxlbWVudCA9IG4tPnN2Z1No
YWRvd0hvc3QoKTsKICAgICAgICAgQVNTRVJUKHNoYWRvd1RyZWVQYXJlbnRFbGVtZW50LT5oYXNU
YWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKTsKIAogICAgICAgICBpZiAoU1ZHRWxlbWVudEluc3Rh
bmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFNWR1VzZUVsZW1lbnQqPihzaGFkb3dUcmVlUGFy
ZW50RWxlbWVudCktPmluc3RhbmNlRm9yU2hhZG93VHJlZUVsZW1lbnQocmVmZXJlbmNlTm9kZSkp
CkBAIC0xMjIsNiArMTIyLDExIEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVs
YXRlZENsaWNrKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVyCiAgICAgZ05vZGVz
RGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MtPnJlbW92ZShub2RlKTsKIH0KIAorc3RhdGljIGlu
bGluZSBib29sIGlzU2hhZG93Um9vdE9yU1ZHU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKQor
eworICAgIHJldHVybiBub2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBub2RlLT5pc1NWR1NoYWRvd1Jv
b3QoKTsKK30KKwogUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRjaGVyOjphZGp1
c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0LCBjb25z
dCBWZWN0b3I8Tm9kZSo+IHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnMpCiB7CiAgICAgVmVjdG9yPEV2
ZW50Q29udGV4dD46OmNvbnN0X2l0ZXJhdG9yIGxvd2VzdENvbW1vbkJvdW5kYXJ5ID0gbV9hbmNl
c3RvcnMuZW5kKCk7CkBAIC0xMzMsNyArMTM4LDcgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4g
RXZlbnREaXNwYXRjaGVyOjphZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2QK
ICAgICBib29sIGRpdmVyZ2VkID0gZmFsc2U7CiAgICAgZm9yIChWZWN0b3I8Tm9kZSo+Ojpjb25z
dF9pdGVyYXRvciBpID0gcmVsYXRlZFRhcmdldEFuY2VzdG9ycy5lbmQoKSAtIDE7IGkgPj0gcmVs
YXRlZFRhcmdldEFuY2VzdG9ycy5iZWdpbigpOyAtLWkpIHsKICAgICAgICAgaWYgKGRpdmVyZ2Vk
KSB7Ci0gICAgICAgICAgICBpZiAoKCppKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAg
IGlmIChpc1NoYWRvd1Jvb3RPclNWR1NoYWRvd1Jvb3QoKmkpKSB7CiAgICAgICAgICAgICAgICAg
Zmlyc3REaXZlcmdlbnRCb3VuZGFyeSA9IGkgKyAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtMTQ3LDcgKzE1Miw3IEBAIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IEV2ZW50RGlzcGF0Y2hlcjo6YWRqdXN0VG9TaGFkb3dCb3VuZGFyaWVzKFBhc3NSZWZQdHI8Tm9k
CiAKICAgICAgICAgdGFyZ2V0QW5jZXN0b3ItLTsKIAotICAgICAgICBpZiAoKCppKS0+aXNTaGFk
b3dSb290KCkpCisgICAgICAgIGlmIChpc1NoYWRvd1Jvb3RPclNWR1NoYWRvd1Jvb3QoKmkpKQog
ICAgICAgICAgICAgbG93ZXN0Q29tbW9uQm91bmRhcnkgPSB0YXJnZXRBbmNlc3RvcjsKIAogICAg
ICAgICBpZiAoKCppKSAhPSAoKnRhcmdldEFuY2VzdG9yKS5ub2RlKCkpCkBAIC0xNTYsNyArMTYx
LDcgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRjaGVyOjphZGp1c3RUb1No
YWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2QKIAogICAgIGlmICghZGl2ZXJnZWQpIHsKICAg
ICAgICAgLy8gVGhlIHJlbGF0ZWRUYXJnZXQgaXMgYSBwYXJlbnQgb3Igc2hhZG93SG9zdCBvZiB0
aGUgdGFyZ2V0LgotICAgICAgICBpZiAobV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAg
aWYgKGlzU2hhZG93Um9vdE9yU1ZHU2hhZG93Um9vdChtX25vZGUuZ2V0KCkpKQogICAgICAgICAg
ICAgbG93ZXN0Q29tbW9uQm91bmRhcnkgPSBtX2FuY2VzdG9ycy5iZWdpbigpOwogICAgIH0gZWxz
ZSBpZiAoKCpmaXJzdERpdmVyZ2VudEJvdW5kYXJ5KSA9PSBtX25vZGUuZ2V0KCkpIHsKICAgICAg
ICAgLy8gU2luY2UgYW5jZXN0b3JzIGRvZXMgbm90IGNvbnRhaW4gdGFyZ2V0IGl0c2VsZiwgd2Ug
bXVzdCBhY2NvdW50CkBAIC0yMDMsNyArMjA4LDcgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4g
RXZlbnREaXNwYXRjaGVyOjphZGp1c3RSZWxhdGVkVGFyZ2V0KEV2ZW50KiBldmVudCwgUGFzc1IK
ICAgICBWZWN0b3I8Tm9kZSo+IHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnM7CiAgICAgTm9kZSogb3V0
ZXJtb3N0U2hhZG93Qm91bmRhcnkgPSByZWxhdGVkVGFyZ2V0LmdldCgpOwogICAgIGZvciAoTm9k
ZSogbiA9IG91dGVybW9zdFNoYWRvd0JvdW5kYXJ5OyBuOyBuID0gbi0+cGFyZW50T3JIb3N0Tm9k
ZSgpKSB7Ci0gICAgICAgIGlmIChuLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgaWYgKGlzU2hh
ZG93Um9vdE9yU1ZHU2hhZG93Um9vdChuKSkKICAgICAgICAgICAgIG91dGVybW9zdFNoYWRvd0Jv
dW5kYXJ5ID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgICAgICBpZiAoIW5vQ29tbW9uQm91
bmRhcnkpCiAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0QW5jZXN0b3JzLmFwcGVuZChuKTsKQEAg
LTI0MCwxMCArMjQ1LDExIEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2Vz
dG9ycyhFdmVudCogZXZlbnQpCiAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IGV2ZW50VGFyZ2V0
UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKGFuY2VzdG9yKTsKICAgICBib29sIHNob3VsZFNraXBO
ZXh0QW5jZXN0b3IgPSBmYWxzZTsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoYW5j
ZXN0b3ItPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGJvb2wgaXNTVkdTaGFkb3dSb290ID0g
YW5jZXN0b3ItPmlzU1ZHU2hhZG93Um9vdCgpOworICAgICAgICBpZiAoaXNTVkdTaGFkb3dSb290
IHx8IGFuY2VzdG9yLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgaWYgKGJlaGF2aW9y
ID09IFN0YXlJbnNpZGVTaGFkb3dET00pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+c2hhZG93SG9zdCgpOworICAgICAgICAgICAgYW5j
ZXN0b3IgPSBpc1NWR1NoYWRvd1Jvb3QgPyBhbmNlc3Rvci0+c3ZnU2hhZG93SG9zdCgpIDogYW5j
ZXN0b3ItPnNoYWRvd0hvc3QoKTsKICAgICAgICAgICAgIGlmICghc2hvdWxkU2tpcE5leHRBbmNl
c3RvcikKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBhbmNlc3RvcjsKICAgICAgICAgfSBlbHNl
CkBAIC0yNTQsNyArMjYwLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmVuc3VyZUV2ZW50QW5j
ZXN0b3JzKEV2ZW50KiBldmVudCkKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIC8vIFNraXAg
U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50LgotICAgICAgICBzaG91bGRTa2lwTmV4dEFuY2VzdG9y
ID0gYW5jZXN0b3ItPmlzU1ZHRWxlbWVudCgpICYmIGFuY2VzdG9yLT5pc1NoYWRvd1Jvb3QoKTsK
KyAgICAgICAgc2hvdWxkU2tpcE5leHRBbmNlc3RvciA9IGFuY2VzdG9yLT5pc1NWR1NoYWRvd1Jv
b3QoKTsKICAgICAgICAgaWYgKHNob3VsZFNraXBOZXh0QW5jZXN0b3IpCiAgICAgICAgICAgICBj
b250aW51ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDhjYTE4Y2I5YzYzZDE5ODk2Y2Rm
M2Y4YTM5NjZjNTE4NTRhNzE2NWYuLmVhODQ3MWRhNjFmZWJmZDQzZTk5ZjQyMDllODQyNGQ4ZjU2
MTExNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBFbGVtZW50KiBOb2Rl
OjpzaGFkb3dIb3N0KCkgY29uc3QKIAogdm9pZCBOb2RlOjpzZXRTaGFkb3dIb3N0KEVsZW1lbnQq
IGhvc3QpCiB7Ci0gICAgQVNTRVJUKCFwYXJlbnROb2RlKCkpOworICAgIEFTU0VSVCghcGFyZW50
Tm9kZSgpICYmICFpc1NWR1NoYWRvd1Jvb3QoKSk7CiAgICAgaWYgKGhvc3QpCiAgICAgICAgIHNl
dEZsYWcoSXNTaGFkb3dSb290RmxhZyk7CiAgICAgZWxzZQpAQCAtMTYwMiw2ICsxNjAyLDEzIEBA
IGJvb2wgTm9kZTo6Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBwYXJlbnRP
ckhvc3ROb2RlKCkgPyBwYXJlbnRPckhvc3ROb2RlKCktPmNhblN0YXJ0U2VsZWN0aW9uKCkgOiB0
cnVlOwogfQogCisjaWYgRU5BQkxFKFNWRykKK1NWR1VzZUVsZW1lbnQqIE5vZGU6OnN2Z1NoYWRv
d0hvc3QoKSBjb25zdAoreworICAgIHJldHVybiBpc1NWR1NoYWRvd1Jvb3QoKSA/IHN0YXRpY19j
YXN0PFNWR1VzZUVsZW1lbnQqPihwYXJlbnQoKSkgOiAwOworfQorI2VuZGlmCisKIE5vZGUqIE5v
ZGU6OnNoYWRvd0FuY2VzdG9yTm9kZSgpCiB7CiAjaWYgRU5BQkxFKFNWRykKQEAgLTE2MjMsNyAr
MTYzMCw3IEBAIE5vZGUqIE5vZGU6OnNoYWRvd1RyZWVSb290Tm9kZSgpCiB7CiAgICAgTm9kZSog
cm9vdCA9IHRoaXM7CiAgICAgd2hpbGUgKHJvb3QpIHsKLSAgICAgICAgaWYgKHJvb3QtPmlzU2hh
ZG93Um9vdCgpKQorICAgICAgICBpZiAocm9vdC0+aXNTaGFkb3dSb290KCkgfHwgcm9vdC0+aXNT
VkdTaGFkb3dSb290KCkpCiAgICAgICAgICAgICByZXR1cm4gcm9vdDsKICAgICAgICAgcm9vdCA9
IHJvb3QtPnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCBmMzM2ODFlZDM0NjliZjRiOTFlM2UzYzllNzQ1ZjVjNmUwY2I4ZTA2Li4yZTI2ODg1OThm
OTk5NzExYWZlNGJmNzc0YzYyMzY0OGQxODJmNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTcxLDYgKzcx
LDkgQEAgY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFz
cyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKKyNpZiBFTkFCTEUoU1ZHKQorY2xh
c3MgU1ZHVXNlRWxlbWVudDsKKyNlbmRpZgogY2xhc3MgVGFnTm9kZUxpc3Q7CiBjbGFzcyBUcmVl
U2NvcGU7CiAKQEAgLTE5MSw2ICsxOTQsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNIVE1MRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNIVE1MRmxhZyk7IH0KIAogICAgIGJvb2wg
aXNTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1NWR0ZsYWcpOyB9CisgICAg
dmlydHVhbCBib29sIGlzU1ZHU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisj
aWYgRU5BQkxFKFNWRykKKyAgICBTVkdVc2VFbGVtZW50KiBzdmdTaGFkb3dIb3N0KCkgY29uc3Q7
CisjZW5kaWYKIAogI2lmIEVOQUJMRShXTUwpCiAgICAgdmlydHVhbCBib29sIGlzV01MRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMTMsOSArMjIwLDkgQEAgcHVibGljOgog
ICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIE5vZGUqIHNoYWRvd1RyZWVSb290
Tm9kZSgpOwogICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKTsKLSAgICAvLyBOb2RlJ3MgcGFyZW50
IG9yIHNoYWRvdyB0cmVlIGhvc3QuCisgICAgLy8gTm9kZSdzIHBhcmVudCwgc2hhZG93IHRyZWUg
aG9zdCwgb3IgU1ZHIHVzZS4KICAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3ROb2RlKCkg
Y29uc3Q7Ci0gICAgLy8gVXNlIHdoZW4gaXQncyBndWFyYW50ZWVkIHRvIHRoYXQgc2hhZG93SG9z
dCBpcyAwLgorICAgIC8vIFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRvd0hv
c3QgaXMgMCBhbmQgc3ZnU2hhZG93SG9zdCBpcyAwLgogICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIHNoYWRvd0hv
c3QoKSBjb25zdDsKQEAgLTczMyw3ICs3NDAsNyBAQCBpbmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJj
ZVVSTChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQogCiBpbmxpbmUg
Q29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdl
dEZsYWcoSXNTaGFkb3dSb290RmxhZykgPyAwIDogcGFyZW50KCk7CisgICAgcmV0dXJuIGdldEZs
YWcoSXNTaGFkb3dSb290RmxhZykgfHwgaXNTVkdTaGFkb3dSb290KCkgPyAwIDogcGFyZW50KCk7
CiB9CiAKIGlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkgY29u
c3QKQEAgLTc0Myw3ICs3NTAsNyBAQCBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50
T3JIb3N0Tm9kZSgpIGNvbnN0CiAKIGlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRO
b2RlR3VhcmFudGVlZEhvc3RGcmVlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWdldEZsYWcoSXNT
aGFkb3dSb290RmxhZykpOworICAgIEFTU0VSVCghZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSAm
JiAhaXNTVkdTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
ZG93VHJlZVJvb3RDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHAKaW5kZXggNTczNjMzMzk2NmJmNDdj
NmI4ZTdkN2NjNDhlMjhlMjJmNDYwNzhiNC4uZDJhMTEwMzgyOGYzYWFlMjM1ZDA5Zjc0ZTcyY2Q0
YmRiOTljY2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lci5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXI6On5SZW5kZXJTVkdTaGFk
b3dUcmVlUm9vdENvbnRhaW5lcigpCiB7CiAgICAgaWYgKG1fc2hhZG93Um9vdCAmJiBtX3NoYWRv
d1Jvb3QtPmF0dGFjaGVkKCkpIHsKICAgICAgICAgbV9zaGFkb3dSb290LT5kZXRhY2goKTsKLSAg
ICAgICAgbV9zaGFkb3dSb290LT5jbGVhclNoYWRvd0hvc3QoKTsKKyAgICAgICAgbV9zaGFkb3dS
b290LT5jbGVhclNWR1NoYWRvd0hvc3QoKTsKICAgICB9CiB9CiAKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBSZW5kZXJTVkdTaGFkb3dUcmVlUm9vdENvbnRhaW5lcjo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogICAgICAgICB1c2VFbGVtZW50LT5idWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogICAgIH0KIAot
ICAgIEFTU0VSVChtX3NoYWRvd1Jvb3QtPnNoYWRvd0hvc3QoKSA9PSB1c2VFbGVtZW50KTsKKyAg
ICBBU1NFUlQobV9zaGFkb3dSb290LT5zdmdTaGFkb3dIb3N0KCkgPT0gdXNlRWxlbWVudCk7CiAK
ICAgICBib29sIHNob3VsZFJlY3JlYXRlVHJlZSA9IG1fcmVjcmVhdGVUcmVlOwogICAgIGlmICht
X3JlY3JlYXRlVHJlZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwCmluZGV4IDljY2RlZjBlM2EzZTE3YWI1ZDk5ZWU3
MTkyNDk3ZjMzNmE5NWI3ODUuLmFjNGE2M2VkNTY2NGZhZmFjMWVkOTVmYzZlYzJjZTA0YTdiZDFh
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJl
ZUVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRv
d1RyZWVFbGVtZW50cy5jcHAKQEAgLTUzLDIxICs1MywyMSBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmli
dXRlcwogfQogLy8gU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50CiAKLWlubGluZSBTVkdTaGFkb3dU
cmVlUm9vdEVsZW1lbnQ6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQsIFNWR1VzZUVsZW1lbnQqIHNoYWRvd1BhcmVudCkKK2lubGluZSBTVkdTaGFkb3dUcmVlUm9v
dEVsZW1lbnQ6OlNWR1NoYWRvd1RyZWVSb290RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFNW
R1VzZUVsZW1lbnQqIGhvc3QpCiAgICAgOiBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudChk
b2N1bWVudCkKIHsKLSAgICBzZXRTaGFkb3dIb3N0KHNoYWRvd1BhcmVudCk7CisgICAgc2V0UGFy
ZW50KGhvc3QpOwogICAgIHNldEluRG9jdW1lbnQoKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdTaGFk
b3dUcmVlUm9vdEVsZW1lbnQ+IFNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCwgU1ZHVXNlRWxlbWVudCogc2hhZG93UGFyZW50KQorUGFzc1JlZlB0cjxT
VkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ+IFNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgU1ZHVXNlRWxlbWVudCogaG9zdCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR1NoYWRvd1RyZWVSb290RWxlbWVudChkb2N1bWVudCwgc2hhZG93UGFy
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQo
ZG9jdW1lbnQsIGhvc3QpKTsKIH0KIAogdm9pZCBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmF0
dGFjaEVsZW1lbnQoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckFyZW5hKiBh
cmVuYSkKIHsKLSAgICBBU1NFUlQoc2hhZG93SG9zdCgpKTsKKyAgICBBU1NFUlQoc3ZnU2hhZG93
SG9zdCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgcmVuZGVyZXIgd2l0aCB0aGUgc3BlY2lmaWVk
IHN0eWxlCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyKGFyZW5h
LCBzdHlsZS5nZXQoKSk7CkBAIC04MSwxMiArODEsMTIgQEAgdm9pZCBTVkdTaGFkb3dUcmVlUm9v
dEVsZW1lbnQ6OmF0dGFjaEVsZW1lbnQoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJl
bmQKIAogICAgIC8vIEFkZCB0aGUgcmVuZGVyZXIgdG8gdGhlIHJlbmRlciB0cmVlCiAgICAgaWYg
KHJlbmRlcmVyKQotICAgICAgICBzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCktPmFkZENoaWxkKHJl
bmRlcmVyKTsKKyAgICAgICAgc3ZnU2hhZG93SG9zdCgpLT5yZW5kZXJlcigpLT5hZGRDaGlsZChy
ZW5kZXJlcik7CiB9CiAKLXZvaWQgU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OjpjbGVhclNoYWRv
d0hvc3QoKQordm9pZCBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6OmNsZWFyU1ZHU2hhZG93SG9z
dCgpCiB7Ci0gICAgc2V0U2hhZG93SG9zdCgwKTsKKyAgICBzZXRQYXJlbnQoMCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVs
ZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVt
ZW50cy5oCmluZGV4IDI5NTJlMzU4OWUyNmY2MTMyMTMzZjhiNmMzMjMxODcwYzg4MWExMDYuLjhj
YmQ0YjdjMzFiODI4OWI3MTZiYmMwMmU5N2U2MWNkN2E3YzgwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaApAQCAtNTMs
MTMgKzUzLDE1IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudCA6
IHB1YmxpYyBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
LCBTVkdVc2VFbGVtZW50KiBzaGFkb3dQYXJlbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1NoYWRvd1RyZWVSb290RWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgU1ZHVXNlRWxlbWVudCog
aG9zdCk7CiAKICAgICB2b2lkIGF0dGFjaEVsZW1lbnQoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4s
IFJlbmRlckFyZW5hKik7Ci0gICAgdm9pZCBjbGVhclNoYWRvd0hvc3QoKTsKKyAgICB2b2lkIGNs
ZWFyU1ZHU2hhZG93SG9zdCgpOworCisgICAgdmlydHVhbCBib29sIGlzU1ZHU2hhZG93Um9vdCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKLSAgICBTVkdTaGFkb3dUcmVlUm9v
dEVsZW1lbnQoRG9jdW1lbnQqLCBTVkdVc2VFbGVtZW50KiBzaGFkb3dQYXJlbnQpOworICAgIFNW
R1NoYWRvd1RyZWVSb290RWxlbWVudChEb2N1bWVudCosIFNWR1VzZUVsZW1lbnQqIGhvc3QpOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDU3NDBi
MDUyYWE1OTZhYzBmYTViMTUyZThmMDg5NTYwM2YyYzAyYTUuLjc5ZTE2MzNlMDFmN2VjYTFlYWRi
ZTk4ZTAwNDYxZGZlZDY3YzE5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVu
dC5jcHAKQEAgLTgxLDEzICs4MSwxMyBAQCBTdHJpbmcgU1ZHU3R5bGVkRWxlbWVudDo6dGl0bGUo
KSBjb25zdAogICAgIC8vIFdhbGsgdXAgdGhlIHRyZWUsIHRvIGZpbmQgb3V0IHdoZXRoZXIgd2Un
cmUgaW5zaWRlIGEgPHVzZT4gc2hhZG93IHRyZWUsIHRvIGZpbmQgdGhlIHJpZ2h0IHRpdGxlLgog
ICAgIE5vZGUqIHBhcmVudCA9IGNvbnN0X2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHRoaXMpOwog
ICAgIHdoaWxlIChwYXJlbnQpIHsKLSAgICAgICAgaWYgKCFwYXJlbnQtPmlzU2hhZG93Um9vdCgp
KSB7CisgICAgICAgIGlmICghcGFyZW50LT5pc1NWR1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gR2V0IHRo
ZSA8dXNlPiBlbGVtZW50LgotICAgICAgICBFbGVtZW50KiBzaGFkb3dQYXJlbnQgPSBwYXJlbnQt
PnNoYWRvd0hvc3QoKTsKKyAgICAgICAgRWxlbWVudCogc2hhZG93UGFyZW50ID0gcGFyZW50LT5z
dmdTaGFkb3dIb3N0KCk7CiAgICAgICAgIGlmIChzaGFkb3dQYXJlbnQgJiYgc2hhZG93UGFyZW50
LT5pc1NWR0VsZW1lbnQoKSAmJiBzaGFkb3dQYXJlbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVz
ZVRhZykpIHsKICAgICAgICAgICAgIFNWR1VzZUVsZW1lbnQqIHVzZUVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTVkdVc2VFbGVtZW50Kj4oc2hhZG93UGFyZW50KTsKICAgICAgICAgICAgIC8vIElmIHRo
ZSA8dXNlPiB0aXRsZSBpcyBub3QgZW1wdHkgd2UgZm91bmQgdGhlIHRpdGxlIHRvIHVzZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>