<?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>112288</bug_id>
          
          <creation_ts>2013-03-13 13:51:18 -0700</creation_ts>
          <short_desc>Allow blocking of application cache in third-party contexts</short_desc>
          <delta_ts>2013-03-18 13:48:23 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854594</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-13 13:51:18 -0700</bug_when>
    <thetext>Add a method for allowing blocking of the application cache in third-party contexts, similar what was added for localStorage.

&lt;rdar://problem/13287586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854705</commentid>
    <comment_count>1</comment_count>
      <attachid>193007</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-13 15:24:34 -0700</bug_when>
    <thetext>Created attachment 193007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854795</commentid>
    <comment_count>2</comment_count>
      <attachid>193007</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 16:59:52 -0700</bug_when>
    <thetext>Comment on attachment 193007
Patch

Attachment 193007 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17118175

New failing tests:
http/tests/security/cross-origin-appcache.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854836</commentid>
    <comment_count>3</comment_count>
      <attachid>193007</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 18:11:54 -0700</bug_when>
    <thetext>Comment on attachment 193007
Patch

Attachment 193007 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17179115

New failing tests:
http/tests/security/cross-origin-appcache.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855394</commentid>
    <comment_count>4</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-14 12:07:51 -0700</bug_when>
    <thetext>Hmm, this patch makes it virtually impossible to test if the app cache is usable or not. This might not be the best approach, and probably explains why the layout test is failing. All it seems to do is not actually make the request and not raise any events. The applicationCache object is still accessible and still appears to expose everything, even if none of it actually works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855413</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-14 12:23:16 -0700</bug_when>
    <thetext>Diff from a chromium-linux run of these two tests:

--- /hd2/chrome/src/webkit/Debug/layout-test-results/http/tests/security/cross-origin-appcache-expected.txt
+++ /hd2/chrome/src/webkit/Debug/layout-test-results/http/tests/security/cross-origin-appcache-actual.txt
@@ -8,7 +8,7 @@
 --------
 Frame: &apos;&lt;!--framePath //&lt;!--frame0--&gt;--&gt;&apos;
 --------
-
+Cache found
 
 --------
 Frame: &apos;&lt;!--framePath //&lt;!--frame1--&gt;--&gt;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855501</commentid>
    <comment_count>6</comment_count>
      <attachid>193188</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-14 14:45:14 -0700</bug_when>
    <thetext>Created attachment 193188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856279</commentid>
    <comment_count>7</comment_count>
      <attachid>193188</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 14:15:40 -0700</bug_when>
    <thetext>Comment on attachment 193188
Patch

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

