<?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>57842</bug_id>
          
          <creation_ts>2011-04-05 06:55:59 -0700</creation_ts>
          <short_desc>Add support for link rel type &quot;subresource&quot;</short_desc>
          <delta_ts>2011-04-17 17:02:36 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>51940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Peters">gavinp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>gavinp</cc>
    
    <cc>mbelshe</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379520</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-04-05 06:55:59 -0700</bug_when>
    <thetext>Link rel=prefetch is great for cache warming for resources on subsequent pages, but it launches requests at too low a priority to use for subresources of the current page.

Particularly after https://bugs.webkit.org/show_bug.cgi?id=51940 is implemented, a rel type that launches requests at an higher priority is going to be very useful.  This rel type is in the HTML5 spec at http://wiki.whatwg.org/wiki/RelExtensions .  An expected use case will be for servers to provide subresource hints in link headers, which will allow servers to help make the web faster.

 This feature continues my implementation of the Link header, which we&apos;ve talked about in WebKit-dev in https://lists.webkit.org/pipermail/webkit-dev/2011-February/016034.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379544</commentid>
    <comment_count>1</comment_count>
      <attachid>88228</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-04-05 07:39:05 -0700</bug_when>
    <thetext>Created attachment 88228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379546</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 07:41:31 -0700</bug_when>
    <thetext>Attachment 88228 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/WebCore/loader/cache/CachedResourceLoader.h:72:  The parameter name &quot;priority&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379547</commentid>
    <comment_count>3</comment_count>
      <attachid>88228</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-04-05 07:42:00 -0700</bug_when>
    <thetext>Comment on attachment 88228
Patch

The http test isn&apos;t working as gloriously as it could, and I believe that&apos;s an instance of https://bugs.webkit.org/show_bug.cgi?id=49238 , which I will hack at next.

Meanwhile, this patch continues the development path of the Link header, from https://lists.webkit.org/pipermail/webkit-dev/2011-February/016034.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379549</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-04-05 07:42:28 -0700</bug_when>
    <thetext>A note on the style failure: the default argument requires it; see the same pattern a few lines up in the same header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379600</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-05 08:53:05 -0700</bug_when>
    <thetext>I still don&apos;t see the rel type registered at &lt;http://paramsr.us/link-relation-types/&gt;, which we should probably do before landing any code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379638</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-05 09:29:30 -0700</bug_when>
    <thetext>Can we add a test case that has a &lt;link rel=subresource&gt; which loads a non-cacheable resource then checks that it may be used as any other type on the same page without re-requesting it (e.g. as an img, script, style, iframe). I believe you can reuse some of the machinery introduced by http://trac.webkit.org/changeset/44350 .

Also, as an aside, we probably should teach the HTMLPreloadScanner about rel=subresource. That is fine to do as a follow-up as long as it is filed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379695</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-05 10:06:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; A note on the style failure: the default argument requires it; see the same pattern a few lines up in the same header.

You can omit argument names even with default arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379698</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-05 10:09:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I still don&apos;t see the rel type registered at &lt;http://paramsr.us/link-relation-types/&gt;, which we should probably do before landing any code.

This is &lt;http://www.w3.org/html/wg/tracker/issues/27&gt;.  I don&apos;t think we need to gate this patch on the resolution of that issue.  I&apos;m sure Gavin will register the rel type in whatever registry the HTML WG decides to use.  At the moment, the spec says to use &lt;http://wiki.whatwg.org/wiki/RelExtensions&gt;, which is what he&apos;s done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379700</commentid>
    <comment_count>9</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-04-05 10:13:50 -0700</bug_when>
    <thetext>Thanks everyone for the comments!

Tony,

Re: the test

I can definitely write the test, but right now I don&apos;t think we&apos;d pass it.  We&apos;ll make a second request, and as a result go back to our disk cache.  In the case of non-cacheable content, a 304 is the best case afaik.

There&apos;s two things worth considering for fixing this:

- the underlying disk cache might note subresource requests and make it available despite cacheability.  I believe we might have discussed this before.  :-)

- WebKit&apos;s cached resource hierarchy really ought to change so that CachedImage is just a view of the same underlying bytes in a CachedResource.

But even without either of those two changes, I think this CL is still useful; for the subresource rel type in particular is being used by people who we can hope are aware of the underlying cache issues.


Re: preload scanning

I&apos;m not totally convinced here.  I don&apos;t know how useful the HTML rel=subresource type is, and as Alexey points out above, it&apos;s really most useful in the HTTP.  However, without a preload scanner, I suppose it is totally useless.  The other concern is that a preload scanner will hide the network prioritization bug https://bugs.webkit.org/show_bug.cgi?id=49238 , so I would at least want to hold off until we land that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379701</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-05 10:14:54 -0700</bug_when>
    <thetext>The nice thing about proper registration (and presumably the reason why it&apos;s not registered yet) is that you need a spec/documentation to file with registration. That&apos;s much preferable to adding unspecified and undiscussed features to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379720</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-05 10:34:47 -0700</bug_when>
    <thetext>&gt; The nice thing about proper registration (and presumably the reason why it&apos;s not registered yet) is that you need a spec/documentation to file with registration.

That&apos;s indeed one of the arguments folks have put forward for using the IANA registry.  There, of course, other arguments in favor of the other registry.  The proper forum for discussing which registry to use, however, isn&apos;t this bug.  It&apos;s the W3C HTML working group.

&gt; That&apos;s much preferable to adding unspecified and undiscussed features to WebKit.

If you&apos;d like a specification and/or discussion, you don&apos;t need to hide behind IANA.  You can just ask for those things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379726</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-05 10:40:01 -0700</bug_when>
    <thetext>&gt; Re: the test
&gt; 
&gt; I can definitely write the test, but right now I don&apos;t think we&apos;d pass it.  We&apos;ll make a second request, and as a result go back to our disk cache.  In the case of non-cacheable content, a 304 is the best case afaik.

I don&apos;t see the point of exposing rel=subresource without it. Perhaps I&apos;m not understanding the use-case, but I thought the primary use case is for performance. With that bug in place, it is just a performance booby trap. Maybe I&apos;m missing another use-case?

&gt; Re: preload scanning
&gt; 
&gt; I&apos;m not totally convinced here.  I don&apos;t know how useful the HTML rel=subresource type is, and as Alexey points out above, it&apos;s really most useful in the HTTP.  However, without a preload scanner, I suppose it is totally useless.  The other concern is that a preload scanner will hide the network prioritization bug https://bugs.webkit.org/show_bug.cgi?id=49238 , so I would at least want to hold off until we land that.

Actually, I think the HTML tag is very useful. Last week a web perf optimization guy emailed me about how to preload subresources in WebKit. The best technique he had found was to preload the subresources into &lt;object&gt; elements. Unfortunately, this is a pretty bad idea as the object actually acts like an iframe in that case, meaning that any textual content gets layout. The 200k compiled JS resource he was preloading took 500ms to perform line breaking on my workstation (see bug 56796). Unfortunately, I couldn&apos;t offer any reasonable approach other than to wait for something like rel=subresource.

On a similar note, a couple of months ago, there was a large thread on the whatwg about introducing a noexecute attribute to the &lt;script&gt; element so that a script could be downloaded without execution (see http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-February/030161.html). A problem with that proposal is that it only addresses preloading a subresource for scripts. With rel=subresource, a web dev could effectively preload any type of subresource needed by the page.

I think rel=subresource addresses these types of use cases in a really general way. Whether the preload scanner detects it is orthogonal to this patch, I just thought I&apos;d bring it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379732</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-05 10:44:59 -0700</bug_when>
    <thetext>&gt; If you&apos;d like a specification and/or discussion, you don&apos;t need to hide behind IANA.

You don&apos;t need to hide _from_ IANA either. Let&apos;s keep Bugzilla discussions polite and courteous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387339</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-17 01:51:05 -0700</bug_when>
    <thetext>Sounds like the current status here is that we&apos;d like to add support for this feature, but possible more registration and/or specification might be helpful.  IMHO, we should accept this patch now and then address any registration requirements that might arise out of Issue 27 in the HTML working group at such time as they actually become requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387360</commentid>
    <comment_count>15</comment_count>
      <attachid>88228</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-17 09:47:16 -0700</bug_when>
    <thetext>Comment on attachment 88228
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:64
&gt; +    case CachedResource::LinkResource:
&gt; +        if (priority == ResourceLoadPriorityLowest)
&gt; +            return ResourceRequest::TargetIsPrefetch;
&gt; +        return ResourceRequest::TargetIsSubresource;

