<?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>93390</bug_id>
          
          <creation_ts>2012-08-07 13:58:29 -0700</creation_ts>
          <short_desc>Allow blocking of third-party localStorage and sessionStorage</short_desc>
          <delta_ts>2012-08-10 16:15:16 -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>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>689350</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-07 13:58:29 -0700</bug_when>
    <thetext>Add a method for allowing blocking of localStorage and sessionStorage in third-party contexts, similar to how third-party cookies behave.

&lt;rdar://problem/10214943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689497</commentid>
    <comment_count>1</comment_count>
      <attachid>157023</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-07 15:33:52 -0700</bug_when>
    <thetext>Created attachment 157023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689556</commentid>
    <comment_count>2</comment_count>
      <attachid>157023</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 16:05:22 -0700</bug_when>
    <thetext>Comment on attachment 157023
Patch

Although it&apos;s tempting to use the topDocument as the &quot;first party&quot; context, that doesn&apos;t match what we do for cookies.  For cookies, we use the firstPartyForCookies, which takes into account redirects, etc.  We probably want to be consistent in what we treat as the first party for these storage interactions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689589</commentid>
    <comment_count>3</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-07 16:33:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 157023 [details])
&gt; Although it&apos;s tempting to use the topDocument as the &quot;first party&quot; context, that doesn&apos;t match what we do for cookies.  For cookies, we use the firstPartyForCookies, which takes into account redirects, etc.  We probably want to be consistent in what we treat as the first party for these storage interactions.

I&apos;m not entirely sure how they&apos;re different. Most of the time, they appear to be identical. I think I see a few cases where they could conceivably be different, but I don&apos;t know how they could be triggered. Can you give me some examples of cases that might pop up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689610</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 16:50:11 -0700</bug_when>
    <thetext>Sure.  When the load of the main frame involves a redirect, I believe first party for cookies retains the URL of the start of the redirect chain rather than the final URL in the redirection chain.  Historically, there have also been other variations involving whether the frame was created as a result of a POST request.

I haven&apos;t studied the issue in a while, so I&apos;m not sure which of these deviations are still present.  As a general principle, however, we should use some canonical piece of state to represent the &quot;first party.&quot;  If firstPartyForCookies always ends up being the URL of the topDocument, then we shouldn&apos;t keep a separate member variable and instead just make it an accessor for topDocument()-&gt;url().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690525</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-08 11:12:27 -0700</bug_when>
    <thetext>I think that the idea of &quot;first party&quot; is &quot;what site the user thinks they are at&quot;. Which is admittedly vague, as most users pay little attention to address bar, but is the best we have to judge their intentions.

Programmatically opened windows and redirects are probably the most interesting cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690884</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-08-08 16:20:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Sure.  When the load of the main frame involves a redirect, I believe first party for cookies retains the URL of the start of the redirect chain rather than the final URL in the redirection chain.  Historically, there have also been other variations involving whether the frame was created as a result of a POST request.
&gt; 
&gt; I haven&apos;t studied the issue in a while, so I&apos;m not sure which of these deviations are still present.  As a general principle, however, we should use some canonical piece of state to represent the &quot;first party.&quot;  If firstPartyForCookies always ends up being the URL of the topDocument, then we shouldn&apos;t keep a separate member variable and instead just make it an accessor for topDocument()-&gt;url().

I&apos;m not sure it&apos;s actually appropriate or necessary to handle redirects the same way for cookies as for other kinds of storage (though I have not thought it through in detail). The reason cookies look at the pre-redirect URL is to stop sites from evading the policy by redirecting to third party tracker that sets a cookie, and then redirects back. I don&apos;t think these same concerns apply to LocalStorage or similar things. For LocalStorage, it is arguably more relevant to base decisions on what the URL field is showing right now, than what you originally typed or what was originally present in the link you clicked. The tradeoffs are different for protocol-level tracking-usable storage than for script-accessed storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690901</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-08 16:32:36 -0700</bug_when>
    <thetext>We talked about this in #webkit for a bit and Maciej reminded me that Safari only blocks writing cookies and not reading cookies.  This patch would block both read and writing local storage, which means it&apos;s already going to behave significantly differently from cookies.

IMHO, we should try to avoid proliferating a bunch of different notions about who the &quot;first party&quot;.  If we&apos;re going to use something other than firstPartyForCookies, let&apos;s try to find a notion that will work well for a bunch of uses in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690904</commentid>
    <comment_count>8</comment_count>
      <attachid>157023</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-08 16:35:36 -0700</bug_when>
    <thetext>Comment on attachment 157023
Patch

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

&gt; Source/WebCore/page/SecurityOrigin.cpp:406
&gt; +    if (isUnique() || other-&gt;isUnique())
&gt; +        return true;

We probably also want to handle the case with |this| has universal access.  In that case, you probably want to be first-party with everyone.

&gt; Source/WebCore/page/SecurityOrigin.cpp:409
&gt; +    if (equal(other))
&gt; +        return false;