&gt; Source/WebCore/html/HTMLHtmlElement.cpp:74
&gt; +    if (document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(document()-&gt;topOrigin())) {

Does AppCache work at all in third-party iframes?  I thought AppCache was a per-Page thing.

&gt; Source/WebCore/html/HTMLHtmlElement.cpp:79
&gt; +        if (manifest.isEmpty())
&gt; +            documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithoutManifest();
&gt; +        else
&gt; +            documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithManifest(document()-&gt;completeURL(manifest));

Previously we called one of these two function (i.e., even if there wasn&apos;t a manifest attribute).  Now we have a mode where we call neither.  I&apos;m not sure that&apos;s correct.

&gt; Source/WebCore/page/DOMWindow.cpp:704
&gt; +    Document* document = this-&gt;document();
&gt; +    if (!document)
&gt; +        return 0;

This can never be 0 if isCurrentlyDisplayedInFrame is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856281</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 14:17:41 -0700</bug_when>
    <thetext>I wonder if it&apos;s more appropriate to check this permission in the same places we check frame-&gt;settings()-&gt;offlineWebApplicationCacheEnabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856283</commentid>
    <comment_count>9</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-15 14:19:03 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 193188 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193188&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLHtmlElement.cpp:74
&gt; &gt; +    if (document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(document()-&gt;topOrigin())) {
&gt; 
&gt; Does AppCache work at all in third-party iframes?  I thought AppCache was a per-Page thing.

It seems to work. Maybe that&apos;s a bug in the first place?
 
&gt; &gt; Source/WebCore/html/HTMLHtmlElement.cpp:79
&gt; &gt; +        if (manifest.isEmpty())
&gt; &gt; +            documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithoutManifest();
&gt; &gt; +        else
&gt; &gt; +            documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithManifest(document()-&gt;completeURL(manifest));
&gt; 
&gt; Previously we called one of these two function (i.e., even if there wasn&apos;t a manifest attribute).  Now we have a mode where we call neither.  I&apos;m not sure that&apos;s correct.

I&apos;m not intimately familiar with how this works. Given that I prevent access to the cache elsewhere, it might make sense to select the cache without the manifest. If you know someone who knows this portion of the code better, it might make sense for me to talk to them.

&gt; &gt; Source/WebCore/page/DOMWindow.cpp:704
&gt; &gt; +    Document* document = this-&gt;document();
&gt; &gt; +    if (!document)
&gt; &gt; +        return 0;
&gt; 
&gt; This can never be 0 if isCurrentlyDisplayedInFrame is true.

I saw this idiom elsewhere in the code, so I thought that might not be the case. It does make sense for that to be the case, though. I can revise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856285</commentid>
    <comment_count>10</comment_count>
      <attachid>193188</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 14:19:46 -0700</bug_when>
    <thetext>Comment on attachment 193188
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:707
&gt; +    if (!document-&gt;securityOrigin()-&gt;canAccessApplicationCache(document-&gt;topOrigin()))
&gt; +        return 0;

Also, I&apos;m not sure this line is correct.  &quot;applicationCache&quot; in window will return true but window.applicationCache will return null.  Instead, we should probably act as if the applicationCache feature doesn&apos;t exist, which means &quot;applicationCache&quot; in window should return false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856286</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 14:23:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 193188 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193188&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLHtmlElement.cpp:74
&gt; &gt; &gt; +    if (document()-&gt;securityOrigin()-&gt;canAccessApplicationCache(document()-&gt;topOrigin())) {
&gt; &gt; 
&gt; &gt; Does AppCache work at all in third-party iframes?  I thought AppCache was a per-Page thing.
&gt; 
&gt; It seems to work. Maybe that&apos;s a bug in the first place?

Oh, I could very well be wrong.  I&apos;m not an AppCache expert.

&gt; &gt; &gt; Source/WebCore/html/HTMLHtmlElement.cpp:79
&gt; &gt; &gt; +        if (manifest.isEmpty())
&gt; &gt; &gt; +            documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithoutManifest();
&gt; &gt; &gt; +        else
&gt; &gt; &gt; +            documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithManifest(document()-&gt;completeURL(manifest));
&gt; &gt; 
&gt; &gt; Previously we called one of these two function (i.e., even if there wasn&apos;t a manifest attribute).  Now we have a mode where we call neither.  I&apos;m not sure that&apos;s correct.
&gt; 
&gt; I&apos;m not intimately familiar with how this works. Given that I prevent access to the cache elsewhere, it might make sense to select the cache without the manifest. If you know someone who knows this portion of the code better, it might make sense for me to talk to them.

If you chase down selectCacheWithoutManifest, you&apos;ll see that it eventually checks frame-&gt;settings()-&gt;offlineWebApplicationCacheEnabled, which is probably where you want to do this check as well.

I didn&apos;t chase down selectCacheWithManifest, but I suspect it also checks offlineWebApplicationCacheEnabled.

It&apos;s generally better if we turn the feature off in one place instead of two different places.

&gt; &gt; &gt; Source/WebCore/page/DOMWindow.cpp:704
&gt; &gt; &gt; +    Document* document = this-&gt;document();
&gt; &gt; &gt; +    if (!document)
&gt; &gt; &gt; +        return 0;
&gt; &gt; 
&gt; &gt; This can never be 0 if isCurrentlyDisplayedInFrame is true.
&gt; 
&gt; I saw this idiom elsewhere in the code, so I thought that might not be the case. It does make sense for that to be the case, though. I can revise.

It&apos;s likely old.  That used to be possible, but it&apos;s no longer possible now that I&apos;ve rejiggered the ownership relationships between Frame, DOMWindow, and Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856426</commentid>
    <comment_count>12</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-15 17:26:19 -0700</bug_when>
    <thetext>After digging into this more, it appears that if the application cache is disabled, the DOM window.applicationCache object is still exposed. I&apos;m not sure if this is a bug, but it doesn&apos;t work when it&apos;s disabled anyway.

Tying the third-party blocking to whether it&apos;s enabled is not feasible considering the setting is accessed directly via a getter, so I need to add additional checks around where that getter is called, but that&apos;s relatively easy enough.

If we keep the applicationCache object exposed even when the application cache is blocked will make it somewhat difficult to detect if it&apos;s blocked, though, as it still tends to behave like it works, and that it just hasn&apos;t loaded anything yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856453</commentid>
    <comment_count>13</comment_count>
      <attachid>193409</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-15 18:08:16 -0700</bug_when>
    <thetext>Created attachment 193409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856776</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-17 16:54:51 -0700</bug_when>
    <thetext>&gt; If we keep the applicationCache object exposed even when the application cache is blocked will make it somewhat difficult to detect if it&apos;s blocked, though, as it still tends to behave like it works, and that it just hasn&apos;t loaded anything yet.

If that&apos;s an issue, we should solve that for the case when it&apos;s disabled by a WebCore::Setting too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857497</commentid>
    <comment_count>15</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2013-03-18 13:48:23 -0700</bug_when>
    <thetext>Committed r146115: &lt;http://trac.webkit.org/changeset/146115&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193007</attachid>
            <date>2013-03-13 15:24:34 -0700</date>
            <delta_ts>2013-03-15 18:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112288-20130313152031.patch</filename>
            <type>text/plain</type>
            <size>9949</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRjNDY0YTAyNzQ5OGY0
MjhjMjVmYWZlYTFmNGQ4YjVmNTljMWI0MS4uYjBiZmViOWJjY2Q3ZTUxMjgyODc0YTI5ODk4NDkw
NWQyMWE5Njk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAzLTEzICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
YXBwbGljYXRpb24gY2FjaGUgaW4gdGhpcmQtcGFydHkgY29udGV4dHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIGlmIHRoZSByZXF1ZXN0IFVS
TCBmb3IgdGhlIGRvY3VtZW50IGFjY2Vzc2luZyB0aGUgYXBwbGljYXRpb24KKyAgICAgICAgY2Fj
aGUgbWF0Y2hlcyB0aGUgdG9wIGxldmVsIG9yaWdpbi4KKworICAgICAgICBUZXN0czogaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtYWxsb3dlZC5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS5odG1sCisK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKToKKwogMjAxMy0wMy0xMiAgRWxsaW90
dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgVGV4dEl0
ZXJhdG9yLmNwcCdzIGlzQWxsQ29sbGFwc2libGVXaGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmlu
ZGV4IDQzYzgxNTVhZjIxNmZkMWFlYjc0ODQyNzMyMTM0MjZjYWFhYzRjZGIuLmIzMjc2NWZkMmM5
NTRkNGVlYmI0NDFhOGMyZmJmYmFmNzUyYTk5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xOTQs
NiArMTk0LDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3QKICAgICBpZiAoIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgcmVxdWVzdC51cmwoKSkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmICghZnJhbWUtPnRyZWUoKS0+dG9wKCktPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdC51cmwoKSkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIC8vIERvbid0IGNoYW5nZSBhbnl0aGluZyBvbiBkaXNrIGlm
IHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KICAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkt
PnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGZmM2IzMjAyNDQ4YTNlNjYzNWNiZmQ1
OGFmMGRiOTg3MTQ1Nzk3NjYuLjhiMDMwM2VlNTRhYjk1YTQxY2JkZTE4ZmRiNTZjY2EzYmQ5NGEz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE1MCw2ICsxNTAsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoY29uc3QgU2VjdXJpdHlP
cmlnaW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmln
aW4pOyB9OwogICAgIGJvb2wgY2FuQWNjZXNzU2hhcmVkV29ya2Vycyhjb25zdCBTZWN1cml0eU9y
aWdpbiogdG9wT3JpZ2luKSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdp
bik7IH0KICAgICBib29sIGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmln
aW4qIHRvcE9yaWdpbikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4p
OyB9CisgICAgYm9vbCBjYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwpIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShyZXF1ZXN0VVJMKS5nZXQoKSk7IH0KICAgICBib29sIGNhbkFjY2Vzc0Nvb2tpZXMoKSBj
b25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQogICAgIGJvb2wgY2FuQWNjZXNzUGFzc3dvcmRN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7IH0KICAgICBib29sIGNhbkFjY2Vz
c0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZiNWQy
ZDI0MjgzMTg5MmM4OTc1ZTViZTNlODQyYzYxYjFmZTJiNDQuLjBiZGZiMDYyODY4NTM3ODI5YjUy
ZDJkMTk2MDFkMjRjMDlkNTFiZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMy0xMyAg
SmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGJsb2NraW5n
IG9mIGFwcGxpY2F0aW9uIGNhY2hlIGluIHRoaXJkLXBhcnR5IGNvbnRleHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyODgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS1hbGxvd2Vk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LWFwcGNhY2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUt
YWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUt
YWxsb3dlZC5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLm1hbmlmZXN0OiBBZGRlZC4KKwogMjAxMy0w
My0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgb25l
IG1vcmUgdGVzdCBleHBlY3RhdGlvbiBwZXIgYnVnIDExMjE3Ni4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmln
aW4tYXBwY2FjaGUtYWxsb3dlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJkOTFiNDkzMDM2
Nzc3NDYzNTIyNjdmYzQ4ZmY4ZDRiYzliN2ZlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIGEgY2Fj
aGU6CisKKworVGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgYSBjYWNoZToKKworCisKKy0tLS0tLS0t
CitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0Nh
Y2hlIGZvdW5kCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUx
LS0+LS0+JworLS0tLS0tLS0KK0NhY2hlIGZvdW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS1hbGxvd2VkLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS1hbGxv
d2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVhNjNmZTkzOGFkOWY5NDBiYmJkZWE4Y2E1OWZkZDNhNzUx
NDgxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK3ZhciBmcmFtZXMgPSAyOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KK3dpbmRvdy5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlKSB7CisJLS1mcmFtZXM7CisJaWYgKGZyYW1lcyA8
PSAwICYmIHdpbmRvdy50ZXN0UnVubmVyKQorCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBh
IGNhY2hlOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLWFsbG93ZWQuaHRtbCI+
PC9pZnJhbWU+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBhIGNhY2hlOjwvcD4KKzxpZnJh
bWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9y
aWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLWFsbG93ZWQuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLW9yaWdpbi1hcHBjYWNoZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTJlMzY3M2UwYTEzZGMzYjQxNmY3MjNiOTE5ZWM4NGY0NzZmMGUyMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIGlmcmFtZSBzaG91bGQgbm90IGhh
dmUgYSBjYWNoZToKKworCitUaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBhIGNhY2hlOgorCisKKwor
LS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0t
LS0tLQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+
LS0+JworLS0tLS0tLS0KK0NhY2hlIGZvdW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lY2U5OTU5YzliMDMwNDU2N2Q1NDkwZWRjMWJmYzVmMDEzMjA4MDU3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2Fj
aGUuaHRtbApAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK3ZhciBm
cmFtZXMgPSAyOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKwl0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KCdCbG9ja1RoaXJkUGFydHknKTsKK30KK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihtZXNzYWdlKSB7CisJLS1mcmFtZXM7CisJaWYgKGZyYW1lcyA8PSAwICYmIHdpbmRvdy50ZXN0
UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
J0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IGhhdmUgYSBjYWNo
ZTo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS5odG1sIj48L2lmcmFtZT4KKzxw
PlRoaXMgaWZyYW1lIHNob3VsZCBoYXZlIGEgY2FjaGU6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1m
b3ItYXBwY2FjaGUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4t
aWZyYW1lLWZvci1hcHBjYWNoZS1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS1hbGxv
d2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4NmZhNmFmN2M4YmM1NTNhY2MxNWIxZGRmZGE0OTEzMTk4
MjEzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLWFsbG93ZWQuaHRtbApA
QCAtMCwwICsxLDIxIEBACis8aHRtbCBtYW5pZmVzdD0ibWFuaWZlc3QtZm9yLWFwcGNhY2hlLWFs
bG93ZWQubWFuaWZlc3QiPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gY29tcGxldGUoKSB7
CisJZG9jdW1lbnQud3JpdGUoJ0NhY2hlIGZvdW5kJyk7CisJY2xlYW51cCgpOworfQorCitmdW5j
dGlvbiBjbGVhbnVwKCkgeworCXRvcC5wb3N0TWVzc2FnZSgnZG9uZScsICcqJyk7Cit9CisKK3dp
bmRvdy5vbmxvYWQgPSBzZXRUaW1lb3V0KGNsZWFudXAsIDUwMDApOworYXBwbGljYXRpb25DYWNo
ZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIGNvbXBsZXRlLCBmYWxzZSk7CithcHBsaWNh
dGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGNvbXBsZXRlLCBmYWxzZSk7Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9ImFiZS5wbmciPgorPC9ib2R5Pgor
PC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFw
cGNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThmZWU2MmVmOTYyN2UwNGQwZGRlYjdiZWFiODU0NjIz
NmY2Njc3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLmh0bWwKQEAgLTAs
MCArMSwyMSBAQAorPGh0bWwgbWFuaWZlc3Q9Im1hbmlmZXN0LWZvci1hcHBjYWNoZS5tYW5pZmVz
dCI+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBjb21wbGV0ZSgpIHsKKwlkb2N1bWVudC53
cml0ZSgnQ2FjaGUgZm91bmQnKTsKKwljbGVhbnVwKCk7Cit9CisKK2Z1bmN0aW9uIGNsZWFudXAo
KSB7CisJdG9wLnBvc3RNZXNzYWdlKCdkb25lJywgJyonKTsKK30KKword2luZG93Lm9ubG9hZCA9
IHNldFRpbWVvdXQoY2xlYW51cCwgNTAwMCk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdXBkYXRlJywgY29tcGxldGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignY2FjaGVkJywgY29tcGxldGUsIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aW1nIHNyYz0iYWJlLnBuZyI+Cis8L2JvZHk+Cis8L2hlYWQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVz
dC1mb3ItYXBwY2FjaGUtYWxsb3dlZC5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvcmVzb3VyY2VzL21hbmlmZXN0LWZvci1hcHBjYWNoZS1hbGxvd2VkLm1hbmlmZXN0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRlNjgyMGY3MTY3OTdjZTU2NjA4Yzk2NTA5ZjFkMGJhZDY2ZmQwMzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNl
cy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUtYWxsb3dlZC5tYW5pZmVzdApAQCAtMCwwICsxLDIgQEAK
K0NBQ0hFIE1BTklGRVNUCithYmUucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUubWFuaWZlc3QgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBw
Y2FjaGUubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU2ODIwZjcxNjc5N2NlNTY2MDhjOTY1MDlmMWQw
YmFkNjZmZDAzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL21hbmlmZXN0LWZvci1hcHBjYWNoZS5tYW5pZmVzdApAQCAtMCwwICsx
LDIgQEAKK0NBQ0hFIE1BTklGRVNUCithYmUucG5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193188</attachid>
            <date>2013-03-14 14:45:14 -0700</date>
            <delta_ts>2013-03-15 18:08:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112288-20130314144110.patch</filename>
            <type>text/plain</type>
            <size>15570</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRjNDY0YTAyNzQ5OGY0
MjhjMjVmYWZlYTFmNGQ4YjVmNTljMWI0MS4uZjIyODY2YmFmMDQ2YTZhOTAwNDIxZDI3ZDU1YmYz
NjlhNDVhNDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAzLTE0ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
YXBwbGljYXRpb24gY2FjaGUgaW4gdGhpcmQtcGFydHkgY29udGV4dHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc2FibGUgYWNjZXNzIHRvIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZSBpbiB0aGlyZC1wYXJ0eSBzdWJmcmFtZXMKKworICAgICAgICBUZXN0
czogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtYWxsb3dlZC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNo
ZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLWFw
cGNhY2hlLWJsb2NrZWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50OjppbnNlcnRlZEJ5UGFyc2VyKTog
RG9uJ3QgY3JlYXRlIGFuIEFwcGxpY2F0aW9uQ2FjaGUgaW4gc29tZSBjYXNlcworICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YXBwbGlj
YXRpb25DYWNoZSk6IERpc2FsbG93IGFjY2VzcyB0byB0aGUgYXBwbGljYXRpb25DYWNoZSBvYmpl
Y3QgaW4gc29tZSBjYXNlcworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKToK
KwogMjAxMy0wMy0xMiAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgVGV4dEl0ZXJhdG9yLmNwcCdzIGlzQWxsQ29sbGFwc2libGVXaGl0ZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKaW5kZXggZmE2Mjg0ZDRl
OGJkYzYzZmZjODU3MWU1ODJmNmM5YmE3YmZjM2U3Ni4uNTRkY2RiYmU3MzU3ZDA0MWFhYzZjZDhl
ZTg1MzU2M2E2OGUxMzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRt
bEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcwLDExICs3MSwxMyBAQCB2b2lkIEhU
TUxIdG1sRWxlbWVudDo6aW5zZXJ0ZWRCeVBhcnNlcigpCiAgICAgaWYgKCFkb2N1bWVudExvYWRl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtYW5pZmVzdCA9
IGdldEF0dHJpYnV0ZShtYW5pZmVzdEF0dHIpOwotICAgIGlmIChtYW5pZmVzdC5pc0VtcHR5KCkp
Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5zZWxlY3RD
YWNoZVdpdGhvdXRNYW5pZmVzdCgpOwotICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKG1hbmlmZXN0KSk7CisgICAgaWYgKGRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnQoKS0+dG9wT3JpZ2lu
KCkpKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbWFuaWZlc3QgPSBnZXRBdHRyaWJ1
dGUobWFuaWZlc3RBdHRyKTsKKyAgICAgICAgaWYgKG1hbmlmZXN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5zZWxlY3RDYWNo
ZVdpdGhvdXRNYW5pZmVzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudExv
YWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwobWFuaWZlc3QpKTsKKyAgICB9CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAppbmRleCBlNGQwMjU2MzFiYjA2NjI3YjU1YjQwZDU3MGM4NzdjYTdk
YmY4MGUyLi41OWMwYzFhMDhiNGY4NmE0Y2FjYTFiM2Y0MTkyZjIxN2MxMTFhZWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02OTgsNiArNjk4LDE0IEBAIERPTUFwcGxpY2F0aW9u
Q2FjaGUqIERPTVdpbmRvdzo6YXBwbGljYXRpb25DYWNoZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFp
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShkb2N1bWVudC0+dG9wT3JpZ2luKCkpKQorICAg
ICAgICByZXR1cm4gMDsKKwogICAgIGlmICghbV9hcHBsaWNhdGlvbkNhY2hlKQogICAgICAgICBt
X2FwcGxpY2F0aW9uQ2FjaGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUobV9mcmFtZSk7
CiAgICAgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAppbmRleCBmZjNiMzIwMjQ0OGEzZTY2MzVjYmZkNThhZjBkYjk4NzE0NTc5
NzY2Li43MGQ5ZGQ0MDYyNTMwNzI1MjVhMzA1Nzk2NDdkYjI0MjVhY2UxYmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNTAsNiArMTUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pIGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKICAgICBi
b29sIGNhbkFjY2Vzc1NoYXJlZFdvcmtlcnMoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9CiAgICAgYm9v
bCBjYW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
IGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfQorICAgIGJvb2wg
Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
KSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH0KICAgICBib29s
IGNhbkFjY2Vzc0Nvb2tpZXMoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQogICAgIGJv
b2wgY2FuQWNjZXNzUGFzc3dvcmRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gIWlzVW5pcXVlKCk7
IH0KICAgICBib29sIGNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiAhaXNVbmlx
dWUoKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGZiNWQyZDI0MjgzMTg5MmM4OTc1ZTViZTNlODQyYzYxYjFmZTJiNDQu
LmJmNWM4MzU3YTdlZTAyMWM0NmVlZjAwOWQ2YTE2MTFhZmMyODU2OTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAxMy0wMy0xNCAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgorCisg
ICAgICAgIEFsbG93IGJsb2NraW5nIG9mIGFwcGxpY2F0aW9uIGNhY2hlIGluIHRoaXJkLXBhcnR5
IGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1hcHBjYWNoZS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2lu
LWlmcmFtZS1mb3ItYXBwY2FjaGUtYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNo
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9t
YW5pZmVzdC1mb3ItYXBwY2FjaGUtYWxsb3dlZC5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLWJsb2Nr
ZWQubWFuaWZlc3Q6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3Vy
Y2VzL21hbmlmZXN0LWZvci1hcHBjYWNoZS5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FtZS1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNo
ZS1ibG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc2Ft
ZS1vcmlnaW4tYXBwY2FjaGUtYmxvY2tlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FtZS1vcmlnaW4tYXBwY2FjaGUtYmxvY2tlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDEzLTAzLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBvbmUgbW9yZSB0ZXN0IGV4cGVjdGF0aW9uIHBlciBidWcgMTEyMTc2LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtYWxs
b3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1hcHBjYWNoZS1hbGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmQ5MWI0
OTMwMzY3Nzc0NjM1MjI2N2ZjNDhmZjhkNGJjOWI3ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtYWxsb3dl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUg
YSBjYWNoZToKKworCitUaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBhIGNhY2hlOgorCisKKworLS0t
LS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0t
LQorQ2FjaGUgZm91bmQKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4nCistLS0tLS0tLQorQ2FjaGUgZm91bmQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hl
LWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWE2M2ZlOTM4YWQ5Zjk0MGJiYmRlYThjYTU5ZmRk
M2E3NTE0ODEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMjMgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGZyYW1lcyA9IDI7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQord2lu
ZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKwktLWZyYW1lczsKKwlpZiAoZnJh
bWVzIDw9IDAgJiYgd2luZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBo
YXZlIGEgY2FjaGU6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUtYWxsb3dlZC5o
dG1sIj48L2lmcmFtZT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBoYXZlIGEgY2FjaGU6PC9wPgor
PGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jv
c3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUtYWxsb3dlZC5odG1sIj48L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kODM0MmYzMDE1ZGY2ZjE4OTJjNmFmMjhlNmU3ODgwMTQ1MjNlNTg3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBw
Y2FjaGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBu
b3QgaGF2ZSBhIGNhY2hlOgorCisKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIGEgY2FjaGU6CisK
KworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicK
Ky0tLS0tLS0tCitDYWNoZSBub3QgZm91bmQgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitDYWNoZSBmb3VuZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2Fj
aGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFw
cGNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNlOTk1OWM5YjAzMDQ1NjdkNTQ5MGVkYzFiZmM1ZjAx
MzIwODA1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0gMjsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJaW50ZXJuYWxzLnNldHRp
bmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tUaGlyZFBhcnR5Jyk7Cit9Cit3aW5k
b3cub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSkgeworCS0tZnJhbWVzOworCWlmIChmcmFt
ZXMgPD0gMCAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUg
c2hvdWxkIG5vdCBoYXZlIGEgY2FjaGU6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2Fj
aGUuaHRtbCI+PC9pZnJhbWU+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBhIGNhY2hlOjwv
cD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUtYWxsb3dlZC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlm
cmFtZS1mb3ItYXBwY2FjaGUtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZGMyM2RhNTg4N2Fh
NGY0NmNiMjE2NWIyZDU1MjZjNTA5NDUyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1h
cHBjYWNoZS1hbGxvd2VkLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWwgbWFuaWZlc3Q9Im1h
bmlmZXN0LWZvci1hcHBjYWNoZS1hbGxvd2VkLm1hbmlmZXN0Ij4KKzxoZWFkPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGNvbXBsZXRlKCkgeworCWRvY3VtZW50LndyaXRlKCdDYWNoZSBmb3VuZCcpOwor
CWNsZWFudXAoKTsKK30KKworZnVuY3Rpb24gY2xlYW51cCgpIHsKKwl0b3AucG9zdE1lc3NhZ2Uo
J2RvbmUnLCAnKicpOworfQorCit0cnkgeworCWFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0
ZW5lcignbm91cGRhdGUnLCBjb21wbGV0ZSwgZmFsc2UpOworCWFwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignY2FjaGVkJywgY29tcGxldGUsIGZhbHNlKTsKK30gY2F0Y2ggKGUpIHsK
Kwlkb2N1bWVudC53cml0ZSgnQ2FjaGUgbm90IGZvdW5kJyk7CisJY2xlYW51cCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJhYmUucG5nIj4KKzwvYm9keT4KKzwv
aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3Vy
Y2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBj
YWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMDY1MjI1ZmFkMDBmYWRhMDcyZDUzNmMzMTg2NWNkMDY0
YzdmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzxodG1sIG1hbmlmZXN0PSJtYW5pZmVzdC1mb3ItYXBwY2FjaGUubWFuaWZlc3Qi
PgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gY29tcGxldGUoKSB7CisJZG9jdW1lbnQud3Jp
dGUoJ0NhY2hlIGZvdW5kJyk7CisJY2xlYW51cCgpOworfQorCitmdW5jdGlvbiBjbGVhbnVwKCkg
eworCXRvcC5wb3N0TWVzc2FnZSgnZG9uZScsICcqJyk7Cit9CisKK3RyeSB7CisJYXBwbGljYXRp
b25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIGNvbXBsZXRlLCBmYWxzZSk7CisJ
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBjb21wbGV0ZSwgZmFs
c2UpOworfSBjYXRjaCAoZSkgeworCWRvY3VtZW50LndyaXRlKCdDYWNoZSBub3QgZm91bmQnKTsK
KwljbGVhbnVwKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9ImFi
ZS5wbmciPgorPC9ib2R5PgorPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLWFsbG93ZWQubWFu
aWZlc3QgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVz
dC1mb3ItYXBwY2FjaGUtYWxsb3dlZC5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTY4MjBmNzE2Nzk3
Y2U1NjYwOGM5NjUwOWYxZDBiYWQ2NmZkMDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLWFs
bG93ZWQubWFuaWZlc3QKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVTVAorYWJlLnBuZwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFu
aWZlc3QtZm9yLWFwcGNhY2hlLWJsb2NrZWQubWFuaWZlc3QgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUtYmxvY2tlZC5tYW5p
ZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZTY4MjBmNzE2Nzk3Y2U1NjYwOGM5NjUwOWYxZDBiYWQ2NmZkMDM3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLWJsb2NrZWQubWFuaWZlc3QKQEAgLTAsMCArMSwy
IEBACitDQUNIRSBNQU5JRkVTVAorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLm1hbmlmZXN0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9y
LWFwcGNhY2hlLm1hbmlmZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNjgyMGY3MTY3OTdjZTU2NjA4Yzk2NTA5
ZjFkMGJhZDY2ZmQwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUubWFuaWZlc3QKQEAgLTAs
MCArMSwyIEBACitDQUNIRSBNQU5JRkVTVAorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FtZS1vcmlnaW4taWZyYW1lLWZvci1h
cHBjYWNoZS1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jl
c291cmNlcy9zYW1lLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLWJsb2NrZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYjM5ZjlmNDJiZTMxN2U3ZmM4ODBiYTliY2U0M2Y4MWUyYTk2OWVhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2Ft
ZS1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwyNSBA
QAorPGh0bWwgbWFuaWZlc3Q9Im1hbmlmZXN0LWZvci1hcHBjYWNoZS1ibG9ja2VkLm1hbmlmZXN0
Ij4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNvbXBsZXRlKCkgeworCWRvY3VtZW50Lndy
aXRlKCdDYWNoZSBmb3VuZCcpOworCWNsZWFudXAoKTsKK30KKworZnVuY3Rpb24gY2xlYW51cCgp
IHsKKwl0b3AucG9zdE1lc3NhZ2UoJ2RvbmUnLCAnKicpOworfQorCit0cnkgeworCWFwcGxpY2F0
aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBjb21wbGV0ZSwgZmFsc2UpOwor
CWFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgY29tcGxldGUsIGZh
bHNlKTsKK30gY2F0Y2ggKGUpIHsKKwlkb2N1bWVudC53cml0ZSgnQ2FjaGUgbm90IGZvdW5kJyk7
CisJY2xlYW51cCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJh
YmUucG5nIj4KKzwvYm9keT4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc2FtZS1vcmlnaW4tYXBwY2FjaGUtYmxvY2tlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLWFwcGNhY2hlLWJs
b2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MzU5ODYwN2Q3NWRmMjE3NTU4MzI5NzZi
ZTg5MWIxMTM2NDJhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbWUtb3JpZ2luLWFwcGNhY2hlLWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIGEgY2FjaGU6CisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitDYWNoZSBub3QgZm91bmQgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW1lLW9yaWdpbi1hcHBjYWNoZS1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLWFwcGNhY2hlLWJsb2NrZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yOTA0YjUyNTNlOTZiNzhiNzc3NDdmMDlmZWE1MjQ5NGFjNTVjNWJmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW1lLW9yaWdp
bi1hcHBjYWNoZS1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0gMTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCk7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKK30KK3dpbmRvdy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihtZXNzYWdlKSB7CisJLS1mcmFtZXM7CisJaWYgKGZyYW1lcyA8PSAwICYmIHdp
bmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IGhh
dmUgYSBjYWNoZTo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9zYW1lLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLWJsb2NrZWQuaHRt
bCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0NDA3MjNjM2JjZTc4NzIwZWViMWQ5MTUy
MTBiZTBjYWU2NjA1MTI0Li4zYzdiZmVlMjEwNTEyOTAzMTMwZmQ0NWNiYTk0YTkxYTBhMTUzZmZl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTQ0NzgsMyArNDQ3OCw4IEBAIGNyYnVnLmNvbS8xODM1ODEgWyBNYWMgV2luIExpbnV4IF0g
Y29tcG9zaXRpbmcvbWFza3MvbXVsdGlwbGUtbWFza3MuaHRtbCBbIEltYWdlCiBjcmJ1Zy5jb20v
MTgzNTgxIFsgTWFjIFdpbiBMaW51eCBdIGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL21hc2tlZC1y
ZWZsZWN0aW9uLW9uLWNvbXBvc2l0ZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogY3JidWcu
Y29tLzE4MzU4MSBbIE1hYyBXaW4gTGludXggXSBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0
ZWQtcmVmbGVjdGlvbi1tYXNrLWNoYW5nZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBjcmJ1
Zy5jb20vMTgzNTgxIFsgTWFjIFdpbiBMaW51eCBdIGNvbXBvc2l0aW5nL3RleHQtb24tc2NhbGVk
LXN1cmZhY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorCisjIEFwcGxpY2F0aW9uIGNhY2hl
IGJsb2NraW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gQ2hyb21pdW0KK3dlYmtpdC5vcmcvYi8xMTIy
ODggaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzExMjI4OCBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdp
bi1hcHBjYWNoZS1hbGxvd2VkLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMTIyODgg
aHR0cC90ZXN0cy9zZWN1cml0eS9zYW1lLW9yaWdpbi1hcHBjYWNoZS1ibG9ja2VkLmh0bWwgWyBG
YWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193409</attachid>
            <date>2013-03-15 18:08:16 -0700</date>
            <delta_ts>2013-03-17 16:53:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112288-20130315180411.patch</filename>
            <type>text/plain</type>
            <size>15562</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc3NDFmMWVkYThmYmJi
OTc0ZWM3OTlmZjM0YjE2OWQ5OGYwODVmNS4uMTIwMDA4MDVmZWY3MmQwMWRjODIzNTgyNWQ5ZGJh
ZDk5NDY0NmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAzLTE1ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
YXBwbGljYXRpb24gY2FjaGUgaW4gdGhpcmQtcGFydHkgY29udGV4dHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI4OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldHVybiBlYXJseSBpZiB3ZSBjYW4n
dCBhY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGR1ZSB0byBzZWN1cml0eQorICAgICAgICBy
ZXN0cmljdGlvbnMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9zZWN1cml0eS9zYW1lLW9yaWdpbi1hcHBjYWNoZS1ibG9ja2VkLmh0bWwKKworICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0
VVJMKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZSk6CisKIDIwMTMtMDMt
MTUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBSZW1vdmUgdGhlIGJhY2tncm91bmQgZmlsdGVyIGJsdXIgbGF5b3V0IHRlc3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCmluZGV4IDNhZjA2ZWFiOTE2MTMyMzU0OWZiNGYwNmE0MGQ5OTM1M2YwYzNmMDEu
LjUzMjFjNzkzMDQ1YWI0MjhlN2QxM2NjYTU2M2YyZWM0MTM3ZTc3NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCkBAIC0xNDEsNiArMTQxLDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVj
dENhY2hlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3QKICAgICAKICAg
ICBpZiAoIWZyYW1lLT5zZXR0aW5ncygpIHx8ICFmcmFtZS0+c2V0dGluZ3MoKS0+b2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9u
Q2FjaGUoZnJhbWUtPnRyZWUoKS0+dG9wKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KQorICAgICAgICByZXR1cm47CiAgICAgCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwogICAgIEFTU0VSVCghZG9j
dW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPmFwcGxpY2F0aW9uQ2FjaGUoKSk7
CkBAIC0yMTUsNiArMjE4LDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENh
Y2hlV2l0aG91dE1hbmlmZXN0VVJMKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWZyYW1lLT5zZXR0
aW5ncygpIHx8ICFmcmFtZS0+c2V0dGluZ3MoKS0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUo
KS0+dG9wKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICByZXR1cm47
CisKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCk7CiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci0+YXBwbGljYXRp
b25DYWNoZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5oCmluZGV4IGZmM2IzMjAyNDQ4YTNlNjYzNWNiZmQ1OGFmMGRiOTg3MTQ1Nzk3
NjYuLjcwZDlkZDQwNjI1MzA3MjUyNWEzMDU3OTY0N2RiMjQyNWFjZTFiYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTE1MCw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bikgY29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9OwogICAgIGJv
b2wgY2FuQWNjZXNzU2hhcmVkV29ya2Vycyhjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
KSBjb25zdCB7IHJldHVybiBjYW5BY2Nlc3NTdG9yYWdlKHRvcE9yaWdpbik7IH0KICAgICBib29s
IGNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikg
Y29uc3QgeyByZXR1cm4gY2FuQWNjZXNzU3RvcmFnZSh0b3BPcmlnaW4pOyB9CisgICAgYm9vbCBj
YW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
IGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfQogICAgIGJvb2wg
Y2FuQWNjZXNzQ29va2llcygpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAgICAgYm9v
bCBjYW5BY2Nlc3NQYXNzd29yZE1hbmFnZXIoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsg
fQogICAgIGJvb2wgY2FuQWNjZXNzRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1
ZSgpOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTc2MDVhMmNkYjlmZjJhMTI4YTg4MzBhMzViMzIzZDZjMzI3N2ExOC4u
MWFmNzk2YTAwMDMxMGU1MzE4MzI1OTA3ZGZkY2UyN2YxNDIxMjhlYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDEzLTAzLTE1ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWxsb3cgYmxvY2tpbmcgb2YgYXBwbGljYXRpb24gY2FjaGUgaW4gdGhpcmQtcGFydHkg
Y29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjI4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtYWxsb3dlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLWFwcGNhY2hlLWFsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4t
aWZyYW1lLWZvci1hcHBjYWNoZS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL21h
bmlmZXN0LWZvci1hcHBjYWNoZS1hbGxvd2VkLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUtYmxvY2tl
ZC5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW1lLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hl
LWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW1l
LW9yaWdpbi1hcHBjYWNoZS1ibG9ja2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9zYW1lLW9yaWdpbi1hcHBjYWNoZS1ibG9ja2VkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MTMtMDMtMTUgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYWRkaXRpb24gb2YgZXhwZWN0YXRpb25zIGZvciB0ZXN0IGFkZGVkIGluIHIxNDU5
MTUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1hcHBjYWNoZS1hbGxvd2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmViZDkxYjQ5MzAzNjc3NzQ2MzUyMjY3ZmM0OGZmOGQ0YmM5YjdmZWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdp
bi1hcHBjYWNoZS1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIGlm
cmFtZSBzaG91bGQgaGF2ZSBhIGNhY2hlOgorCisKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIGEg
Y2FjaGU6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPicKKy0tLS0tLS0tCitDYWNoZSBmb3VuZAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitDYWNoZSBmb3VuZApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBw
Y2FjaGUtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4tYXBwY2FjaGUtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YTYzZmU5MzhhZDlm
OTQwYmJiZGVhOGNhNTlmZGQzYTc1MTQ4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS1hbGxvd2VkLmh0bWwK
QEAgLTAsMCArMSwyMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0g
MjsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
CXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisJdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Cit9Cit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSkgeworCS0t
ZnJhbWVzOworCWlmIChmcmFtZXMgPD0gMCAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKwkJdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhp
cyBpZnJhbWUgc2hvdWxkIGhhdmUgYSBjYWNoZTo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1h
cHBjYWNoZS1hbGxvd2VkLmh0bWwiPjwvaWZyYW1lPgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIGhh
dmUgYSBjYWNoZTo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS1hbGxvd2VkLmh0
bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2FjaGUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NDlkNjg4ZjlmZjA2YmQ3N2RjM2Q0YzM5YTJjNzA2NTRj
MDljMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLW9yaWdpbi1hcHBjYWNoZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhp
cyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIGEgY2FjaGU6CisKKworVGhpcyBpZnJhbWUgc2hvdWxk
IGhhdmUgYSBjYWNoZToKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0NhY2hlIG5vdCBmb3VuZAorCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitDYWNo
ZSBmb3VuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4tYXBwY2FjaGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNlOTk1OWM5YjAzMDQ1Njdk
NTQ5MGVkYzFiZmM1ZjAxMzIwODA1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLmh0bWwKQEAgLTAsMCArMSwy
NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0gMjsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJ
aW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tUaGlyZFBh
cnR5Jyk7Cit9Cit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSkgeworCS0tZnJh
bWVzOworCWlmIChmcmFtZXMgPD0gMCAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIGEgY2FjaGU6PC9wPgorPGlmcmFtZSBzcmM9
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlm
cmFtZS1mb3ItYXBwY2FjaGUuaHRtbCI+PC9pZnJhbWU+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQg
aGF2ZSBhIGNhY2hlOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNhY2hlLmh0bWwiPjwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUt
YWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItYXBwY2FjaGUtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIxOWRiMGJlYzk2YzEzMGUwODUzYWYxM2Y0OTg3MGJhNTk2ZGI0NDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmln
aW4taWZyYW1lLWZvci1hcHBjYWNoZS1hbGxvd2VkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPGh0
bWwgbWFuaWZlc3Q9Im1hbmlmZXN0LWZvci1hcHBjYWNoZS1hbGxvd2VkLm1hbmlmZXN0Ij4KKzxo
ZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNvbXBsZXRlKCkgeworCWRvY3VtZW50LndyaXRlKCdD
YWNoZSBmb3VuZCcpOworCWNsZWFudXAoKTsKK30KKworZnVuY3Rpb24gdGltZWRPdXQoKSB7CisJ
dHJ5IHsKKwkJYXBwbGljYXRpb25DYWNoZS51cGRhdGUoKTsKKwkJdGltZXIgPSBzZXRUaW1lb3V0
KGNsZWFudXAsIDUwMDApOworCX0gY2F0Y2ggKGUpIHsKKwkJZG9jdW1lbnQud3JpdGUoJ0NhY2hl
IG5vdCBmb3VuZCcpOworCQljbGVhbnVwKCk7CisJfQorfQorCitmdW5jdGlvbiBjbGVhbnVwKCkg
eworCWNsZWFyVGltZW91dCh0aW1lcik7CisJdG9wLnBvc3RNZXNzYWdlKCdkb25lJywgJyonKTsK
K30KKwordHJ5IHsKKwl0aW1lciA9IHNldFRpbWVvdXQodGltZWRPdXQsIDUwMDApOworCWFwcGxp
Y2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBjb21wbGV0ZSwgZmFsc2Up
OworCWFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgY29tcGxldGUs
IGZhbHNlKTsKK30gY2F0Y2ggKGUpIHsKKwlkb2N1bWVudC53cml0ZSgnQ2FjaGUgbm90IGZvdW5k
Jyk7CisJY2xlYW51cCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3Jj
PSJhYmUucG5nIj4KKzwvYm9keT4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWFwcGNh
Y2hlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9z
cy1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMTU2NDFkZmZi
M2E0MTE4NDQzZTk2NTBjNTdkZGYxMGQxYTRkNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZv
ci1hcHBjYWNoZS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sIG1hbmlmZXN0PSJtYW5pZmVz
dC1mb3ItYXBwY2FjaGUubWFuaWZlc3QiPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gY29t
cGxldGUoKSB7CisJZG9jdW1lbnQud3JpdGUoJ0NhY2hlIGZvdW5kJyk7CisJY2xlYW51cCgpOwor
fQorCitmdW5jdGlvbiB0aW1lZE91dCgpIHsKKwl0cnkgeworCQlhcHBsaWNhdGlvbkNhY2hlLnVw
ZGF0ZSgpOworCQl0aW1lciA9IHNldFRpbWVvdXQoY2xlYW51cCwgNTAwMCk7CisJfSBjYXRjaCAo
ZSkgeworCQlkb2N1bWVudC53cml0ZSgnQ2FjaGUgbm90IGZvdW5kJyk7CisJCWNsZWFudXAoKTsK
Kwl9Cit9CisKK2Z1bmN0aW9uIGNsZWFudXAoKSB7CisJY2xlYXJUaW1lb3V0KHRpbWVyKTsKKwl0
b3AucG9zdE1lc3NhZ2UoJ2RvbmUnLCAnKicpOworfQorCit0cnkgeworCXRpbWVyID0gc2V0VGlt
ZW91dCh0aW1lZE91dCwgNTAwMCk7CisJYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCdub3VwZGF0ZScsIGNvbXBsZXRlLCBmYWxzZSk7CisJYXBwbGljYXRpb25DYWNoZS5hZGRFdmVu
dExpc3RlbmVyKCdjYWNoZWQnLCBjb21wbGV0ZSwgZmFsc2UpOworfSBjYXRjaCAoZSkgeworCWRv
Y3VtZW50LndyaXRlKCdDYWNoZSBub3QgZm91bmQnKTsKKwljbGVhbnVwKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGltZyBzcmM9ImFiZS5wbmciPgorPC9ib2R5PgorPC9oZWFk
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
bWFuaWZlc3QtZm9yLWFwcGNhY2hlLWFsbG93ZWQubWFuaWZlc3QgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5pZmVzdC1mb3ItYXBwY2FjaGUtYWxsb3dlZC5t
YW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZTY4MjBmNzE2Nzk3Y2U1NjYwOGM5NjUwOWYxZDBiYWQ2NmZk
MDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLWFsbG93ZWQubWFuaWZlc3QKQEAgLTAsMCAr
MSwyIEBACitDQUNIRSBNQU5JRkVTVAorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLWJsb2Nr
ZWQubWFuaWZlc3QgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9t
YW5pZmVzdC1mb3ItYXBwY2FjaGUtYmxvY2tlZC5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTY4MjBm
NzE2Nzk3Y2U1NjYwOGM5NjUwOWYxZDBiYWQ2NmZkMDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNh
Y2hlLWJsb2NrZWQubWFuaWZlc3QKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVTVAorYWJl
LnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvbWFuaWZlc3QtZm9yLWFwcGNhY2hlLm1hbmlmZXN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlNjgyMGY3MTY3OTdjZTU2NjA4Yzk2NTA5ZjFkMGJhZDY2ZmQwMzcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9tYW5p
ZmVzdC1mb3ItYXBwY2FjaGUubWFuaWZlc3QKQEAgLTAsMCArMSwyIEBACitDQUNIRSBNQU5JRkVT
VAorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvc2FtZS1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS1ibG9ja2VkLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9zYW1lLW9yaWdpbi1pZnJh
bWUtZm9yLWFwcGNhY2hlLWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTg4ODE5N2VlNWVmZTAx
YjI4Yjc4YTU1ZGJhNTc5MWE3MjUzODcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvc2FtZS1vcmlnaW4taWZyYW1lLWZvci1hcHBj
YWNoZS1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPGh0bWwgbWFuaWZlc3Q9Im1hbmlm
ZXN0LWZvci1hcHBjYWNoZS1ibG9ja2VkLm1hbmlmZXN0Ij4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGNvbXBsZXRlKCkgeworCWRvY3VtZW50LndyaXRlKCdDYWNoZSBmb3VuZCcpOworCWNs
ZWFudXAoKTsKK30KKworZnVuY3Rpb24gdGltZWRPdXQoKSB7CisJdHJ5IHsKKwkJYXBwbGljYXRp
b25DYWNoZS51cGRhdGUoKTsKKwkJdGltZXIgPSBzZXRUaW1lb3V0KGNsZWFudXAsIDUwMDApOwor
CX0gY2F0Y2ggKGUpIHsKKwkJZG9jdW1lbnQud3JpdGUoJ0NhY2hlIG5vdCBmb3VuZCcpOworCQlj
bGVhbnVwKCk7CisJfQorfQorCitmdW5jdGlvbiBjbGVhbnVwKCkgeworCWNsZWFyVGltZW91dCh0
aW1lcik7CisJdG9wLnBvc3RNZXNzYWdlKCdkb25lJywgJyonKTsKK30KKwordHJ5IHsKKwl0aW1l
ciA9IHNldFRpbWVvdXQodGltZWRPdXQsIDUwMDApOworCWFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZl
bnRMaXN0ZW5lcignbm91cGRhdGUnLCBjb21wbGV0ZSwgZmFsc2UpOworCWFwcGxpY2F0aW9uQ2Fj
aGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgY29tcGxldGUsIGZhbHNlKTsKK30gY2F0Y2gg
KGUpIHsKKwlkb2N1bWVudC53cml0ZSgnQ2FjaGUgbm90IGZvdW5kJyk7CisJY2xlYW51cCgpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbWcgc3JjPSJhYmUucG5nIj4KKzwvYm9k
eT4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c2FtZS1vcmlnaW4tYXBwY2FjaGUtYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLWFwcGNhY2hlLWJsb2NrZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYzOTY3MTJlN2UxNDU4NDRlNzU0YWY3NzA4ZWJmOGUzNTI3ZWE3M2IK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUt
b3JpZ2luLWFwcGNhY2hlLWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhp
cyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIGEgY2FjaGU6CisKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitDYWNoZSBub3Qg
Zm91bmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FtZS1v
cmlnaW4tYXBwY2FjaGUtYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9zYW1lLW9yaWdpbi1hcHBjYWNoZS1ibG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkwNGI1
MjUzZTk2Yjc4Yjc3NzQ3ZjA5ZmVhNTI0OTRhYzU1YzViZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2FtZS1vcmlnaW4tYXBwY2FjaGUtYmxvY2tl
ZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGZy
YW1lcyA9IDE7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworCXRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koJ0Jsb2NrQWxsJyk7Cit9Cit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2Fn
ZSkgeworCS0tZnJhbWVzOworCWlmIChmcmFtZXMgPD0gMCAmJiB3aW5kb3cudGVzdFJ1bm5lcikg
eworCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0Fs
bCcpOworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIGEgY2FjaGU6PC9wPgor
PGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvc2Ft
ZS1vcmlnaW4taWZyYW1lLWZvci1hcHBjYWNoZS1ibG9ja2VkLmh0bWwiPjwvaWZyYW1lPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggOTkzZDUxOTljYmNhMDFlNDJjYTc3NGFmMjBiY2Q0ZTEyMmVhNDEwNy4u
ZjE0N2M4YzE4YjI3ZmUyZDY1NmRkZDk3MWIxMTQyYThjNzcyZjdmZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC00NDE4LDMgKzQ0MTgs
OCBAQCB3ZWJraXQub3JnL2IvMTEyMzg0IFsgV2luIF0gZmFzdC9mb3Jtcy9iYXNpYy10ZXh0YXJl
YXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUAogd2Via2l0Lm9yZy9iLzExMjM4NCBbIFdpbiBd
IGZhc3Qvb3ZlcmZsb3cvb3ZlcmZsb3cteC15Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzExMjM4NCBbIFdpbiBdIGZhc3QvcGFyc2VyL29wZW4tY29tbWVudC1p
bi10ZXh0YXJlYS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi8x
MTIzODQgWyBXaW4gXSBmYXN0L3JlcGxhY2VkL3dpZHRoMTAwcGVyY2VudC10ZXh0YXJlYS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KKworIyBBcHBsaWNhdGlvbiBjYWNoZSBibG9ja2lu
ZyBpcyBub3Qgc3VwcG9ydGVkIGluIENocm9taXVtCit3ZWJraXQub3JnL2IvMTEyMjg4IGh0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xMTIyODggaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tYXBwY2Fj
aGUtYWxsb3dlZC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTEyMjg4IGh0dHAvdGVz
dHMvc2VjdXJpdHkvc2FtZS1vcmlnaW4tYXBwY2FjaGUtYmxvY2tlZC5odG1sIFsgRmFpbHVyZSBd
Cg==
</data>
<flag name="review"
          id="214938"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>