<?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>5476</bug_id>
          
          <creation_ts>2005-10-24 07:43:10 -0700</creation_ts>
          <short_desc>Dynamically adding &lt;link&gt;/&lt;style&gt; for CSS style sheet outside &lt;head&gt; fails to load style sheet</short_desc>
          <delta_ts>2008-07-14 15:10:32 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://projects.backbase.com/SafariBugs/link.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6628</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sjoerd Mulder">sjoerdmulder</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>ap</cc>
    
    <cc>ian</cc>
    
    <cc>yuzhu.shen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22809</commentid>
    <comment_count>0</comment_count>
    <who name="Sjoerd Mulder">sjoerdmulder</who>
    <bug_when>2005-10-24 07:43:10 -0700</bug_when>
    <thetext>At Backbase we are trying to write support for Safari but we found the 
following bug:

If you try to add a &lt;link&gt; tag dynamicly anywhere inside the DOM-tree throught 
createElement Safari does nothing (2.x and ToT)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22884</commentid>
    <comment_count>1</comment_count>
    <who name="Sjoerd Mulder">sjoerdmulder</who>
    <bug_when>2005-10-25 01:32:08 -0700</bug_when>
    <thetext>Changed severity to critical because this bug prevents development of any kind
of          Ajax applications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23684</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-04 07:23:17 -0800</bug_when>
    <thetext>I don&apos;t think that &quot;because it affects my product&quot; is really something that changes severity to &quot;critical&quot;, but 
that doesn&apos;t matter much, because we don&apos;t use severity in a consistent way anyway.

This is a high priority bug to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23685</commentid>
    <comment_count>3</comment_count>
      <attachid>4588</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-04 07:23:45 -0800</bug_when>
    <thetext>Created attachment 4588
local copy of the test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23692</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-04 08:11:58 -0800</bug_when>
    <thetext>I believe there are workarounds for this -- we should find them as well as fixing the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23693</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-04 08:13:52 -0800</bug_when>
    <thetext>My tests on TOT show the &lt;link&gt; elements are being added to the DOM tree, although the stylesheets are 
not being loaded. So I think this is a similar issue to the recent one where we made added &lt;script&gt; tags 
trigger loading of the scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23694</commentid>
    <comment_count>6</comment_count>
      <attachid>4592</attachid>
    <who name="Mark Malone">markmalone</who>
    <bug_when>2005-11-04 08:14:53 -0800</bug_when>
    <thetext>Created attachment 4592
Workaround - append to head element

LINK elements created with createElement and appended to the document head
works as required. This appears to only be an issue when appending them to the
body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23713</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-11-04 08:36:21 -0800</bug_when>
    <thetext>Given the workaround, downgrading &quot;severity&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31127</commentid>
    <comment_count>8</comment_count>
    <who name="Sjoerd Mulder">sjoerdmulder</who>
    <bug_when>2006-02-03 00:36:08 -0800</bug_when>
    <thetext>This bug is also in Radar: &lt;rdar://4327485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36427</commentid>
    <comment_count>9</comment_count>
      <attachid>7078</attachid>
    <who name="Tim Omernick">timo</who>
    <bug_when>2006-03-15 01:34:47 -0800</bug_when>
    <thetext>Created attachment 7078
Layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36428</commentid>
    <comment_count>10</comment_count>
      <attachid>7080</attachid>
    <who name="Tim Omernick">timo</who>
    <bug_when>2006-03-15 01:45:26 -0800</bug_when>
    <thetext>Created attachment 7080
Proposed patch

I&apos;ve attached a patch which passes the test case and layout test, and does not regress any of our layout tests.

I&apos;m not sure if this is the best way to fix this.  Would it be a performance problem to deepen our search for &lt;link&gt; elements in DocumentImpl::recalcStyleSelector()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36430</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Omernick">timo</who>
    <bug_when>2006-03-15 02:06:13 -0800</bug_when>
    <thetext>The patch I attached also fixes 5478.  If the patch (or a similar one which also fixes 5478) is accepted, then that bug should be marked as a duplicate of this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36435</commentid>
    <comment_count>12</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-03-15 03:32:26 -0800</bug_when>
    <thetext>Needs performance testing. We may have to replace the scan with maintaining a data structure of &lt;link&gt; and &lt;style&gt; elements in the document, since a linear scan of the document on style recalc could be expensive on heavily animated sites. At parse time you could just append, if you later dynamically insert or remove one you could either recompute the list in document order immediately, or mark it dirty and do a document scan later.

Maybe the attached patch is ok if it doesn&apos;t affect performance in practice, but I think that needs testing. You would need a test case that recalculates style a lot, such as a DHTML animation done by modifying styles, such as by changing an absolute positioned element&apos;s top and left properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36538</commentid>
    <comment_count>13</comment_count>
      <attachid>7080</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-16 02:24:43 -0800</bug_when>
    <thetext>Comment on attachment 7080
Proposed patch

It is not an acceptable solution to crawl the entire document looking for stylesheets.

It is also completely invalid HTML to support &lt;link&gt; outside of the head by the way (this is in case the developer of the site in question is paying attention and cares enough to write HTML code that doesn&apos;t suck).

I would suggest implementing the same fix that was done for &lt;style&gt; elements, which are also illegal outside of the head.  Namely you should move the &lt;link&gt; element inside the head when the error condition is encountered while parsing.  See htmlparser.cpp line 343 for how we do this for both &lt;title&gt; and &lt;style&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36539</commentid>
    <comment_count>14</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-16 02:32:17 -0800</bug_when>
    <thetext>Oops.  Looks like we do deal with &lt;link&gt; when parsing.  Disregard my previous comment.  This is only an issue if you create the element via the DOM and insert it dynamically.

I&apos;d be inclined to make this a quirk if possible, since it&apos;s just totally broken to honor these elements outside the head, especially when created via DOM calls that could occur in strict XHTML.

If it turns out other browsers, including WinIE, do support this capability, I would check to see if they are moving the elements into the &lt;head&gt;, and if so, do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36541</commentid>
    <comment_count>15</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-16 02:41:36 -0800</bug_when>
    <thetext>I tested in Firefox, and they leave the link element where it is.  This is incredibly problematic, since you have to preserve the order of the stylesheets but they could be anywhere, and walking the whole document is not acceptable.   Even maintaining a list would be difficult, since order is relevant, and someone could insert a link element in between two other link elements.

I don&apos;t know how much work we want to do here to support such an obviously broken HTML construct when such a trivial workaround exists.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36813</commentid>
    <comment_count>16</comment_count>
      <attachid>7078</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-17 19:02:19 -0800</bug_when>
    <thetext>Comment on attachment 7078
Layout test

Test looks good, but removing review flag for now since we don&apos;t have a fix yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78916</commentid>
    <comment_count>17</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-04-25 08:59:17 -0700</bug_when>
    <thetext>*** Bug 18042 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78918</commentid>
    <comment_count>18</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-04-25 08:59:46 -0700</bug_when>
    <thetext>*** Bug 5478 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85790</commentid>
    <comment_count>19</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-11 13:06:13 -0700</bug_when>
    <thetext>I&apos;m working on this.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85901</commentid>
    <comment_count>20</comment_count>
      <attachid>22268</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-14 13:14:46 -0700</bug_when>
    <thetext>Created attachment 22268
Patch including test cases and ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85902</commentid>
    <comment_count>21</comment_count>
      <attachid>22269</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-14 13:39:14 -0700</bug_when>
    <thetext>Created attachment 22269
Change the iteration in addStyleSheetCandidateNode to go from last to first</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85903</commentid>
    <comment_count>22</comment_count>
      <attachid>22269</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-07-14 14:06:14 -0700</bug_when>
    <thetext>Comment on attachment 22269
Change the iteration in addStyleSheetCandidateNode to go from last to first

