<?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>16770</bug_id>
          
          <creation_ts>2008-01-07 07:28:34 -0800</creation_ts>
          <short_desc>Acid3 expects :visited styled links to restyle on iframe load</short_desc>
          <delta_ts>2008-02-24 22:15:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://acid3.acidtests.org/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>17064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>sullivan</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>66453</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-07 07:28:34 -0800</bug_when>
    <thetext>Acid3 expects :visited styled links to restyle on iframe load

I think we have a dupe of this bug somewhere.

    function () {
      // test 48: :link and :visited
      var iframe = document.getElementById(&quot;selectors&quot;);
      var number = (new Date()).valueOf();
      var a = document.createElement(&apos;a&apos;);
      a.appendChild(document.createTextNode(&apos;LINKTEST FAILED&apos;));
      a.setAttribute(&apos;id&apos;, &apos;linktest&apos;);
      a.setAttribute(&apos;class&apos;, &apos;pending&apos;);
      a.setAttribute(&apos;href&apos;, iframe.getAttribute(&apos;src&apos;) + &quot;?&quot; + number);
      document.getElementsByTagName(&apos;map&apos;)[0].appendChild(a);
      iframe.setAttribute(&quot;onload&quot;, &quot;document.getElementById(&apos;linktest&apos;).removeAttribute(&apos;class&apos;)&quot;);
      iframe.src = a.getAttribute(&quot;href&quot;);
      return 3;
    },</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69344</commentid>
    <comment_count>1</comment_count>
      <attachid>18906</attachid>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-02-04 06:21:47 -0800</bug_when>
    <thetext>Created attachment 18906
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70107</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-10 12:28:44 -0800</bug_when>
    <thetext>My plan is to make :visited styles update the moment a new URL is added to history. I&apos;ve been working on this, on and off, for a while. The tricky part is that :visited performance is a significant factor in the browsing speed. So I need to make it fast!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70370</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-12 01:52:50 -0800</bug_when>
    <thetext>I think this is actually just bug 17263.  Although I agree this bug would be great to fix too. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70372</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-02-12 02:09:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think this is actually just bug 17263.  Although I agree this bug would be
&gt; great to fix too. :)
&gt; 

Eric, not really. The bug describe problem with red text &quot;LINKTEST FAILED&quot;. With test 80 fired or not the red text is always visible. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71597</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-23 09:39:18 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; My plan is to make :visited styles update the moment a new URL is added to
&gt; history. I&apos;ve been working on this, on and off, for a while. The tricky part is
&gt; that :visited performance is a significant factor in the browsing speed. So I
&gt; need to make it fast!

Hyatt pointed out that this is a simpler case; not the general problem I mention above. I&apos;m investigating now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71617</commentid>
    <comment_count>6</comment_count>
      <attachid>19303</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-23 11:23:35 -0800</bug_when>
    <thetext>Created attachment 19303
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71618</commentid>
    <comment_count>7</comment_count>
      <attachid>19303</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-02-23 12:03:37 -0800</bug_when>
    <thetext>Comment on attachment 19303
patch

+        - remove separate client calls for &quot;standard&quot; and &quot;reload&apos; history

You have mismatched quotes around the word &quot;reload&quot; in your WebKit ChangeLogs.

-// FIXME: &lt;rdar://problem/4880065&gt; - Push Global History into WebCore
-// Once that task is complete, this will go away
-void WebFrameLoaderClient::updateGlobalHistoryForStandardLoad(const KURL&amp; url)
+void WebFrameLoaderClient::updateGlobalHistory(const KURL&amp; url)
 {
     NSURL *cocoaURL = url;
     WebHistoryItem *entry = [[WebHistory optionalSharedHistory] addItemForURL:cocoaURL];
-    String pageTitle = core(m_webFrame.get())-&gt;loader()-&gt;documentLoader()-&gt;title();
-    if (pageTitle.length())
+    const String&amp; pageTitle = core(m_webFrame.get())-&gt;loader()-&gt;documentLoader()-&gt;title();
+    if (!pageTitle.isEmpty())
         [entry setTitle:pageTitle];
 }
  
-// FIXME: &lt;rdar://problem/4880065&gt; - Push Global History into WebCore
-// Once that task is complete, this will go away
-void WebFrameLoaderClient::updateGlobalHistoryForReload(const KURL&amp; url)
-{
-    WebHistory *sharedHistory = [WebHistory optionalSharedHistory];
-    WebHistoryItem *item = [sharedHistory itemForURL:url];
-    if (item)
-        [sharedHistory setLastVisitedTimeInterval:[NSDate timeIntervalSinceReferenceDate] forItem:item];
-}

Is it OK that we&apos;re now doing more work than we used to in the reload case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71627</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-23 13:01:15 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Is it OK that we&apos;re now doing more work than we used to in the reload case?

It&apos;s definitely OK to do a bit more work. Reload isn&apos;t a particularly hot test case.

And in general, it&apos;s a bug that reload does anything different. If we want to optimize updating history for cases where the item is already in history, we can do that for both cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71698</commentid>
    <comment_count>9</comment_count>
      <attachid>19303</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-24 00:15:15 -0800</bug_when>
    <thetext>Comment on attachment 19303