This seems slightly like back-door dataflow, but it&apos;s probably ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387376</commentid>
    <comment_count>16</comment_count>
      <attachid>88228</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-17 10:58:15 -0700</bug_when>
    <thetext>Comment on attachment 88228
Patch

Rejecting attachment 88228 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-7&apos;, &apos;build&apos;...&quot; exit_code: 2

Last 500 characters of output:
tenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /mnt/git/webkit-commit-queue/WebKitBuild/WebCore.build/Debug/WebCore.build/Script-5DF50887116F3077005202AB.sh

** BUILD FAILED **


The following build commands failed:
WebCore:
	CompileC /mnt/git/webkit-commit-queue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/CachedResourceRequest.o /mnt/git/webkit-commit-queue/Source/WebCore/loader/cache/CachedResourceRequest.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/8457705</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387389</commentid>
    <comment_count>17</comment_count>
      <attachid>89955</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-17 12:17:13 -0700</bug_when>
    <thetext>Created attachment 89955
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387415</commentid>
    <comment_count>18</comment_count>
      <attachid>89955</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-17 14:30:48 -0700</bug_when>
    <thetext>Comment on attachment 89955
Patch for landing

Clearing flags on attachment: 89955

Committed r84110: &lt;http://trac.webkit.org/changeset/84110&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387416</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-17 14:30:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387469</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-17 16:59:41 -0700</bug_when>
    <thetext>This patch broke the Chromium build because one instance of CachedResource::LinkPrefetch wasn&apos;t renamed to  CachedResource::LinkResource.

Committed build fix in changeset 84116&lt;http://trac.webkit.org/changeset/84116&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387471</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-17 17:02:36 -0700</bug_when>
    <thetext>Thanks Dan.  I wonder why it got a green on cr-linux....</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88228</attachid>
            <date>2011-04-05 07:39:05 -0700</date>
            <delta_ts>2011-04-17 12:17:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57842-20110405073903.patch</filename>
            <type>text/plain</type>
            <size>23932</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5MzYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Mjc4NWRhMTNkMTI3NTZhYjhjMjBk