You can use an early return here to 
+    if (createdByParser || m_styleSheetCandidateNodes.isEmpty())
+        m_styleSheetCandidateNodes.add(node);
+    else {
+        // Determine an appropriate insertion point.


Though this works, it might be cleaner to put the for-loop in an if-statement instead.
+    if (!matchAuthorAndUserStyles)
+        end = begin;
+    for (ListHashSet&lt;Node*&gt;::iterator it = begin; it != end; ++it) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85910</commentid>
    <comment_count>23</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-14 15:10:32 -0700</bug_when>
    <thetext>Fixed in r35172.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4588</attachid>
            <date>2005-11-04 07:23:45 -0800</date>
            <delta_ts>2008-07-14 13:14:46 -0700</delta_ts>
            <desc>local copy of the test case</desc>
            <filename>create-link-element.html</filename>
            <type>text/html</type>
            <size>687</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI+Cgk8aGVhZD4KCQk8dGl0bGU+RHluYW1pYyBBZGRpbmcgTGlu
ayBUYWc8L3RpdGxlPgoJPC9oZWFkPgoJPGJvZHk+CgkJPGRpdiBjbGFzcz0iY29udGFpbmVyIj48
L2Rpdj4KCQk8ZGl2IG9uY2xpY2s9Im1ha2VMaW5rKCdyZWQuY3NzJyk7Ij5DaGFuZ2UgdG8gUmVk
PC9kaXY+CgkJPGRpdiBvbmNsaWNrPSJtYWtlTGluaygnYmx1ZS5jc3MnKTsiPkFuZCBiYWNrIHRv
IEJsdWU8L2Rpdj4KCQk8c2NyaXB0PgoJCQlmdW5jdGlvbiBtYWtlTGluayhzVmFsdWUpewoJCQkJ
dmFyIG9MaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwoJCQkJb0xpbmsucmVs
ID0gJ3N0eWxlc2hlZXQnOwoJCQkJb0xpbmsudHlwZSA9ICd0ZXh0L2Nzcyc7CgkJCQlvTGluay5y
ZXYgPSAnc3R5bGVzaGVldCc7CgkJCQlvTGluay5ocmVmID0gc1ZhbHVlOwoJCQkJZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChvTGluayk7CgkJCX0KCQk8L3NjcmlwdD4KCTwvYm9keT4KPC9odG1s
PgoJ
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4592</attachid>
            <date>2005-11-04 08:14:53 -0800</date>
            <delta_ts>2008-07-14 13:14:46 -0700</delta_ts>
            <desc>Workaround - append to head element</desc>
            <filename>dynoLinkWorks.html</filename>
            <type>text/html</type>
            <size>813</size>
            <attacher name="Mark Malone">markmalone</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI+Cgk8aGVhZD4KCQk8dGl0bGU+RHluYW1pYyBBZGRpbmcgTGlu
ayBUYWc8L3RpdGxlPgoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0i
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgoJCQlmdW5jdGlvbiBtYWtlTGluayhzVmFsdWUp
ewoJCQkJdmFyIG9MaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwoJCQkJb0xp
bmsucmVsID0gJ3N0eWxlc2hlZXQnOwoJCQkJb0xpbmsudHlwZSA9ICd0ZXh0L2Nzcyc7CgkJCQlv
TGluay5yZXYgPSAnc3R5bGVzaGVldCc7CgkJCQlvTGluay5ocmVmID0gc1ZhbHVlOwoJCQkJZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChvTGluayk7
CgkJCX0KCQk8L3NjcmlwdD4KCTwvaGVhZD4KCTxib2R5PgoJCTxkaXYgY2xhc3M9ImNvbnRhaW5l
ciI+PC9kaXY+CgkJPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ibWFrZUxpbmsoJ3JlZC5j
c3MnKTsiIHZhbHVlPSJDaGFuZ2UgdG8gUmVkIj4KCQk8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNs
aWNrPSJtYWtlTGluaygnYmx1ZS5jc3MnKTsiIHZhbHVlPSJBbmQgYmFjayB0byBCbHVlIj4KCTwv
Ym9keT4KPC9odG1sPgoJ
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7078</attachid>
            <date>2006-03-15 01:34:47 -0800</date>
            <delta_ts>2008-07-14 13:14:46 -0700</delta_ts>
            <desc>Layout test</desc>
            <filename>layoutTest.diff.txt</filename>
            <type>text/plain</type>
            <size>3364</size>
            <attacher name="Tim Omernick">timo</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzAy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDYtMDMt
MTUgIFRpbSBPbWVybmljayAgPHRpbW9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dCB0ZXN0IGZvciA8aHR0cDovL2J1Z3pp
bGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc2Pi4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQzMjc0ODU+CisgICAgICAgIAorICAgICAgICAqIGZhc3QvZHluYW1pYy9hZGQt
bGluay10YWctdG8tYm9keS1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogZmFz
dC9keW5hbWljL2FkZC1saW5rLXRhZy10by1ib2R5LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAg
ICAgICogZmFzdC9keW5hbWljL2FkZC1saW5rLXRhZy10by1ib2R5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9keW5hbWljL2FkZC1saW5rLXRhZy10by1ib2R5LmNzczogQWRk
ZWQuCisgICAgICAgICogZmFzdC9keW5hbWljL2FkZC1saW5rLXRhZy10by1ib2R5Lmh0bWw6IEFk
ZGVkLgorCiAyMDA2LTAzLTE0ICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgbWpzCkluZGV4OiBmYXN0L2R5bmFtaWMvYWRkLWxp
bmstdGFnLXRvLWJvZHktZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZp
bGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IGZhc3QvZHluYW1pYy9hZGQtbGluay10
YWctdG8tYm9keS1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAg
ICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogZmFzdC9keW5hbWljL2FkZC1saW5r
LXRhZy10by1ib2R5LWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZhc3QvZHluYW1p
Yy9hZGQtbGluay10YWctdG8tYm9keS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysr
IGZhc3QvZHluYW1pYy9hZGQtbGluay10YWctdG8tYm9keS1leHBlY3RlZC5jaGVja3N1bQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSBAQAorYzczMGQ5YTJkMjU3YzZkYmJhMWQ3ZWYxYjdhNmU4ZmQK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBmYXN0L2R5bmFtaWMvYWRkLWxpbmst
dGFnLXRvLWJvZHkuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZhc3QvZHluYW1pYy9hZGQtbGluay10YWct
dG8tYm9keS5jc3MJKHJldmlzaW9uIDApCisrKyBmYXN0L2R5bmFtaWMvYWRkLWxpbmstdGFnLXRv
LWJvZHkuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKy50ZXN0RGl2IHsKKwlkaXNw
bGF5OiBibG9jazsKK30KSW5kZXg6IGZhc3QvZHluYW1pYy9hZGQtbGluay10YWctdG8tYm9keS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gZmFzdC9keW5hbWljL2FkZC1saW5rLXRhZy10by1i
b2R5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIGZhc3QvZHluYW1pYy9hZGQtbGluay10
YWctdG8tYm9keS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorQUxF
UlQ6IHN1Y2Nlc3MKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgzNAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MzQKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHgxOAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3M3gx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDczOiAiVGVzdCBwYXNzZWQiCklu
ZGV4OiBmYXN0L2R5bmFtaWMvYWRkLWxpbmstdGFnLXRvLWJvZHkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBmYXN0L2R5bmFtaWMvYWRkLWxpbmstdGFnLXRvLWJvZHkuaHRtbAkocmV2aXNpb24gMCkKKysr
IGZhc3QvZHluYW1pYy9hZGQtbGluay10YWctdG8tYm9keS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorCTxoZWFkPgorCQk8dGl0bGU+
RHluYW1pY2FseSBBZGRpbmcgYSBMaW5rIFRhZzwvdGl0bGU+CisJCTxzdHlsZT4KKwkJCS50ZXN0
RGl2IHsKKwkJCQlkaXNwbGF5OiBub25lOworCQkJfQorCQk8L3N0eWxlPgorCTwvaGVhZD4KKwk8
Ym9keT4KKwkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJqYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisJCQl2YXIgb0xpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdsaW5rJyk7CisJCQlvTGluay5yZWwgPSAnc3R5bGVzaGVldCc7CisJCQlvTGluay50eXBl
ID0gJ3RleHQvY3NzJzsKKwkJCW9MaW5rLnJldiA9ICdzdHlsZXNoZWV0JzsKKwkJCW9MaW5rLmhy
ZWYgPSAnYWRkLWxpbmstdGFnLXRvLWJvZHkuY3NzJzsKKwkJCWRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdib2R5JylbMF0uYXBwZW5kQ2hpbGQob0xpbmspOworCQk8L3NjcmlwdD4KKwkJ
PGRpdiBjbGFzcz0idGVzdERpdiI+VGVzdCBwYXNzZWQ8L2Rpdj4KKwk8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7080</attachid>
            <date>2006-03-15 01:45:26 -0800</date>
            <delta_ts>2008-07-14 13:14:46 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webCore.diff.txt</filename>
            <type>text/plain</type>
            <size>1322</size>
            <attacher name="Tim Omernick">timo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzMwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDYtMDMtMTUgIFRpbSBPbWVybmljayAgPHRpbW9AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEltcGw6OnJlY2Fs
Y1N0eWxlU2VsZWN0b3IpOgorICAgICAgICBEbyBub3Qgc3RvcCBhdCB0aGUgPGJvZHk+IGVsZW1l
bnQgd2hlbiBsb29raW5nIGZvciBzdHlsZSBzaGVldCByZWZlcmVuY2VzIGluIDxsaW5rPiBlbGVt
ZW50cy4KKyAgICAgICAgSSBoYXZlIHZlcmlmaWVkIHRoYXQgRmlyZWZveCBkb2VzIGFsbG93IGZv
ciA8bGluaz4gZWxlbWVudHMgdG8gYmUgZGVjbGFyZWQgb3IgZHluYW1pY2FsbHkgaW5zZXJ0ZWQK
KyAgICAgICAgYW55d2hlcmUgaW4gdGhlIERPTS4gIFRoaXMgY2hhbmdlIG1ha2VzIHVzIG1hdGNo
IHRoYXQgYmVoYXZpb3IuCisKIDIwMDYtMDMtMTUgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRJbXBs
LmNwcAkocmV2aXNpb24gMTMyNjUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTAwLDExICsxOTAwLDYgQEAKICAgICAgICAgICAgIHNoZWV0LT5y
ZWYoKTsKICAgICAgICAgICAgIG1fc3R5bGVTaGVldHMtPnN0eWxlU2hlZXRzLmFwcGVuZChzaGVl
dCk7CiAgICAgICAgIH0KLSAgICAKLSAgICAgICAgLy8gRm9yIEhUTUwgZG9jdW1lbnRzLCBzdHls
ZXNoZWV0cyBhcmUgbm90IGFsbG93ZWQgd2l0aGluL2FmdGVyIHRoZSA8Qk9EWT4gdGFnLiBTbyB3
ZQotICAgICAgICAvLyBjYW4gc3RvcCBzZWFyY2hpbmcgaGVyZS4KLSAgICAgICAgaWYgKGlzSFRN
TERvY3VtZW50KCkgJiYgbi0+aGFzVGFnTmFtZShib2R5VGFnKSkKLSAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIC8vIERlLXJlZmVyZW5jZSBhbGwgdGhlIHN0eWxlc2hlZXRzIGluIHRo
ZSBvbGQgbGlzdAo=
</data>
<flag name="review"
          id="1848"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22268</attachid>
            <date>2008-07-14 13:14:46 -0700</date>
            <delta_ts>2008-07-14 13:39:14 -0700</delta_ts>
            <desc>Patch including test cases and ChangeLog</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21624</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTE2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDgtMDctMTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCBmb3IgYnVnemlsbGEgYnVnIDU0NzYsIGxpbmsgYW5kIHN0eWxlIGVs
ZW1lbnRzIHNob3VsZCBiZSBhbGxvd2VkIG91dHNpZGUgdGhlIDxoZWFkPi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBmYXN0L2Nzcy9zdHls
ZS1vdXRzaWRlLWhlYWQuaHRtbAorICAgICAgICBBZGRlZCBmYXN0L2Nzcy9saW5rLW91dHNpZGUt
aGVhZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6c2V0Q3JlYXRlZEJ5UGFyc2VyKToKKyAgICAgICAgKiBkb20vU3R5bGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVu
dCk6CisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2Vu
aXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlu
a0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6c2V0Q3JlYXRlZEJ5UGFyc2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxTdHls
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6cmVt
b3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6
CisKIDIwMDgtMDctMTQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgYnVpbGQgZml4ZXMKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDM1MTYyKQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTU4LDYgKzIxNTgs
MzYgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5bGVTZWxlY3RvcigpCiAgICAgfQogfQogCit2
b2lkIERvY3VtZW50OjphZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlLCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKK3sKKyAgICBpZiAoY3JlYXRlZEJ5UGFyc2VyKQorICAgICAgICBt
X3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5hZGQobm9kZSk7CisgICAgZWxzZSB7CisgICAgICAg
IC8vIERldGVybWluZSBhbiBhcHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIExp
c3RIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgYmVnaW4gPSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVO
b2Rlcy5iZWdpbigpOworICAgICAgICBMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGVuZCA9
IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOworICAgICAgICAKKyAgICAgICAgTm9k
ZSogZm9sbG93aW5nTm9kZSA9IDA7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAg
IGZvciAoTGlzdEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIE5vZGUqIG4gPSAqaXQ7CisgICAgICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBwb3NpdGlvbiA9IG4tPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG5vZGUsIGVjKTsK
KyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PSBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcp
IHsKKyAgICAgICAgICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5pbnNlcnRCZWZv
cmUoZm9sbG93aW5nTm9kZSwgbm9kZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZm9sbG93aW5nTm9kZSA9IG47CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmluc2VydEJlZm9yZShmb2xs
b3dpbmdOb2RlLCBub2RlKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZVN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgbV9zdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZXMucmVtb3ZlKG5vZGUpOworfQorCiB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZVNl
bGVjdG9yKCkKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWF0dGFjaGVkKCkpCkBAIC0yMTY5
LDggKzIxOTksMTMgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGVTZWxlY3RvcigpCiAgICAg
aWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpCiAgICAgICAgIG1hdGNo
QXV0aG9yQW5kVXNlclN0eWxlcyA9IHNldHRpbmdzLT5hdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZCgpOwogCi0gICAgTm9kZSogbiA9IG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyA/IHRoaXMgOiAw
OwotICAgIGZvciAoIDsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgIExpc3RI
YXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgYmVnaW4gPSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
cy5iZWdpbigpOworICAgIExpc3RIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgZW5kID0gbV9zdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kZXMuZW5kKCk7CisgICAgaWYgKCFtYXRjaEF1dGhvckFuZFVzZXJT
dHlsZXMpCisgICAgICAgIGVuZCA9IGJlZ2luOworICAgIGZvciAoTGlzdEhhc2hTZXQ8Tm9kZSo+
OjppdGVyYXRvciBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSog
biA9ICppdDsKKwogICAgICAgICBTdHlsZVNoZWV0KiBzaGVldCA9IDA7CiAKICAgICAgICAgaWYg
KG4tPm5vZGVUeXBlKCkgPT0gUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKSB7CkBAIC0yMjY5
LDExICsyMzA0LDYgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGVTZWxlY3RvcigpCiAKICAg
ICAgICAgaWYgKHNoZWV0KQogICAgICAgICAgICAgc2hlZXRzLmFwcGVuZChzaGVldCk7Ci0KLSAg
ICAgICAgLy8gRm9yIEhUTUwgZG9jdW1lbnRzLCBzdHlsZXNoZWV0cyBhcmUgbm90IGFsbG93ZWQg
d2l0aGluL2FmdGVyIHRoZSA8Qk9EWT4gdGFnLiBTbyB3ZQotICAgICAgICAvLyBjYW4gc3RvcCBz
ZWFyY2hpbmcgaGVyZS4KLSAgICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkgJiYgbi0+aGFzVGFn
TmFtZShib2R5VGFnKSkKLSAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1fc3R5bGVT
aGVldHMtPnN3YXAoc2hlZXRzKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMzUxNjIpCisrKyBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNiArMzE5LDkgQEAgcHVi
bGljOgogICAgICAqLwogICAgIHZvaWQgYWRkUGVuZGluZ1NoZWV0KCkgeyBtX3BlbmRpbmdTdHls
ZXNoZWV0cysrOyB9CiAKKyAgICB2b2lkIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUq
LCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZShOb2RlKik7CisKICAgICBib29sIGdvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hl
ZXRzTG9hZCgpIHsgcmV0dXJuIG1fZ290b0FuY2hvck5lZWRlZEFmdGVyU3R5bGVzaGVldHNMb2Fk
OyB9CiAgICAgdm9pZCBzZXRHb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNoZWV0c0xvYWQoYm9v
bCBiKSB7IG1fZ290b0FuY2hvck5lZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkID0gYjsgfQogCkBA
IC04MzAsOCArODMzLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxSYW5nZSo+IG1fcmFuZ2Vz
OwogCiAgICAgdW5zaWduZWQgc2hvcnQgbV9saXN0ZW5lclR5cGVzOwotICAgIFJlZlB0cjxTdHls
ZVNoZWV0TGlzdD4gbV9zdHlsZVNoZWV0czsKLSAgICAKKworICAgIFJlZlB0cjxTdHlsZVNoZWV0
TGlzdD4gbV9zdHlsZVNoZWV0czsgLy8gQWxsIG9mIHRoZSBzdHlsZXNoZWV0cyB0aGF0IGFyZSBj
dXJyZW50bHkgaW4gZWZmZWN0IGZvciBvdXIgbWVkaWEgdHlwZSBhbmQgc3R5bGVzaGVldCBzZXQu
CisgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzOyAvLyBB
bGwgb2YgdGhlIG5vZGVzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBzdHlsZXNoZWV0
cyB0byB0aGUgZG9jdW1lbnQgKDxsaW5rPiwgPHN0eWxlPiwgPD94bWwtc3R5bGVzaGVldD4pCisK
ICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lckxpc3QgbV93aW5kb3dFdmVudExpc3RlbmVyczsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxGb3JtRWxlbWVudEtleSwgVmVjdG9yPFN0cmluZz4sIEZv
cm1FbGVtZW50S2V5SGFzaCwgRm9ybUVsZW1lbnRLZXlIYXNoVHJhaXRzPiBGb3JtRWxlbWVudFN0
YXRlTWFwOwpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDM1MTYyKQorKysgV2ViQ29yZS9kb20vTm9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MzcsNiArMTgzNywxMSBAQCB1bnNpZ25lZCBzaG9ydCBOb2Rl
Ojpjb21wYXJlRG9jdW1lbnRQb3NpCiAgICAgICAgICAgICBpZiAoY2hpbGQyLT5ub2RlVHlwZSgp
ID09IEFUVFJJQlVURV9OT0RFKQogICAgICAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9QT1NJ
VElPTl9QUkVDRURJTkc7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghY2hpbGQyLT5u
ZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9QT1NJVElPTl9G
T0xMT1dJTkc7CisgICAgICAgICAgICBpZiAoIWNoaWxkMS0+bmV4dFNpYmxpbmcoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HOworCiAgICAgICAg
ICAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBzZWUgd2hpY2ggbm9kZSBvY2N1cnMgZmlyc3Qu
ICBDcmF3bCBiYWNrd2FyZHMgZnJvbSBjaGlsZDIgbG9va2luZyBmb3IgY2hpbGQxLgogICAgICAg
ICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxkMi0+cHJldmlvdXNTaWJsaW5nKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgICAgIGlm
IChjaGlsZCA9PSBjaGlsZDEpCkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAJKHJldmlzaW9uIDM1MTYyKQorKysgV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE2ICsxMDUsMTYgQEAgYm9vbCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OmNoaWxkVHlwZUFsbAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCit2b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKIHsKLSAgICBpZiAobV90YXJnZXQgPT0gInht
bC1zdHlsZXNoZWV0IikgeworICAgIGlmIChtX3RhcmdldCA9PSAieG1sLXN0eWxlc2hlZXQiICYm
IGRvY3VtZW50KCktPmZyYW1lKCkgJiYgcGFyZW50Tm9kZSgpID09IGRvY3VtZW50KCkpIHsKICAg
ICAgICAgLy8gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0LwogICAgICAg
ICAvLyAjIyMgc3VwcG9ydCBzdHlsZXNoZWV0IGluY2x1ZGVkIGluIGEgZnJhZ21lbnQgb2YgdGhp
cyAob3IgYW5vdGhlcikgZG9jdW1lbnQKICAgICAgICAgLy8gIyMjIG1ha2Ugc3VyZSB0aGlzIGdl
dHMgY2FsbGVkIHdoZW4gYWRkaW5nIGZyb20gamF2YXNjcmlwdAogICAgICAgICBib29sIGF0dHJz
T2s7CiAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGF0dHJzID0gcGFyc2VB
dHRyaWJ1dGVzKG1fZGF0YSwgYXR0cnNPayk7CiAgICAgICAgIGlmICghYXR0cnNPaykKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGF0dHJzLmZpbmQoInR5cGUiKTsK
ICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIGlmIChpICE9IGF0dHJzLmVuZCgpKQpAQCAt
MTI4LDcgKzEyOCw3IEBAIGJvb2wgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2gK
ICNlbHNlCiAgICAgICAgIGlmICghaXNDU1MpCiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFN0cmluZyBocmVmID0gYXR0cnMu
Z2V0KCJocmVmIik7CiAgICAgICAgIFN0cmluZyBhbHRlcm5hdGUgPSBhdHRycy5nZXQoImFsdGVy
bmF0ZSIpOwpAQCAtMTQ2LDQwICsxNDYsMzEgQEAgYm9vbCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OmNoZWNrU3R5bGVTaAogICAgICAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNMU3R5bGVTaGVl
dDo6Y3JlYXRlRW1iZWRkZWQodGhpcywgbV9sb2NhbEhyZWYpOwogICAgICAgICAgICAgICAgICAg
ICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICFtX2lzWFNMOwogI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IHNvbWUgdmFsaWRhdGlv
biBvbiB0aGUgVVJMPwotICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAobV9jYWNoZWRTaGVldCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQt
PnJlbW92ZUNsaWVudCh0aGlzKTsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG1faXNYU0wpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0g
ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNoZWV0KGRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKGhyZWYpLnN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
I2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0
cmluZyBjaGFyc2V0ID0gYXR0cnMuZ2V0KCJjaGFyc2V0Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhcnNldCA9IGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5lbmNvZGluZygpOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9h
ZGVyKCktPnJlcXVlc3RDU1NTdHlsZVNoZWV0KGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYp
LnN0cmluZygpLCBjaGFyc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fY2Fj
aGVkU2hlZXQtPmFkZENsaWVudCh0aGlzKTsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICFtX2lzWFNMOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbV9sb2Fk
aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQo
KTsKKyAgICAgICAgICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKKyAgICAgICAgICAgICAgICAg
ICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworI2lmIEVOQUJMRShYU0xUKQor
ICAgICAgICAgICAgICAgIGlmIChtX2lzWFNMKQorICAgICAgICAgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNoZWV0KGRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisjZW5kaWYKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyBjaGFyc2V0ID0gYXR0cnMuZ2V0KCJjaGFyc2V0Iik7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjaGFyc2V0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBk
b2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKKworICAgICAgICAgICAg
ICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RD
U1NTdHlsZVNoZWV0KGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLnN0cmluZygpLCBjaGFy
c2V0KTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hl
ZXQpCisgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCh0aGlzKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogYm9vbCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmlzTG9hZGluZygpIGNvbnN0CkBAIC0y
NjAsNCArMjUxLDI5IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpnZXRTdWJyZXNvdXIK
ICAgICB1cmxzLmFwcGVuZChzaGVldCgpLT5ocmVmKCkpOwogfQogCit2b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQoreworICAgIENvbnRhaW5lck5vZGU6
Omluc2VydGVkSW50b0RvY3VtZW50KCk7CisgICAgZG9jdW1lbnQoKS0+YWRkU3R5bGVTaGVldENh
bmRpZGF0ZU5vZGUodGhpcywgbV9jcmVhdGVkQnlQYXJzZXIpOworICAgIGNoZWNrU3R5bGVTaGVl
dCgpOworfQorCit2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6cmVtb3ZlZEZyb21Eb2N1bWVu
dCgpCit7CisgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworCisgICAg
aWYgKGRvY3VtZW50KCktPnJlbmRlcmVyKCkpCisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZVN0
eWxlU2hlZXRDYW5kaWRhdGVOb2RlKHRoaXMpOworCisgICAgLy8gRklYTUU6IEl0J3MgdGVycmli
bGUgdG8gZG8gYSBzeW5jaHJvbm91cyB1cGRhdGUgb2YgdGhlIHN0eWxlIHNlbGVjdG9yIGp1c3Qg
YmVjYXVzZSBhIDxzdHlsZT4gb3IgPGxpbms+IGVsZW1lbnQgZ290IHJlbW92ZWQuCisgICAgaWYg
KG1fY2FjaGVkU2hlZXQpCisgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3Io
KTsKK30KKwordm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpCit7CisgICAgbV9jcmVhdGVkQnlQYXJzZXIgPSBmYWxzZTsKKyAgICBDb250YWluZXJOb2Rl
OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFdl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCArNTMs
MTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGludCBtYXhDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdDsKIAorICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbURvY3VtZW50KCk7CisgICAgdm9pZCBzZXRDcmVhdGVkQnlQYXJzZXIoYm9vbCBjcmVh
dGVkQnlQYXJzZXIpIHsgbV9jcmVhdGVkQnlQYXJzZXIgPSBjcmVhdGVkQnlQYXJzZXI7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisKICAgICAvLyBPdGhlciBt
ZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAgU3RyaW5nIGxvY2FsSHJlZigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJl
dHVybiBtX3NoZWV0LmdldCgpOyB9Ci0gICAgYm9vbCBjaGVja1N0eWxlU2hlZXQoKTsKKyAgICB2
b2lkIGNoZWNrU3R5bGVTaGVldCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqKTsKICNpZiBFTkFCTEUoWFNMVCkKICAgICB2aXJ0dWFsIHZvaWQgc2V0WFNM
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaGVldCk7CkBAIC04
Myw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0eWxlU2hlZXQ+IG1fc2hlZXQ7CiAg
ICAgYm9vbCBtX2xvYWRpbmc7CiAgICAgYm9vbCBtX2FsdGVybmF0ZTsKKyAgICBib29sIG1fY3Jl
YXRlZEJ5UGFyc2VyOwogI2lmIEVOQUJMRShYU0xUKQogICAgIGJvb2wgbV9pc1hTTDsKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvZG9t
L1N0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDExIEBAIHZvaWQg
U3R5bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgKIAogdm9pZCBTdHlsZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogeworICAgIC8vIElmIHdl
J3JlIGluIGRvY3VtZW50IHRlYXJkb3duLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IG5v
dGlmaWNhdGlvbiBvZiBvdXIgc2hlZXQncyByZW1vdmFsLgorICAgIGlmICghZG9jdW1lbnQtPnJl
bmRlcmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBJdCdzIHRlcnJpYmxl
IHRvIGRvIGEgc3luY2hyb25vdXMgdXBkYXRlIG9mIHRoZSBzdHlsZSBzZWxlY3RvciBqdXN0IGJl
Y2F1c2UgYSA8c3R5bGU+IG9yIDxsaW5rPiBlbGVtZW50IGdvdCByZW1vdmVkLgogICAgIGlmICht
X3NoZWV0KQogICAgICAgICBkb2N1bWVudC0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOwogfQpJbmRl
eDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvZG9tL1hNTFRv
a2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50
LmgiCkBAIC04NzMsNyArODc0LDkgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5z
KGNvbnN0IAogICAgIGVsc2UgaWYgKG5ld0VsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0
eWxlVGFnKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVFbGVtZW50Kj4obmV3RWxlbWVu
dC5nZXQoKSktPnNldENyZWF0ZWRCeVBhcnNlcih0cnVlKTsKICNlbmRpZgotICAgIAorICAgIGVs
c2UgaWYgKG5ld0VsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpsaW5rVGFnKSkKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4obmV3RWxlbWVudC5nZXQoKSktPnNldENy
ZWF0ZWRCeVBhcnNlcih0cnVlKTsKKwogICAgIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6c2NyaXB0VGFnKQogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHx8IG5ld0VsZW1l
bnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykKQEAgLTEwMTMsMjMgKzEwMTYsMjAg
QEAgdm9pZCBYTUxUb2tlbml6ZXI6OnByb2Nlc3NpbmdJbnN0cnVjdGlvbgogICAgIGlmIChleGNl
cHRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIHBpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1
ZSk7CisgICAgCiAgICAgaWYgKCFtX2N1cnJlbnROb2RlLT5hZGRDaGlsZChwaS5nZXQoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAobV92aWV3ICYmICFwaS0+YXR0YWNoZWQoKSkKICAgICAg
ICAgcGktPmF0dGFjaCgpOwogCi0gICAgLy8gZG9uJ3QgbG9hZCBzdHlsZXNoZWV0cyBmb3Igc3Rh
bmRhbG9uZSBkb2N1bWVudHMKLSAgICBpZiAobV9kb2MtPmZyYW1lKCkpIHsKLSAgICAgICAgbV9z
YXdYU0xUcmFuc2Zvcm0gPSAhbV9zYXdGaXJzdEVsZW1lbnQgJiYgIXBpLT5jaGVja1N0eWxlU2hl
ZXQoKTsKKyAgICBwaS0+ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisKICNpZiBFTkFCTEUoWFNM
VCkKLSAgICAgICAgLy8gUHJldGVuZCB3ZSBkaWRuJ3Qgc2VlIHRoaXMgUEkgaWYgd2UncmUgdGhl
IHJlc3VsdCBvZiBhIHRyYW5zZm9ybS4KLSAgICAgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtICYm
ICFtX2RvYy0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkKLSNlbHNlCi0gICAgICAgIGlmICht
X3Nhd1hTTFRyYW5zZm9ybSkKKyAgICBtX3Nhd1hTTFRyYW5zZm9ybSA9ICFtX3Nhd0ZpcnN0RWxl
bWVudCAmJiBwaS0+aXNYU0woKTsKKyAgICBpZiAobV9zYXdYU0xUcmFuc2Zvcm0gJiYgIW1fZG9j
LT50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKQorICAgICAgICBzdG9wUGFyc2luZygpOwogI2Vu
ZGlmCi0gICAgICAgICAgICAvLyBTdG9wIHRoZSBTQVggcGFyc2VyLgotICAgICAgICAgICAgc3Rv
cFBhcnNpbmcoKTsKLSAgICB9CiB9CiAKIHZvaWQgWE1MVG9rZW5pemVyOjpjZGF0YUJsb2NrKGNv
bnN0IHhtbENoYXIqIHMsIGludCBsZW4pCkBAIC0yMDEzLDE3ICsyMDEzLDIwIEBAIHZvaWQgWE1M
VG9rZW5pemVyOjpwYXJzZVByb2Nlc3NpbmdJbnN0cnUKICAgICBpZiAoZXhjZXB0aW9uKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBwaS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOworCiAgICAg
aWYgKCFtX2N1cnJlbnROb2RlLT5hZGRDaGlsZChwaS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAobV92aWV3ICYmICFwaS0+YXR0YWNoZWQoKSkKICAgICAgICAgcGktPmF0dGFjaCgp
OwogCi0gICAgLy8gZG9uJ3QgbG9hZCBzdHlsZXNoZWV0cyBmb3Igc3RhbmRhbG9uZSBkb2N1bWVu
dHMKLSAgICBpZiAobV9kb2MtPmZyYW1lKCkpIHsKLSAgICAgICAgbV9zYXdYU0xUcmFuc2Zvcm0g
PSAhbV9zYXdGaXJzdEVsZW1lbnQgJiYgIXBpLT5jaGVja1N0eWxlU2hlZXQoKTsKLSAgICAgICAg
aWYgKG1fc2F3WFNMVHJhbnNmb3JtKQotICAgICAgICAgICAgc3RvcFBhcnNpbmcoKTsKLSAgICB9
CisgICAgcGktPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworCisjaWYgRU5BQkxFKFhTTFQpCisg
ICAgbV9zYXdYU0xUcmFuc2Zvcm0gPSAhbV9zYXdGaXJzdEVsZW1lbnQgJiYgcGktPmlzWFNMKCk7
CisgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtICYmICFtX2RvYy0+dHJhbnNmb3JtU291cmNlRG9j
dW1lbnQoKSkpCisgICAgICAgIHN0b3BQYXJzaW5nKCk7CisjZW5kaWYKIH0KIAogdm9pZCBYTUxU
b2tlbml6ZXI6OnBhcnNlQ2RhdGEoKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50RmFj
dG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50RmFjdG9yeS5j
cHAJKHJldmlzaW9uIDM1MTYyKQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50RmFjdG9yeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw5ICsxMTMsMTEgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IGJhc2VDb25zdAogICAgIHJldHVybiBuZXcgSFRNTEJhc2VFbGVtZW50KGRv
Yyk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBsaW5rQ29uc3RydWN0b3Io
Y29uc3QgQXRvbWljU3RyaW5nJiwgRG9jdW1lbnQqIGRvYywgSFRNTEZvcm1FbGVtZW50KiwgYm9v
bCkKK3N0YXRpYyBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBsaW5rQ29uc3RydWN0b3IoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRG9jdW1lbnQqIGRvYywgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBIVE1MTGlua0VsZW1lbnQoZG9jKTsKKyAg
ICBSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBsaW5rID0gbmV3IEhUTUxMaW5rRWxlbWVudChkb2Mp
OworICAgIGxpbmstPnNldENyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpOworICAgIHJl
dHVybiBsaW5rLnJlbGVhc2UoKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
IG1ldGFDb25zdHJ1Y3Rvcihjb25zdCBBdG9taWNTdHJpbmcmLCBEb2N1bWVudCogZG9jLCBIVE1M
Rm9ybUVsZW1lbnQqLCBib29sKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDM1MTYyKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQo
RG9jdW1lbgogICAgICwgbV9hbHRlcm5hdGUoZmFsc2UpCiAgICAgLCBtX2lzU3R5bGVTaGVldChm
YWxzZSkKICAgICAsIG1faXNJY29uKGZhbHNlKQorICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoZmFs
c2UpCiB7CiB9CiAKQEAgLTIxMSwxMyArMjEyLDI1IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpw
cm9jZXNzKCkKIHZvaWQgSFRNTExpbmtFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7
CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CisgICAgZG9jdW1lbnQo
KS0+YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUodGhpcywgbV9jcmVhdGVkQnlQYXJzZXIpOwog
ICAgIHByb2Nlc3MoKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZWRGcm9tRG9j
dW1lbnQoKQogewogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAg
cHJvY2VzcygpOworCisgICAgLy8gRklYTUU6IEl0J3MgdGVycmlibGUgdG8gZG8gYSBzeW5jaHJv
bm91cyB1cGRhdGUgb2YgdGhlIHN0eWxlIHNlbGVjdG9yIGp1c3QgYmVjYXVzZSBhIDxzdHlsZT4g
b3IgPGxpbms+IGVsZW1lbnQgZ290IHJlbW92ZWQuCisgICAgaWYgKGRvY3VtZW50KCktPnJlbmRl
cmVyKCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5v
ZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQor
eworICAgIG1fY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2U7CisgICAgSFRNTEVsZW1lbnQ6OmZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpOwogfQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBD
YWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHJl
dmlzaW9uIDM1MTYyKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw2ICs5Niw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKIAorICAg
IHZvaWQgc2V0Q3JlYXRlZEJ5UGFyc2VyKGJvb2wgY3JlYXRlZEJ5UGFyc2VyKSB7IG1fY3JlYXRl
ZEJ5UGFyc2VyID0gY3JlYXRlZEJ5UGFyc2VyOyB9CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBh
cnNpbmdDaGlsZHJlbigpOworCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkQ1NTU3R5bGVTaGVldCog
bV9jYWNoZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKQEAgLTEw
Nyw2ICsxMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2FsdGVybmF0ZTsKICAgICBib29s
IG1faXNTdHlsZVNoZWV0OwogICAgIGJvb2wgbV9pc0ljb247CisgICAgYm9vbCBtX2NyZWF0ZWRC
eVBhcnNlcjsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM1MTYyKQorKysgV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW0KIHsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKIAorICAgIGRvY3VtZW50KCktPmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKHRo
aXMsIG1fY3JlYXRlZEJ5UGFyc2VyKTsKICAgICBpZiAoIW1fY3JlYXRlZEJ5UGFyc2VyKQogICAg
ICAgICBTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KGRvY3VtZW50KCksIHRoaXMp
OwogfQpAQCAtNjksNiArNzAsOCBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewog
ICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50
KCktPnJlbmRlcmVyKCkpCisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZVN0eWxlU2hlZXRDYW5k
aWRhdGVOb2RlKHRoaXMpOwogICAgIFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudChk
b2N1bWVudCgpKTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAz
NTE2MikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAg
IFNWR0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0KKyAgICBkb2N1bWVudCgpLT5h
ZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzLCBtX2NyZWF0ZWRCeVBhcnNlcik7CiAgICAg
aWYgKCFtX2NyZWF0ZWRCeVBhcnNlcikKICAgICAgICAgU3R5bGVFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudChkb2N1bWVudCgpLCB0aGlzKTsKIH0KQEAgLTExMSw2ICsxMTEsOCBAQCB2b2lk
IFNWR1N0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lCiB2b2lkIFNWR1N0eWxlRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7CiAgICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCgpOworICAgIGlmIChkb2N1bWVudCgpLT5yZW5kZXJlcigpKQorICAgICAgICBkb2N1
bWVudCgpLT5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKICAgICBTdHlsZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiB9CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL2xpbmstb3V0c2lkZS1oZWFkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3MvbGluay1vdXRzaWRlLWhlYWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstb3V0c2lkZS1oZWFkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweCB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CitZb3Ugc2hvdWxkIHNlZSBhIDEwMHgxMDAgZ3JlZW4gc3F1YXJlIGJl
bG93LiAgSWYgeW91IHNlZSBhbnkgcmVkIHRoZW4gdGhlIHRlc3QgaGFzIGZhaWxlZC4KKzxkaXY+
PC9kaXY+Cis8c2NyaXB0PgordmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7
CitzLnNldEF0dHJpYnV0ZSgicmVsIiwgInN0eWxlc2hlZXQiKTsKK3Muc2V0QXR0cmlidXRlKCJo
cmVmIiwgInJlc291cmNlcy9ncmVlbi5jc3MiKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cyk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlLW91dHNpZGUtaGVhZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL3N0eWxlLW91dHNpZGUtaGVhZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGUtb3V0c2lkZS1oZWFkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeyBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweCB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CitZb3Ugc2hvdWxkIHNlZSBhIDEwMHgxMDAgZ3JlZW4gc3F1YXJlIGJlbG93LiAgSWYg
eW91IHNlZSBhbnkgcmVkIHRoZW4gdGhlIHRlc3QgaGFzIGZhaWxlZC4KKzxkaXY+PC9kaXY+Cis8
c2NyaXB0PgordmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwordmFyIHQg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiZGl2IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4g
fSIpOworcy5hcHBlbmRDaGlsZCh0KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocyk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
c291cmNlcy9ncmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVz
b3VyY2VzL2dyZWVuLmNzcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
c291cmNlcy9ncmVlbi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RpdiB7IGJhY2tn
cm91bmQtY29sb3I6IGdyZWVuIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22269</attachid>
            <date>2008-07-14 13:39:14 -0700</date>
            <delta_ts>2008-07-14 14:06:14 -0700</delta_ts>
            <desc>Change the iteration in addStyleSheetCandidateNode to go from last to first</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21682</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTE2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDgtMDctMTQgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCBmb3IgYnVnemlsbGEgYnVnIDU0NzYsIGxpbmsgYW5kIHN0eWxlIGVs
ZW1lbnRzIHNob3VsZCBiZSBhbGxvd2VkIG91dHNpZGUgdGhlIDxoZWFkPi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBmYXN0L2Nzcy9zdHls
ZS1vdXRzaWRlLWhlYWQuaHRtbAorICAgICAgICBBZGRlZCBmYXN0L2Nzcy9saW5rLW91dHNpZGUt
aGVhZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpyZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6c2V0Q3JlYXRlZEJ5UGFyc2VyKToKKyAgICAgICAgKiBkb20vU3R5bGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVu
dCk6CisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2Vu
aXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlu
a0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6c2V0Q3JlYXRlZEJ5UGFyc2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxTdHls
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6cmVt
b3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6
CisKIDIwMDgtMDctMTQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgYnVpbGQgZml4ZXMKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDM1MTYyKQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTU4LDYgKzIxNTgs
MzcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5bGVTZWxlY3RvcigpCiAgICAgfQogfQogCit2
b2lkIERvY3VtZW50OjphZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlLCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKK3sKKyAgICBpZiAoY3JlYXRlZEJ5UGFyc2VyIHx8IG1fc3R5bGVT
aGVldENhbmRpZGF0ZU5vZGVzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZXMuYWRkKG5vZGUpOworICAgIGVsc2UgeworICAgICAgICAvLyBEZXRlcm1pbmUgYW4g
YXBwcm9wcmlhdGUgaW5zZXJ0aW9uIHBvaW50LgorICAgICAgICBMaXN0SGFzaFNldDxOb2RlKj46
Oml0ZXJhdG9yIGJlZ2luID0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuYmVnaW4oKTsKKyAg
ICAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBlbmQgPSBtX3N0eWxlU2hlZXRDYW5k
aWRhdGVOb2Rlcy5lbmQoKTsKKyAgICAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBp
dCA9IGVuZDsKKyAgICAgICAgTm9kZSogZm9sbG93aW5nTm9kZSA9IDA7CisgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC0taXQ7CisgICAgICAgICAg
ICBOb2RlKiBuID0gKml0OworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBu
LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihub2RlLCBlYyk7CisgICAgICAgICAgICBpZiAocG9z
aXRpb24gPT0gRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSB7CisgICAgICAgICAgICAgICAg
bV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaW5zZXJ0QmVmb3JlKGZvbGxvd2luZ05vZGUsIG5v
ZGUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGZvbGxvd2luZ05vZGUgPSBuOworICAgICAgICB9IHdoaWxlIChpdCAhPSBiZWdpbik7CisgICAg
ICAgIAorICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5pbnNlcnRCZWZvcmUoZm9s
bG93aW5nTm9kZSwgbm9kZSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50OjpyZW1vdmVTdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlKQoreworICAgIG1fc3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGVzLnJlbW92ZShub2RlKTsKK30KKwogdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGVT
ZWxlY3RvcigpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFhdHRhY2hlZCgpKQpAQCAtMjE2
OSw4ICsyMjAwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlU2VsZWN0b3IoKQogICAg
IGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKQogICAgICAgICBtYXRj
aEF1dGhvckFuZFVzZXJTdHlsZXMgPSBzZXR0aW5ncy0+YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWQoKTsKIAotICAgIE5vZGUqIG4gPSBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgPyB0aGlzIDog
MDsKLSAgICBmb3IgKCA7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICBMaXN0
SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGJlZ2luID0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9k
ZXMuYmVnaW4oKTsKKyAgICBMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGVuZCA9IG1fc3R5
bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOworICAgIGlmICghbWF0Y2hBdXRob3JBbmRVc2Vy
U3R5bGVzKQorICAgICAgICBlbmQgPSBiZWdpbjsKKyAgICBmb3IgKExpc3RIYXNoU2V0PE5vZGUq
Pjo6aXRlcmF0b3IgaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIE5vZGUq
IG4gPSAqaXQ7CisKICAgICAgICAgU3R5bGVTaGVldCogc2hlZXQgPSAwOwogCiAgICAgICAgIGlm
IChuLT5ub2RlVHlwZSgpID09IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkgewpAQCAtMjI2
OSwxMSArMjMwNSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlU2VsZWN0b3IoKQogCiAg
ICAgICAgIGlmIChzaGVldCkKICAgICAgICAgICAgIHNoZWV0cy5hcHBlbmQoc2hlZXQpOwotCi0g
ICAgICAgIC8vIEZvciBIVE1MIGRvY3VtZW50cywgc3R5bGVzaGVldHMgYXJlIG5vdCBhbGxvd2Vk
IHdpdGhpbi9hZnRlciB0aGUgPEJPRFk+IHRhZy4gU28gd2UKLSAgICAgICAgLy8gY2FuIHN0b3Ag
c2VhcmNoaW5nIGhlcmUuCi0gICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgpICYmIG4tPmhhc1Rh
Z05hbWUoYm9keVRhZykpCi0gICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBtX3N0eWxl
U2hlZXRzLT5zd2FwKHNoZWV0cyk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDM1MTYyKQorKysgV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzE5LDYgKzMxOSw5IEBAIHB1
YmxpYzoKICAgICAgKi8KICAgICB2b2lkIGFkZFBlbmRpbmdTaGVldCgpIHsgbV9wZW5kaW5nU3R5
bGVzaGVldHMrKzsgfQogCisgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2Rl
KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHZvaWQgcmVtb3ZlU3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGUoTm9kZSopOworCiAgICAgYm9vbCBnb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNo
ZWV0c0xvYWQoKSB7IHJldHVybiBtX2dvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9h
ZDsgfQogICAgIHZvaWQgc2V0R290b0FuY2hvck5lZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkKGJv
b2wgYikgeyBtX2dvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZCA9IGI7IH0KIApA
QCAtODMwLDggKzgzMywxMCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmFuZ2UqPiBtX3Jhbmdl
czsKIAogICAgIHVuc2lnbmVkIHNob3J0IG1fbGlzdGVuZXJUeXBlczsKLSAgICBSZWZQdHI8U3R5
bGVTaGVldExpc3Q+IG1fc3R5bGVTaGVldHM7Ci0gICAgCisKKyAgICBSZWZQdHI8U3R5bGVTaGVl
dExpc3Q+IG1fc3R5bGVTaGVldHM7IC8vIEFsbCBvZiB0aGUgc3R5bGVzaGVldHMgdGhhdCBhcmUg
Y3VycmVudGx5IGluIGVmZmVjdCBmb3Igb3VyIG1lZGlhIHR5cGUgYW5kIHN0eWxlc2hlZXQgc2V0
LgorICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2RlczsgLy8g
QWxsIG9mIHRoZSBub2RlcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IHByb3ZpZGUgc3R5bGVzaGVl
dHMgdG8gdGhlIGRvY3VtZW50ICg8bGluaz4sIDxzdHlsZT4sIDw/eG1sLXN0eWxlc2hlZXQ+KQor
CiAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJMaXN0IG1fd2luZG93RXZlbnRMaXN0ZW5lcnM7
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Rm9ybUVsZW1lbnRLZXksIFZlY3RvcjxTdHJpbmc+LCBG
b3JtRWxlbWVudEtleUhhc2gsIEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0cz4gRm9ybUVsZW1lbnRT
dGF0ZU1hcDsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODM3LDYgKzE4MzcsMTEgQEAgdW5zaWduZWQgc2hvcnQgTm9k
ZTo6Y29tcGFyZURvY3VtZW50UG9zaQogICAgICAgICAgICAgaWYgKGNoaWxkMi0+bm9kZVR5cGUo
KSA9PSBBVFRSSUJVVEVfTk9ERSkKICAgICAgICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfUE9T
SVRJT05fUFJFQ0VESU5HOwogICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWNoaWxkMi0+
bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfUE9TSVRJT05f
Rk9MTE9XSU5HOworICAgICAgICAgICAgaWYgKCFjaGlsZDEtPm5leHRTaWJsaW5nKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORzsKKwogICAgICAg
ICAgICAgLy8gT3RoZXJ3aXNlIHdlIG5lZWQgdG8gc2VlIHdoaWNoIG5vZGUgb2NjdXJzIGZpcnN0
LiAgQ3Jhd2wgYmFja3dhcmRzIGZyb20gY2hpbGQyIGxvb2tpbmcgZm9yIGNoaWxkMS4KICAgICAg
ICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBjaGlsZDItPnByZXZpb3VzU2libGluZygpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoY2hpbGQgPT0gY2hpbGQxKQpJbmRleDogV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxNiArMTA1LDE2IEBAIGJvb2wgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjpjaGlsZFR5cGVBbGwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQordm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiB7Ci0gICAgaWYgKG1fdGFyZ2V0ID09ICJ4
bWwtc3R5bGVzaGVldCIpIHsKKyAgICBpZiAobV90YXJnZXQgPT0gInhtbC1zdHlsZXNoZWV0IiAm
JiBkb2N1bWVudCgpLT5mcmFtZSgpICYmIHBhcmVudE5vZGUoKSA9PSBkb2N1bWVudCgpKSB7CiAg
ICAgICAgIC8vIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldC8KICAgICAg
ICAgLy8gIyMjIHN1cHBvcnQgc3R5bGVzaGVldCBpbmNsdWRlZCBpbiBhIGZyYWdtZW50IG9mIHRo
aXMgKG9yIGFub3RoZXIpIGRvY3VtZW50CiAgICAgICAgIC8vICMjIyBtYWtlIHN1cmUgdGhpcyBn
ZXRzIGNhbGxlZCB3aGVuIGFkZGluZyBmcm9tIGphdmFzY3JpcHQKICAgICAgICAgYm9vbCBhdHRy
c09rOwogICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhdHRycyA9IHBhcnNl
QXR0cmlidXRlcyhtX2RhdGEsIGF0dHJzT2spOwogICAgICAgICBpZiAoIWF0dHJzT2spCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhdHRycy5maW5kKCJ0eXBlIik7
CiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBpZiAoaSAhPSBhdHRycy5lbmQoKSkKQEAg
LTEyOCw3ICsxMjgsNyBAQCBib29sIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNo
CiAjZWxzZQogICAgICAgICBpZiAoIWlzQ1NTKQogI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBTdHJpbmcgaHJlZiA9IGF0dHJz
LmdldCgiaHJlZiIpOwogICAgICAgICBTdHJpbmcgYWx0ZXJuYXRlID0gYXR0cnMuZ2V0KCJhbHRl
cm5hdGUiKTsKQEAgLTE0Niw0MCArMTQ2LDMxIEBAIGJvb2wgUHJvY2Vzc2luZ0luc3RydWN0aW9u
OjpjaGVja1N0eWxlU2gKICAgICAgICAgICAgICAgICAgICAgbV9zaGVldCA9IFhTTFN0eWxlU2hl
ZXQ6OmNyZWF0ZUVtYmVkZGVkKHRoaXMsIG1fbG9jYWxIcmVmKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHJldHVybiAhbV9pc1hTTDsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBzb21lIHZhbGlkYXRp
b24gb24gdGhlIFVSTD8KLSAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSkg
ewotICAgICAgICAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY2FjaGVkU2hlZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0
LT5yZW1vdmVDbGllbnQodGhpcyk7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX2lzWFNMKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0WFNMU3R5bGVTaGVldChkb2N1bWVudCgp
LT5jb21wbGV0ZVVSTChocmVmKS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSNlbmRpZgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJzZXQgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKLQot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCktPmRvY0xv
YWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVTaGVldChkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVm
KS5zdHJpbmcoKSwgY2hhcnNldCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2Nh
Y2hlZFNoZWV0LT5hZGRDbGllbnQodGhpcyk7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiAhbV9pc1hTTDsKLSNlbmRpZgorICAgICAgICAgICAgICAgIG1fbG9h
ZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0
KCk7CisgICAgICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCisgICAgICAgICAgICAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyNpZiBFTkFCTEUoWFNMVCkK
KyAgICAgICAgICAgICAgICBpZiAobV9pc1hTTCkKKyAgICAgICAgICAgICAgICAgICAgbV9jYWNo
ZWRTaGVldCA9IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0WFNMU3R5bGVTaGVldChk
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKS5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorI2VuZGlmCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2hhcnNldC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmVuY29kaW5nKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0
Q1NTU3R5bGVTaGVldChkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKS5zdHJpbmcoKSwgY2hh
cnNldCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX2NhY2hlZFNo
ZWV0KQorICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQodGhpcyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7
CiB9CiAKIGJvb2wgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjppc0xvYWRpbmcoKSBjb25zdApAQCAt
MjYwLDQgKzI1MSwyOSBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Z2V0U3VicmVzb3Vy
CiAgICAgdXJscy5hcHBlbmQoc2hlZXQoKS0+aHJlZigpKTsKIH0KIAordm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBDb250YWluZXJOb2Rl
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIGRvY3VtZW50KCktPmFkZFN0eWxlU2hlZXRD
YW5kaWRhdGVOb2RlKHRoaXMsIG1fY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBjaGVja1N0eWxlU2hl
ZXQoKTsKK30KKwordm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnJlbW92ZWRGcm9tRG9jdW1l
bnQoKQoreworICAgIENvbnRhaW5lck5vZGU6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKworICAg
IGlmIChkb2N1bWVudCgpLT5yZW5kZXJlcigpKQorICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKKworICAgIC8vIEZJWE1FOiBJdCdzIHRlcnJp
YmxlIHRvIGRvIGEgc3luY2hyb25vdXMgdXBkYXRlIG9mIHRoZSBzdHlsZSBzZWxlY3RvciBqdXN0
IGJlY2F1c2UgYSA8c3R5bGU+IG9yIDxsaW5rPiBlbGVtZW50IGdvdCByZW1vdmVkLgorICAgIGlm
IChtX2NhY2hlZFNoZWV0KQorICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZVNlbGVjdG9y
KCk7Cit9CisKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKQoreworICAgIG1fY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2U7CisgICAgQ29udGFpbmVyTm9k
ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBX
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMzUxNjIpCisrKyBXZWJDb3Jl
L2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTAgKzUz
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgb2Zmc2V0SW5DaGFyYWN0ZXJzKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBpbnQgbWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOworICAgIHZvaWQgc2V0Q3JlYXRlZEJ5UGFyc2VyKGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKSB7IG1fY3JlYXRlZEJ5UGFyc2VyID0gY3JlYXRlZEJ5UGFyc2VyOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworCiAgICAgLy8gT3RoZXIg
bWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQogICAgIFN0cmluZyBsb2NhbEhyZWYoKSBjb25zdCB7
IHJldHVybiBtX2xvY2FsSHJlZjsgfQogICAgIFN0eWxlU2hlZXQqIHNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGVldC5nZXQoKTsgfQotICAgIGJvb2wgY2hlY2tTdHlsZVNoZWV0KCk7CisgICAg
dm9pZCBjaGVja1N0eWxlU2hlZXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRD
U1NTdHlsZVNoZWV0Kik7CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgdmlydHVhbCB2b2lkIHNldFhT
TFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwpAQCAt
ODMsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVNoZWV0PiBtX3NoZWV0Owog
ICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIGJvb2wgbV9hbHRlcm5hdGU7CisgICAgYm9vbCBtX2Ny
ZWF0ZWRCeVBhcnNlcjsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBib29sIG1faXNYU0w7CiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzUxNjIpCisrKyBXZWJDb3JlL2Rv
bS9TdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMSBAQCB2b2lk
IFN0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoCiAKIHZvaWQgU3R5bGVFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKKyAgICAvLyBJZiB3
ZSdyZSBpbiBkb2N1bWVudCB0ZWFyZG93biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBu
b3RpZmljYXRpb24gb2Ygb3VyIHNoZWV0J3MgcmVtb3ZhbC4KKyAgICBpZiAoIWRvY3VtZW50LT5y
ZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogSXQncyB0ZXJyaWJs
ZSB0byBkbyBhIHN5bmNocm9ub3VzIHVwZGF0ZSBvZiB0aGUgc3R5bGUgc2VsZWN0b3IganVzdCBi
ZWNhdXNlIGEgPHN0eWxlPiBvciA8bGluaz4gZWxlbWVudCBnb3QgcmVtb3ZlZC4KICAgICBpZiAo
bV9zaGVldCkKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKIH0KSW5k
ZXg6IFdlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vWE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gMzUxNjIpCisrKyBXZWJDb3JlL2RvbS9YTUxU
b2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgpAQCAtODczLDcgKzg3NCw5IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnRO
cyhjb25zdCAKICAgICBlbHNlIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpz
dHlsZVRhZykpCiAgICAgICAgIHN0YXRpY19jYXN0PFNWR1N0eWxlRWxlbWVudCo+KG5ld0VsZW1l
bnQuZ2V0KCkpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CiAjZW5kaWYKLSAgICAKKyAgICBl
bHNlIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bGlua1RhZykpCisgICAg
ICAgIHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KG5ld0VsZW1lbnQuZ2V0KCkpLT5zZXRD
cmVhdGVkQnlQYXJzZXIodHJ1ZSk7CisKICAgICBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OnNjcmlwdFRhZykKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB8fCBuZXdFbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpCkBAIC0xMDEzLDIzICsxMDE2LDIw
IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KICAgICBpZiAoZXhj
ZXB0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICBwaS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRy
dWUpOworICAgIAogICAgIGlmICghbV9jdXJyZW50Tm9kZS0+YWRkQ2hpbGQocGkuZ2V0KCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fdmlldyAmJiAhcGktPmF0dGFjaGVkKCkpCiAgICAg
ICAgIHBpLT5hdHRhY2goKTsKIAotICAgIC8vIGRvbid0IGxvYWQgc3R5bGVzaGVldHMgZm9yIHN0
YW5kYWxvbmUgZG9jdW1lbnRzCi0gICAgaWYgKG1fZG9jLT5mcmFtZSgpKSB7Ci0gICAgICAgIG1f
c2F3WFNMVHJhbnNmb3JtID0gIW1fc2F3Rmlyc3RFbGVtZW50ICYmICFwaS0+Y2hlY2tTdHlsZVNo
ZWV0KCk7CisgICAgcGktPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworCiAjaWYgRU5BQkxFKFhT
TFQpCi0gICAgICAgIC8vIFByZXRlbmQgd2UgZGlkbid0IHNlZSB0aGlzIFBJIGlmIHdlJ3JlIHRo
ZSByZXN1bHQgb2YgYSB0cmFuc2Zvcm0uCi0gICAgICAgIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSAm
JiAhbV9kb2MtPnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpCi0jZWxzZQotICAgICAgICBpZiAo
bV9zYXdYU0xUcmFuc2Zvcm0pCisgICAgbV9zYXdYU0xUcmFuc2Zvcm0gPSAhbV9zYXdGaXJzdEVs
ZW1lbnQgJiYgcGktPmlzWFNMKCk7CisgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtICYmICFtX2Rv
Yy0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkKKyAgICAgICAgc3RvcFBhcnNpbmcoKTsKICNl
bmRpZgotICAgICAgICAgICAgLy8gU3RvcCB0aGUgU0FYIHBhcnNlci4KLSAgICAgICAgICAgIHN0
b3BQYXJzaW5nKCk7Ci0gICAgfQogfQogCiB2b2lkIFhNTFRva2VuaXplcjo6Y2RhdGFCbG9jayhj
b25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQpAQCAtMjAxMywxNyArMjAxMywyMCBAQCB2b2lkIFhN
TFRva2VuaXplcjo6cGFyc2VQcm9jZXNzaW5nSW5zdHJ1CiAgICAgaWYgKGV4Y2VwdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCisgICAgcGktPnNldENyZWF0ZWRCeVBhcnNlcih0cnVlKTsKKwogICAg
IGlmICghbV9jdXJyZW50Tm9kZS0+YWRkQ2hpbGQocGkuZ2V0KCkpKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKG1fdmlldyAmJiAhcGktPmF0dGFjaGVkKCkpCiAgICAgICAgIHBpLT5hdHRhY2go
KTsKIAotICAgIC8vIGRvbid0IGxvYWQgc3R5bGVzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1l
bnRzCi0gICAgaWYgKG1fZG9jLT5mcmFtZSgpKSB7Ci0gICAgICAgIG1fc2F3WFNMVHJhbnNmb3Jt
ID0gIW1fc2F3Rmlyc3RFbGVtZW50ICYmICFwaS0+Y2hlY2tTdHlsZVNoZWV0KCk7Ci0gICAgICAg
IGlmIChtX3Nhd1hTTFRyYW5zZm9ybSkKLSAgICAgICAgICAgIHN0b3BQYXJzaW5nKCk7Ci0gICAg
fQorICAgIHBpLT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKworI2lmIEVOQUJMRShYU0xUKQor
ICAgIG1fc2F3WFNMVHJhbnNmb3JtID0gIW1fc2F3Rmlyc3RFbGVtZW50ICYmIHBpLT5pc1hTTCgp
OworICAgIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSAmJiAhbV9kb2MtPnRyYW5zZm9ybVNvdXJjZURv
Y3VtZW50KCkpKQorICAgICAgICBzdG9wUGFyc2luZygpOworI2VuZGlmCiB9CiAKIHZvaWQgWE1M
VG9rZW5pemVyOjpwYXJzZUNkYXRhKCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudEZh
Y3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudEZhY3Rvcnku
Y3BwCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudEZhY3Rvcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsOSArMTEzLDExIEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBiYXNlQ29uc3QKICAgICByZXR1cm4gbmV3IEhUTUxCYXNlRWxlbWVudChk
b2MpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gbGlua0NvbnN0cnVjdG9y
KGNvbnN0IEF0b21pY1N0cmluZyYsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCosIGJv
b2wpCitzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gbGlua0NvbnN0cnVjdG9yKGNvbnN0
IEF0b21pY1N0cmluZyYsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKQogewotICAgIHJldHVybiBuZXcgSFRNTExpbmtFbGVtZW50KGRvYyk7Cisg
ICAgUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gbGluayA9IG5ldyBIVE1MTGlua0VsZW1lbnQoZG9j
KTsKKyAgICBsaW5rLT5zZXRDcmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBy
ZXR1cm4gbGluay5yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBtZXRhQ29uc3RydWN0b3IoY29uc3QgQXRvbWljU3RyaW5nJiwgRG9jdW1lbnQqIGRvYywgSFRN
TEZvcm1FbGVtZW50KiwgYm9vbCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAzNTE2MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIEhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50
KERvY3VtZW4KICAgICAsIG1fYWx0ZXJuYXRlKGZhbHNlKQogICAgICwgbV9pc1N0eWxlU2hlZXQo
ZmFsc2UpCiAgICAgLCBtX2lzSWNvbihmYWxzZSkKKyAgICAsIG1fY3JlYXRlZEJ5UGFyc2VyKGZh
bHNlKQogewogfQogCkBAIC0yMTEsMTMgKzIxMiwyNSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
cHJvY2VzcygpCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQog
ewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIGRvY3VtZW50
KCktPmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKHRoaXMsIG1fY3JlYXRlZEJ5UGFyc2VyKTsK
ICAgICBwcm9jZXNzKCk7CiB9CiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpyZW1vdmVkRnJvbURv
Y3VtZW50KCkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAg
IHByb2Nlc3MoKTsKKworICAgIC8vIEZJWE1FOiBJdCdzIHRlcnJpYmxlIHRvIGRvIGEgc3luY2hy
b25vdXMgdXBkYXRlIG9mIHRoZSBzdHlsZSBzZWxlY3RvciBqdXN0IGJlY2F1c2UgYSA8c3R5bGU+
IG9yIDxsaW5rPiBlbGVtZW50IGdvdCByZW1vdmVkLgorICAgIGlmIChkb2N1bWVudCgpLT5yZW5k
ZXJlcigpKSB7CisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZVN0eWxlU2hlZXRDYW5kaWRhdGVO
b2RlKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZVNlbGVjdG9yKCk7Cisg
ICAgfQorfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkK
K3sKKyAgICBtX2NyZWF0ZWRCeVBhcnNlciA9IGZhbHNlOworICAgIEhUTUxFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3Qg
Q2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShy
ZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNiArOTYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3VicmVzb3VyY2VBdHRyaWJ1dGVTdHJpbmdzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAKKyAg
ICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29sIGNyZWF0ZWRCeVBhcnNlcikgeyBtX2NyZWF0
ZWRCeVBhcnNlciA9IGNyZWF0ZWRCeVBhcnNlcjsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKKwogcHJvdGVjdGVkOgogICAgIENhY2hlZENTU1N0eWxlU2hlZXQq
IG1fY2FjaGVkU2hlZXQ7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IG1fc2hlZXQ7CkBAIC0x
MDcsNiArMTEwLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9hbHRlcm5hdGU7CiAgICAgYm9v
bCBtX2lzU3R5bGVTaGVldDsKICAgICBib29sIG1faXNJY29uOworICAgIGJvb2wgbV9jcmVhdGVk
QnlQYXJzZXI7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTE2MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KCk7CiAKKyAgICBkb2N1bWVudCgpLT5hZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0
aGlzLCBtX2NyZWF0ZWRCeVBhcnNlcik7CiAgICAgaWYgKCFtX2NyZWF0ZWRCeVBhcnNlcikKICAg
ICAgICAgU3R5bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudChkb2N1bWVudCgpLCB0aGlz
KTsKIH0KQEAgLTY5LDYgKzcwLDggQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bQogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsK
ICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworICAgIGlmIChkb2N1bWVu
dCgpLT5yZW5kZXJlcigpKQorICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVTdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZSh0aGlzKTsKICAgICBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
ZG9jdW1lbnQoKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24g
MzUxNjIpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdD
aGlsZAogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAg
ICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwotCisgICAgZG9jdW1lbnQoKS0+
YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUodGhpcywgbV9jcmVhdGVkQnlQYXJzZXIpOwogICAg
IGlmICghbV9jcmVhdGVkQnlQYXJzZXIpCiAgICAgICAgIFN0eWxlRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoZG9jdW1lbnQoKSwgdGhpcyk7CiB9CkBAIC0xMTEsNiArMTExLDggQEAgdm9p
ZCBTVkdTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZQogdm9pZCBTVkdTdHlsZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogewogICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZG9j
dW1lbnQoKS0+cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUodGhpcyk7CiAgICAgU3R5bGVF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KGRvY3VtZW50KCkpOwogfQogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9saW5rLW91dHNpZGUtaGVhZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2xpbmstb3V0c2lkZS1oZWFkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9saW5rLW91dHNpZGUtaGVhZC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorZGl2IHsgYmFja2dy
b3VuZC1jb2xvcjogcmVkOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHggfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorWW91IHNob3VsZCBzZWUgYSAxMDB4MTAwIGdyZWVuIHNxdWFyZSBi
ZWxvdy4gIElmIHlvdSBzZWUgYW55IHJlZCB0aGVuIHRoZSB0ZXN0IGhhcyBmYWlsZWQuCis8ZGl2
PjwvZGl2PgorPHNjcmlwdD4KK3ZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIp
Oworcy5zZXRBdHRyaWJ1dGUoInJlbCIsICJzdHlsZXNoZWV0Iik7CitzLnNldEF0dHJpYnV0ZSgi
aHJlZiIsICJyZXNvdXJjZXMvZ3JlZW4uY3NzIik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHMpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZS1vdXRzaWRlLWhlYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHlsZS1vdXRzaWRlLWhlYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlLW91dHNpZGUtaGVhZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorZGl2IHsgYmFja2dyb3VuZC1jb2xv
cjogcmVkOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHggfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorWW91IHNob3VsZCBzZWUgYSAxMDB4MTAwIGdyZWVuIHNxdWFyZSBiZWxvdy4gIElm
IHlvdSBzZWUgYW55IHJlZCB0aGVuIHRoZSB0ZXN0IGhhcyBmYWlsZWQuCis8ZGl2PjwvZGl2Pgor
PHNjcmlwdD4KK3ZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKK3ZhciB0
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImRpdiB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVu
IH0iKTsKK3MuYXBwZW5kQ2hpbGQodCk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
ZXNvdXJjZXMvZ3JlZW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jl
c291cmNlcy9ncmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
ZXNvdXJjZXMvZ3JlZW4uY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkaXYgeyBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbiB9Cg==
</data>
<flag name="review"
          id="9799"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>