patch

As noted on irc, you may want to null check m_frame-&gt;settings(), but as you noted, it may not be needed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71700</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-24 00:30:51 -0800</bug_when>
    <thetext>Committed revision 30549.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71815</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-02-24 19:39:02 -0800</bug_when>
    <thetext>I think this change has caused all ad-bearing iframes to clutter Safari&apos;s History menu when you open a page such as http://www.cnn.com/ or http://facebook.com/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71817</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-24 19:57:29 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I think this change has caused all ad-bearing iframes to clutter Safari&apos;s
&gt; History menu when you open a page such as http://www.cnn.com/ or
&gt; http://facebook.com/.

You&apos;re right.

We probably need a new bug report for that. I&apos;d be happy to tackle it right away once we figure out what behavior we want.

Do other browsers use a different list of links for the History menu and the &quot;visited&quot; link coloring? If so, we can easily add this sort of distinction to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71820</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-02-24 20:11:15 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; We probably need a new bug report for that.

Filed bug 17526.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71835</commentid>
    <comment_count>14</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-02-24 22:15:48 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt;
&gt; Do other browsers use a different list of links for the History menu and the
&gt; &quot;visited&quot; link coloring? If so, we can easily add this sort of distinction to
&gt; WebKit.
&gt; 

Opera does it. It uses global.dat file to store history items and vlink4.dat file to store visited link items. Check its documentation: http://www.opera.com/docs/operafiles/
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18906</attachid>
            <date>2008-02-04 06:21:47 -0800</date>
            <delta_ts>2008-02-04 06:21:47 -0800</delta_ts>
            <desc>test case</desc>
            <filename>test-case.html</filename>
            <type>text/html</type>
            <size>730</size>
            <attacher name="Robert Blaut">webkit</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KCTx0aXRsZT5U
ZXN0IGNhc2UgZm9yIGJ1ZyAxNjc3MDwvdGl0bGU+Cgk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJ
YSB7YmFja2dyb3VuZC1jb2xvcjogcmVkO30KCSNsaW5rdGVzdC5wZW5kaW5nLCAjbGlua3Rlc3Q6
dmlzaXRlZCB7ZGlzcGxheTpub25lOyB9CglpZnJhbWUgeyB2aXNpYmlsaXR5OmhpZGRlbjsgfQoJ
PC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPHA+VGhlcmUgc2hvdWxkIGJlIG5vIFJFRCBvbiB0aGlz
IHBhZ2U8L3A+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KdmFyIG51bWJlciA9IChu
ZXcgRGF0ZSgpKS52YWx1ZU9mKCk7CmRvY3VtZW50LndyaXRlKCI8cD48YSBpZD1cImxpbmt0ZXN0
XCIgY2xhc3M9XCJwZW5kaW5nXCIgaHJlZj1cImh0dHA6Ly93ZWJraXQub3JnLz8iICsgbnVtYmVy
ICsgIlwiPkxJTktURVNUIEZBSUxFRDwvYT48L3A+Iik7CmRvY3VtZW50LndyaXRlKCI8cD48aWZy
YW1lIG9ubG9hZD1cImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rdGVzdCcpLnJlbW92ZUF0
dHJpYnV0ZSgnY2xhc3MnKVwiIHNyYz1cImh0dHA6Ly93ZWJraXQub3JnLz8iICsgbnVtYmVyICsg
IlwiPjwvaWZyYW1lPjxwPiIpOwoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19303</attachid>
            <date>2008-02-23 11:23:35 -0800</date>
            <delta_ts>2008-02-24 00:15:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>VisitedLinkPatch.txt</filename>
            <type>text/plain</type>
            <size>25633</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDgtMDItMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzcwCisgICAgICAgICAg
QWNpZDMgZXhwZWN0cyA6dmlzaXRlZCBzdHlsZWQgbGlua3MgdG8gcmVzdHlsZSBvbiBpZnJhbWUg
bG9hZAorCisgICAgICAgIERpc2VudGFuZ2xlIGdsb2JhbCBoaXN0b3J5IHVwZGF0aW5nIGZyb20g
dGhlIGJhY2svZm9yd2FyZCBoaXN0b3J5LgorICAgICAgICBUaGVyZSBhcmUgbWFueSBjYXNlcyB3
aGVyZSB3ZSBkb24ndCB3YW50IHRvIGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQKKyAgICAgICAg
aXRlbSwgYnV0IHdlIGRvIHN0aWxsIHdhbnQgdG8gYWRkIHRvIHRoZSBnbG9iYWwgaGlzdG9yeSAo
dXNlZCBmb3IgdmlzaXRlZAorICAgICAgICBsaW5rIGNvbG9yaW5nKSBpbiB0aG9zZSBjYXNlcy4K
KworICAgICAgICBUZXN0OiBmYXN0L2hpc3Rvcnkvc3ViZnJhbWUtaXMtdmlzaXRlZC5odG1sCisK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgYWRk
SGlzdG9yeUZvckN1cnJlbnRMb2NhdGlvbiBhbmQgcmVtb3ZlZCB0aGUgYmFjay9mb3J3YXJkIGhh
bmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JT
dGFuZGFyZExvYWQpOiBTdHJlYW1saW5lZCBsb2dpYyBhCisgICAgICAgIGJpdC4gUmVwbGFjZWQg
Y2FsbCB0byBhZGRIaXN0b3J5Rm9yQ3VycmVudExvY2F0aW9uIHdpdGggYSBjYWxsIHRvCisgICAg
ICAgIGFkZEJhY2tGb3J3YXJkSXRlbUNsaXBwZWRBdFRhcmdldC4gQWRkZWQgYW4gdW5jb25kaXRp
b25hbCBjYWxsIHRvCisgICAgICAgIHVwZGF0ZUdsb2JhbEhpc3RvcnkuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZvckNsaWVudFJlZGlyZWN0KTogQWRkZWQg
YSBGSVhNRTsKKyAgICAgICAgd2h5IGRvZXNuJ3QgdGhpcyBmdW5jdGlvbiB1cGRhdGUgZ2xvYmFs
IGhpc3Rvcnk/CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZv
ckJhY2tGb3J3YXJkTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JSZWxvYWQpOiBSZXBsYWNlZCB0aGUgZGlyZWN0IGNhbGwK
KyAgICAgICAgdGhlIGNsaWVudCB3aXRoIGEgY2FsbCB0byB0aGUgbmV3IHVwZGF0ZUdsb2JhbEhp
c3RvcnkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlSGlz
dG9yeUZvclJlZGlyZWN0V2l0aExvY2tlZEhpc3RvcnkpOiBEaWQKKyAgICAgICAgdGhlIHNhbWUg
Y2hhbmdlcyBhcyBmb3IgdXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZC4KKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDogTW9yZSBvZiB0aGUgc2FtZS4KKworICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOiBSZW1vdmVkIHVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxv
YWQgYW5kCisgICAgICAgIHJlbmFtZWQgdXBkYXRlR2xvYmFsSGlzdG9yeUZvclN0YW5kYXJkTG9h
ZCB0byB1cGRhdGVHbG9iYWxIaXN0b3J5LgorCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KTogVXBkYXRlZCB0bworICAgICAgICBtYXRjaCB0
aGUgYWJvdmUuCisKIDIwMDgtMDItMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQbGVhc2UgY2xhcmlmeSBsaWNlbnNpbmcgZm9yIHNvbWUgZmlsZXMKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDMwNTIwKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjIzLDQwICs0MjIzLDM4IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OmNoaWxkRnJhbWVzTWF0Y2hJdGVtKEgKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6YWRkSGlzdG9yeUZvckN1cnJlbnRMb2NhdGlvbigp
Cit2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIHsKLSAgICBpZiAoIW1f
ZnJhbWUtPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgewotICAgICAgICAv
LyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ4ODAwNjU+IC0gVGhpcyB3aWxsIGJlIGEgaG9vayBp
bnRvIHRoZSBXZWJDb3JlIGdsb2JhbCBoaXN0b3J5LCBhbmQgdGhpcyBsb2FkZXIvY2xpZW50IGNh
bGwgd2lsbCBiZSByZW1vdmVkCi0gICAgICAgIG1fY2xpZW50LT51cGRhdGVHbG9iYWxIaXN0b3J5
Rm9yU3RhbmRhcmRMb2FkKGRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKSk7Ci0gICAg
fQotICAgIGFkZEJhY2tGb3J3YXJkSXRlbUNsaXBwZWRBdFRhcmdldCh0cnVlKTsKKyAgICBpZiAo
bV9mcmFtZS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgY29uc3QgS1VSTCYgdXJsID0gZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlz
dG9yeSgpOworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9j
bGllbnQtPnVwZGF0ZUdsb2JhbEhpc3RvcnkodXJsKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6
dXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZCgpCiB7CiAgICAgTE9HKEhpc3RvcnksICJXZWJD
b3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgU3RhbmRhcmQgTG9hZCBpbiBmcmFtZSAl
cyIsIGRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAKLSAgICBib29sIGZyYW1lTmF2aWdhdGlvbk9uTG9hZCA9IGZhbHNlOwotICAgIAotICAgIC8v
IGlmIHRoZSBuYXZpZ2F0aW9uIG9jY3VyZWQgZHVyaW5nIG9uIGxvYWQgYW5kIHRoaXMgaXMgYSBz
dWJmcmFtZQotICAgIC8vIHVwZGF0ZSB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gcmF0aGVyIHRo
YW4gYWRkaW5nIGEgbmV3IG9uZQotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81MzMzNDk2PgorICAg
IC8vIElmIHRoZSBuYXZpZ2F0aW9uIG9jY3VyZWQgZHVyaW5nIGxvYWQgYW5kIHRoaXMgaXMgYSBz
dWJmcmFtZSwgdXBkYXRlIHRoZSBjdXJyZW50CisgICAgLy8gaGlzdG9yeSBpdGVtIHJhdGhlciB0
aGFuIGFkZGluZyBhIG5ldyBvbmUuIDxyZGFyOi8vcHJvYmxlbS81MzMzNDk2PgorICAgIGJvb2wg
ZnJhbWVOYXZpZ2F0aW9uRHVyaW5nTG9hZCA9IGZhbHNlOwogICAgIGlmIChtX25hdmlnYXRpb25E
dXJpbmdMb2FkKSB7CiAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBtX2Zy
YW1lLT5vd25lckVsZW1lbnQoKTsKLSAgICAgICAgZnJhbWVOYXZpZ2F0aW9uT25Mb2FkID0gb3du
ZXIgJiYgIW93bmVyLT5jcmVhdGVkQnlQYXJzZXIoKTsKKyAgICAgICAgZnJhbWVOYXZpZ2F0aW9u
RHVyaW5nTG9hZCA9IG93bmVyICYmICFvd25lci0+Y3JlYXRlZEJ5UGFyc2VyKCk7CisgICAgICAg
IG1fbmF2aWdhdGlvbkR1cmluZ0xvYWQgPSBmYWxzZTsKICAgICB9Ci0gICAgCi0gICAgaWYgKCFm
cmFtZU5hdmlnYXRpb25PbkxvYWQgJiYgIWRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJl
Y3QoKSkgeworCisgICAgaWYgKCFmcmFtZU5hdmlnYXRpb25EdXJpbmdMb2FkICYmICFkb2N1bWVu
dExvYWRlcigpLT5pc0NsaWVudFJlZGlyZWN0KCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudExv
YWRlcigpLT51cmxGb3JIaXN0b3J5KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkSGlzdG9y
eUZvckN1cnJlbnRMb2NhdGlvbigpOworICAgICAgICAgICAgYWRkQmFja0ZvcndhcmRJdGVtQ2xp
cHBlZEF0VGFyZ2V0KHRydWUpOwogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+dW5y
ZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYgbV9jdXJyZW50SGlzdG9yeUl0ZW0pIHsKICAgICAg
ICAgbV9jdXJyZW50SGlzdG9yeUl0ZW0tPnNldFVSTChkb2N1bWVudExvYWRlcigpLT51cmwoKSk7
CiAgICAgICAgIG1fY3VycmVudEhpc3RvcnlJdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRv
Y3VtZW50TG9hZGVyKCktPnJlcXVlc3QoKSk7CiAgICAgfQotICAgIAotICAgIC8vIHJlc2V0IG5h
dmlnYXRpb24gZHVyaW5nIG9uIGxvYWQgc2luY2Ugd2Ugbm8gbG9uZ2VyCi0gICAgLy8gbmVlZCBp
dCBwYXN0IHRoc2kgcG9pbnQKLSAgICBtX25hdmlnYXRpb25EdXJpbmdMb2FkID0gZmFsc2U7CisK
KyAgICB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0
ZUhpc3RvcnlGb3JDbGllbnRSZWRpcmVjdCgpCkBAIC00MjcyLDYgKzQyNzAsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp1cGRhdGVIaXN0b3J5Rm9yQ2xpZW50CiAgICAgICAgIG1fY3VycmVudEhpc3Rv
cnlJdGVtLT5jbGVhckRvY3VtZW50U3RhdGUoKTsKICAgICAgICAgbV9jdXJyZW50SGlzdG9yeUl0
ZW0tPmNsZWFyU2Nyb2xsUG9pbnQoKTsKICAgICB9CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IGNhbGwgdXBkYXRlR2xvYmFsSGlzdG9yeSBoZXJlPwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVIaXN0b3J5Rm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKCkKQEAgLTQyODMsNiArNDI4Myw4
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JCYWNrRm8KIAogICAgIC8vIE11
c3QgZ3JhYiB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gYmVmb3JlIGRpc3R1cmJpbmcgaXQK
ICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0hpc3Rv
cnlJdGVtLmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2FsbCB1cGRhdGVHbG9i
YWxIaXN0b3J5IGhlcmU/CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JS
ZWxvYWQoKQpAQCAtNDMwMyw5ICs0MzA1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlSGlz
dG9yeUZvclJlbG9hZAogICAgICAgICAgICAgbV9jdXJyZW50SGlzdG9yeUl0ZW0tPnNldFVSTChk
b2N1bWVudExvYWRlcigpLT5yZXF1ZXN0VVJMKCkpOwogICAgIH0KICAgICAKLSAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzQ4ODAwNjU+IC0gVGhpcyB3aWxsIGJlIGEgaG9vayBpbnRvIHRo
ZSBXZWJDb3JlIGdsb2JhbCBoaXN0b3J5LCBhbmQgdGhpcyBsb2FkZXIvY2xpZW50IGNhbGwgd2ls
bCBiZSByZW1vdmVkCi0gICAgLy8gVXBkYXRlIHRoZSBsYXN0IHZpc2l0ZWQgdGltZS4gTW9zdGx5
IGludGVyZXN0aW5nIGZvciBVUkwgYXV0b2NvbXBsZXRpb24gc3RhdGlzdGljcy4KLSAgICBtX2Ns
aWVudC0+dXBkYXRlR2xvYmFsSGlzdG9yeUZvclJlbG9hZChkb2N1bWVudExvYWRlcigpLT5vcmln
aW5hbFVSTCgpKTsKKyAgICB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JSZWRpcmVjdFdpdGhMb2NrZWRIaXN0b3J5KCkKQEAgLTQz
MTcsNyArNDMxNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JSZWRpcmUK
ICAgICAKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAg
ICAgICAgIGlmICghbV9jdXJyZW50SGlzdG9yeUl0ZW0gJiYgIW1fZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCkpCi0gICAgICAgICAgICBhZGRIaXN0b3J5Rm9yQ3VycmVudExvY2F0aW9uKCk7CisgICAg
ICAgICAgICBhZGRCYWNrRm9yd2FyZEl0ZW1DbGlwcGVkQXRUYXJnZXQodHJ1ZSk7CiAgICAgICAg
IGlmIChtX2N1cnJlbnRIaXN0b3J5SXRlbSkgewogICAgICAgICAgICAgbV9jdXJyZW50SGlzdG9y
eUl0ZW0tPnNldFVSTChkb2N1bWVudExvYWRlcigpLT51cmwoKSk7CiAgICAgICAgICAgICBtX2N1
cnJlbnRIaXN0b3J5SXRlbS0+c2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExvYWRlcigp
LT5yZXF1ZXN0KCkpOwpAQCAtNDMyNyw2ICs0MzI3LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBk
YXRlSGlzdG9yeUZvclJlZGlyZQogICAgICAgICBpZiAocGFyZW50RnJhbWUgJiYgcGFyZW50RnJh
bWUtPmxvYWRlcigpLT5tX2N1cnJlbnRIaXN0b3J5SXRlbSkKICAgICAgICAgICAgIHBhcmVudEZy
YW1lLT5sb2FkZXIoKS0+bV9jdXJyZW50SGlzdG9yeUl0ZW0tPmFkZENoaWxkSXRlbShjcmVhdGVI
aXN0b3J5SXRlbSh0cnVlKSk7CiAgICAgfQorCisgICAgdXBkYXRlR2xvYmFsSGlzdG9yeSgpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCkKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMzA1MjApCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDksNyArNDQ5LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiwgSGlzdG9y
eUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKICAgICAgICAgYm9vbCBjaGlsZEZyYW1lc01hdGNoSXRl
bShIaXN0b3J5SXRlbSopIGNvbnN0OwogCi0gICAgICAgIHZvaWQgYWRkSGlzdG9yeUZvckN1cnJl
bnRMb2NhdGlvbigpOwogICAgICAgICB2b2lkIHVwZGF0ZUhpc3RvcnlGb3JCYWNrRm9yd2FyZE5h
dmlnYXRpb24oKTsKICAgICAgICAgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yUmVsb2FkKCk7CiAgICAg
ICAgIHZvaWQgdXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZCgpOwpAQCAtNDU3LDYgKzQ1Niw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yQ2xp
ZW50UmVkaXJlY3QoKTsKICAgICAgICAgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCk7CiAg
ICAgCisgICAgICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpOworCiAgICAgICAgIHZvaWQg
cmVkaXJlY3Rpb25UaW1lckZpcmVkKFRpbWVyPEZyYW1lTG9hZGVyPiopOwogICAgICAgICB2b2lk
IGNoZWNrQ29tcGxldGVkVGltZXJGaXJlZChUaW1lcjxGcmFtZUxvYWRlcj4qKTsKICAgICAgICAg
dm9pZCBjaGVja0xvYWRDb21wbGV0ZVRpbWVyRmlyZWQoVGltZXI8RnJhbWVMb2FkZXI+Kik7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDMwNTIwKQorKysgV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDgg
KzE1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGZp
bmFsU2V0dXBGb3JSZXBsYWNlKERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgICAgICAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JTdGFuZGFyZExvYWQoY29uc3Qg
S1VSTCYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JS
ZWxvYWQoY29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnkoY29uc3QgS1VSTCYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEdv
VG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFs
IFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAw
OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VFbXB0eUNsaWVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUVtcHR5Q2xpZW50cy5oCShy
ZXZpc2lvbiAzMDUyMCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRW1wdHlDbGll
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw4ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRQYWdlKENhY2hlZFBhZ2Uq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgp
IHsgfSAgICAKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yU3RhbmRh
cmRMb2FkKGNvbnN0IEtVUkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlz
dG9yeUZvclJlbG9hZChjb25zdCBLVVJMJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnkoY29uc3QgS1VSTCYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1Rv
SGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKikgeyB9CiAgICAgdmly
dHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwko
cmV2aXNpb24gMzA1MjEpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDA4LTAyLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHJl
bW92ZSBzZXBhcmF0ZSBjbGllbnQgY2FsbHMgZm9yICJzdGFuZGFyZCIgYW5kICJyZWxvYWQnIGhp
c3RvcnkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3Rv
cnkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisK
IDIwMDgtMDItMTggIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAzMDUyMCkKKysrIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NjYsMTIgKzc2Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnN0YXJ0RG93bmxv
YWQoY28KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKGNvbnN0IEtVUkwmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUds
b2JhbEhpc3RvcnlGb3JSZWxvYWQoY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KGNvbnN0IEtVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCShyZXZpc2lvbiAzMDUyMCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDggKzEzMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5h
bFNldHVwRm9yUmVwbGFjZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JS
ZWxvYWQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
R2xvYmFsSGlzdG9yeShjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAog
ICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzA1MjEpCisr
KyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDA4LTAyLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHJlbW92ZSBzZXBhcmF0ZSBjbGll
bnQgY2FsbHMgZm9yICJzdGFuZGFyZCIgYW5kICJyZWxvYWQnIGhpc3RvcnkKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisKIDIwMDgtMDItMjMgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGVhc2UgY2xhcmlmeSBsaWNlbnNp
bmcgZm9yIHNvbWUgZmlsZXMKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDMwNTIwKQorKysgV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsOCArMTQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwogICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZmluYWxTZXR1cEZvclJlcGxhY2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUZvclN0YW5kYXJkTG9hZChjb25z
dCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlG
b3JSZWxvYWQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDMwNTIwKQorKysgV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzEzLDI3ICs3MTMsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluYWxT
ZXR1cEZvcgogICAgIFtkYXRhU291cmNlKGxvYWRlcikgX2NsZWFyVW5hcmNoaXZpbmdTdGF0ZV07
CiB9CiAKLS8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNDg4MDA2NT4gLSBQdXNoIEdsb2JhbCBI
aXN0b3J5IGludG8gV2ViQ29yZQotLy8gT25jZSB0aGF0IHRhc2sgaXMgY29tcGxldGUsIHRoaXMg
d2lsbCBnbyBhd2F5Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0
b3J5Rm9yU3RhbmRhcmRMb2FkKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoY29uc3QgS1VSTCYgdXJsKQogewogICAgIE5TVVJM
ICpjb2NvYVVSTCA9IHVybDsKICAgICBXZWJIaXN0b3J5SXRlbSAqZW50cnkgPSBbW1dlYkhpc3Rv
cnkgb3B0aW9uYWxTaGFyZWRIaXN0b3J5XSBhZGRJdGVtRm9yVVJMOmNvY29hVVJMXTsKLSAgICBT
dHJpbmcgcGFnZVRpdGxlID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnRpdGxlKCk7Ci0gICAgaWYgKHBhZ2VUaXRsZS5sZW5ndGgoKSkKKyAgICBj
b25zdCBTdHJpbmcmIHBhZ2VUaXRsZSA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpOworICAgIGlmICghcGFnZVRpdGxlLmlzRW1wdHko
KSkKICAgICAgICAgW2VudHJ5IHNldFRpdGxlOnBhZ2VUaXRsZV07CiB9CiAgCi0vLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzQ4ODAwNjU+IC0gUHVzaCBHbG9iYWwgSGlzdG9yeSBpbnRvIFdlYkNv
cmUKLS8vIE9uY2UgdGhhdCB0YXNrIGlzIGNvbXBsZXRlLCB0aGlzIHdpbGwgZ28gYXdheQotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUZvclJlbG9hZChjb25z
dCBLVVJMJiB1cmwpCi17Ci0gICAgV2ViSGlzdG9yeSAqc2hhcmVkSGlzdG9yeSA9IFtXZWJIaXN0
b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV07Ci0gICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBb
c2hhcmVkSGlzdG9yeSBpdGVtRm9yVVJMOnVybF07Ci0gICAgaWYgKGl0ZW0pCi0gICAgICAgIFtz
aGFyZWRIaXN0b3J5IHNldExhc3RWaXNpdGVkVGltZUludGVydmFsOltOU0RhdGUgdGltZUludGVy
dmFsU2luY2VSZWZlcmVuY2VEYXRlXSBmb3JJdGVtOml0ZW1dOwotfQotCiBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNv
bnN0CiB7CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7
CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDMwNTIxKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTAyLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIHJlbW92ZSBzZXBhcmF0ZSBjbGllbnQgY2FsbHMgZm9yICJzdGFuZGFyZCIgYW5kICJyZWxv
YWQnIGhpc3RvcnkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xv
YmFsSGlzdG9yeSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oOgorCiAyMDA4LTAyLTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRml4IFF0IGJ1aWxkLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gMzA1MjApCisrKyBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
OSwxOCArNTk5LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cmVnaXN0ZXJGb3JJY28K
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVw
ZGF0ZUdsb2JhbEhpc3RvcnlGb3JTdGFuZGFyZExvYWQoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJs
KQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KGNvbnN0IFdl
YkNvcmU6OktVUkwmIHVybCkKIHsKICAgICBRV2ViSGlzdG9yeUludGVyZmFjZSAqaGlzdG9yeSA9
IFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7CiAgICAgaWYgKGhpc3Rv
cnkpCiAgICAgICAgIGhpc3RvcnktPmFkZEhpc3RvcnlFbnRyeSh1cmwucHJldHR5VVJMKCkpOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxv
YWQoY29uc3QgV2ViQ29yZTo6S1VSTCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQog
Ym9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0gKml0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKGl0ZW0pIHsKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24g
MzA1MjApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsOCArMTU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZFBhZ2Uo
V2ViQ29yZTo6Q2FjaGVkUGFnZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSgpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnlGb3JTdGFuZGFyZExvYWQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUZvclJlbG9hZChjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9I
aXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMzA1
MjEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDA4LTAyLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHJlbW92ZSBzZXBhcmF0
ZSBjbGllbnQgY2FsbHMgZm9yICJzdGFuZGFyZCIgYW5kICJyZWxvYWQnIGhpc3RvcnkKKworICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjp1cGRhdGVHbG9iYWxIaXN0
b3J5KToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDA4LTAyLTIyICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIGhhc1dlYlZpZXcgdG8gV2ViRnJhbWVM
b2FkZXJDbGllbnQKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzMDUyMCkKKysrIFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk0LDQyICsxNTk0LDE1IEBAIHZvaWQg
V2ViRnJhbWU6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck4KICAgICAgICAgZnJhbWUtPnZpZXco
KS0+c2V0U2Nyb2xsYmFyc01vZGUob3duZXItPnNjcm9sbGluZ01vZGUoKSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWU6OnVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JTdGFuZGFyZExvYWQoY29uc3QgS1VSTCYg
dXJsKQordm9pZCBXZWJGcmFtZTo6dXBkYXRlR2xvYmFsSGlzdG9yeShjb25zdCBLVVJMJiB1cmwp
CiB7CiAgICAgQ09NUHRyPFdlYkhpc3Rvcnk+IGhpc3Rvcnk7CiAgICAgaGlzdG9yeS5hZG9wdFJl
Zih3ZWJIaXN0b3J5KCkpOwotCiAgICAgaWYgKCFoaXN0b3J5KQogICAgICAgICByZXR1cm47Ci0K
ICAgICBoaXN0b3J5LT5hZGRJdGVtRm9yVVJMKEJTdHJpbmcodXJsLnN0cmluZygpKSwgMCk7ICAg
ICAgICAgICAgICAgICAKIH0KIAotdm9pZCBXZWJGcmFtZTo6dXBkYXRlR2xvYmFsSGlzdG9yeUZv
clJlbG9hZChjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgQlN0cmluZyB1cmxCU3RyKHVybC5zdHJp
bmcoKSk7Ci0KLSAgICBDT01QdHI8V2ViSGlzdG9yeT4gaGlzdG9yeTsKLSAgICBoaXN0b3J5LmFk
b3B0UmVmKHdlYkhpc3RvcnkoKSk7Ci0KLSAgICBpZiAoIWhpc3RvcnkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYgKFNVQ0NFRURF
RChoaXN0b3J5LT5pdGVtRm9yVVJMKHVybEJTdHIsICZpdGVtKSkpIHsKLSAgICAgICAgQ09NUHRy
PElXZWJIaXN0b3J5SXRlbVByaXZhdGU+IGl0ZW1Qcml2YXRlOwotICAgICAgICBpZiAoU1VDQ0VF
REVEKGl0ZW0tPlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLCAodm9p
ZCoqKSZpdGVtUHJpdmF0ZSkpKSB7Ci0gICAgICAgICAgICBTWVNURU1USU1FIGN1cnJlbnRUaW1l
OwotICAgICAgICAgICAgR2V0U3lzdGVtVGltZSgmY3VycmVudFRpbWUpOwotICAgICAgICAgICAg
REFURSB2aXNpdGVkVGltZSA9IDA7Ci0gICAgICAgICAgICBTeXN0ZW1UaW1lVG9WYXJpYW50VGlt
ZSgmY3VycmVudFRpbWUsICZ2aXNpdGVkVGltZSk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FIC0g
YnVtcGluZyB0aGUgbGFzdCB2aXNpdGVkIHRpbWUgZG9lc24ndCBtYXJrIHRoZSBoaXN0b3J5IGFz
IGNoYW5nZWQKLSAgICAgICAgICAgIGl0ZW1Qcml2YXRlLT5zZXRMYXN0VmlzaXRlZFRpbWVJbnRl
cnZhbCh2aXNpdGVkVGltZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIGJvb2wgV2ViRnJhbWU6
OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiAzMDUyMCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDggKzI3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkUGFnZShXZWJDb3JlOjpDYWNoZWRQYWdlKik7
CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRQYWdlKFdl
YkNvcmU6OkNhY2hlZFBhZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5Rm9y
U3RhbmRhcmRMb2FkKGNvbnN0IFdlYkNvcmU6OktVUkwgJik7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxvYWQoY29uc3QgV2ViQ29yZTo6S1VSTCAmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeShjb25zdCBXZWJDb3JlOjpLVVJMICYpOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0
ZW0gKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0gKik7CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSh2b2lkKSBj
b25zdDsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4
L0NoYW5nZUxvZwkocmV2aXNpb24gMzA1MjEpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMDItMjMgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gcmVtb3ZlIHNlcGFyYXRlIGNsaWVudCBjYWxscyBmb3IgInN0YW5kYXJkIiBhbmQg
InJlbG9hZCcgaGlzdG9yeQorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnVwZGF0
ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oOgorCiAyMDA4LTAyLTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICAqIFdlYlZpZXcuY3BwOiBSZW1vdmVkIHVzZSBvZiBEZXByZWNhdGVkU3RyaW5nIHRv
IGtlZXAgdGhpcyBjb21waWxpbmcuCkluZGV4OiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkocmV2aXNpb24gMzA1MjApCisrKyBXZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgxLDEyICs1ODEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnBhcnRDbGVhcmVkSW5C
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKGNvbnN0IFdlYkNvcmU6OktVUkwmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6
dXBkYXRlR2xvYmFsSGlzdG9yeUZvclJlbG9hZChjb25zdCBXZWJDb3JlOjpLVVJMJikKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXeDo6dXBkYXRlR2xvYmFsSGlzdG9yeShjb25zdCBXZWJDb3JlOjpL
VVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNpb24gMzA1MjApCisrKyBX
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Niw4ICsxNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkUGFnZShXZWJDb3JlOjpDYWNo
ZWRQYWdlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKCk7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlz
dG9yeUZvclN0YW5kYXJkTG9hZChjb25zdCBLVVJMJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5Rm9yUmVsb2FkKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoY29uc3QgS1VSTCYpOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9y
eUl0ZW0qKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzA1MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wMi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSB0ZXN0IGZvciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc3
MAorICAgICAgICAgIEFjaWQzIGV4cGVjdHMgOnZpc2l0ZWQgc3R5bGVkIGxpbmtzIHRvIHJlc3R5
bGUgb24gaWZyYW1lIGxvYWQKKworICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvc3Vi
ZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3N1YmZyYW1lLWlzLXZp
c2l0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc3ViZnJh
bWUtaXMtdmlzaXRlZC5odG1sOiBBZGRlZC4KKwogMjAwOC0wMi0yMyAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIC0gdW5kbyBhbiBhY2NpZGVudGFsIGNoYW5nZSB0
byBhIHRlc3QncyBleHBlY3RlZCByZXN1bHRzIGZyb20gcjMwNDMxLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3N1YmZyYW1lLWlzLXZpc2l0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zdWJmcmFtZS1pcy12aXNpdGVkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zdWJmcmFt
ZS1pcy12aXNpdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitU
aGVyZSBzaG91bGQgYmUgbm8gcmVkIGxpbmsgZGlzcGxheWVkIGJlbG93LgorCitTdWJmcmFtZSBs
b2FkZWQ7IHRlc3Qgd2FzIGFibGUgdG8gcnVuLgorCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zdWJmcmFtZS1pcy12aXNpdGVkLWV4cGVjdGVkLnR4dApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc3ViZnJhbWUtaXMtdmlzaXRlZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zdWJmcmFtZS1pcy12aXNpdGVkLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc3ViZnJhbWUtaXMtdmlzaXRlZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9z
dHJpY3QuZHRkIj4KKzxodG1sPgorPGhlYWQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cith
IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisucGVuZGluZyB7IGRpc3BsYXk6IG5vbmU7IH0K
KyNsaW5rOnZpc2l0ZWQgeyBkaXNwbGF5OiBub25lOyB9CitpZnJhbWUgeyB2aXNpYmlsaXR5OiBo
aWRkZW47IH0KKzwvc3R5bGU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICB9CisKKyAgICB2YXIgc3ViZnJhbWVMb2Nh
dGlvbiA9ICJyZXNvdXJjZXMvc3ViZnJhbWUuaHRtbD8iICsgKG5ldyBEYXRlKCkpLnZhbHVlT2Yo
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rJykuc2V0QXR0cmlidXRlKCJo
cmVmIiwgc3ViZnJhbWVMb2NhdGlvbik7CisKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBzdWJm
cmFtZUxvY2F0aW9uKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsIHN1YmZyYW1lTG9j
YXRpb24pOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgImZyYW1lTG9hZGVkKCki
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWVIb2xkZXIiKS5hcHBlbmRDaGls
ZChmcmFtZSk7Cit9CisKK2Z1bmN0aW9uIGZyYW1lTG9hZGVkKCkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbGluaycpLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTsKKworICAgIGdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsnKSk7CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9hZGVkTWVzc2FnZScpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJTdWJmcmFtZSBsb2FkZWQ7IHRlc3Qgd2FzIGFibGUgdG8gcnVu
LiIpKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+CisKKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoZXJlIHNob3VsZCBiZSBubyByZWQgbGlu
ayBkaXNwbGF5ZWQgYmVsb3cuPC9wPgorPHAgaWQ9ImxvYWRlZE1lc3NhZ2UiPjwvcD4KKzxwPjxh
IGlkPSJsaW5rIiBjbGFzcz0icGVuZGluZyI+SWYgeW91IGNhbiBzZWUgdGhpcyBsaW5rLCB0aGUg
dGVzdCBmYWlsZWQuPC9hPjwvcD4KKzxwIGlkPSJmcmFtZUhvbGRlciI+PC9wPgorPC9ib2R5Pgor
PC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3N1
YmZyYW1lLWlzLXZpc2l0ZWQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAg
KyB0ZXh0L2h0bWwKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1lLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1lLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3Ry
aWN0LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0
bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3Vy
Y2VzL3N1YmZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4
dC9odG1sCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCg==
</data>
<flag name="review"
          id="8433"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>