NzE5YmE2NzdjNThkYjQxMDdjLi5hNTUzNjI2NmFiZDhkMmM0MjY5MmZlNGY3NmI4OGQ5MGY5YTUw
MGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDQtMDUgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGxpbmsgcmVsIHR5cGUgInN1YnJlc291cmNlIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc4NDIKKwor
ICAgICAgICBMaW5rIHJlbD1wcmVmZXRjaCBpcyBncmVhdCBmb3IgY2FjaGUgd2FybWluZyBmb3Ig
cmVzb3VyY2VzIG9uCisgICAgICAgIHN1YnNlcXVlbnQgcGFnZXMsIGJ1dCBpdCBsYXVuY2hlcyBy
ZXF1ZXN0cyBhdCB0b28gbG93IGEgcHJpb3JpdHkKKyAgICAgICAgdG8gdXNlIGZvciBzdWJyZXNv
dXJjZXMgb2YgdGhlIGN1cnJlbnQgcGFnZS4KKworICAgICAgICBEdXJpbmcgdGVzdGluZywgSSB3
YXMgZGlzc2Fwb2ludGVkIHRvIHNlZSB0aGUgcmVzdWx0cyBmb3IgdGhlIGh0dHAKKyAgICAgICAg
dGVzdCBiZWxvdyBkb24ndCBnaXZlIHRoZSBzdWJyZXNvdXJjZSBwcmlvcml0eSBvcmRlcmluZy4g
IFRoaXMgaXMKKyAgICAgICAgYW5vdGhlciBpbnN0YW5jZSBvZiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyMzgKKyAgICAgICAgd2hpY2ggSSdsbCBiZSB3b3JraW5n
IG9uIG5leHQsIGFuZCB0aHVzIGZpeCB0aGUgdGVzdC4KKworICAgICAgICAqIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9zdWJyZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdWJyZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLXBy
ZWZldGNoLWFuZC1zdWJyZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAy
MDExLTA0LTA1ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGFkZCBjaHJvbWl1bS1saW51eCBleHBlY3RhdGlvbiBmb3IgZmFz
dC9ydWJ5L292ZXJoYW5nLXZlcnRpY2FsLmh0bWwgKHRoZSB0ZXN0IGNoYW5nZWQgaW4gcjgyOTAz
KS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdWJy
ZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2NWJmZTI2NDUyMDRkMTMy
NTdlY2QyNDYyOTVjMGE5NGQ3MWNjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorcHJlZmV0Y2gubGluayBoYXMgTUlNRSB0eXBlIGFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQorUEFTUyBvbmxvYWQgY2FsbGVkIQorVGhpcyB0ZXN0IHdpbGwgb25seSBwcmludCAiUEFT
UyIgb3IgIkZBSUwiIGlmIGxpbmsgcHJlZmV0Y2hlcyBhcmUgZW5hYmxlZCwgb3RoZXJ3aXNlIGl0
IHdpbGwgc2hvdyBub3RoaW5nIGJlbG93LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvc3VicmVzb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDc3ZTAzNzYz
MjU1YWIwMzVjMjc4ZGVhNWJmOTUyMTcwODJkY2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWwKQEAgLTAsMCAr
MSwyMCBAQAorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHByZWZldGNoX29ubG9hZCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdvbmxvYWQgY2FsbGVk
IScpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7Cit9
Cis8L3NjcmlwdD4KKzxodG1sPgorPHA+VGhpcyB0ZXN0IHdpbGwgb25seSBwcmludCAiUEFTUyIg
b3IgIkZBSUwiIGlmIGxpbmsgcHJlZmV0Y2hlcyBhcmUKK2VuYWJsZWQsIG90aGVyd2lzZSBpdCB3
aWxsIHNob3cgbm90aGluZyBiZWxvdy48L3A+Cis8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiBy
ZWw9InByZWZldGNoIiBvbmxvYWQ9InByZWZldGNoX29ubG9hZCgpIiBvbmVycm9yPSJ0ZXN0RmFp
bGVkKCdvbmVycm9yJykiIC8+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVzb3VyY2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLXByZWZldGNoLWFuZC1z
dWJyZXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4NDc4ODIxNmRhYWIzMTVjOWM4
NWFmNjk0YTMzYzgzYTYyOTU5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsOCBAQAorUmVzb3VyY2UgcmVxdWVzdHM6CisKKworMXN0LmpwZworMm5kLmpw
ZworM3JkLmpwZworNHRoLmpwZworNXRoLmpwZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2xpbmstcmVsLXByZWZldGNoLWFuZC1zdWJyZXNvdXJjZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLXByZWZldGNoLWFuZC1zdWJyZXNvdXJj
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE5YTI2MjMwZTYyZjBiNzdjZWM5N2FiMzZhN2E3ZmU3YTIxMTVj
N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1y
ZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLmh0bWwKQEAgLTAsMCArMSw3MyBAQAorPGh0bWw+
Cis8aGVhZD4KKyAgPHNjcmlwdD4KK2Z1bmN0aW9uIENhbGxDb21tYW5kKGNtZCkKK3sKKyB0cnkg
eworICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgICByZXEub3BlbigiR0VU
IiwgIi9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9IiArIGNtZCwgZmFs
c2UpOworICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7
CisgfSBjYXRjaCAoZXgpIHsKKyAgICAgcmV0dXJuICIiOworIH0KK30KKworZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZW5kVGVz
dCgpCit7CisgICAgZ2V0UmVzb3VyY2VMb2coKTsKKyAgICBDYWxsQ29tbWFuZCgiY2xlYXItcmVz
b3VyY2UtcmVxdWVzdC1sb2ciKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVu
Y3Rpb24gZ2V0UmVzb3VyY2VMb2coKQoreworICAgIHZhciBsb2cgPSBDYWxsQ29tbWFuZCgiZ2V0
LXJlc291cmNlLXJlcXVlc3QtbG9nIik7CisgICAgdmFyIGxvZ0xpbmVzID0gbG9nLnNwbGl0KCdc
bicpOworICAgIGxvZ0xpbmVzLnNvcnQoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0JykuaW5uZXJUZXh0ID0gbG9nTGluZXMuam9pbignXG4nKTsKK30KKworQ2FsbENvbW1h
bmQoInN0YXJ0LXJlc291cmNlLXJlcXVlc3QtbG9nIik7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIHN0YXJ0VGVzdCwgZmFsc2UpOworICA8L3NjcmlwdD4KKworICA8IS0tIGxpbmsg
cmVsPXN1YnJlc291cmNlIGlzIHZlcnkgc2ltaWxhciB0byBsaW5rIHJlbD1wcmVmZXRjaCwgaG93
ZXZlciBpdCBpcworICAgICAgIGV4cGVjdGVkIHRvIGhhdmUgYSBoaWdoZXIgbmV0d29yayBwcmlv
cml0eS4gIFRoaXMgdGVzdCBzaG91bGQgY29uZmlybSB0aGF0IHRoZQorICAgICAgIHByaW9yaXRp
ZXMgb2YgdGhlIHR3byB0eXBlcyBvZiBwcmVmZXRjaCBhcmUgYmVpbmcgb2JzZXJ2ZWQgLS0+CisK
KyAgPHNjcmlwdD4KKyAgdmFyIGxpbmtMb2FkQ291bnQgPSA1OworCisgIGZ1bmN0aW9uIGRlY3Jl
bWVudExpbmtMb2FkQ291bnQoKQorICB7CisgICAgICBsaW5rTG9hZENvdW50LS07CisgICAgICBp
ZiAobGlua0xvYWRDb3VudCA9PSAwKSB7CisgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgfQor
ICB9CisgIDwvc2NyaXB0PgorICA8bGluayByZWw9cHJlZmV0Y2ggb25sb2FkPSJkZWNyZW1lbnRM
aW5rTG9hZENvdW50KCkiIGhyZWY9Ii9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2Nv
bW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD0xc3QuanBnIj4KKyAgPGxpbmsgcmVsPXN1
YnJlc291cmNlIG9ubG9hZD0iZGVjcmVtZW50TGlua0xvYWRDb3VudCgpIiBocmVmPSIvcmVzb3Vy
Y2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBh
dGg9Mm5kLmpwZyI+CisgIDxsaW5rIHJlbD1wcmVmZXRjaCBvbmxvYWQ9ImRlY3JlbWVudExpbmtM
b2FkQ291bnQoKSIgaHJlZj0iL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFu
ZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPTNyZC5qcGciPgorICA8bGluayByZWw9cHJlZmV0
Y2ggb25sb2FkPSJkZWNyZW1lbnRMaW5rTG9hZENvdW50KCkiIGhyZWY9Ii9yZXNvdXJjZXMvbmV0
d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9nLXJlc291cmNlLXJlcXVlc3QmcGF0aD00dGgu
anBnIj4KKyAgPGxpbmsgcmVsPXN1YnJlc291cmNlIG9ubG9hZD0iZGVjcmVtZW50TGlua0xvYWRD
b3VudCgpIiBocmVmPSIvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPWxv
Zy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9NXRoLmpwZyI+Cis8L2hlYWQ+Cis8Ym9keT4KKworICA8
ZGl2IGNsYXNzPSJib3ggYm9yZGVyZWQiPjwvZGl2PgorCisgIDxoMj5SZXNvdXJjZSByZXF1ZXN0
czo8L2gyPgorICA8cHJlIGlkPSJyZXN1bHQiPlJlcXVlc3QgbG9nIGdvZXMgaGVyZSBpbiBEUlQ8
L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNzY3
NTQ1MTEzYmJiNWRiNmZmNmE4OGNhOGNhMWYwMGZlNTMzOThkNy4uMmYyZTQ1MmJiM2M5MWNlZGQy
OTAxZDAxMmMxMGNkMDhhY2MwYTM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTUw
OSw2ICs1MDksNyBAQCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwK
IGh0dHAvdGVzdHMvbWltZS9zdGFuZGFyZC1tb2RlLWxvYWRzLXN0eWxlc2hlZXQtd2l0aC1lbXB0
eS1jb250ZW50LXR5cGUuaHRtbAogaHR0cC90ZXN0cy9taW1lL3N0YW5kYXJkLW1vZGUtbG9hZHMt
c3R5bGVzaGVldC13aXRoLXRleHQtY3NzLWFuZC1pbnZhbGlkLXR5cGUuaHRtbAogaHR0cC90ZXN0
cy9taXNjL2FjaWQzLmh0bWwKK2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQt
c3VicmVzb3VyY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQt
dHdpY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogaHR0cC90
ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCkBAIC05MjEsNiArOTIyLDcg
QEAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKIGZhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1vbmVycm9yLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9wcmVmZXRjaC1vbmxvYWQuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LWJlZm9yZWxvYWQuaHRtbAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0
bWwKIAogIyBUZXN0cyBmYWlsaW5nIGJlY2F1c2UgdGhlIGNvbnRleHQgbWVudSBpcyBncmFiYmlu
ZyBtb3VzZSBldmVudHMuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MDYwMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCA0MjgwNDc5MDc0NjRlZjRkNTk2
MDRiNDBjNzBhNjk2NTcwNDkzNjAyLi5jMzQxMjM4ODA3NmExNTkyZDQ2N2NiNTM1OTcyODZkMmE4
ZmNhM2UwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMTg1LDYgKzE4NSw4IEBAIGZh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJlZmV0Y2gtYmVmb3JlbG9hZC5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
cHJlZmV0Y2gtb25lcnJvci5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gt
b25sb2FkLmh0bWwKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdWJyZXNvdXJjZS5odG1sCito
dHRwL3Rlc3RzL21pc2MvbGluay1yZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLmh0bWwKIGh0
dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwKIAogIyBGaWxlbmFtZXMgYXJlbid0
IGZpbHRlcmVkIG91dCBmcm9tIGVkaXQgZHJhZ3MgeWV0LCBzZWUgaHR0cHM6Ly9idWdzLndla2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDFi
NWQwNDZhYmNiNmZjMzAyNDBkYzI4MDMwNTZlNWUwNWZkYWE0YjIuLmFlNzdlM2ZkNjUzODQ1NDcz
YjBhZDc1NjYwZTI0MDQ1YzIzMWJmYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjk4
OCw2ICsyOTg4LDggQEAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKIGZh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1iZWZvcmVsb2FkLmh0bWwKIGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmVycm9yLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1
YnJlc291cmNlLmh0bWwKK2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3Vi
cmVzb3VyY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogCiAj
IFtRdF0gZmFzdC90ZXh0L2JpZGktZXhwbGljaXQtZW1iZWRkaW5nLXBhc3QtZW5kLmh0bWwgZmFp
bHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggYTIyNGE5NzQ2NjkzYTVlZTIyMDNjZjJl
YzVlNzAyMTc3Zjc4OWI5My4uYzZhNzAxZmY3MjEwNjBiMTFmYzc5ZGJhYzVlM2M3MzU2ZjhjNzYx
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTk5Myw2ICs5OTMsOCBAQCBmYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLWJlZm9yZWxvYWQuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLW9uZXJyb3IuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC5odG1sCitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3VicmVzb3VyY2UuaHRtbAoraHR0cC90
ZXN0cy9taXNjL2xpbmstcmVsLXByZWZldGNoLWFuZC1zdWJyZXNvdXJjZS5odG1sCiBodHRwL3Rl
c3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5odG1sCiAKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIFdJTiB5ZXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjllYTI4ZWY0ZWI4MjQ2NGFiOTNiYjhkZjlhM2Q2Mjg3YzY3ZDI3Mi4uZTljODkyMzg5MmI5
NTA1YTU5N2MyMTJkMWQ2N2E0OGYxMzY1MzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBA
CisyMDExLTA0LTA1ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBsaW5rIHJlbCB0eXBlICJzdWJyZXNvdXJjZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODQyCisKKyAgICAgICAgTGluayByZWw9cHJlZmV0Y2gg
aXMgZ3JlYXQgZm9yIGNhY2hlIHdhcm1pbmcgZm9yIHJlc291cmNlcyBvbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhZ2VzLCBidXQgaXQgbGF1bmNoZXMgcmVxdWVzdHMgYXQgdG9vIGxvdyBhIHByaW9y
aXR5CisgICAgICAgIHRvIHVzZSBmb3Igc3VicmVzb3VyY2VzIG9mIHRoZSBjdXJyZW50IHBhZ2Uu
CisKKyAgICAgICAgUGFydGljdWxhcmx5IGFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTk0MAorICAgICAgICBpcyBpbXBsZW1lbnRlZCwgYSByZWwgdHlwZSB0
aGF0IGxhdW5jaGVzIHJlcXVlc3RzIGF0IGFuIGhpZ2hlcgorICAgICAgICBwcmlvcml0eSBpcyBn
b2luZyB0byBiZSB2ZXJ5IHVzZWZ1bC4gIFRoaXMgcmVsIHR5cGUgaXMgaW4gdGhlCisgICAgICAg
IEhUTUw1IHNwZWMgYXQgaHR0cDovL3dpa2kud2hhdHdnLm9yZy93aWtpL1JlbEV4dGVuc2lvbnMg
LiAgQW4KKyAgICAgICAgZXhwZWN0ZWQgdXNlIGNhc2Ugd2lsbCBiZSBmb3Igc2VydmVycyB0byBw
cm92aWRlIHN1YnJlc291cmNlIGhpbnRzCisgICAgICAgIGluIGxpbmsgaGVhZGVycywgd2hpY2gg
d2lsbCBhbGxvdyBzZXJ2ZXJzIHRvIGhlbHAgbWFrZSB0aGUgd2ViCisgICAgICAgIGZhc3Rlci4K
KworICAgICAgICBUaGlzIGZlYXR1cmUgY29udGludWVzIG15IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBMaW5rIGhlYWRlciwgd2hpY2gKKyAgICAgICAgd2UndmUgdGFsa2VkIGFib3V0IGluIFdlYktp
dC1kZXYgaW4KKyAgICAgICAgaHR0cHM6Ly9saXN0cy53ZWJraXQub3JnL3BpcGVybWFpbC93ZWJr
aXQtZGV2LzIwMTEtRmVicnVhcnkvMDE2MDM0Lmh0bWwuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9zdWJyZXNvdXJjZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL21pc2MvbGluay1yZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLmh0bWwKKworICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
Om9ubG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6UmVsQXR0cmlidXRlOjpSZWxBdHRyaWJ1dGUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmlzTGlua1Jlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVjcmVtZW50UmVx
dWVzdENvdW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmxvYWQpOgorCiAyMDExLTA0LTA1ICBO
aWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKaW5kZXggYmM2MDhhZmZlNzQ0NzQ0NzkyZjY4MjAwZDI2ZDllNTNjZDJmNDNiZi4uMjUwOGY5
ZGY4ODliNTRmYjRhYzgxMWEyNGUwNGIxZTYxNDczYzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQXR0cmli
dXRlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTc4LDggKzc5
LDggQEAgSFRNTExpbmtFbGVtZW50Ojp+SFRNTExpbmtFbGVtZW50KCkKICAgICB9CiAgICAgCiAj
aWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi0gICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoKQot
ICAgICAgICBtX2NhY2hlZExpbmtQcmVmZXRjaC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIGlm
IChtX2NhY2hlZExpbmtSZXNvdXJjZSkKKyAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UtPnJl
bW92ZUNsaWVudCh0aGlzKTsKICNlbmRpZgogfQogCkBAIC0xNjMsNiArMTY0LDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
cmVsLCBSZWxBdHRyaWJ1dGUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoID0gZmFs
c2U7CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5r
UHJlZmV0Y2ggPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pc0xpbmtTdWJyZXNvdXJjZSA9
IGZhbHNlOwogI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hl
ZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKQEAgLTE3
MCwxMCArMTcyLDYgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUKICAgICAgICAgcmVsQXR0cmli
dXRlLm1faXNJY29uID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWws
ICJkbnMtcHJlZmV0Y2giKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9
IHRydWU7Ci0jaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi0gICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UocmVsLCAicHJlZmV0Y2giKSkKLSAgICAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5r
UHJlZmV0Y2ggPSB0cnVlOwotI2VuZGlmCiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVsLCAiYWx0ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJz
dHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVT
aGVldCA9IHRydWU7CiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gdHJ1ZTsK
QEAgLTE5MSw2ICsxODksMTIgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcmVsLCBSZWxBdHRyaWJ1dGUKICAgICAgICAgICAg
ICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSgqaXQsICJpY29uIikpCiAgICAgICAgICAgICAgICAgcmVs
QXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgInByZWZldGNoIikpCisg
ICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCppdCwgInN1YnJlc291cmNlIikpCisg
ICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1N1YnJlc291cmNlID0gdHJ1ZTsKKyNl
bmRpZgogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjMyLDEyICsyMzYsMTYgQEAgdm9pZCBIVE1M
TGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogICAgIH0KIAogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENI
KQotICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoICYmIG1fdXJsLmlzVmFs
aWQoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgaWYgKChtX3JlbEF0dHJpYnV0ZS5t
X2lzTGlua1ByZWZldGNoIHx8IG1fcmVsQXR0cmlidXRlLm1faXNMaW5rU3VicmVzb3VyY2UpICYm
IG1fdXJsLmlzVmFsaWQoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmICgh
Y2hlY2tCZWZvcmVMb2FkRXZlbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9j
YWNoZWRMaW5rUHJlZmV0Y2ggPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5y
ZXF1ZXN0TGlua1ByZWZldGNoKG1fdXJsKTsKLSAgICAgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZl
dGNoKQotICAgICAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0aGlzKTsK
KyAgICAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlv
cml0eVVucmVzb2x2ZWQ7CisgICAgICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzTGlua1N1YnJl
c291cmNlKQorICAgICAgICAgICAgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzsK
KworICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50KCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCktPnJlcXVlc3RMaW5rUmVzb3VyY2UobV91cmwsIHByaW9yaXR5KTsKKyAgICAg
ICAgaWYgKG1fY2FjaGVkTGlua1Jlc291cmNlKQorICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVz
b3VyY2UtPmFkZENsaWVudCh0aGlzKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNDA5LDE5ICs0MTcs
MTkgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmlzTG9hZGluZygpIGNvbnN0CiB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6b25sb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MTGlua0VsZW1lbnQ+KiB0aW1l
cikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9vbmxvYWRUaW1lcik7
Ci0gICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoLT5lcnJvck9jY3VycmVkKCkpCisgICAgaWYg
KG1fY2FjaGVkTGlua1Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CiAgICAgZWxzZQogICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBtX2NhY2hlZExpbmtQcmVm
ZXRjaC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkTGlua1ByZWZldGNoID0gMDsK
KyAgICBtX2NhY2hlZExpbmtSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIG1fY2Fj
aGVkTGlua1Jlc291cmNlID0gMDsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBtX29ubG9hZFRpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKLSAgICBBU1NFUlQobV9jYWNoZWRMaW5rUHJlZmV0Y2guZ2V0KCkgPT0g
cmVzb3VyY2UpOworICAgIEFTU0VSVChtX2NhY2hlZExpbmtSZXNvdXJjZS5nZXQoKSA9PSByZXNv
dXJjZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5k
ZXggMjc4MmU3MWZmNmQxMjQyMWU5NmM5NDM4MTkxZWE3NGFlNjJkZDE1Yy4uNDllZDY4YTE5MmUz
MzM4YzAwOGY3MTU4ZWNmOTNmNzRlZDYyMjE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2lzRE5T
UHJlZmV0Y2g7CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgICAgIGJvb2wgbV9pc0xp
bmtQcmVmZXRjaDsKKyAgICAgICAgYm9vbCBtX2lzTGlua1N1YnJlc291cmNlOwogI2VuZGlmCiAK
ICAgICAgICAgUmVsQXR0cmlidXRlKCkKQEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CiAgICAgICAgICAgICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisgICAgICAgICAgICAsIG1f
aXNMaW5rU3VicmVzb3VyY2UoZmFsc2UpCiAjZW5kaWYKICAgICAgICAgICAgIHsgCiAgICAgICAg
ICAgICB9CkBAIC0xMjYsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiBtX3NoZWV0OwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBtX2NhY2hlZExpbmtQcmVmZXRjaDsKKyAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbV9jYWNoZWRMaW5rUmVzb3Vy
Y2U7CiAgICAgVGltZXI8SFRNTExpbmtFbGVtZW50PiBtX29ubG9hZFRpbWVyOwogI2VuZGlmCiAg
ICAgS1VSTCBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDBkZjViZmFkYTc2NWQwYTI1ZDZkYjE3MjUzMDBkNzU1NmRhM2UzNjMu
Ljk1ZjU1MjJhNTE1MzVkODdkMDFkNTQyZTA3NzNhYmRhMTI2ZWVjZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBzdGF0aWMgUmVzb3VyY2VMb2FkUHJpb3JpdHkgZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VU
eXBlKENhY2hlZFJlc291cmNlOjpUeXBlCiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Oklt
YWdlUmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7
CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi0gICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1Jlc291cmNl
OgogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzsKICNlbmRp
ZgogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMTY5MjBhNTNmNzZkNmUxZTFhN2UyYWYwOThmZDYyODZkZWJkZWNlZS4uNzJiMDBlNTY1
YTllOTEzZDQ0MTU4ZGI2OTE2OTc2OWViNWRiNzI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
ICAgICAsIFhTTFN0eWxlU2hlZXQKICNlbmRpZgogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQot
ICAgICAgICAsIExpbmtQcmVmZXRjaAorICAgICAgICAsIExpbmtSZXNvdXJjZQogI2VuZGlmCiAg
ICAgfTsKIApAQCAtMTI5LDEwICsxMjksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZGlu
Zyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0Cisg
ICAgYm9vbCBpc0xpbmtSZXNvdXJjZSgpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQotICAgICAgICByZXR1cm4gdHlwZSgpID09IExpbmtQcmVmZXRjaDsKKyAgICAgICAg
cmV0dXJuIHR5cGUoKSA9PSBMaW5rUmVzb3VyY2U7CiAjZWxzZQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGE3MTgwOTc0NDIwNzQwYTg3MTBhMDRiZmQ2NDlkYzgz
Y2IzM2Q3ZjAuLmEyOWI5OTU4YmUyNTQ4NzcwZTY3NmRiYTU0ZmRkNjZlODc3MDBlMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcApAQCAtNzEsOCArNzEsOCBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291
cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICBy
ZXR1cm4gbmV3IENhY2hlZFhTTFN0eWxlU2hlZXQodXJsLnN0cmluZygpKTsKICNlbmRpZgogI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVm
ZXRjaDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNvdXJjZSh1cmwuc3RyaW5nKCksIENh
Y2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Okxp
bmtSZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRSZXNvdXJjZSh1cmwuc3RyaW5n
KCksIENhY2hlZFJlc291cmNlOjpMaW5rUmVzb3VyY2UpOwogI2VuZGlmCiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTg4LDEwICsxODgsMTAgQEAgQ2FjaGVkWFNMU3R5bGVT
aGVldCogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RYU0xTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgdXIKICNlbmRpZgogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi1DYWNoZWRSZXNv
dXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3Ry
aW5nJiB1cmwpCitDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RM
aW5rUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5KQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAgICByZXR1cm4gcmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5nKCkpOworICAgIHJldHVy
biByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkxpbmtSZXNvdXJjZSwgdXJsLCBTdHJp
bmcoKSwgcHJpb3JpdHkpOwogfQogI2VuZGlmCiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CiAjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtSZXNvdXJjZToKICNlbmRpZgogICAgICAgICAvLyBUaGVzZSB0eXBl
cyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBmcm9tIGFueSBvcmlnaW4uCiAgICAgICAgIC8v
IEZJWE1FOiBBcmUgd2Ugc3VyZSBhYm91dCBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlPwpA
QCAtMjQ4LDcgKzI0OCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1Jlc291cmNl
OgogICAgICAgICAvLyBQcmVmZXRjaCBjYW5ub3QgYWZmZWN0IHRoZSBjdXJyZW50IGRvY3VtZW50
LgogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6Om5vdGlmeUxvYWRlZEZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmluY3JlbWVudFJlcXVl
c3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogewotICAgIGlmIChyZXMtPmlzUHJl
ZmV0Y2goKSkKKyAgICBpZiAocmVzLT5pc0xpbmtSZXNvdXJjZSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICArK21fcmVxdWVzdENvdW50OwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJj
ZSogcmVzKQogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291
bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKLSAgICBpZiAocmVzLT5pc1ByZWZldGNo
KCkpCisgICAgaWYgKHJlcy0+aXNMaW5rUmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLS1tX3JlcXVlc3RDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMmQ2YjFkMjFlZDIyZGRkZGZjNWZlNmEwOGVi
YTdkNDU4ZDYxZTBhOS4uYjE5NTczY2RlZTdlYTlhNmQwNGI2ODRhZWQ0MjQwZGRmYzkwMzNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIENhY2hlZFhTTFN0eWxlU2hlZXQq
IHJlcXVlc3RYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdXJsKTsKICNlbmRpZgogI2lmIEVO
QUJMRShMSU5LX1BSRUZFVENIKQotICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0TGlua1ByZWZl
dGNoKGNvbnN0IFN0cmluZyAmdXJsKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVxdWVzdExpbmtS
ZXNvdXJjZShjb25zdCBTdHJpbmcgJnVybCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkg
PSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQpOwogI2VuZGlmCiAKICAgICAvLyBMb2dz
IGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0aGUgY29uc29sZSBmb3IgdGhlIHNwZWNpZmll
ZCBVUkwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCmluZGV4IDAyY2YxM2VhZWNhNzIyM2NlMTBlZmQ5NjIwNzQ4YzA3N2M4
MjlhYjQuLjAwZDFlZGZjNDhlNjgyNzA5NmZkMWYyMTZiMzcwOGFkNGM4OWQyMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwCkBAIC00Miw3ICs0Miw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLXN0YXRp
YyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRU
eXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCitzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRUeXBlIGNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dDoKQEAgLTU3LDggKzU4LDEwIEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUg
Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKENhY2hlZFJlc291cmNlCiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0SXNJbWFnZTsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6Ci0gICAgICAgIHJldHVybiBSZXNvdXJjZVJl
cXVlc3Q6OlRhcmdldElzUHJlZmV0Y2g7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1Jl
c291cmNlOgorICAgICAgICBpZiAocHJpb3JpdHkgPT0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3dl
c3QpCisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZldGNo
OworICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOwog
I2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODUsNyArODgsNyBA
QCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZAogICAgIFJlZlB0cjxDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q+IHJlcXVlc3QgPSBhZG9wdFJlZihuZXcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJl
c291cmNlTG9hZGVyLCByZXNvdXJjZSwgaW5jcmVtZW50YWwpKTsKIAogICAgIFJlc291cmNlUmVx
dWVzdCByZXNvdXJjZVJlcXVlc3QocmVzb3VyY2UtPnVybCgpKTsKLSAgICByZXNvdXJjZVJlcXVl
c3Quc2V0VGFyZ2V0VHlwZShjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUocmVzb3VyY2Ut
PnR5cGUoKSkpOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRUYXJnZXRUeXBlKGNhY2hlZFJlc291
cmNlVHlwZVRvVGFyZ2V0VHlwZShyZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+bG9hZFByaW9y
aXR5KCkpKTsKIAogICAgIGlmICghcmVzb3VyY2UtPmFjY2VwdCgpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBBY2NlcHQocmVzb3VyY2UtPmFjY2VwdCgpKTsKQEAg
LTEwOCw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZAogICAgIH0KICAgICAKICNp
ZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKQorICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENh
Y2hlZFJlc291cmNlOjpMaW5rUmVzb3VyY2UpCiAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGQoIlB1cnBvc2UiLCAicHJlZmV0Y2giKTsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89955</attachid>
            <date>2011-04-17 12:17:13 -0700</date>
            <delta_ts>2011-04-17 14:30:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-57842-20110417121712.patch</filename>
            <type>text/plain</type>
            <size>22619</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MTAzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDQtMTcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbGluayByZWwgdHlwZSAic3VicmVzb3Vy