Does this ignore document.domain?  We should definitely test the document.domain case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690907</commentid>
    <comment_count>9</comment_count>
      <attachid>157023</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-08 16:36:43 -0700</bug_when>
    <thetext>Comment on attachment 157023
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:749
&gt; -    if (!document-&gt;securityOrigin()-&gt;canAccessLocalStorage()) {
&gt; +    if (!document-&gt;securityOrigin()-&gt;canAccessLocalStorage() || (document-&gt;settings()-&gt;thirdPartyStorageBlockingEnabled() &amp;&amp; document-&gt;securityOrigin()-&gt;isThirdParty(document-&gt;topDocument()-&gt;securityOrigin()))) {

Can we fold these checks together?  For example, we could pass the topDocument as an argument to canAccessLocalStorage.  That way we won&apos;t forget to add this check if/when we add more callers of canAccessLocalStorage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690915</commentid>
    <comment_count>10</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-08 16:41:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 157023 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157023&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:749
&gt; &gt; -    if (!document-&gt;securityOrigin()-&gt;canAccessLocalStorage()) {
&gt; &gt; +    if (!document-&gt;securityOrigin()-&gt;canAccessLocalStorage() || (document-&gt;settings()-&gt;thirdPartyStorageBlockingEnabled() &amp;&amp; document-&gt;securityOrigin()-&gt;isThirdParty(document-&gt;topDocument()-&gt;securityOrigin()))) {
&gt; 
&gt; Can we fold these checks together?  For example, we could pass the topDocument as an argument to canAccessLocalStorage.  That way we won&apos;t forget to add this check if/when we add more callers of canAccessLocalStorage.

This definitely sounds like a good idea to me. I can revise my patch to reflect this, although I think we probably want to get more of this settled before I submit a second revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692758</commentid>
    <comment_count>11</comment_count>
      <attachid>157780</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-10 11:46:48 -0700</bug_when>
    <thetext>Created attachment 157780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692768</commentid>
    <comment_count>12</comment_count>
      <attachid>157780</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-10 11:53:28 -0700</bug_when>
    <thetext>Comment on attachment 157780
Patch

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

&gt; Source/WebCore/page/SecurityOrigin.cpp:414
&gt; +bool SecurityOrigin::isThirdParty(const SecurityOrigin* other) const

other -&gt; child

&gt; Source/WebCore/page/SecurityOrigin.h:143
&gt; +    bool isThirdParty(const SecurityOrigin*) const;

This function is asymmetric, but it&apos;s not clear which argument is which.  Perhaps we should label the parameter &quot;child&quot; to make that clear?

Also, can we move this function to the &quot;private&quot; section?  It&apos;s better if callers use a &quot;can&quot; function rather than calling this function directly.

&gt; Source/WebCore/testing/InternalSettings.cpp:626
&gt; +    settings()-&gt;setThirdPartyStorageBlockingEnabled(enabled);

I guess this setting already exists?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692769</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-10 11:53:38 -0700</bug_when>
    <thetext>Thanks.  This looks a lot better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692791</commentid>
    <comment_count>14</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-10 12:11:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 157780 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157780&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:414
&gt; &gt; +bool SecurityOrigin::isThirdParty(const SecurityOrigin* other) const
&gt; 
&gt; other -&gt; child
&gt; 
&gt; &gt; Source/WebCore/page/SecurityOrigin.h:143
&gt; &gt; +    bool isThirdParty(const SecurityOrigin*) const;
&gt; 
&gt; This function is asymmetric, but it&apos;s not clear which argument is which.  Perhaps we should label the parameter &quot;child&quot; to make that clear?

It&apos;s not currently asymmetric, but I intentionally invoked the function in canAccessLocalStorage in such a way that if it became asymmetric, it would still make sense. I suppose the parameter should be renamed as such beforehand though.

&gt; 
&gt; &gt; Source/WebCore/testing/InternalSettings.cpp:626
&gt; &gt; +    settings()-&gt;setThirdPartyStorageBlockingEnabled(enabled);
&gt; 
&gt; I guess this setting already exists?

It was added a few days ago, but this is the first thing to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692794</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-10 12:14:33 -0700</bug_when>
    <thetext>&gt; It&apos;s not currently asymmetric,

It&apos;s asymmetric because of universal access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692947</commentid>
    <comment_count>16</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-08-10 16:15:16 -0700</bug_when>
    <thetext>Committed r125335: &lt;http://trac.webkit.org/changeset/125335&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157023</attachid>
            <date>2012-08-07 15:33:52 -0700</date>
            <delta_ts>2012-08-10 11:46:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93390-20120807153304.patch</filename>
            <type>text/plain</type>
            <size>15839</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZlYzUzNzQyZGIxNTVi
MWJjNWY5NDQxZDM2NWQwYTkwOTI2NjdjZS4uNDQ4OTM2Yzk1ZGRhYTlmYThjMTExOTQ4Njk4MTgy
ODQ5MDZkNzVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA4LTA3ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
dGhpcmQtcGFydHkgbG9jYWxTdG9yYWdlIGFuZCBzZXNzaW9uU3RvcmFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzOTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2hlY2tzIGZvciBpZiBhIHBh
Z2UgaXMgdGhpcmQtcGFydHkgYW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgaXMgZW5h
YmxlZCB3aGlsZSBhY2Nlc3Npbmcgc3RvcmFnZS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1hbGxvd2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Uu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vz
c2lvbi1zdG9yYWdlLWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93LmNwcDogQ2hlY2sgaWYgdGhlIG9yaWdpbiB0cnlpbmcgdG8gYWNjZXNzIHN0b3Jh
Z2UgaXMgdGhpcmQtcGFydHkgcmVsYXRpdmUgdG8gdGhlIHRvcCBkb2N1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwOiBBZGQgYSBjYWxsIGluIFNlY3VyaXR5IG9yaWdpbiB0byBzZWUgaWYgYW5vdGhlciBvcmln
aW4gY291bnRzIGFzIGEgdGhpcmQtcGFydHkuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6aXNUaGlyZFBhcnR5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOiBBZGQgYW4gaW50ZXJuYWxzLnNldHRpbmdzIGhv
b2sgZm9yIHNldHRpbmcgdGhpcmQtcGFydHkgc3RvcmFnZSBibG9ja2luZyBlbmFibGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0VGhpcmRQYXJ0eVN0b3JhZ2VCbG9j
a2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEyLTA4LTAzICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMDA1MTg4PiBS
RUdSRVNTSU9OIChTYWZhcmkgNS4xIC0gNik6IENhbm5vdCBjb3JyZWN0bHkgZGlzcGxheSBUcmFk
aXRpb25hbCBNb25nb2xpYW4gU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
MmUxOTgzNzNlMWY4ZjQ5ZTQyZWFhNTQ2ZDYzNTQ2OTg0YzUxYmEwNS4uZjkyNDRjMjZhYjViN2Q2
NzYzNTlkNDExNmUzMmRjOTQwMTk5YTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApA
QCAtNzQ2LDcgKzc0Niw3IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NMb2Nh
bFN0b3JhZ2UoKSkgeworICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFj
Y2Vzc0xvY2FsU3RvcmFnZSgpIHx8IChkb2N1bWVudC0+c2V0dGluZ3MoKS0+dGhpcmRQYXJ0eVN0
b3JhZ2VCbG9ja2luZ0VuYWJsZWQoKSAmJiBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNU
aGlyZFBhcnR5KGRvY3VtZW50LT50b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpIHsK
ICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAg
LTc3Myw3ICs3NzMsNyBAQCBTdG9yYWdlKiBET01XaW5kb3c6OmxvY2FsU3RvcmFnZShFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0xvY2FsU3Rv
cmFnZSgpKSB7CisgICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
TG9jYWxTdG9yYWdlKCkgfHwgKGRvY3VtZW50LT5zZXR0aW5ncygpLT50aGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCgpICYmIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5pc1RoaXJk
UGFydHkoZG9jdW1lbnQtPnRvcERvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSkgewogICAg
ICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5MWI0MWMwOWJiOTA3YTgyNmVmY2Yy
NDQ0ZjdkZTcxZTU5M2YxMjg5Li42ZTNiYWRlMzhmMDliNTk1YTViMWRiMzFjMmVjOTNlMmQwMjVl
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMzk3LDYgKzM5
NywyMCBAQCBTZWN1cml0eU9yaWdpbjo6UG9saWN5IFNlY3VyaXR5T3JpZ2luOjpjYW5TaG93Tm90
aWZpY2F0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIEFzazsKIH0KIAorYm9vbCBTZWN1cml0eU9y
aWdpbjo6aXNUaGlyZFBhcnR5KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvdGhlcikg
Y29uc3QKK3sKKyAgICBpZiAodGhpcyA9PSBvdGhlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKGlzVW5pcXVlKCkgfHwgb3RoZXItPmlzVW5pcXVlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKGVxdWFsKG90aGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU2VjdXJpdHlPcmlnaW46OmdyYW50TG9hZExv
Y2FsUmVzb3VyY2VzKCkKIHsKICAgICAvLyBHcmFudGluZyBwcml2aWxlZ2VzIHRvIHNvbWUsIGJ1
dCBub3QgYWxsLCBkb2N1bWVudHMgaW4gYSBTZWN1cml0eU9yaWdpbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCmluZGV4IDJhNTBiYTdlM2VlY2U2YWE0ZTcxN2I0YzMxNzI1NjhlMjYy
MjkzZTguLjZlYjY4ZjIxM2JmZTE5ZDI2NjFhMWUyMzQ4MmRkZDg4Yjg4NjIzNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTEzOCw2ICsxMzgsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gcmVzb3VyY2VzLCBhbmQgY2FuIHNldCBhcmJpdHJhcnkgaGVhZGVycyBvbiBYTUxIdHRw
UmVxdWVzdHMuCiAgICAgYm9vbCBpc0xvY2FsKCkgY29uc3Q7CiAKKyAgICBib29sIGlzVGhpcmRQ
YXJ0eShjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OworCiAgICAgLy8gVGhlIG9yaWdpbiBp
cyBhIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGFzc2lnbmVkIHdoZW4gdGhlIERvY3VtZW50
IGlzCiAgICAgLy8gY3JlYXRlZC4gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jc2FuZGJveE9yaWdpbgogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBhYWJlMTUwMTBhNzhmOWUwMjhkOTkzNjM0
MGMxZDgyM2VlZjVlOWIzLi4zNTkyZDA1ZGQ5NjQ4ZTMxMDIxNDU0MmViZDRlOTVjZTdiNzE0MDlh
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTYy
MCw0ICs2MjAsMTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRNZW1vcnlJbmZvRW5hYmxl
ZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHNldHRpbmdzKCktPnNldE1l
bW9yeUluZm9FbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNl
dFRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAg
ICBzZXR0aW5ncygpLT5zZXRUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZChlbmFibGVk
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRl
eCA5ZjQwZWYxYTBmYzY1MGY1MzNjYjM2Y2JjYjQyODUyMTRiYzQxMDQ0Li43YjBmNzJhZWIwODMx
MmExYmRiYjZjNTg5YjRiYTE2YTUzNmFjMmU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEVuYWJsZU1vY2tQYWdlUG9wdXAoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBj
b25maWd1cmF0aW9uRm9yVmlld3BvcnQoZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgaW50IGRldmlj
ZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFi
bGVIZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVk
KGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlTdG9yYWdlQmxv
Y2tpbmdFbmFibGVkKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgSW50ZXJuYWxTZXR0aW5ncyhQYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGhvc3REZXN0cm95
ZWQoKSBPVkVSUklERSB7IG1fcGFnZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDQ1YjE0MDRiYjUwNjhiMWM4MzRiNzJiZTk1NTFmMjRm
YmI3ZjBkZTguLjZhY2RhOTg4NTYzYWY5YTliZTg0NDYyMzJlYTQyNjk0MzA3N2NhNTkgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtNzgsNiArNzgs
NyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiBzaG91bGREaXNwbGF5VHJhY2tL
aW5kKGluIERPTVN0cmluZyB0cmFja0tpbmQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICNlbmRp
ZgogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0VGhpcmRQYXJ0eVN0b3JhZ2VC
bG9ja2luZ0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWNhMjI1MmIxNjQwMmI0ODMxOGE2NDcwYzZhNmI0N2ExYWRl
ZWMyZS4uODFjOGJmNTc3ODA5NjU3NDU1ODQ4ZGE3MjY5M2FlNDRjZDRkNzM4YyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDEyLTA4LTA3ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2YgdGhpcmQtcGFydHkgbG9jYWxTdG9yYWdlIGFu
ZCBzZXNzaW9uU3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTMzOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDcmVhdGVkIHRlc3RzIGZvciB0ZXN0aW5nIGFjY2Vzc2luZyBsb2NhbFN0b3JhZ2Ug
YW5kIHNlbGZTdG9yYWdlIGZyb20gYSB0aGlyZCBwYXJ0eSBhbmQgZmlyc3QgcGFydHkgd2hlbiB0
aGlyZC1wYXJ0eSBibG9ja2luZyBpcyBvbiBhbmQgb2ZmLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1hbGxvd2VkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9j
YWwtc3RvcmFnZS1hbGxvd2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNl
c3Npb24tc3RvcmFnZS1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWFsbG93ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vz
c2lvbi1zdG9yYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9y
LWxvY2FsLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itc2Vzc2lvbi1zdG9yYWdlLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA4LTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDUuMSAtIDYpOiBDYW5ub3QgY29ycmVjdGx5IGRp
c3BsYXkgVHJhZGl0aW9uYWwgTW9uZ29saWFuIFNjcmlwdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1hbGxvd2Vk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLWxvY2FsLXN0b3JhZ2UtYWxsb3dlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk0NmJi
NDBlNWExMjUzMGMxZWEwMDE0YTBmMzJkZmQ4NmM0NTIzMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Ut
YWxsb3dlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyBpZnJhbWUgc2hvdWxk
IG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCitUaGlzIGlmcmFtZSBzaG91bGQgbm90IHJldHVy
biBhbnkgZXJyb3JzOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorTm8gZXhjZXB0aW9uCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2Vw
dGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tbG9jYWwtc3RvcmFnZS1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLWFsbG93ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNGQ5NmI4NzZhMDEzYzYxYjY4OGE0YmIwM2FmODU4OGFjY2JkZTEyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9j
YWwtc3RvcmFnZS1hbGxvd2VkLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+Cit2YXIgZnJhbWVzID0gMjsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxk
IG5vdCByZXR1cm4gYW55IGVycm9yczo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1sb2NhbC1z
dG9yYWdlLmh0bWwiPjwvaWZyYW1lPgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4g
YW55IGVycm9yczo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1sb2NhbC1zdG9yYWdlLmh0bWwi
PjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9y
YWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTdiYzFjZTkwNTBlMmQ2YTdkYzdkNDUzNDEz
MGRkODdmNTcyMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNiBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBhIHNlY3VyaXR5IGVycm9yOgorCisK
K1RoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6CisKKworCistLS0tLS0t
LQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitT
RUNVUklUWV9FUlIKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTEtLT4tLT4nCistLS0tLS0tLQorTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTEzODU3ZTJjYTNjYjkyNzBmZmRjZmJiYWUzMWUxMjA2NTU3ZjNj
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK3ZhciBmcmFtZXMgPSAyOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2lu
Z0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwktLWZyYW1lczsK
KwlpZiAoIWZyYW1lcyAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdz
LnNldFRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGZhbHNlKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIGEgc2VjdXJp
dHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItbG9jYWwtc3RvcmFnZS5odG1sIiBv
bmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3Qg
cmV0dXJuIGFueSBlcnJvcnM6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItbG9jYWwtc3RvcmFn
ZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LXNlc3Npb24tc3RvcmFnZS1hbGxvd2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNlc3Npb24tc3RvcmFnZS1hbGxvd2VkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45OTQ2YmI0MGU1YTEyNTMwYzFlYTAwMTRhMGYzMmRmZDg2YzQ1
MjMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTYgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6CisKKwor
VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCisKKy0tLS0tLS0t
CitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK05v
IGV4Y2VwdGlvbgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MS0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNlc3Npb24tc3RvcmFnZS1hbGxvd2Vk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zZXNz
aW9uLXN0b3JhZ2UtYWxsb3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MTdiNmQwOTkyYzhmMzk4OTAw
ZDhkZGJhODFiZmJiYmJkMGRlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zZXNzaW9uLXN0b3JhZ2UtYWxsb3dlZC5odG1s
CkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGZyYW1lcyA9
IDI7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
Kwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6
PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJj
ZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itc2Vzc2lvbi1zdG9yYWdlLmh0bWwiPjwvaWZyYW1l
PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczo8L3A+Cis8aWZy
YW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1v
cmlnaW4taWZyYW1lLWZvci1zZXNzaW9uLXN0b3JhZ2UuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLW9yaWdpbi1zZXNzaW9uLXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYTdiYzFjZTkwNTBlMmQ2YTdkYzdkNDUzNDEzMGRkODdmNTcyMjc0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlz
IGlmcmFtZSBzaG91bGQgcmV0dXJuIGEgc2VjdXJpdHkgZXJyb3I6CisKKworVGhpcyBpZnJhbWUg
c2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0t
LS0tLS0tCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNlc3Npb24tc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDFmMTUwNDBiNGQ1OTFmMTE2NjhiZjFjY2YxMDc5ZWM4YWE1ZWRlYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LXNlc3Npb24tc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgordmFyIGZyYW1lcyA9IDI7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworCWludGVybmFscy5zZXR0aW5ncy5zZXRUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxl
ZCh0cnVlKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCS0tZnJhbWVzOworCWlmICgh
ZnJhbWVzICYmIHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VGhp
cmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQoZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gYSBzZWN1cml0eSBlcnJv
cjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1zZXNzaW9uLXN0b3JhZ2UuaHRtbCIgb25sb2Fk
PSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IHJldHVy
biBhbnkgZXJyb3JzOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXNlc3Npb24tc3RvcmFnZS5o
dG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3Nz
LW9yaWdpbi1pZnJhbWUtZm9yLWxvY2FsLXN0b3JhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWxvY2FsLXN0
b3JhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzkzODZiZjliNTY4NzVlZTE0NGUyZTU0NGY1NmMxYjhm
N2JiNDE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItbG9jYWwtc3RvcmFnZS5odG1sCkBA
IC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordHJ5IHsKKwl2YXIgYyA9
IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisJZG9jdW1lbnQud3JpdGUoJ05vIGV4Y2VwdGlvbicpOwor
fSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJZG9jdW1lbnQud3JpdGUoZXhjZXB0aW9uLm5hbWUpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaGVhZD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdp
bi1pZnJhbWUtZm9yLXNlc3Npb24tc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itc2Vzc2lvbi1zdG9y
YWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYxYmQ3NzBjNDcyZjAzMWE0NWIyZjg4OTg3MTlkZWI1ZDBl
N2I1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXNlc3Npb24tc3RvcmFnZS5odG1sCkBA
IC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordHJ5IHsKKwl2YXIgYyA9
IHdpbmRvdy5zZXNzaW9uU3RvcmFnZTsKKwlkb2N1bWVudC53cml0ZSgnTm8gZXhjZXB0aW9uJyk7
Cit9IGNhdGNoIChleGNlcHRpb24pIHsKKwlkb2N1bWVudC53cml0ZShleGNlcHRpb24ubmFtZSk7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9oZWFkPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157780</attachid>
            <date>2012-08-10 11:46:48 -0700</date>
            <delta_ts>2012-08-10 11:53:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93390-20120810114548.patch</filename>
            <type>text/plain</type>
            <size>21744</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFlMWViY2Q0ZWE2NzYz
M2QyYjEwNzk3ODQwOThiOWM2M2I3ZjVmOC4uNDEyZjhjNDdiZWI0NjJhMzAzMjU3ZWFlMjIxZGM3
MjYzOTQ2NTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA4LTA5ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYmxvY2tpbmcgb2Yg
dGhpcmQtcGFydHkgbG9jYWxTdG9yYWdlIGFuZCBzZXNzaW9uU3RvcmFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzOTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2hlY2tzIGZvciBpZiBhIHBh
Z2UgaXMgdGhpcmQtcGFydHkgYW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgaXMgZW5h
YmxlZCB3aGlsZSBhY2Nlc3Npbmcgc3RvcmFnZS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1hbGxvd2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Uu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vz
c2lvbi1zdG9yYWdlLWFsbG93ZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAgIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc2FtZS1vcmlnaW4tZG9jdW1lbnQtZG9tYWluLXN0b3JhZ2UtYWxs
b3dlZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiBJbml0aWFsaXplIHNlY3VyaXR5T3Jp
Z2luIHdpdGgga25vd2xlZGdlIG9mIGlmIHdlIHNob3VsZCBibG9jayB0aGlyZC1wYXJ0eSBzdG9y
YWdlLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDogQ2hlY2sgaWYgdGhlIG9yaWdpbiB0
cnlpbmcgdG8gYWNjZXNzIHN0b3JhZ2UgaXMgdGhpcmQtcGFydHkgcmVsYXRpdmUgdG8gdGhlIHRv
cCBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOiBBZGQgYSBjYWxsIGluIFNlY3VyaXR5IG9yaWdpbiB0
byBzZWUgaWYgYW5vdGhlciBvcmlnaW4gY291bnRzIGFzIGEgdGhpcmQtcGFydHkuCisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzc0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjppc1RoaXJkUGFydHkp
OgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpibG9ja1RoaXJkUGFydHlTdG9yYWdlKToKKyAgICAgICAgKFNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOiBBZGQgYW4g
aW50ZXJuYWxzLnNldHRpbmdzIGhvb2sgZm9yIHNldHRpbmcgdGhpcmQtcGFydHkgc3RvcmFnZSBi
bG9ja2luZyBlbmFibGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0
VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEy
LTA4LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2FuZGJv
eGluZyB2aWV3IHNvdXJjZSBkb2N1bWVudHMgaXMgaW5lZmZlY3RpdmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGVkOWVlZmVlNmFkZjI5OWQ3OTEzNDE5NjFiZmU3YWFjYjczYmZmY2EuLjdk
MTc4ZmQ3MGI2Y2E2ZGIxMGIwNmZmZjUzMTBmMWQ3ZDhkNWNhZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNTAxNSw2ICs1MDE1LDggQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5
Q29udGV4dCgpCiAgICAgICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+ZW5mb3JjZUZpbGVQ
YXRoU2VwYXJhdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChz
ZXR0aW5ncy0+dGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAg
IHNlY3VyaXR5T3JpZ2luKCktPmJsb2NrVGhpcmRQYXJ0eVN0b3JhZ2UoKTsKICAgICB9CiAKICAg
ICBEb2N1bWVudCogcGFyZW50RG9jdW1lbnQgPSBvd25lckVsZW1lbnQoKSA/IG93bmVyRWxlbWVu
dCgpLT5kb2N1bWVudCgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4MzA0
ODk5NTFiYjc1MTQxOWEyMzBhMTVhZDc0M2QzYjRlNGIxZTFiLi40NDgxNTAzNjMzZDU0NDczNTU0
ZmJmN2VjMGZlODZjOTAyZDk3ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03
NDMsNyArNzQzLDcgQEAgU3RvcmFnZSogRE9NV2luZG93OjpzZXNzaW9uU3RvcmFnZShFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0xvY2FsU3Rv
cmFnZSgpKSB7CisgICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
TG9jYWxTdG9yYWdlKGRvY3VtZW50LT50b3BEb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkg
ewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpA
QCAtNzcwLDcgKzc3MCw3IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6bG9jYWxTdG9yYWdlKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgaWYgKCFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzTG9jYWxT
dG9yYWdlKCkpIHsKKyAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NMb2NhbFN0b3JhZ2UoZG9jdW1lbnQtPnRvcERvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDkxYjQxYzA5YmI5MDdh
ODI2ZWZjZjI0NDRmN2RlNzFlNTkzZjEyODkuLjBhNDM0Y2Q5YTlmYmE3MThhNDM4YTE2NDZiMGEz
NmZhYjBmNmRkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0x
MzMsNiArMTMzLDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwm
IHVybCkKICAgICAsIG1faXNVbmlxdWUoZmFsc2UpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2Vzcyhm
YWxzZSkKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCisgICAgLCBtX2Jsb2NrVGhp
cmRQYXJ0eVN0b3JhZ2UoZmFsc2UpCiAgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24o
ZmFsc2UpCiAgICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxlcyhmYWxz
ZSkKIHsKQEAgLTE1OCw2ICsxNTksNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
KQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MoZmFsc2UpCiAgICAgLCBtX2RvbWFpbldhc1NldElu
RE9NKGZhbHNlKQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoZmFsc2UpCisgICAgLCBt
X2Jsb2NrVGhpcmRQYXJ0eVN0b3JhZ2UoZmFsc2UpCiAgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNl
cGFyYXRpb24oZmFsc2UpCiAgICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JG
aWxlcyhmYWxzZSkKIHsKQEAgLTE3NCw2ICsxNzYsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQogICAgICwgbV91bml2ZXJzYWxB
Y2Nlc3Mob3RoZXItPm1fdW5pdmVyc2FsQWNjZXNzKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRP
TShvdGhlci0+bV9kb21haW5XYXNTZXRJbkRPTSkKICAgICAsIG1fY2FuTG9hZExvY2FsUmVzb3Vy
Y2VzKG90aGVyLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcykKKyAgICAsIG1fYmxvY2tUaGlyZFBh
cnR5U3RvcmFnZShvdGhlci0+bV9ibG9ja1RoaXJkUGFydHlTdG9yYWdlKQogICAgICwgbV9lbmZv
cmNlRmlsZVBhdGhTZXBhcmF0aW9uKG90aGVyLT5tX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24p
CiAgICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxlcyhvdGhlci0+bV9u
ZWVkc0RhdGFiYXNlSWRlbnRpZmllclF1aXJrRm9yRmlsZXMpCiB7CkBAIC0zODgsNiArMzkxLDE3
IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgS1VSTCYgdXJsKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5BY2Nlc3NM
b2NhbFN0b3JhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikgY29uc3QKK3sKKyAg
ICBpZiAoaXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fYmxv
Y2tUaGlyZFBhcnR5U3RvcmFnZSAmJiB0b3BPcmlnaW4tPmlzVGhpcmRQYXJ0eSh0aGlzKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFNlY3VyaXR5T3Jp
Z2luOjpQb2xpY3kgU2VjdXJpdHlPcmlnaW46OmNhblNob3dOb3RpZmljYXRpb25zKCkgY29uc3QK
IHsKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCkBAIC0zOTcsNiArNDExLDIwIEBAIFNlY3Vy
aXR5T3JpZ2luOjpQb2xpY3kgU2VjdXJpdHlPcmlnaW46OmNhblNob3dOb3RpZmljYXRpb25zKCkg
Y29uc3QKICAgICByZXR1cm4gQXNrOwogfQogCitib29sIFNlY3VyaXR5T3JpZ2luOjppc1RoaXJk
UGFydHkoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3Vu
aXZlcnNhbEFjY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHRoaXMgPT0g
b3RoZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc1VuaXF1ZSgpIHx8IG90
aGVyLT5pc1VuaXF1ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiAhaXNT
YW1lU2NoZW1lSG9zdFBvcnQob3RoZXIpOworfQorCiB2b2lkIFNlY3VyaXR5T3JpZ2luOjpncmFu
dExvYWRMb2NhbFJlc291cmNlcygpCiB7CiAgICAgLy8gR3JhbnRpbmcgcHJpdmlsZWdlcyB0byBz
b21lLCBidXQgbm90IGFsbCwgZG9jdW1lbnRzIGluIGEgU2VjdXJpdHlPcmlnaW4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCAyYTUwYmE3ZTNlZWNlNmFhNGU3MTdiNGMzMTcy
NTY4ZTI2MjI5M2U4Li5hZTMyNTZiOGY4NDgwYzFlNGUxMzYzODRlM2VhNzNhMTRkZWMyMTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xMjEsOCArMTIxLDEwIEBAIHB1
YmxpYzoKICAgICAvLyBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dHJlbWVseSBwb3dlcmZ1bCBhYmls
aXR5LiBVc2Ugd2l0aCBjYXV0aW9uIQogICAgIHZvaWQgZ3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsK
IAorICAgIHZvaWQgYmxvY2tUaGlyZFBhcnR5U3RvcmFnZSgpIHsgbV9ibG9ja1RoaXJkUGFydHlT
dG9yYWdlID0gdHJ1ZTsgfQorCiAgICAgYm9vbCBjYW5BY2Nlc3NEYXRhYmFzZSgpIGNvbnN0IHsg
cmV0dXJuICFpc1VuaXF1ZSgpOyB9Ci0gICAgYm9vbCBjYW5BY2Nlc3NMb2NhbFN0b3JhZ2UoKSBj
b25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQorICAgIGJvb2wgY2FuQWNjZXNzTG9jYWxTdG9y
YWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pIGNvbnN0OwogICAgIGJvb2wgY2Fu
QWNjZXNzQ29va2llcygpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAgICAgYm9vbCBj
YW5BY2Nlc3NQYXNzd29yZE1hbmFnZXIoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQog
ICAgIGJvb2wgY2FuQWNjZXNzRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgp
OyB9CkBAIC0xMzgsNiArMTQwLDggQEAgcHVibGljOgogICAgIC8vIHJlc291cmNlcywgYW5kIGNh
biBzZXQgYXJiaXRyYXJ5IGhlYWRlcnMgb24gWE1MSHR0cFJlcXVlc3RzLgogICAgIGJvb2wgaXNM
b2NhbCgpIGNvbnN0OwogCisgICAgYm9vbCBpc1RoaXJkUGFydHkoY29uc3QgU2VjdXJpdHlPcmln
aW4qKSBjb25zdDsKKwogICAgIC8vIFRoZSBvcmlnaW4gaXMgYSBnbG9iYWxseSB1bmlxdWUgaWRl
bnRpZmllciBhc3NpZ25lZCB3aGVuIHRoZSBEb2N1bWVudCBpcwogICAgIC8vIGNyZWF0ZWQuIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3NhbmRib3hP
cmlnaW4KICAgICAvLwpAQCAtMjAwLDYgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Vu
aXZlcnNhbEFjY2VzczsKICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET007CiAgICAgYm9vbCBt
X2NhbkxvYWRMb2NhbFJlc291cmNlczsKKyAgICBib29sIG1fYmxvY2tUaGlyZFBhcnR5U3RvcmFn
ZTsKICAgICBib29sIG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbjsKICAgICBib29sIG1fbmVl
ZHNEYXRhYmFzZUlkZW50aWZpZXJRdWlya0ZvckZpbGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGFhYmUxNTAxMGE3OGY5ZTAyOGQ5OTM2
MzQwYzFkODIzZWVmNWU5YjMuLjM1OTJkMDVkZDk2NDhlMzEwMjE0NTQyZWJkNGU5NWNlN2I3MTQw
OWEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAt
NjIwLDQgKzYyMCwxMCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldE1lbW9yeUluZm9FbmFi
bGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgc2V0dGluZ3MoKS0+c2V0
TWVtb3J5SW5mb0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6
c2V0VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOwor
ICAgIHNldHRpbmdzKCktPnNldFRoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdFbmFibGVkKGVuYWJs
ZWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmlu
ZGV4IDlmNDBlZjFhMGZjNjUwZjUzM2NiMzZjYmNiNDI4NTIxNGJjNDEwNDQuLjdiMGY3MmFlYjA4
MzEyYTFiZGJiNmM1ODliNGJhMTZhNTM2YWMyZTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCkBAIC0xMzksNiArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0RW5hYmxlTW9ja1BhZ2VQb3B1cChib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5n
IGNvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChmbG9hdCBkZXZpY2VQaXhlbFJhdGlvLCBpbnQgZGV2
aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWls
YWJsZUhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJs
ZWQoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eVN0b3JhZ2VC
bG9ja2luZ0VuYWJsZWQoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgaG9zdERlc3Ry
b3llZCgpIE9WRVJSSURFIHsgbV9wYWdlID0gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggNDViMTQwNGJiNTA2OGIxYzgzNGI3MmJlOTU1MWYy
NGZiYjdmMGRlOC4uNmFjZGE5ODg1NjNhZjlhOWJlODQ0NjIzMmVhNDI2OTQzMDc3Y2E1OSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC03OCw2ICs3
OCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBib29sZWFuIHNob3VsZERpc3BsYXlUcmFj
a0tpbmQoaW4gRE9NU3RyaW5nIHRyYWNrS2luZCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2Vu
ZGlmCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVk
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRUaGlyZFBhcnR5U3RvcmFn
ZUJsb2NraW5nRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ODY4MGIxNzFkMzc0NTY0NTc2YzAwNTc5NzgyNjhjYWUx
NWUxMDRjLi4zNjZiNzczZWRjODEyYjk0YmYwNzMxYTE3OTZkYzE2NGRhZjZlMDMyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDgtMDkgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBibG9ja2luZyBvZiB0aGlyZC1wYXJ0eSBsb2NhbFN0b3JhZ2Ug
YW5kIHNlc3Npb25TdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MzM5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENyZWF0ZWQgdGVzdHMgZm9yIHRlc3RpbmcgYWNjZXNzaW5nIGxvY2FsU3RvcmFn
ZSBhbmQgc2VsZlN0b3JhZ2UgZnJvbSBhIHRoaXJkIHBhcnR5IGFuZCBmaXJzdCBwYXJ0eSB3aGVu
IHRoaXJkLXBhcnR5IGJsb2NraW5nIGlzIG9uIGFuZCBvZmYuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1s
b2NhbC1zdG9yYWdlLWFsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Uu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4t
c2Vzc2lvbi1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zZXNzaW9uLXN0b3JhZ2UtYWxsb3dlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1z
ZXNzaW9uLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zZXNzaW9uLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW1lLW9yaWdpbi1kb2N1bWVudC1kb21haW4tc3Rv
cmFnZS1hbGxvd2VkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc2FtZS1vcmlnaW4tZG9jdW1lbnQtZG9tYWluLXN0b3JhZ2UtYWxsb3dlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9kb2N1bWVu
dC1kb21haW4taWZyYW1lLWZvci1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWxv
Y2FsLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itc2Vzc2lvbi1zdG9yYWdlLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA4LTA5ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFr
b3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtXSzJdIFVuc2tpcCB0ZXN0cyByZXF1aXJpbmcgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0
b3JhZ2UtYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk5NDZiYjQwZTVhMTI1MzBjMWVhMDAxNGEwZjMyZGZkODZjNDUyMzEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1s
b2NhbC1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMg
aWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6CisKKworVGhpcyBpZnJhbWUgc2hv
dWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0t
LS0tCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS1hbGxvd2Vk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTc4ZWUxNDU1YzE5OTkxMmM5ODliOTA5OWIwYzViZjM2ZjJjMjhk
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UtYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90
IHJldHVybiBhbnkgZXJyb3JzOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWxvY2FsLXN0b3Jh
Z2UuaHRtbCI+PC9pZnJhbWU+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IHJldHVybiBhbnkg
ZXJyb3JzOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWxvY2FsLXN0b3JhZ2UuaHRtbCI+PC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhN2JjMWNlOTA1MGUyZDZhN2RjN2Q0NTM0MTMwZGQ4
N2Y1NzIyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2
IEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIGEgc2VjdXJpdHkgZXJyb3I6CisKKworVGhp
cyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCisKKy0tLS0tLS0tCitG
cmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VS
SVRZX0VSUgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0t
Pi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2UuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMTM4NTdlMmNhM2NiOTI3MGZmZGNmYmJhZTMxZTEyMDY1NTdmM2MxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgordmFyIGZyYW1lcyA9IDI7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworCWludGVybmFscy5zZXR0aW5ncy5zZXRUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5h
YmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCS0tZnJhbWVzOworCWlm
ICghZnJhbWVzICYmIHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQoZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gYSBzZWN1cml0eSBl
cnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1sb2NhbC1zdG9yYWdlLmh0bWwiIG9ubG9h
ZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1
cm4gYW55IGVycm9yczo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1sb2NhbC1zdG9yYWdlLmh0
bWwiIG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vz
c2lvbi1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk5NDZiYjQwZTVhMTI1MzBjMWVhMDAxNGEwZjMyZGZkODZjNDUyMzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1zZXNzaW9uLXN0b3JhZ2UtYWxsb3dlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NiBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55IGVycm9yczoKKworCitUaGlz
IGlmcmFtZSBzaG91bGQgbm90IHJldHVybiBhbnkgZXJyb3JzOgorCisKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorTm8gZXhj
ZXB0aW9uCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+
LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWFsbG93ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNlc3Npb24t
c3RvcmFnZS1hbGxvd2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JiMTQzMWYzZDU4NjAyMjMwZTgwNTE3
ZjkwOGY4MzViZThmYTIzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNlc3Npb24tc3RvcmFnZS1hbGxvd2VkLmh0bWwKQEAg
LTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
aWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6PC9wPgorPGlmcmFtZSBzcmM9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFt
ZS1mb3Itc2Vzc2lvbi1zdG9yYWdlLmh0bWwiPjwvaWZyYW1lPgorPHA+VGhpcyBpZnJhbWUgc2hv
dWxkIG5vdCByZXR1cm4gYW55IGVycm9yczo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1zZXNz
aW9uLXN0b3JhZ2UuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zZXNzaW9uLXN0
b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTdiYzFj
ZTkwNTBlMmQ2YTdkYzdkNDUzNDEzMGRkODdmNTcyMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJu
IGEgc2VjdXJpdHkgZXJyb3I6CisKKworVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCByZXR1cm4gYW55
IGVycm9yczoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgorCistLS0tLS0tLQorRnJhbWU6ICc8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LXNlc3Npb24tc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1vcmlnaW4tc2Vzc2lvbi1zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFmMTUwNDBiNGQ1
OTFmMTE2NjhiZjFjY2YxMDc5ZWM4YWE1ZWRlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNlc3Npb24tc3RvcmFnZS5odG1s
CkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGZyYW1lcyA9
IDI7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
Kwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworCWludGVybmFscy5zZXR0aW5n
cy5zZXRUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rp
b24gZGVjcmVtZW50KCkgeworCS0tZnJhbWVzOworCWlmICghZnJhbWVzICYmIHdpbmRvdy50ZXN0
UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2lu
Z0VuYWJsZWQoZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
aWZyYW1lIHNob3VsZCByZXR1cm4gYSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZy
YW1lLWZvci1zZXNzaW9uLXN0b3JhZ2UuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJh
bWU+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IHJldHVybiBhbnkgZXJyb3JzOjwvcD4KKzxp
ZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3Nz
LW9yaWdpbi1pZnJhbWUtZm9yLXNlc3Npb24tc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVu
dCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWxv
Y2FsLXN0b3JhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3Vy
Y2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNzkzODZiZjliNTY4NzVlZTE0NGUyZTU0NGY1NmMxYjhmN2JiNDE5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3Jp
Z2luLWlmcmFtZS1mb3ItbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgordHJ5IHsKKwl2YXIgYyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7
CisJZG9jdW1lbnQud3JpdGUoJ05vIGV4Y2VwdGlvbicpOworfSBjYXRjaCAoZXhjZXB0aW9uKSB7
CisJZG9jdW1lbnQud3JpdGUoZXhjZXB0aW9uLm5hbWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzwvYm9keT4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXNlc3Npb24t
c3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3Itc2Vzc2lvbi1zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGYxYmQ3NzBjNDcyZjAzMWE0NWIyZjg4OTg3MTlkZWI1ZDBlN2I1NgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdp
bi1pZnJhbWUtZm9yLXNlc3Npb24tc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgordHJ5IHsKKwl2YXIgYyA9IHdpbmRvdy5zZXNzaW9uU3RvcmFn
ZTsKKwlkb2N1bWVudC53cml0ZSgnTm8gZXhjZXB0aW9uJyk7Cit9IGNhdGNoIChleGNlcHRpb24p
IHsKKwlkb2N1bWVudC53cml0ZShleGNlcHRpb24ubmFtZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPC9ib2R5PgorPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZG9tYWluLWlmcmFtZS1mb3ItbG9j
YWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvZG9jdW1lbnQtZG9tYWluLWlmcmFtZS1mb3ItbG9jYWwtc3RvcmFnZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlZjI4MTMwOTQ1YjZjMmVkYWExNTcwYTI1ZjhmMzQ1YjlhMzM4YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9kb2N1bWVu
dC1kb21haW4taWZyYW1lLWZvci1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit0cnkgeworCWRvY3VtZW50LmRvbWFpbiA9IGRvY3Vt
ZW50LmRvbWFpbjsKKwl2YXIgYyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisJZG9jdW1lbnQud3Jp
dGUoJ05vIGV4Y2VwdGlvbicpOworfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJZG9jdW1lbnQud3Jp
dGUoZXhjZXB0aW9uLm5hbWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9k
eT4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c2FtZS1vcmlnaW4tZG9jdW1lbnQtZG9tYWluLXN0b3JhZ2UtYWxsb3dlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLWRvY3VtZW50LWRv
bWFpbi1zdG9yYWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NDZiYjQwZTVh
MTI1MzBjMWVhMDAxNGEwZjMyZGZkODZjNDUyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLWRvY3VtZW50LWRvbWFpbi1zdG9y
YWdlLWFsbG93ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgaWZyYW1lIHNo
b3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6CisKKworVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBy
ZXR1cm4gYW55IGVycm9yczoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitObyBl
eGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc2Ft
ZS1vcmlnaW4tZG9jdW1lbnQtZG9tYWluLXN0b3JhZ2UtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zYW1lLW9yaWdpbi1kb2N1bWVudC1kb21haW4tc3RvcmFn
ZS1hbGxvd2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzg2ZmVhMTcwZTU2MGZjZmI1ODU5NWQwZjdhNzVl
ODAxNjVhZTY0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc2FtZS1vcmlnaW4tZG9jdW1lbnQtZG9tYWluLXN0b3JhZ2UtYWxsb3dlZC5odG1sCkBA
IC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGZyYW1lcyA9IDI7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0
ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworCWludGVybmFscy5zZXR0aW5ncy5z
ZXRUaGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24g
ZGVjcmVtZW50KCkgeworCS0tZnJhbWVzOworCWlmICghZnJhbWVzICYmIHdpbmRvdy50ZXN0UnVu
bmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0Vu
YWJsZWQoZmFsc2UpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZy
YW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1m
b3ItbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzxw
PlRoaXMgaWZyYW1lIHNob3VsZCBub3QgcmV0dXJuIGFueSBlcnJvcnM6PC9wPgorPGlmcmFtZSBz
cmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvZG9jdW1lbnQtZG9t
YWluLWlmcmFtZS1mb3ItbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48
L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="167747"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="167752"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>