Y2UiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzg0
MgorCisgICAgICAgIExpbmsgcmVsPXByZWZldGNoIGlzIGdyZWF0IGZvciBjYWNoZSB3YXJtaW5n
IGZvciByZXNvdXJjZXMgb24KKyAgICAgICAgc3Vic2VxdWVudCBwYWdlcywgYnV0IGl0IGxhdW5j
aGVzIHJlcXVlc3RzIGF0IHRvbyBsb3cgYSBwcmlvcml0eQorICAgICAgICB0byB1c2UgZm9yIHN1
YnJlc291cmNlcyBvZiB0aGUgY3VycmVudCBwYWdlLgorCisgICAgICAgIFBhcnRpY3VsYXJseSBh
ZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE5NDAKKyAgICAg
ICAgaXMgaW1wbGVtZW50ZWQsIGEgcmVsIHR5cGUgdGhhdCBsYXVuY2hlcyByZXF1ZXN0cyBhdCBh
biBoaWdoZXIKKyAgICAgICAgcHJpb3JpdHkgaXMgZ29pbmcgdG8gYmUgdmVyeSB1c2VmdWwuICBU
aGlzIHJlbCB0eXBlIGlzIGluIHRoZQorICAgICAgICBIVE1MNSBzcGVjIGF0IGh0dHA6Ly93aWtp
LndoYXR3Zy5vcmcvd2lraS9SZWxFeHRlbnNpb25zIC4gIEFuCisgICAgICAgIGV4cGVjdGVkIHVz
ZSBjYXNlIHdpbGwgYmUgZm9yIHNlcnZlcnMgdG8gcHJvdmlkZSBzdWJyZXNvdXJjZSBoaW50cwor
ICAgICAgICBpbiBsaW5rIGhlYWRlcnMsIHdoaWNoIHdpbGwgYWxsb3cgc2VydmVycyB0byBoZWxw
IG1ha2UgdGhlIHdlYgorICAgICAgICBmYXN0ZXIuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGNv
bnRpbnVlcyBteSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGluayBoZWFkZXIsIHdoaWNoCisgICAg
ICAgIHdlJ3ZlIHRhbGtlZCBhYm91dCBpbiBXZWJLaXQtZGV2IGluCisgICAgICAgIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDExLUZlYnJ1YXJ5LzAxNjAz
NC5odG1sLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3VicmVz
b3VyY2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLXByZWZl
dGNoLWFuZC1zdWJyZXNvdXJjZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpvbmxvYWRUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1l
bnQ6OlJlbEF0dHJpYnV0ZTo6UmVsQXR0cmlidXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFByaW9yaXR5Rm9y
UmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc0xpbmtSZXNvdXJjZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0TGlua1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNv
dXJjZVR5cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0Ojpsb2FkKToKKwogMjAxMS0wNC0xNyAgWW91bmcgSGFuIExlZSAgPGpveWJyb0Bjb21w
YW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gODQxMDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUg
IkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rv
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC03OCw4ICs3OSw4IEBAIEhUTUxMaW5rRWxl
bWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAgICAgfQogICAgIAogI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQotICAgIGlmIChtX2NhY2hlZExpbmtQcmVmZXRjaCkKLSAgICAgICAgbV9jYWNoZWRM
aW5rUHJlZmV0Y2gtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBpZiAobV9jYWNoZWRMaW5rUmVz
b3VyY2UpCisgICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlLT5yZW1vdmVDbGllbnQodGhpcyk7
CiAjZW5kaWYKIH0KIApAQCAtMTYzLDYgKzE2NCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0
b2tlbml6ZVJlbEF0dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoID0gZmFs
c2U7CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5r
UHJlZmV0Y2ggPSBmYWxzZTsKKyAgICByZWxBdHRyaWJ1dGUubV9pc0xpbmtTdWJyZXNvdXJjZSA9
IGZhbHNlOwogI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInN0eWxlc2hl
ZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKQEAgLTE3
MCwxMCArMTcyLDYgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQog
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUu
bV9pc0ROU1ByZWZldGNoID0gdHJ1ZTsKLSNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQotICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7Ci0jZW5kaWYKICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0
cmlidXRlLm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNB
bHRlcm5hdGUgPSB0cnVlOwpAQCAtMTkxLDYgKzE4OSwxMiBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgICAgICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNB
bHRlcm5hdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
Kml0LCAiaWNvbiIpKQogICAgICAgICAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRy
dWU7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSgqaXQsICJwcmVmZXRjaCIpKQorICAgICAgICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSgqaXQsICJzdWJyZXNvdXJjZSIpKQorICAgICAgICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtTdWJyZXNvdXJjZSA9IHRydWU7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTIzMiwxMiArMjM2LDE2IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkK
ICAgICB9CiAKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBpZiAobV9yZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgZG9jdW1lbnQoKS0+ZnJh
bWUoKSkgeworICAgIGlmICgobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCB8fCBtX3Jl
bEF0dHJpYnV0ZS5tX2lzTGlua1N1YnJlc291cmNlKSAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgZG9j
dW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoIWNoZWNrQmVmb3JlTG9hZEV2ZW50KCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY2FjaGVkTGlua1ByZWZldGNoID0gZG9j
dW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3Vy
bCk7Ci0gICAgICAgIGlmIChtX2NhY2hlZExpbmtQcmVmZXRjaCkKLSAgICAgICAgICAgIG1fY2Fj
aGVkTGlua1ByZWZldGNoLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgIFJlc291cmNlTG9hZFBy
aW9yaXR5IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkOworICAgICAg
ICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtTdWJyZXNvdXJjZSkKKyAgICAgICAgICAgIHBy
aW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c7CisKKyAgICAgICAgbV9jYWNoZWRMaW5r
UmVzb3VyY2UgPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0TGlu
a1Jlc291cmNlKG1fdXJsLCBwcmlvcml0eSk7CisgICAgICAgIGlmIChtX2NhY2hlZExpbmtSZXNv
dXJjZSkKKyAgICAgICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTQwOSwxOSArNDE3LDE5IEBAIGJvb2wgSFRNTExpbmtFbGVt
ZW50Ojppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6Om9ubG9hZFRpbWVy
RmlyZWQoVGltZXI8SFRNTExpbmtFbGVtZW50PiogdGltZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RCh0aW1lciwgdGltZXIgPT0gJm1fb25sb2FkVGltZXIpOwotICAgIGlmIChtX2NhY2hlZExpbmtQ
cmVmZXRjaC0+ZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmIChtX2NhY2hlZExpbmtSZXNvdXJjZS0+
ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgIGVsc2UKICAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogCi0gICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPnJlbW92ZUNsaWVudCh0aGlz
KTsKLSAgICBtX2NhY2hlZExpbmtQcmVmZXRjaCA9IDA7CisgICAgbV9jYWNoZWRMaW5rUmVzb3Vy
Y2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IDA7CiB9
CiAKIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCiB7CiAgICAgbV9vbmxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci0gICAgQVNT
RVJUKG1fY2FjaGVkTGlua1ByZWZldGNoLmdldCgpID09IHJlc291cmNlKTsKKyAgICBBU1NFUlQo
bV9jYWNoZWRMaW5rUmVzb3VyY2UuZ2V0KCkgPT0gcmVzb3VyY2UpOwogfQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gODQxMDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CiAj
aWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgICAgIGJvb2wgbV9pc0xpbmtQcmVmZXRjaDsK
KyAgICAgICAgYm9vbCBtX2lzTGlua1N1YnJlc291cmNlOwogI2VuZGlmCiAKICAgICAgICAgUmVs
QXR0cmlidXRlKCkKQEAgLTUzLDYgKzU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLCBtX2lz
RE5TUHJlZmV0Y2goZmFsc2UpCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgICAgICAg
ICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisgICAgICAgICAgICAsIG1faXNMaW5rU3VicmVz
b3VyY2UoZmFsc2UpCiAjZW5kaWYKICAgICAgICAgICAgIHsgCiAgICAgICAgICAgICB9CkBAIC0x
MjYsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRD
U1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBt
X3NoZWV0OwogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBtX2NhY2hlZExpbmtQcmVmZXRjaDsKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbV9jYWNoZWRMaW5rUmVzb3VyY2U7CiAgICAgVGlt
ZXI8SFRNTExpbmtFbGVtZW50PiBtX29ubG9hZFRpbWVyOwogI2VuZGlmCiAgICAgS1VSTCBtX3Vy
bDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAkocmV2aXNpb24gODQxMDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBS
ZXNvdXJjZUxvYWRQcmlvcml0eSBkZWZhdWx0UHJpb3IKICAgICAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdzsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5r
UmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93
OwogI2VuZGlmCiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDg0MTAzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogICAgICAgICAsIFhTTFN0eWxlU2hlZXQKICNlbmRpZgogI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQotICAgICAgICAsIExpbmtQcmVmZXRjaAorICAgICAgICAsIExpbmtSZXNvdXJj
ZQogI2VuZGlmCiAgICAgfTsKIApAQCAtMTI5LDEwICsxMjksMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCiAgICAgdmlydHVhbCBi
b29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNQcmVmZXRj
aCgpIGNvbnN0CisgICAgYm9vbCBpc0xpbmtSZXNvdXJjZSgpIGNvbnN0CiAgICAgewogI2lmIEVO
QUJMRShMSU5LX1BSRUZFVENIKQotICAgICAgICByZXR1cm4gdHlwZSgpID09IExpbmtQcmVmZXRj
aDsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBMaW5rUmVzb3VyY2U7CiAjZWxzZQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gODQxMDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw4IEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3Jl
YXRlUmVzb3VyY2UoQ2EKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KHVy
bC5zdHJpbmcoKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
UmVzb3VyY2UodXJsLnN0cmluZygpLCBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKTsKKyAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUmVzb3VyY2U6CisgICAgICAgIHJldHVybiBuZXcg
Q2FjaGVkUmVzb3VyY2UodXJsLnN0cmluZygpLCBDYWNoZWRSZXNvdXJjZTo6TGlua1Jlc291cmNl
KTsKICNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE4OCwxMCAr
MTg4LDEwIEBAIENhY2hlZFhTTFN0eWxlU2hlZXQqIENhY2hlZFJlc291cmNlTG9hZGUKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nJiB1cmwpCitDYWNo
ZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RMaW5rUmVzb3VyY2UoY29u
c3QgU3RyaW5nJiB1cmwsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIEFT
U0VSVChmcmFtZSgpKTsKLSAgICByZXR1cm4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5nKCkpOworICAgIHJldHVybiByZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OkxpbmtSZXNvdXJjZSwgdXJsLCBTdHJpbmcoKSwgcHJpb3JpdHkp
OwogfQogI2VuZGlmCiAKQEAgLTIwNiw3ICsyMDYsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKICNpZiBFTkFCTEUoTElOS19QUkVG
RVRDSCkKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6TGlua1Jlc291cmNlOgogI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIHR5
cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAg
Ly8gRklYTUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/
CkBAIC0yNDgsNyArMjQ4LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVz
dChDYQogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi0g
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtSZXNvdXJjZToKICAgICAgICAgLy8gUHJlZmV0Y2ggY2Fubm90IGFmZmVjdCB0
aGUgY3VycmVudCBkb2N1bWVudC4KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTU5Myw3ICs1
OTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpub3RpZnlMb2FkZWRGCiAKIHZvaWQg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRS
ZXNvdXJjZSogcmVzKQogewotICAgIGlmIChyZXMtPmlzUHJlZmV0Y2goKSkKKyAgICBpZiAocmVz
LT5pc0xpbmtSZXNvdXJjZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICArK21fcmVxdWVzdENv
dW50OwpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmluY3Jl
bWVudFJlcXUKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENv
dW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7Ci0gICAgaWYgKHJlcy0+aXNQcmVmZXRj
aCgpKQorICAgIGlmIChyZXMtPmlzTGlua1Jlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC0tbV9yZXF1ZXN0Q291bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gODQxMDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVkWFNMU3R5bGVTaGVldCog
cmVxdWVzdFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmwpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlcXVlc3RMaW5rUHJlZmV0
Y2goY29uc3QgU3RyaW5nICZ1cmwpOworICAgIENhY2hlZFJlc291cmNlKiByZXF1ZXN0TGlua1Jl
c291cmNlKGNvbnN0IFN0cmluZyAmdXJsLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9
IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCk7CiAjZW5kaWYKIAogICAgIC8vIExvZ3Mg
YW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVk
IFVSTC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA4NDEwMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw4ICs0MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1zdGF0aWMgUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQorc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0
VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB7CisjaWYgIUVOQUJMRShMSU5L
X1BSRUZFVENIKQorICAgIFVOVVNFRF9QQVJBTShwcmlvcml0eSk7CisjZW5kaWYKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogI2lm
IEVOQUJMRShYU0xUKQpAQCAtNTcsOCArNjAsMTAgQEAgc3RhdGljIFJlc291cmNlUmVxdWVzdDo6
VGFyZ2V0VHlwZSBjYWNoZQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6
CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7CiAjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCi0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNo
OgotICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZldGNoOworICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtSZXNvdXJjZToKKyAgICAgICAgaWYgKHByaW9yaXR5
ID09IFJlc291cmNlTG9hZFByaW9yaXR5TG93ZXN0KQorICAgICAgICAgICAgcmV0dXJuIFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVmZXRjaDsKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKICNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTg1LDcgKzkwLDcgQEAgUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q+IENhY2hlZAogICAgIFJlZlB0cjxDYWNoZWRSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Qg
PSBhZG9wdFJlZihuZXcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291cmNlTG9hZGVy
LCByZXNvdXJjZSwgaW5jcmVtZW50YWwpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJj
ZVJlcXVlc3QocmVzb3VyY2UtPnVybCgpKTsKLSAgICByZXNvdXJjZVJlcXVlc3Quc2V0VGFyZ2V0
VHlwZShjYWNoZWRSZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUocmVzb3VyY2UtPnR5cGUoKSkpOwor
ICAgIHJlc291cmNlUmVxdWVzdC5zZXRUYXJnZXRUeXBlKGNhY2hlZFJlc291cmNlVHlwZVRvVGFy
Z2V0VHlwZShyZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+bG9hZFByaW9yaXR5KCkpKTsKIAog
ICAgIGlmICghcmVzb3VyY2UtPmFjY2VwdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmVzb3VyY2VS
ZXF1ZXN0LnNldEhUVFBBY2NlcHQocmVzb3VyY2UtPmFjY2VwdCgpKTsKQEAgLTEwOCw3ICsxMTMs
NyBAQCBQYXNzUmVmUHRyPENhY2hlZFJlc291cmNlUmVxdWVzdD4gQ2FjaGVkCiAgICAgfQogICAg
IAogI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQotICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09
IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gpCisgICAgaWYgKHJlc291cmNlLT50eXBlKCkg
PT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtSZXNvdXJjZSkKICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZCgiUHVycG9zZSIsICJwcmVmZXRjaCIpOwogI2VuZGlmCiAKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDg0MTAzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDQtMTcgIEdhdmluIFBldGVycyAgPGdhdmlu
cEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgbGluayByZWwgdHlwZSAic3VicmVzb3VyY2UiCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzg0MgorCisgICAgICAg
IExpbmsgcmVsPXByZWZldGNoIGlzIGdyZWF0IGZvciBjYWNoZSB3YXJtaW5nIGZvciByZXNvdXJj
ZXMgb24KKyAgICAgICAgc3Vic2VxdWVudCBwYWdlcywgYnV0IGl0IGxhdW5jaGVzIHJlcXVlc3Rz
IGF0IHRvbyBsb3cgYSBwcmlvcml0eQorICAgICAgICB0byB1c2UgZm9yIHN1YnJlc291cmNlcyBv
ZiB0aGUgY3VycmVudCBwYWdlLgorCisgICAgICAgIER1cmluZyB0ZXN0aW5nLCBJIHdhcyBkaXNz
YXBvaW50ZWQgdG8gc2VlIHRoZSByZXN1bHRzIGZvciB0aGUgaHR0cAorICAgICAgICB0ZXN0IGJl
bG93IGRvbid0IGdpdmUgdGhlIHN1YnJlc291cmNlIHByaW9yaXR5IG9yZGVyaW5nLiAgVGhpcyBp
cworICAgICAgICBhbm90aGVyIGluc3RhbmNlIG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTIzOAorICAgICAgICB3aGljaCBJJ2xsIGJlIHdvcmtpbmcgb24gbmV4
dCwgYW5kIHRodXMgZml4IHRoZSB0ZXN0LgorCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3N1YnJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVzb3VyY2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtcHJlZmV0Y2gt
YW5kLXN1YnJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTEtMDQt
MTYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGVkIHJl
c3VsdHMgZm9yIGZhc3QvYmxvY2svZmxvYXQvMDMyLmh0bWwgYWZ0ZXIgcjg0MDk2LiBGaWxlZCBo
dHRwOi8vd2Via2l0Lm9yZy9iLzU4NzM2IHRvCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvc3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdWJyZXNvdXJjZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
c3VicmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK3By
ZWZldGNoLmxpbmsgaGFzIE1JTUUgdHlwZSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KK1BBU1Mg
b25sb2FkIGNhbGxlZCEKK1RoaXMgdGVzdCB3aWxsIG9ubHkgcHJpbnQgIlBBU1MiIG9yICJGQUlM
IiBpZiBsaW5rIHByZWZldGNoZXMgYXJlIGVuYWJsZWQsIG90aGVyd2lzZSBpdCB3aWxsIHNob3cg
bm90aGluZyBiZWxvdy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9zdWJyZXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9zdWJyZXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjAgQEAKKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBwcmVmZXRjaF9vbmxvYWQoKSB7CisgICAgdGVzdFBhc3NlZCgnb25s
b2FkIGNhbGxlZCEnKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVU
eXBlcygpOworfQorPC9zY3JpcHQ+Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCB3aWxsIG9ubHkgcHJp
bnQgIlBBU1MiIG9yICJGQUlMIiBpZiBsaW5rIHByZWZldGNoZXMgYXJlCitlbmFibGVkLCBvdGhl
cndpc2UgaXQgd2lsbCBzaG93IG5vdGhpbmcgYmVsb3cuPC9wPgorPGxpbmsgaHJlZj0icHJlZmV0
Y2gubGluayIgcmVsPSJwcmVmZXRjaCIgb25sb2FkPSJwcmVmZXRjaF9vbmxvYWQoKSIgb25lcnJv
cj0idGVzdEZhaWxlZCgnb25lcnJvcicpIiAvPgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1y
ZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVz
b3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1Jlc291cmNl
IHJlcXVlc3RzOgorCisKKzFzdC5qcGcKKzJuZC5qcGcKKzNyZC5qcGcKKzR0aC5qcGcKKzV0aC5q
cGcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1h
bmQtc3VicmVzb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvbGluay1yZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtcHJlZmV0Y2gtYW5kLXN1
YnJlc291cmNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKzxodG1sPgorPGhl
YWQ+CisgIDxzY3JpcHQ+CitmdW5jdGlvbiBDYWxsQ29tbWFuZChjbWQpCit7CisgdHJ5IHsKKyAg
ICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgcmVxLm9wZW4oIkdFVCIsICIv
cmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5kPSIgKyBjbWQsIGZhbHNlKTsK
KyAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgIHJldHVybiByZXEucmVzcG9uc2VUZXh0OworIH0g
Y2F0Y2ggKGV4KSB7CisgICAgIHJldHVybiAiIjsKKyB9Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGVuZFRlc3QoKQor
eworICAgIGdldFJlc291cmNlTG9nKCk7CisgICAgQ2FsbENvbW1hbmQoImNsZWFyLXJlc291cmNl
LXJlcXVlc3QtbG9nIik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IGdldFJlc291cmNlTG9nKCkKK3sKKyAgICB2YXIgbG9nID0gQ2FsbENvbW1hbmQoImdldC1yZXNv
dXJjZS1yZXF1ZXN0LWxvZyIpOworICAgIHZhciBsb2dMaW5lcyA9IGxvZy5zcGxpdCgnXG4nKTsK
KyAgICBsb2dMaW5lcy5zb3J0KCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVyVGV4dCA9IGxvZ0xpbmVzLmpvaW4oJ1xuJyk7Cit9CisKK0NhbGxDb21tYW5kKCJz
dGFydC1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBzdGFydFRlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+CisKKyAgPCEtLSBsaW5rIHJlbD1z
dWJyZXNvdXJjZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gbGluayByZWw9cHJlZmV0Y2gsIGhvd2V2ZXIg
aXQgaXMKKyAgICAgICBleHBlY3RlZCB0byBoYXZlIGEgaGlnaGVyIG5ldHdvcmsgcHJpb3JpdHku
ICBUaGlzIHRlc3Qgc2hvdWxkIGNvbmZpcm0gdGhhdCB0aGUKKyAgICAgICBwcmlvcml0aWVzIG9m
IHRoZSB0d28gdHlwZXMgb2YgcHJlZmV0Y2ggYXJlIGJlaW5nIG9ic2VydmVkIC0tPgorCisgIDxz
Y3JpcHQ+CisgIHZhciBsaW5rTG9hZENvdW50ID0gNTsKKworICBmdW5jdGlvbiBkZWNyZW1lbnRM
aW5rTG9hZENvdW50KCkKKyAgeworICAgICAgbGlua0xvYWRDb3VudC0tOworICAgICAgaWYgKGxp
bmtMb2FkQ291bnQgPT0gMCkgeworICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgIH0KKyAgfQor
ICA8L3NjcmlwdD4KKyAgPGxpbmsgcmVsPXByZWZldGNoIG9ubG9hZD0iZGVjcmVtZW50TGlua0xv
YWRDb3VudCgpIiBocmVmPSIvcmVzb3VyY2VzL25ldHdvcmstc2ltdWxhdG9yLnBocD9jb21tYW5k
PWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9MXN0LmpwZyI+CisgIDxsaW5rIHJlbD1zdWJyZXNv
dXJjZSBvbmxvYWQ9ImRlY3JlbWVudExpbmtMb2FkQ291bnQoKSIgaHJlZj0iL3Jlc291cmNlcy9u
ZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVzb3VyY2UtcmVxdWVzdCZwYXRoPTJu
ZC5qcGciPgorICA8bGluayByZWw9cHJlZmV0Y2ggb25sb2FkPSJkZWNyZW1lbnRMaW5rTG9hZENv
dW50KCkiIGhyZWY9Ii9yZXNvdXJjZXMvbmV0d29yay1zaW11bGF0b3IucGhwP2NvbW1hbmQ9bG9n
LXJlc291cmNlLXJlcXVlc3QmcGF0aD0zcmQuanBnIj4KKyAgPGxpbmsgcmVsPXByZWZldGNoIG9u
bG9hZD0iZGVjcmVtZW50TGlua0xvYWRDb3VudCgpIiBocmVmPSIvcmVzb3VyY2VzL25ldHdvcmst
c2ltdWxhdG9yLnBocD9jb21tYW5kPWxvZy1yZXNvdXJjZS1yZXF1ZXN0JnBhdGg9NHRoLmpwZyI+
CisgIDxsaW5rIHJlbD1zdWJyZXNvdXJjZSBvbmxvYWQ9ImRlY3JlbWVudExpbmtMb2FkQ291bnQo
KSIgaHJlZj0iL3Jlc291cmNlcy9uZXR3b3JrLXNpbXVsYXRvci5waHA/Y29tbWFuZD1sb2ctcmVz
b3VyY2UtcmVxdWVzdCZwYXRoPTV0aC5qcGciPgorPC9oZWFkPgorPGJvZHk+CisKKyAgPGRpdiBj
bGFzcz0iYm94IGJvcmRlcmVkIj48L2Rpdj4KKworICA8aDI+UmVzb3VyY2UgcmVxdWVzdHM6PC9o
Mj4KKyAgPHByZSBpZD0icmVzdWx0Ij5SZXF1ZXN0IGxvZyBnb2VzIGhlcmUgaW4gRFJUPC9wcmU+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNp
b24gODQxMDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtNTEyLDYgKzUxMiw3IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tc2Vla2FibGUt
c3RhbGwuaHQKIGh0dHAvdGVzdHMvbWltZS9zdGFuZGFyZC1tb2RlLWxvYWRzLXN0eWxlc2hlZXQt
d2l0aC1lbXB0eS1jb250ZW50LXR5cGUuaHRtbAogaHR0cC90ZXN0cy9taW1lL3N0YW5kYXJkLW1v
ZGUtbG9hZHMtc3R5bGVzaGVldC13aXRoLXRleHQtY3NzLWFuZC1pbnZhbGlkLXR5cGUuaHRtbAog
aHR0cC90ZXN0cy9taXNjL2FjaWQzLmh0bWwKK2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVm
ZXRjaC1hbmQtc3VicmVzb3VyY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0
ZS1jYWxsZWQtdHdpY2UuaHRtbAogaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRt
bAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCkBAIC05MjQs
NiArOTI1LDcgQEAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKIGZhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmVycm9yLmh0bWwKIGZhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLWJlZm9yZWxvYWQuaHRtbAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1YnJl
c291cmNlLmh0bWwKIAogIyBUZXN0cyBmYWlsaW5nIGJlY2F1c2UgdGhlIGNvbnRleHQgbWVudSBp
cyBncmFiYmluZyBtb3VzZSBldmVudHMuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDYwMQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9u
IDg0MTAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Niw2ICsxODYsOCBAQCBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gu
aHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWJlZm9yZWxvYWQuaHRtbAog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9uZXJyb3IuaHRtbAogZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCitmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvc3VicmVzb3VyY2UuaHRtbAoraHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLXByZWZldGNo
LWFuZC1zdWJyZXNvdXJjZS5odG1sCiBodHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5o
dG1sCiAKICMgRmlsZW5hbWVzIGFyZW4ndCBmaWx0ZXJlZCBvdXQgZnJvbSBlZGl0IGRyYWdzIHll
dCwgc2VlIGh0dHBzOi8vYnVncy53ZWtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODI2CkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDg0MTAzKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjk1OCw2ICsyOTU4LDggQEAg
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC1iZWZvcmVsb2FkLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9wcmVmZXRjaC1vbmVycm9yLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC1vbmxvYWQuaHRtbAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWwK
K2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVzb3VyY2UuaHRtbAog
aHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogCiAjIFtRdF0gZmFzdC90ZXh0
L2JpZGktZXhwbGljaXQtZW1iZWRkaW5nLXBhc3QtZW5kLmh0bWwgZmFpbHMKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA4NDEwMykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC05OTUsNiArOTk1LDggQEAgZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9wcmVmZXRjaC1iZWZvcmVsb2FkLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC1vbmVycm9yLmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxv
YWQuaHRtbAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N1YnJlc291cmNlLmh0bWwKK2h0dHAv
dGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVzb3VyY2UuaHRtbAogaHR0cC90
ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogCiAjIExheW91dFRlc3RDb250cm9sbGVy
OjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBXSU4geWV0Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>