<?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>28313</bug_id>
          
          <creation_ts>2009-08-14 13:03:20 -0700</creation_ts>
          <short_desc>Combine ThreadableLoaderOptions::CrossOriginRequestPolicy and CrossOriginRedirectPolicy</short_desc>
          <delta_ts>2009-08-17 13:44:05 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Boodman">aa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140309</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-14 13:03:20 -0700</bug_when>
    <thetext>They are always set the same way. Also, I believe that ::resolveURL() no longer has to do the same origin check -- we can rely on ThreadableLoader to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140310</commentid>
    <comment_count>1</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-14 13:04:01 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Also, I believe that ::resolveURL() no longer has to do the same origin check

Talking here about AbstractWorker::resolveURL().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140581</commentid>
    <comment_count>2</comment_count>
      <attachid>34929</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-16 11:25:13 -0700</bug_when>
    <thetext>Created attachment 34929
Combines flags and fixes some edge case behavior with redirects

Requesting ap because I imagine he&apos;s he best person for this review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140582</commentid>
    <comment_count>3</comment_count>
      <attachid>34930</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-16 11:27:59 -0700</bug_when>
    <thetext>Created attachment 34930
Fix formatting in WebCore/ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140641</commentid>
    <comment_count>4</comment_count>
      <attachid>34930</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-16 19:35:34 -0700</bug_when>
    <thetext>Comment on attachment 34930
Fix formatting in WebCore/ChangeLog

How does this fix relate to bug 27740?

+        Bug 28313: Combine ThreadableLoaderOptions::crossOriginRequestPolicy and ThreadableLoaderOptions::crossOriginRedirectPolicy
+        since they are always set the same way.

Please also include bug URL for easy clicking. Personally, I think that &quot;Bug 28313: &quot; prefix becomes unnecessary with that, and do not use it, but in the past, some people have indicated that they liked it.

+        for access control, so we should never redirect across origins. But in two edge cases, we were:
+
+        * Synchronous XHR: cross-origin request that redirects to same-origin resource.

Were we? I think this is caught by checks in ResourceHandle, e.g. in connection:willSendRequest:redirectResponse: in ResourceHandleMac.mm. The first time this function is called, original url is stored to m_url, and then, the redirected URL is compared to that, not to document origin.

+        (WebCore::DocumentThreadableLoader::isLegalRedirect): Ditto.

Maybe &quot;allowed&quot; would be more neutral? &quot;Legal&quot; makes me think that this is a precisely defined term from some spec (like characters legal in some production), which it isn&apos;t.

Just asking for your opinion.

+    // request and response URLs. This isn&apos;t a perfect though, since a URL could redirect to itself.

Do you mean that a series of redirects could return us to the same host? &quot;Redirect to itself&quot; seem confusing.

+#include &quot;KURL.h&quot;

No need to include the header, KURL is only used as a reference here.

+        Also, tightened up behavior of XMLHttpRequest with cross-origin redirects and access control. We have not implemented redirects
+        for access control, so we should never redirect across origins. But in two edge cases, we were:

LayoutTests ChangeLog lacks bug URL, and starts with &quot;also&quot;.

+Tests that a cross-origin request that redirects to a same-origin resource succeeds.

Looks like all subtests actually expect failure, not success.

There are tabs in layout test.

r- since you are not a committer yet, and this needs some fix-up - but all these comments could be addressed during landing otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140672</commentid>
    <comment_count>5</comment_count>
      <attachid>34956</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-16 23:31:50 -0700</bug_when>
    <thetext>Created attachment 34956
respond to comments

Sorry, switched to git, so this patch will not diff with the previous super cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140673</commentid>
    <comment_count>6</comment_count>
      <attachid>34957</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-16 23:34:45 -0700</bug_when>
    <thetext>Created attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140678</commentid>
    <comment_count>7</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2009-08-16 23:43:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 34930 [details])
&gt; How does this fix relate to bug 27740?

Sorry, I wasn&apos;t aware of that bug. The checks here are a superset (more strict) than the existing checks.  I think that this patch makes the check in WebCoreSynchronousLoader unnecessary, but I&apos;m not sure. I don&apos;t think this patch is incompatible with it.

&gt; +        Bug 28313: Combine ThreadableLoaderOptions::crossOriginRequestPolicy
&gt; and ThreadableLoaderOptions::crossOriginRedirectPolicy
&gt; +        since they are always set the same way.
&gt; 
&gt; Please also include bug URL for easy clicking. Personally, I think that &quot;Bug
&gt; 28313: &quot; prefix becomes unnecessary with that, and do not use it, but in the
&gt; past, some people have indicated that they liked it.

Done.

&gt; +        for access control, so we should never redirect across origins. But in
&gt; two edge cases, we were:
&gt; +
&gt; +        * Synchronous XHR: cross-origin request that redirects to same-origin
&gt; resource.
&gt; 
&gt; Were we? I think this is caught by checks in ResourceHandle, e.g. in
&gt; connection:willSendRequest:redirectResponse: in ResourceHandleMac.mm. The first
&gt; time this function is called, original url is stored to m_url, and then, the
&gt; redirected URL is compared to that, not to document origin.

[Side note: I messed up the change log in my first patch. It was not synchronous loads this case didn&apos;t work with, but asynchronous load. I&apos;ve fixed that now.]

For the case of page on origin A requesting resource from origin B that redirects back to a resource on origin A, we do trigger the check in ResourceHandleMac.mm.  However, it does not seem to stop the redirect from proceeding. Without this patch, the redirect occurs and we load the same-origin resource.

&gt; +        (WebCore::DocumentThreadableLoader::isLegalRedirect): Ditto.
&gt; 
&gt; Maybe &quot;allowed&quot; would be more neutral? &quot;Legal&quot; makes me think that this is a
&gt; precisely defined term from some spec (like characters legal in some
&gt; production), which it isn&apos;t.
&gt; 
&gt; Just asking for your opinion.

Good idea, I&apos;ve changed this.

&gt; +    // request and response URLs. This isn&apos;t a perfect though, since a URL
&gt; could redirect to itself.
&gt; 
&gt; Do you mean that a series of redirects could return us to the same host?
&gt; &quot;Redirect to itself&quot; seem confusing.
&gt; 
&gt; +#include &quot;KURL.h&quot;
&gt;
&gt; No need to include the header, KURL is only used as a reference here.

Right. I did need a forward declare of KURL though. I changed this.

&gt; +        Also, tightened up behavior of XMLHttpRequest with cross-origin
&gt; redirects and access control. We have not implemented redirects
&gt; +        for access control, so we should never redirect across origins. But in
&gt; two edge cases, we were:
&gt; 
&gt; LayoutTests ChangeLog lacks bug URL, and starts with &quot;also&quot;.

Done.

&gt; +Tests that a cross-origin request that redirects to a same-origin resource
&gt; succeeds.
&gt; 
&gt; Looks like all subtests actually expect failure, not success.

Fixed.

&gt; There are tabs in layout test.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140725</commentid>
    <comment_count>8</comment_count>
      <attachid>34957</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-17 09:07:04 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140758</commentid>
    <comment_count>9</comment_count>
      <attachid>34957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 10:50:05 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

Rejecting patch 34957 from commit-queue.  This patch will require manual commit.

WebKitTools/Scripts/build-webkit failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140766</commentid>
    <comment_count>10</comment_count>
      <attachid>34957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 11:05:43 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

Sorry.  There was an error in the commit-queue over the weekend.  :(  Adding it back in...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140767</commentid>
    <comment_count>11</comment_count>
      <attachid>34957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 11:08:11 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

Rejecting patch 34957 from commit-queue.  This patch will require manual commit.

WebKitTools/Scripts/build-webkit failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140769</commentid>
    <comment_count>12</comment_count>
      <attachid>34957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 11:10:17 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

Looks like the tree is just red at the moment.  The commit queue is not smart enough to detect that before attempting to build the patch in question.  We&apos;ll wait for the tree to green up again and then add this back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140811</commentid>
    <comment_count>13</comment_count>
      <attachid>34957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 13:24:59 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

Bots have rolled green adding back to the queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140819</commentid>
    <comment_count>14</comment_count>
      <attachid>34957</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 13:40:11 -0700</bug_when>
    <thetext>Comment on attachment 34957
isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog

Rejecting patch 34957 from commit-queue.  This patch will require manual commit.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;rebase&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140821</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 13:44:05 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt
	A	LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects.html
	M	WebCore/ChangeLog
	M	WebCore/loader/DocumentThreadableLoader.cpp
	M	WebCore/loader/DocumentThreadableLoader.h
	M	WebCore/loader/ThreadableLoader.h
	M	WebCore/page/EventSource.cpp
	M	WebCore/workers/Worker.cpp
	M	WebCore/workers/WorkerContext.cpp
	M	WebCore/workers/WorkerScriptLoader.cpp
	M	WebCore/workers/WorkerScriptLoader.h
	M	WebCore/xml/XMLHttpRequest.cpp
Committed r47388
	M	WebCore/ChangeLog
	M	WebCore/page/EventSource.cpp
	M	WebCore/workers/WorkerScriptLoader.cpp
	M	WebCore/workers/Worker.cpp
	M	WebCore/workers/WorkerContext.cpp
	M	WebCore/workers/WorkerScriptLoader.h
	M	WebCore/xml/XMLHttpRequest.cpp
	M	WebCore/loader/DocumentThreadableLoader.h
	M	WebCore/loader/ThreadableLoader.h
	M	WebCore/loader/DocumentThreadableLoader.cpp
	A	LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects.html
	A	LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-expected.txt
	M	LayoutTests/ChangeLog
r47388 = f058c85c1ae34ce90d2d0d8e2cf53ca0cd80d221 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/47388</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34929</attachid>
            <date>2009-08-16 11:25:13 -0700</date>
            <delta_ts>2009-08-16 11:27:59 -0700</delta_ts>
            <desc>Combines flags and fixes some edge case behavior with redirects</desc>
            <filename>bug28313.patch</filename>
            <type>text/plain</type>
            <size>16897</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzM0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDgtMTYgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVn
IDI4MzEzOiBDb21iaW5lIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgYW5kIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9zc09yaWdpblJlZGlyZWN0
UG9saWN5CisgICAgICAgIHNpbmNlIHRoZXkgYXJlIGFsd2F5cyBzZXQgdGhlIHNhbWUgd2F5Lgor
CisgICAgICAgIEFsc28sIHRpZ2h0ZW5lZCB1cCBiZWhhdmlvciBvZiBYTUxIdHRwUmVxdWVzdCB3
aXRoIGNyb3NzLW9yaWdpbiByZWRpcmVjdHMgYW5kIGFjY2VzcyBjb250cm9sLiBXZSBoYXZlIG5v
dCBpbXBsZW1lbnRlZCByZWRpcmVjdHMKKyAgICAgICAgZm9yIGFjY2VzcyBjb250cm9sLCBzbyB3
ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3QgYWNyb3NzIG9yaWdpbnMuIEJ1dCBpbiB0d28gZWRnZSBj
YXNlcywgd2Ugd2VyZToKKworCSogU3luY2hyb25vdXMgWEhSOiBjcm9zcy1vcmlnaW4gcmVxdWVz
dCB0aGF0IHJlZGlyZWN0cyB0byBzYW1lLW9yaWdpbiByZXNvdXJjZS4KKyAgICAgICAgKiBBc3lu
Y2hyb25vdXMgWEhSOiBzYW1lLW9yaWdpbiByZXF1ZXN0IHRoYXQgcmVkaXJlY3RzICh3aXRob3V0
IGFjY2VzcyBjb250cm9sIGF1dGhvcml6YXRpb24pIHRvIGNyb3NzLW9yaWdpbiByZXNvdXJjZSAo
d2l0aAorICAgICAgICAgIGFjY2VzcyBjb250cm9sIGF1dGhvcml6YXRpb24pLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGly
ZWN0cy5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KTogUmVmYWN0b3IgcmVkaXJlY3QgY2hlY2tpbmcgY29kZSBpbnRvIHNoYXJlZCBsb2Nh
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6aXNMZWdhbFJlZGlyZWN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6VGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMpOiBSZW1vdmUgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OmNyb3NzT3JpZ2luUmVk
aXJlY3RQb2xpY3kuCisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFNvdXJjZTo6Y29ubmVjdCk6IERpdHRvLgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6IERp
dHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6IERpdHRvLgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KTogRGl0dG8uCisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaDogCisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXF1ZXN0KTogRGl0dG8uCisKIDIwMDktMDgtMTYgIE5pa29sYXMgWmltbWVybWFubiAgPG5p
a29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvcmdlIFN0YWlrb3MuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ3MzM1KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDggKzE2OSw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp3aWxsU2VuZFIKICAgICBBU1NFUlQobV9jbGll
bnQpOwogICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBsb2FkZXIgPT0gbV9sb2FkZXIpOwogCi0g
ICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZm9sbG93IHRoZSByZWRpcmVj
dCBjb3JyZWN0bHkgZXZlbiBmb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLgotICAgIGlmIChtX29w
dGlvbnMuY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSA9PSBEZW55Q3Jvc3NPcmlnaW5SZWRpcmVj
dCAmJiAhbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0LnVy
bCgpKSkgeworICAgIGlmICghaXNMZWdhbFJlZGlyZWN0KHJlcXVlc3QudXJsKCkpKSB7CiAgICAg
ICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAg
ICAgIG1fY2xpZW50LT5kaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAgICByZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CkBAIC0zMjIsOSArMzIxLDkgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
RklYTUU6IFRoaXMgY2hlY2sgYWxvbmcgd2l0aCB0aGUgb25lIGluIHdpbGxTZW5kUmVxdWVzdCBp
cyBzcGVjaWZpYyB0byB4aHIgYW5kCi0gICAgLy8gc2hvdWxkIGJlIG1hZGUgbW9yZSBnZW5lcmlj
LgotICAgIGlmIChtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmICFtX2RvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgpKSkgeworICAgIC8vIEZJWE1FOiBGcmFt
ZUxvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoKSBkb2VzIG5vdCB0ZWxsIHVzIHdoZXRoZXIgYSBy
ZWRpcmVjdCBoYXBwZW5lZCBvciBub3QsIHNvIHdlIGd1ZXNzIGJ5IGNvbXBhcmluZyB0aGUKKyAg
ICAvLyByZXF1ZXN0IGFuZCByZXNwb25zZSBVUkxzLiBUaGlzIGlzbid0IGEgcGVyZmVjdCB0aG91
Z2gsIHNpbmNlIGEgVVJMIGNvdWxkIHJlZGlyZWN0IHRvIGl0c2VsZi4KKyAgICBpZiAocmVxdWVz
dC51cmwoKSAhPSByZXNwb25zZS51cmwoKSAmJiAhaXNMZWdhbFJlZGlyZWN0KHJlc3BvbnNlLnVy
bCgpKSkgewogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTMzOCw0ICszMzcsMTUgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogICAgIGRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7
CiB9CiAKK2Jvb2wgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc0xlZ2FsUmVkaXJlY3QoY29u
c3QgS1VSTCYgdXJsKQoreworICAgIGlmIChtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBpbXBsZW1lbnQgYWNjZXNzIGNvbnRyb2wgZm9yIGVh
Y2ggcmVkaXJlY3QuIFRoaXMgd2lsbCByZXF1aXJlIHNvbWUgcmVmYWN0b3JpbmcgdGhvdWdoLCBi
ZWNhdXNlIHRoZSBjb2RlCisgICAgLy8gdGhhdCBwcm9jZXNzZXMgcmVkaXJlY3RzIGRvZXNuJ3Qg
a25vdyBhYm91dCBhY2Nlc3MgY29udHJvbCBhbmQgZXhwZWN0cyBhIHN5bmNocm9ub3VzIGFuc3dl
ciBmcm9tIGl0cyBjbGllbnQgYWJvdXQgd2hldGhlcgorICAgIC8vIGEgcmVkaXJlY3Qgc2hvdWxk
IHByb2NlZWQuCisgICAgcmV0dXJuIG1fc2FtZU9yaWdpblJlcXVlc3QgJiYgbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAko
cmV2aXNpb24gNDczMzUpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJfaAogI2RlZmluZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXJfaAogCisj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAg
LTg1LDYgKzg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHByZWZsaWdo
dEZhaWx1cmUoKTsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIGJvb2wgaXNMZWdhbFJlZGly
ZWN0KGNvbnN0IEtVUkwmKTsKIAogICAgICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1f
bG9hZGVyOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDQ3MzM1KQorKysgV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxOSArNTQsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMK
ICAgICB9OwogICAgIAotICAgIGVudW0gQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSB7Ci0gICAg
ICAgIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LAotICAgICAgICBBbGxvd0Nyb3NzT3JpZ2luUmVk
aXJlY3QKLSAgICB9OwotICAgIAogICAgIHN0cnVjdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyB7
Ci0gICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENhbGxiYWNrcyhm
YWxzZSksIHNuaWZmQ29udGVudChmYWxzZSksIGFsbG93Q3JlZGVudGlhbHMoZmFsc2UpLCBmb3Jj
ZVByZWZsaWdodChmYWxzZSksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShEZW55Q3Jvc3NPcmln
aW5SZXF1ZXN0cyksIGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3koQWxsb3dDcm9zc09yaWdpblJl
ZGlyZWN0KSB7IH0KKyAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2Fk
Q2FsbGJhY2tzKGZhbHNlKSwgc25pZmZDb250ZW50KGZhbHNlKSwgYWxsb3dDcmVkZW50aWFscyhm
YWxzZSksIGZvcmNlUHJlZmxpZ2h0KGZhbHNlKSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KERl
bnlDcm9zc09yaWdpblJlcXVlc3RzKSB7IH0KICAgICAgICAgYm9vbCBzZW5kTG9hZENhbGxiYWNr
czsKICAgICAgICAgYm9vbCBzbmlmZkNvbnRlbnQ7CiAgICAgICAgIGJvb2wgYWxsb3dDcmVkZW50
aWFsczsgIC8vIFdoZXRoZXIgSFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3
aXRoIHRoZSByZXF1ZXN0LgogICAgICAgICBib29sIGZvcmNlUHJlZmxpZ2h0OyAgLy8gSWYgQWNj
ZXNzQ29udHJvbCBpcyB1c2VkLCB3aGV0aGVyIHRvIGZvcmNlIGEgcHJlZmxpZ2h0LgogICAgICAg
ICBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwotICAg
ICAgICBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3k7
CiAgICAgfTsKIAogICAgIC8vIFVzZWZ1bCBmb3IgZG9pbmcgbG9hZGVyIG9wZXJhdGlvbnMgZnJv
bSBhbnkgdGhyZWFkIChub3QgdGhyZWFkc2FmZSwgCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHJl
dmlzaW9uIDQ3MzM1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTQsNyArOTQsNiBAQCB2b2lkIEV2ZW50U291cmNlOjpjb25uZWN0KCkKICAgICBv
cHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsKICAgICBvcHRpb25zLnNuaWZmQ29udGVu
dCA9IGZhbHNlOwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IHRydWU7Ci0gICAgb3B0
aW9ucy5jcm9zc09yaWdpblJlZGlyZWN0UG9saWN5ID0gRGVueUNyb3NzT3JpZ2luUmVkaXJlY3Q7
CiAKICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpOwogCkluZGV4OiBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cAkocmV2aXNpb24gNDczMzUpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBXb3JrZXI6Oldvcmtlcihjb25zdCBTdHJpbmcmIHVy
bCwgU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdv
cmtlclNjcmlwdExvYWRlcigpOwotICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3Vz
bHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJl
ZGlyZWN0LCB0aGlzKTsKKyAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0
cywgdGhpcyk7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOyAgLy8gVGhlIHdvcmtlciBj
b250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxvYWRpbmcsIHNvIHdlIG11c3QgZW5zdXJlIHRo
YXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNvbGxlY3RlZCwgYXMgd2VsbCBhcyBpdHMgZXZl
bnQgbGlzdGVuZXJzLgogfQogCkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZp
c2lvbiA0NzMzNSkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2Ny
aXB0cyhjb25zdCAKIAogICAgIGZvciAoVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGNvbXBsZXRlZFVSTHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFdvcmtl
clNjcmlwdExvYWRlciBzY3JpcHRMb2FkZXI7Ci0gICAgICAgIHNjcmlwdExvYWRlci5sb2FkU3lu
Y2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppdCwgQWxsb3dDcm9zc09yaWdp
blJlZGlyZWN0KTsKKyAgICAgICAgc2NyaXB0TG9hZGVyLmxvYWRTeW5jaHJvbm91c2x5KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKml0LCBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMpOwogCiAg
ICAgICAgIC8vIElmIHRoZSBmZXRjaGluZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBORVRXT1JL
X0VSUiBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKHNj
cmlwdExvYWRlci5mYWlsZWQoKSkgewpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAJKHJldmlzaW9uIDQ3MzM1KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgV29ya2VyU2NyaXB0
TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIoKQogewogfQogCi12b2lkIFdvcmtlclNjcmlwdExv
YWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5
IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kpCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9h
ZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5KQogewogICAgIG1fdXJsID0gdXJsOwogCkBAIC02MiwxMyArNjIsMTIg
QEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91cwogCiAgICAgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMg
PSB0cnVlOwotICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gQWxsb3dDcm9z
c09yaWdpblJlcXVlc3RzOwotICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSA9
IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3k7CisgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgPSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7CiAKICAgICBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHN0YXRpY19jYXN0PFdvcmtlckNv
bnRleHQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25z
KTsKIH0KICAgICAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VS
TCYgdXJsLCBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xp
Y3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQordm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xp
ZW50KQogewogICAgIEFTU0VSVChjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAt
ODAsOCArNzksNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91CiAK
ICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuYWxsb3dD
cmVkZW50aWFscyA9IHRydWU7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kg
PSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHM7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlZGly
ZWN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeTsKKyAgICBvcHRpb25zLmNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSA9IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKIAogICAgIG1f
dGhyZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCB0aGlzLCAqcmVxdWVzdCwgb3B0aW9ucyk7CiB9CkluZGV4OiBXZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5oCShyZXZpc2lvbiA0NzMzNSkKKysrIFdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBXb3JrZXJTY3JpcHRMb2Fk
ZXIoKTsKIAotICAgICAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSk7Ci0gICAgICAg
IHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBL
VVJMJiwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
Kik7CisgICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kpOworICAgICAgICB2b2lk
IGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYs
IENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7CiAK
ICAgICAgICAgdm9pZCBub3RpZnlFcnJvcigpOwogCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiA0NzMzNSkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDk4LDcgKzQ5OCw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZVJlcXVlc3QoRXhjZXAKICAgICBvcHRpb25zLmZvcmNlUHJlZmxpZ2h0ID0gZm9yY2VQcmVmbGln
aHQ7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9zYW1lT3JpZ2luUmVxdWVzdCB8
fCBtX2luY2x1ZGVDcmVkZW50aWFsczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBv
bGljeSA9IFVzZUFjY2Vzc0NvbnRyb2w7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlZGlyZWN0
UG9saWN5ID0gRGVueUNyb3NzT3JpZ2luUmVkaXJlY3Q7CiAKICAgICBtX2V4Y2VwdGlvbkNvZGUg
PSAwOwogICAgIG1fZXJyb3IgPSBmYWxzZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3MzQwKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MDktMDgtMTYgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbywgdGlnaHRlbmVkIHVwIGJl
aGF2aW9yIG9mIFhNTEh0dHBSZXF1ZXN0IHdpdGggY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0cyBhbmQg
YWNjZXNzIGNvbnRyb2wuIFdlIGhhdmUgbm90IGltcGxlbWVudGVkIHJlZGlyZWN0cworICAgICAg
ICBmb3IgYWNjZXNzIGNvbnRyb2wsIHNvIHdlIHNob3VsZCBuZXZlciByZWRpcmVjdCBhY3Jvc3Mg
b3JpZ2lucy4gQnV0IGluIHR3byBlZGdlIGNhc2VzLCB3ZSB3ZXJlOgorCisgICAgICAgICogU3lu
Y2hyb25vdXMgWEhSOiBjcm9zcy1vcmlnaW4gcmVxdWVzdCB0aGF0IHJlZGlyZWN0cyB0byBzYW1l
LW9yaWdpbiByZXNvdXJjZS4KKyAgICAgICAgKiBBc3luY2hyb25vdXMgWEhSOiBzYW1lLW9yaWdp
biByZXF1ZXN0IHRoYXQgcmVkaXJlY3RzICh3aXRob3V0IGFjY2VzcyBjb250cm9sIGF1dGhvcml6
YXRpb24pIHRvIGNyb3NzLW9yaWdpbiByZXNvdXJjZSAod2l0aAorICAgICAgICAgIGFjY2VzcyBj
b250cm9sIGF1dGhvcml6YXRpb24pLgorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVk
aXJlY3RzLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA4LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
aWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdl
ZC4gQWRkIG1pc3NpbmcgV01MIHNwZWNpZmljIGxheW91dCB0ZXN0IHJlc3VsdC4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJl
ZGlyZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3RzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjEgQEAKK1Rlc3RzIHRoYXQgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCB0aGF0IHJl
ZGlyZWN0cyB0byBhIHNhbWUtb3JpZ2luIHJlc291cmNlIHN1Y2NlZWRzLgorCitUZXN0aW5nIC9y
ZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaSAoc3luYykKK0V4
cGVjdGluZyBzdWNjZXNzOiBmYWxzZQorUEFTUzogRXJyb3I6IE5FVFdPUktfRVJSOiBYTUxIdHRw
UmVxdWVzdCBFeGNlcHRpb24gMTAxCitUZXN0aW5nIC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3Vy
bD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1j
b250cm9sLWJhc2ljLWFsbG93LmNnaShhc3luYykKK0V4cGVjdGluZyBzdWNjZXNzOiBmYWxzZQor
UEFTUzogMAorVGVzdGluZyBodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0
LnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2kgKHN5bmMpCitFeHBlY3Rpbmcgc3VjY2Vzczog
ZmFsc2UKK1BBU1M6IEVycm9yOiBORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9u
IDEwMQorVGVzdGluZyBodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBo
cD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nl
c3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2koYXN5bmMpCitFeHBlY3Rpbmcgc3VjY2VzczogZmFs
c2UKK1BBU1M6IDAKK1Rlc3RpbmcgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRp
cmVjdC5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpIChzeW5jKQorRXhwZWN0aW5nIHN1Y2Nl
c3M6IGZhbHNlCitQQVNTOiBFcnJvcjogTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2Vw
dGlvbiAxMDEKK1Rlc3RpbmcgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVj
dC5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
YWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpKGFzeW5jKQorRXhwZWN0aW5nIHN1Y2Nlc3M6
IGZhbHNlCitQQVNTOiAwCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJl
ZGlyZWN0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3RzLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjMgQEAKKzxwPlRlc3RzIHRoYXQgcmVkaXJlY3RzIGJldHdlZW4gb3JpZ2lu
cyBhcmUgbmV2ZXIgYWxsb3dlZCwgZXZlbiB3aGVuIGFjY2VzcyBjb250cm9sIGlzIGludm9sdmVk
LjwvcD4KKzxwPlBlciB0aGUgc3BlYywgdGhlc2UgdGVzdCBjYXNlcyBzaG91bGQgYmUgYWxsb3dl
ZCwgYnV0IGNyb3NzLW9yaWdpbiByZWRpcmVjdHMgYXJlIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBp
biBXZWJDb3JlLjwvcD4KKworPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2Fn
ZSArICdcbicpKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCh1cmwsIGV4cGVjdFN5bmNTdWNjZXNz
LCBleHBlY3RBc3luY1N1Y2Nlc3MpCit7CisJbG9nKCJUZXN0aW5nICIgKyB1cmwgKyAiIChzeW5j
KSIpOworCWxvZygiRXhwZWN0aW5nIHN1Y2Nlc3M6ICIgKyBleHBlY3RTeW5jU3VjY2Vzcyk7CisK
Kwl2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisJcmVxLm9wZW4oIkdFVCIsIHVybCwg
ZmFsc2UpOworCisJdHJ5IHsKKwkJcmVxLnNlbmQobnVsbCk7CisJCWxvZygoZXhwZWN0U3luY1N1
Y2Nlc3MgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogIiArIHJlcS5yZXNwb25zZVRleHQpOworCX0g
Y2F0Y2ggKGV4KSB7CisJCWxvZygoZXhwZWN0U3luY1N1Y2Nlc3MgPyAiRkFJTCIgOiAiUEFTUyIp
ICsgIjogIiArIGV4KTsKKwl9CisJCisJbG9nKCJUZXN0aW5nICIgKyB1cmwgKyAiKGFzeW5jKSIp
OworCWxvZygiRXhwZWN0aW5nIHN1Y2Nlc3M6ICIgKyBleHBlY3RBc3luY1N1Y2Nlc3MpOworCisJ
cmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisJcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7
CisJcmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworCQlsb2coKGV4cGVjdEFzeW5jU3VjY2VzcyA/
ICJQQVNTIiA6ICJGQUlMIikgKyAiOiAiICsgcmVxLnJlc3BvbnNlVGV4dCk7CisJCW5leHRUZXN0
KCk7CisJfQorCXJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisJCWxvZygoZXhwZWN0QXN5bmNT
dWNjZXNzID8gIkZBSUwiIDogIlBBU1MiKSArICI6ICIgKyByZXEuc3RhdHVzKTsKKwkJbmV4dFRl
c3QoKTsKKwl9CisJcmVxLnNlbmQobnVsbCk7Cit9CisKK3ZhciB0ZXN0cyA9IFsKKwlbIi9yZXNv
dXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaSIsIGZhbHNlLCBmYWxz
ZV0sCisJWyJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29u
dHJvbC1iYXNpYy1hbGxvdy5jZ2kiLCBmYWxzZSwgZmFsc2VdLAorCVsiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpIiwg
ZmFsc2UsIGZhbHNlXQorXQorCit2YXIgY3VycmVudFRlc3QgPSAwOworCitmdW5jdGlvbiBuZXh0
VGVzdCgpIHsKKwlpZiAoY3VycmVudFRlc3QgPCB0ZXN0cy5sZW5ndGgpCisJCXJ1blRlc3QuYXBw
bHkobnVsbCwgdGVzdHNbY3VycmVudFRlc3QrK10pOworCWVsc2UgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKwkJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
CituZXh0VGVzdCgpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34930</attachid>
            <date>2009-08-16 11:27:59 -0700</date>
            <delta_ts>2009-08-16 23:31:50 -0700</delta_ts>
            <desc>Fix formatting in WebCore/ChangeLog</desc>
            <filename>bug28313.patch</filename>
            <type>text/plain</type>
            <size>16904</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzM0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDgtMTYgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVn
IDI4MzEzOiBDb21iaW5lIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgYW5kIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9zc09yaWdpblJlZGlyZWN0
UG9saWN5CisgICAgICAgIHNpbmNlIHRoZXkgYXJlIGFsd2F5cyBzZXQgdGhlIHNhbWUgd2F5Lgor
CisgICAgICAgIEFsc28sIHRpZ2h0ZW5lZCB1cCBiZWhhdmlvciBvZiBYTUxIdHRwUmVxdWVzdCB3
aXRoIGNyb3NzLW9yaWdpbiByZWRpcmVjdHMgYW5kIGFjY2VzcyBjb250cm9sLiBXZSBoYXZlIG5v
dCBpbXBsZW1lbnRlZCByZWRpcmVjdHMKKyAgICAgICAgZm9yIGFjY2VzcyBjb250cm9sLCBzbyB3
ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3QgYWNyb3NzIG9yaWdpbnMuIEJ1dCBpbiB0d28gZWRnZSBj
YXNlcywgd2Ugd2VyZToKKworICAgICAgICAqIFN5bmNocm9ub3VzIFhIUjogY3Jvc3Mtb3JpZ2lu
IHJlcXVlc3QgdGhhdCByZWRpcmVjdHMgdG8gc2FtZS1vcmlnaW4gcmVzb3VyY2UuCisgICAgICAg
ICogQXN5bmNocm9ub3VzIFhIUjogc2FtZS1vcmlnaW4gcmVxdWVzdCB0aGF0IHJlZGlyZWN0cyAo
d2l0aG91dCBhY2Nlc3MgY29udHJvbCBhdXRob3JpemF0aW9uKSB0byBjcm9zcy1vcmlnaW4gcmVz
b3VyY2UgKHdpdGgKKyAgICAgICAgICBhY2Nlc3MgY29udHJvbCBhdXRob3JpemF0aW9uKS4KKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFu
ZC1yZWRpcmVjdHMuaHRtbAorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdCk6IFJlZmFjdG9yIHJlZGlyZWN0IGNoZWNraW5nIGNvZGUgaW50byBzaGFy
ZWQgbG9jYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmlzTGVnYWxSZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRocmVhZGFi
bGVMb2FkZXJPcHRpb25zKTogUmVtb3ZlIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9zc09y
aWdpblJlZGlyZWN0UG9saWN5LgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNvbm5lY3QpOiBEaXR0by4KKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3Jr
ZXIpOiBEaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMpOiBEaXR0by4K
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSk6IERp
dHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6IAorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVxdWVzdCk6IERpdHRvLgorCiAyMDA5LTA4LTE2ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA0NzMzNSkKKysrIFdlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw4ICsxNjks
NyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6d2lsbFNlbmRSCiAgICAgQVNTRVJU
KG1fY2xpZW50KTsKICAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVy
KTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUg
cmVkaXJlY3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4KLSAgICBp
ZiAobV9vcHRpb25zLmNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kgPT0gRGVueUNyb3NzT3JpZ2lu
UmVkaXJlY3QgJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVx
dWVzdC51cmwoKSkpIHsKKyAgICBpZiAoIWlzTGVnYWxSZWRpcmVjdChyZXF1ZXN0LnVybCgpKSkg
ewogICAgICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KHRoaXMp
OwogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAgcmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpAQCAtMzIyLDkgKzMyMSw5IEBAIHZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGFsb25nIHdpdGggdGhlIG9uZSBpbiB3aWxsU2VuZFJl
cXVlc3QgaXMgc3BlY2lmaWMgdG8geGhyIGFuZAotICAgIC8vIHNob3VsZCBiZSBtYWRlIG1vcmUg
Z2VuZXJpYy4KLSAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhbV9kb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSkpIHsKKyAgICAvLyBGSVhN
RTogRnJhbWVMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KCkgZG9lcyBub3QgdGVsbCB1cyB3aGV0
aGVyIGEgcmVkaXJlY3QgaGFwcGVuZWQgb3Igbm90LCBzbyB3ZSBndWVzcyBieSBjb21wYXJpbmcg
dGhlCisgICAgLy8gcmVxdWVzdCBhbmQgcmVzcG9uc2UgVVJMcy4gVGhpcyBpc24ndCBhIHBlcmZl
Y3QgdGhvdWdoLCBzaW5jZSBhIFVSTCBjb3VsZCByZWRpcmVjdCB0byBpdHNlbGYuCisgICAgaWYg
KHJlcXVlc3QudXJsKCkgIT0gcmVzcG9uc2UudXJsKCkgJiYgIWlzTGVnYWxSZWRpcmVjdChyZXNw
b25zZS51cmwoKSkpIHsKICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxSZWRpcmVjdENoZWNrKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzgsNCArMzM3LDE1IEBAIHZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWUKICAgICBkaWRGaW5pc2hMb2FkaW5nKGlkZW50
aWZpZXIpOwogfQogCitib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNMZWdhbFJlZGly
ZWN0KGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAobV9vcHRpb25zLmNyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeSA9PSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gaW1wbGVtZW50IGFjY2VzcyBjb250cm9s
IGZvciBlYWNoIHJlZGlyZWN0LiBUaGlzIHdpbGwgcmVxdWlyZSBzb21lIHJlZmFjdG9yaW5nIHRo
b3VnaCwgYmVjYXVzZSB0aGUgY29kZQorICAgIC8vIHRoYXQgcHJvY2Vzc2VzIHJlZGlyZWN0cyBk
b2Vzbid0IGtub3cgYWJvdXQgYWNjZXNzIGNvbnRyb2wgYW5kIGV4cGVjdHMgYSBzeW5jaHJvbm91
cyBhbnN3ZXIgZnJvbSBpdHMgY2xpZW50IGFib3V0IHdoZXRoZXIKKyAgICAvLyBhIHJlZGlyZWN0
IHNob3VsZCBwcm9jZWVkLgorICAgIHJldHVybiBtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmIG1fZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QodXJsKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmgJKHJldmlzaW9uIDQ3MzM1KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKICNkZWZpbmUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
X2gKIAorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CkBAIC04NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBw
cmVmbGlnaHRGYWlsdXJlKCk7CiAKICAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBib29sIHNraXBDYW5Mb2FkQ2hlY2spOworICAgICAgICBib29sIGlzTGVn
YWxSZWRpcmVjdChjb25zdCBLVVJMJik7CiAKICAgICAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9h
ZGVyPiBtX2xvYWRlcjsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogbV9jbGllbnQ7
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiA0NzMzNSkKKysrIFdl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTkg
KzU0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWxsb3dDcm9zc09yaWdpblJl
cXVlc3RzCiAgICAgfTsKICAgICAKLSAgICBlbnVtIENyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kg
ewotICAgICAgICBEZW55Q3Jvc3NPcmlnaW5SZWRpcmVjdCwKLSAgICAgICAgQWxsb3dDcm9zc09y
aWdpblJlZGlyZWN0Ci0gICAgfTsKLSAgICAKICAgICBzdHJ1Y3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMgewotICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpIDogc2VuZExvYWRDYWxs
YmFja3MoZmFsc2UpLCBzbmlmZkNvbnRlbnQoZmFsc2UpLCBhbGxvd0NyZWRlbnRpYWxzKGZhbHNl
KSwgZm9yY2VQcmVmbGlnaHQoZmFsc2UpLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koRGVueUNy
b3NzT3JpZ2luUmVxdWVzdHMpLCBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KEFsbG93Q3Jvc3NP
cmlnaW5SZWRpcmVjdCkgeyB9CisgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zKCkgOiBz
ZW5kTG9hZENhbGxiYWNrcyhmYWxzZSksIHNuaWZmQ29udGVudChmYWxzZSksIGFsbG93Q3JlZGVu
dGlhbHMoZmFsc2UpLCBmb3JjZVByZWZsaWdodChmYWxzZSksIGNyb3NzT3JpZ2luUmVxdWVzdFBv
bGljeShEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgeyB9CiAgICAgICAgIGJvb2wgc2VuZExvYWRD
YWxsYmFja3M7CiAgICAgICAgIGJvb2wgc25pZmZDb250ZW50OwogICAgICAgICBib29sIGFsbG93
Q3JlZGVudGlhbHM7ICAvLyBXaGV0aGVyIEhUVFAgY3JlZGVudGlhbHMgYW5kIGNvb2tpZXMgYXJl
IHNlbnQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICAgICAgYm9vbCBmb3JjZVByZWZsaWdodDsgIC8v
IElmIEFjY2Vzc0NvbnRyb2wgaXMgdXNlZCwgd2hldGhlciB0byBmb3JjZSBhIHByZWZsaWdodC4K
ICAgICAgICAgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eTsKLSAgICAgICAgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBjcm9zc09yaWdpblJlZGlyZWN0
UG9saWN5OwogICAgIH07CiAKICAgICAvLyBVc2VmdWwgZm9yIGRvaW5nIGxvYWRlciBvcGVyYXRp
b25zIGZyb20gYW55IHRocmVhZCAobm90IHRocmVhZHNhZmUsIApJbmRleDogV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCShyZXZpc2lvbiA0NzMzNSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDYgQEAgdm9pZCBFdmVudFNvdXJjZTo6Y29ubmVjdCgp
CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHRydWU7CiAgICAgb3B0aW9ucy5zbmlm
ZkNvbnRlbnQgPSBmYWxzZTsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSB0cnVlOwot
ICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJl
ZGlyZWN0OwogCiAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKIApJbmRleDogV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAJKHJldmlzaW9uIDQ3MzM1KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgV29ya2VyOjpXb3JrZXIoY29uc3QgU3Ry
aW5nJiB1cmwsIFNjcmlwdAogICAgICAgICByZXR1cm47CiAKICAgICBtX3NjcmlwdExvYWRlciA9
IG5ldyBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKLSAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5j
aHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0VVJMLCBEZW55Q3Jvc3NP
cmlnaW5SZWRpcmVjdCwgdGhpcyk7CisgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2lu
UmVxdWVzdHMsIHRoaXMpOwogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsgIC8vIFRoZSB3
b3JrZXIgY29udGV4dCBkb2VzIG5vdCBleGlzdCB3aGlsZSBsb2FkaW5nLCBzbyB3ZSBtdXN0IGVu
c3VyZSB0aGF0IHRoZSB3b3JrZXIgb2JqZWN0IGlzIG5vdCBjb2xsZWN0ZWQsIGFzIHdlbGwgYXMg
aXRzIGV2ZW50IGxpc3RlbmVycy4KIH0KIApJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNw
cAkocmV2aXNpb24gNDczMzUpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMoY29uc3QgCiAKICAgICBmb3IgKFZlY3RvcjxLVVJMPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBXb3JrZXJTY3JpcHRMb2FkZXIgc2NyaXB0TG9hZGVyOwotICAgICAgICBzY3JpcHRMb2FkZXIu
bG9hZFN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIEFsbG93Q3Jv
c3NPcmlnaW5SZWRpcmVjdCk7CisgICAgICAgIHNjcmlwdExvYWRlci5sb2FkU3luY2hyb25vdXNs
eShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppdCwgQWxsb3dDcm9zc09yaWdpblJlcXVlc3Rz
KTsKIAogICAgICAgICAvLyBJZiB0aGUgZmV0Y2hpbmcgYXR0ZW1wdCBmYWlsZWQsIHRocm93IGEg
TkVUV09SS19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgICAg
IGlmIChzY3JpcHRMb2FkZXIuZmFpbGVkKCkpIHsKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCShyZXZpc2lvbiA0NzMzNSkKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIFdvcmtl
clNjcmlwdExvYWRlcjo6V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZWRpcmVj
dFBvbGljeSBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KQordm9pZCBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSkKIHsKICAgICBtX3VybCA9IHVybDsKIApAQCAtNjIsMTMg
KzYyLDEyIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXMKIAogICAg
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzID0gdHJ1ZTsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IEFs
bG93Q3Jvc3NPcmlnaW5SZXF1ZXN0czsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVkaXJlY3RQ
b2xpY3kgPSBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5OworICAgIG9wdGlvbnMuY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwogCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAqdGhpcywg
b3B0aW9ucyk7CiB9CiAgICAgCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNv
bnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBjcm9zc09yaWdpblJlZGly
ZWN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGll
bnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBtX2NsaWVudCA9IGNsaWVu
dDsKQEAgLTgwLDggKzc5LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hy
b25vdQogCiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25z
LmFsbG93Q3JlZGVudGlhbHMgPSB0cnVlOwotICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5ID0gQWxsb3dDcm9zc09yaWdpblJlcXVlc3RzOwotICAgIG9wdGlvbnMuY3Jvc3NPcmln
aW5SZWRpcmVjdFBvbGljeSA9IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3k7CisgICAgb3B0aW9u
cy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7CiAK
ICAgICBtX3RocmVhZGFibGVMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgdGhpcywgKnJlcXVlc3QsIG9wdGlvbnMpOwogfQpJbmRleDogV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gNDczMzUpCisrKyBXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgV29ya2VyU2Ny
aXB0TG9hZGVyKCk7CiAKLSAgICAgICAgdm9pZCBsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kpOwot
ICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRl
ckNsaWVudCopOworICAgICAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KTsKKyAgICAg
ICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IEtVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVu
dCopOwogCiAgICAgICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIApJbmRleDogV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAkocmV2aXNpb24gNDczMzUpCisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw3ICs0OTgsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwCiAgICAgb3B0aW9ucy5mb3JjZVByZWZsaWdodCA9IGZvcmNl
UHJlZmxpZ2h0OwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IG1fc2FtZU9yaWdpblJl
cXVlc3QgfHwgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJl
cXVlc3RQb2xpY3kgPSBVc2VBY2Nlc3NDb250cm9sOwotICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5S
ZWRpcmVjdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJlZGlyZWN0OwogCiAgICAgbV9leGNlcHRp
b25Db2RlID0gMDsKICAgICBtX2Vycm9yID0gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NzM0
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDA5LTA4LTE2ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28sIHRpZ2h0ZW5l
ZCB1cCBiZWhhdmlvciBvZiBYTUxIdHRwUmVxdWVzdCB3aXRoIGNyb3NzLW9yaWdpbiByZWRpcmVj
dHMgYW5kIGFjY2VzcyBjb250cm9sLiBXZSBoYXZlIG5vdCBpbXBsZW1lbnRlZCByZWRpcmVjdHMK
KyAgICAgICAgZm9yIGFjY2VzcyBjb250cm9sLCBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3Qg
YWNyb3NzIG9yaWdpbnMuIEJ1dCBpbiB0d28gZWRnZSBjYXNlcywgd2Ugd2VyZToKKworICAgICAg
ICAqIFN5bmNocm9ub3VzIFhIUjogY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgdGhhdCByZWRpcmVjdHMg
dG8gc2FtZS1vcmlnaW4gcmVzb3VyY2UuCisgICAgICAgICogQXN5bmNocm9ub3VzIFhIUjogc2Ft
ZS1vcmlnaW4gcmVxdWVzdCB0aGF0IHJlZGlyZWN0cyAod2l0aG91dCBhY2Nlc3MgY29udHJvbCBh
dXRob3JpemF0aW9uKSB0byBjcm9zcy1vcmlnaW4gcmVzb3VyY2UgKHdpdGgKKyAgICAgICAgICBh
Y2Nlc3MgY29udHJvbCBhdXRob3JpemF0aW9uKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wt
YW5kLXJlZGlyZWN0cy5odG1sOiBBZGRlZC4KKwogMjAwOS0wOC0xNiAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBOb3Qg
cmV2aWV3ZWQuIEFkZCBtaXNzaW5nIFdNTCBzcGVjaWZpYyBsYXlvdXQgdGVzdCByZXN1bHQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LWFuZC1yZWRpcmVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRpcmVjdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIxIEBACitUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qg
dGhhdCByZWRpcmVjdHMgdG8gYSBzYW1lLW9yaWdpbiByZXNvdXJjZSBzdWNjZWVkcy4KKworVGVz
dGluZyAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2kgKHN5
bmMpCitFeHBlY3Rpbmcgc3VjY2VzczogZmFsc2UKK1BBU1M6IEVycm9yOiBORVRXT1JLX0VSUjog
WE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMQorVGVzdGluZyAvcmVzb3VyY2VzL3JlZGlyZWN0
LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2koYXN5bmMpCitFeHBlY3Rpbmcgc3VjY2Vzczog
ZmFsc2UKK1BBU1M6IDAKK1Rlc3RpbmcgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9y
ZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpIChzeW5jKQorRXhwZWN0aW5nIHN1
Y2Nlc3M6IGZhbHNlCitQQVNTOiBFcnJvcjogTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4
Y2VwdGlvbiAxMDEKK1Rlc3RpbmcgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRp
cmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpKGFzeW5jKQorRXhwZWN0aW5nIHN1Y2Nl
c3M6IGZhbHNlCitQQVNTOiAwCitUZXN0aW5nIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJj
ZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaSAoc3luYykKK0V4cGVjdGlu
ZyBzdWNjZXNzOiBmYWxzZQorUEFTUzogRXJyb3I6IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVz
dCBFeGNlcHRpb24gMTAxCitUZXN0aW5nIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMv
cmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaShhc3luYykKK0V4cGVjdGluZyBz
dWNjZXNzOiBmYWxzZQorUEFTUzogMAorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRpcmVjdHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9s
LWFuZC1yZWRpcmVjdHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8cD5UZXN0cyB0aGF0IHJlZGlyZWN0cyBiZXR3ZWVu
IG9yaWdpbnMgYXJlIG5ldmVyIGFsbG93ZWQsIGV2ZW4gd2hlbiBhY2Nlc3MgY29udHJvbCBpcyBp
bnZvbHZlZC48L3A+Cis8cD5QZXIgdGhlIHNwZWMsIHRoZXNlIHRlc3QgY2FzZXMgc2hvdWxkIGJl
IGFsbG93ZWQsIGJ1dCBjcm9zcy1vcmlnaW4gcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgdW5zdXBw
b3J0ZWQgaW4gV2ViQ29yZS48L3A+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodXJsLCBleHBlY3RTeW5j
U3VjY2VzcywgZXhwZWN0QXN5bmNTdWNjZXNzKQoreworCWxvZygiVGVzdGluZyAiICsgdXJsICsg
IiAoc3luYykiKTsKKwlsb2coIkV4cGVjdGluZyBzdWNjZXNzOiAiICsgZXhwZWN0U3luY1N1Y2Nl
c3MpOworCisJdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCXJlcS5vcGVuKCJHRVQi
LCB1cmwsIGZhbHNlKTsKKworCXRyeSB7CisJCXJlcS5zZW5kKG51bGwpOworCQlsb2coKGV4cGVj
dFN5bmNTdWNjZXNzID8gIlBBU1MiIDogIkZBSUwiKSArICI6ICIgKyByZXEucmVzcG9uc2VUZXh0
KTsKKwl9IGNhdGNoIChleCkgeworCQlsb2coKGV4cGVjdFN5bmNTdWNjZXNzID8gIkZBSUwiIDog
IlBBU1MiKSArICI6ICIgKyBleCk7CisJfQorCQorCWxvZygiVGVzdGluZyAiICsgdXJsICsgIihh
c3luYykiKTsKKwlsb2coIkV4cGVjdGluZyBzdWNjZXNzOiAiICsgZXhwZWN0QXN5bmNTdWNjZXNz
KTsKKworCXJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworCXJlcS5vcGVuKCJHRVQiLCB1cmws
IHRydWUpOworCXJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwkJbG9nKChleHBlY3RBc3luY1N1
Y2Nlc3MgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogIiArIHJlcS5yZXNwb25zZVRleHQpOworCQlu
ZXh0VGVzdCgpOworCX0KKwlyZXEub25lcnJvciA9IGZ1bmN0aW9uKCkgeworCQlsb2coKGV4cGVj
dEFzeW5jU3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIikgKyAiOiAiICsgcmVxLnN0YXR1cyk7CisJ
CW5leHRUZXN0KCk7CisJfQorCXJlcS5zZW5kKG51bGwpOworfQorCit2YXIgdGVzdHMgPSBbCisJ
WyIvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2kiLCBmYWxz
ZSwgZmFsc2VdLAorCVsiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5w
aHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNj
ZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpIiwgZmFsc2UsIGZhbHNlXSwKKwlbImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0
OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93
LmNnaSIsIGZhbHNlLCBmYWxzZV0KK10KKwordmFyIGN1cnJlbnRUZXN0ID0gMDsKKworZnVuY3Rp
b24gbmV4dFRlc3QoKSB7CisJaWYgKGN1cnJlbnRUZXN0IDwgdGVzdHMubGVuZ3RoKQorCQlydW5U
ZXN0LmFwcGx5KG51bGwsIHRlc3RzW2N1cnJlbnRUZXN0KytdKTsKKwllbHNlIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisJCWxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworbmV4dFRlc3QoKTsKKzwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="19112"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34956</attachid>
            <date>2009-08-16 23:31:50 -0700</date>
            <delta_ts>2009-08-16 23:34:45 -0700</delta_ts>
            <desc>respond to comments</desc>
            <filename>bug28313.patch</filename>
            <type>text/plain</type>
            <size>17707</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzBhY2MwLi44OTI4ZGVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDgt
MTYgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI4MzEzOiBDb21iaW5lIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9z
c09yaWdpblJlcXVlc3RQb2xpY3kgYW5kCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
Ojpjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IHNpbmNlIHRoZXkgYXJlIGFsd2F5cyBzZXQgdGhl
IHNhbWUgd2F5LgorCisgICAgICAgIEFsc28sIHRpZ2h0ZW5lZCB1cCBiZWhhdmlvciBvZiBYTUxI
dHRwUmVxdWVzdCB3aXRoIGNyb3NzLW9yaWdpbiByZWRpcmVjdHMgYW5kIGFjY2VzcyBjb250cm9s
LiBXZSBoYXZlIG5vdCBpbXBsZW1lbnRlZCByZWRpcmVjdHMKKyAgICAgICAgZm9yIGFjY2VzcyBj
b250cm9sLCBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3QgYWNyb3NzIG9yaWdpbnMuIEJ1dCBp
biB0d28gZWRnZSBjYXNlcywgd2Ugd2VyZToKKworICAgICAgICAqIEFzeW5jaHJvbm91cyBYSFI6
IFNjcmlwdCBvbiBvcmlnaW4gQSByZXF1ZXN0cyByZXNvdXJjZSBmcm9tIG9yaWdpbiBCLiBTZXJ2
ZXIgcmVkaXJlY3RzICh3aXRob3V0IHNlbmRpbmcgYWNjZXNzIGNvbnRyb2wKKyAgICAgICAgICBh
dXRob3JpemF0aW9uIGhlYWRlcnMpIHRvIGEgcmVzb3VyY2Ugb24gb3JpZ2luIEEuCisgICAgICAg
ICogU3luY2hyb25vdXMgWEhSOiBTY3JpcHQgb24gb3JpZ2luIEEgcmVxdWVzdHMgcmVzb3VyY2Ug
ZnJvbSBvcmlnaW4gQi4gU2VydmVyIHJlZGlyZWN0cyAod2l0aG91dCBzZW5kaW5nIGFjY2VzcyBj
b250cm9sCisgICAgICAgICAgYXV0aG9yaXphdGlvbiBoZWFkZXJzKSB0byBhbm90aGVyIHJlc291
cmNlIG9uIG9yaWdpbiBCICh0aGlzIHRpbWUgc2VuZGluZyBhY2Nlc3MgY29udHJvbCBhdXRob3Jp
emF0aW9uIGhlYWRlcnMpLgorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3Rz
Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTA4LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFz
LnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQWRk
IG1pc3NpbmcgV01MIHNwZWNpZmljIGxheW91dCB0ZXN0IHJlc3VsdC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJl
ZGlyZWN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRpcmVjdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNmUzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRp
cmVjdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3RzIHRoYXQgcmVkaXJlY3Rz
IGJldHdlZW4gb3JpZ2lucyBhcmUgbmV2ZXIgYWxsb3dlZCwgZXZlbiB3aGVuIGFjY2VzcyBjb250
cm9sIGlzIGludm9sdmVkLgorCitQZXIgdGhlIHNwZWMsIHRoZXNlIHRlc3QgY2FzZXMgc2hvdWxk
IGJlIGFsbG93ZWQsIGJ1dCBjcm9zcy1vcmlnaW4gcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgdW5z
dXBwb3J0ZWQgaW4gV2ViQ29yZS4KKworVGVzdGluZyAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91
cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1iYXNpYy1hbGxvdy5jZ2kgKHN5bmMpCitFeHBlY3Rpbmcgc3VjY2VzczogZmFsc2UK
K1BBU1M6IEVycm9yOiBORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMQor
VGVzdGluZyAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2ko
YXN5bmMpCitFeHBlY3Rpbmcgc3VjY2VzczogZmFsc2UKK1BBU1M6IDAKK1Rlc3RpbmcgaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxs
b3cuY2dpIChzeW5jKQorRXhwZWN0aW5nIHN1Y2Nlc3M6IGZhbHNlCitQQVNTOiBFcnJvcjogTkVU
V09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDEKK1Rlc3RpbmcgaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cu
Y2dpKGFzeW5jKQorRXhwZWN0aW5nIHN1Y2Nlc3M6IGZhbHNlCitQQVNTOiAwCitUZXN0aW5nIGh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9j
YWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2lj
LWFsbG93LmNnaSAoc3luYykKK0V4cGVjdGluZyBzdWNjZXNzOiBmYWxzZQorUEFTUzogRXJyb3I6
IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxCitUZXN0aW5nIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxo
b3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFs
bG93LmNnaShhc3luYykKK0V4cGVjdGluZyBzdWNjZXNzOiBmYWxzZQorUEFTUzogMAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLWFuZC1yZWRpcmVjdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmU3ZDVmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRpcmVjdHMu
aHRtbApAQCAtMCwwICsxLDYzIEBACis8cD5UZXN0cyB0aGF0IHJlZGlyZWN0cyBiZXR3ZWVuIG9y
aWdpbnMgYXJlIG5ldmVyIGFsbG93ZWQsIGV2ZW4gd2hlbiBhY2Nlc3MgY29udHJvbCBpcyBpbnZv
bHZlZC48L3A+Cis8cD5QZXIgdGhlIHNwZWMsIHRoZXNlIHRlc3QgY2FzZXMgc2hvdWxkIGJlIGFs
bG93ZWQsIGJ1dCBjcm9zcy1vcmlnaW4gcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0
ZWQgaW4gV2ViQ29yZS48L3A+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1l
c3NhZ2UgKyAnXG4nKSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodXJsLCBleHBlY3RTeW5jU3Vj
Y2VzcywgZXhwZWN0QXN5bmNTdWNjZXNzKQoreworICAgIGxvZygiVGVzdGluZyAiICsgdXJsICsg
IiAoc3luYykiKTsKKyAgICBsb2coIkV4cGVjdGluZyBzdWNjZXNzOiAiICsgZXhwZWN0U3luY1N1
Y2Nlc3MpOworCisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5v
cGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKKworICAgIHRyeSB7CisgICAgICAgIHJlcS5zZW5kKG51
bGwpOworICAgICAgICBsb2coKGV4cGVjdFN5bmNTdWNjZXNzID8gIlBBU1MiIDogIkZBSUwiKSAr
ICI6ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBs
b2coKGV4cGVjdFN5bmNTdWNjZXNzID8gIkZBSUwiIDogIlBBU1MiKSArICI6ICIgKyBleCk7Cisg
ICAgfQorICAgIAorICAgIGxvZygiVGVzdGluZyAiICsgdXJsICsgIihhc3luYykiKTsKKyAgICBs
b2coIkV4cGVjdGluZyBzdWNjZXNzOiAiICsgZXhwZWN0QXN5bmNTdWNjZXNzKTsKKworICAgIHJl
cSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUp
OworICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKChleHBlY3RBc3lu
Y1N1Y2Nlc3MgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogIiArIHJlcS5yZXNwb25zZVRleHQpOwor
ICAgICAgICBuZXh0VGVzdCgpOworICAgIH0KKyAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBsb2coKGV4cGVjdEFzeW5jU3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIikgKyAi
OiAiICsgcmVxLnN0YXR1cyk7CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorICAgIHJlcS5z
ZW5kKG51bGwpOworfQorCit2YXIgdGVzdHMgPSBbCisgICAgWyIvcmVzb3VyY2VzL3JlZGlyZWN0
LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2kiLCBmYWxzZSwgZmFsc2VdLAorICAgIFsiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMt
YWxsb3cuY2dpIiwgZmFsc2UsIGZhbHNlXSwKKyAgICBbImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9y
ZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaSIsIGZhbHNlLCBm
YWxzZV0KK10KKwordmFyIGN1cnJlbnRUZXN0ID0gMDsKKworZnVuY3Rpb24gbmV4dFRlc3QoKSB7
CisgICAgaWYgKGN1cnJlbnRUZXN0IDwgdGVzdHMubGVuZ3RoKQorICAgICAgICBydW5UZXN0LmFw
cGx5KG51bGwsIHRlc3RzW2N1cnJlbnRUZXN0KytdKTsKKyAgICBlbHNlIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworbmV4dFRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYTkwOTUzLi5hNWNlMGRhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDA5LTA4LTE2ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODMxMzogQ29tYmluZSBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9uczo6Y3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGFuZAorICAgICAgICBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9uczo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBzaW5jZSB0aGV5
IGFyZSBhbHdheXMgc2V0IHRoZSBzYW1lIHdheS4KKworICAgICAgICBBbHNvLCB0aWdodGVuZWQg
dXAgYmVoYXZpb3Igb2YgWE1MSHR0cFJlcXVlc3Qgd2l0aCBjcm9zcy1vcmlnaW4gcmVkaXJlY3Rz
IGFuZCBhY2Nlc3MgY29udHJvbC4gV2UgaGF2ZSBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgcmVk
aXJlY3RzIGFjY2VzcyBjb250cm9sLCBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3QgYWNyb3Nz
IG9yaWdpbnMuIEJ1dCBpbiB0d28gZWRnZSBjYXNlcywgd2Ugd2VyZToKKworICAgICAgICAqIEFz
eW5jaHJvbm91cyBYSFI6IFNjcmlwdCBvbiBvcmlnaW4gQSByZXF1ZXN0cyByZXNvdXJjZSBmcm9t
IG9yaWdpbiBCLiBTZXJ2ZXIgcmVkaXJlY3RzICh3aXRob3V0IHNlbmRpbmcgYWNjZXNzIGNvbnRy
b2wKKyAgICAgICAgICBhdXRob3JpemF0aW9uIGhlYWRlcnMpIHRvIGEgcmVzb3VyY2Ugb24gb3Jp
Z2luIEEuCisgICAgICAgICogU3luY2hyb25vdXMgWEhSOiBTY3JpcHQgb24gb3JpZ2luIEEgcmVx
dWVzdHMgcmVzb3VyY2UgZnJvbSBvcmlnaW4gQi4gU2VydmVyIHJlZGlyZWN0cyAod2l0aG91dCBz
ZW5kaW5nIGFjY2VzcyBjb250cm9sCisgICAgICAgICAgYXV0aG9yaXphdGlvbiBoZWFkZXJzKSB0
byBhbm90aGVyIHJlc291cmNlIG9uIG9yaWdpbiBCICh0aGlzIHRpbWUgc2VuZGluZyBhY2Nlc3Mg
Y29udHJvbCBhdXRob3JpemF0aW9uIGhlYWRlcnMpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCisKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogUmVmYWN0
b3IgcmVkaXJlY3QgY2hlY2tpbmcgY29kZSBpbnRvIHNoYXJlZCBsb2NhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNMZWdhbFJlZGly
ZWN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMpOiBSZW1v
dmUgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OmNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kuCisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNv
dXJjZTo6Y29ubmVjdCk6IERpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6IERpdHRvLgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6IERpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRl
cjo6bG9hZFN5bmNocm9ub3VzbHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KTogRGl0dG8uCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaDogCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KTogRGl0
dG8uCisKIDIwMDktMDgtMTYgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFu
bkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3Mu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA3NDE4
NmQ2Li4wZDhkYzE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTE2OSw4ICsxNjksNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIsIFJlc291cgogICAgIEFT
U0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRlciA9PSBtX2xv
YWRlcik7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBmaXhlZCB0byBmb2xsb3cg
dGhlIHJlZGlyZWN0IGNvcnJlY3RseSBldmVuIGZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMuCi0g
ICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlZGlyZWN0UG9saWN5ID09IERlbnlDcm9zc09y
aWdpblJlZGlyZWN0ICYmICFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0
KHJlcXVlc3QudXJsKCkpKSB7CisgICAgaWYgKCFpc0FsbG93ZWRSZWRpcmVjdChyZXF1ZXN0LnVy
bCgpKSkgewogICAgICAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAg
ICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpAQCAtMzIyLDkgKzMyMSwxMCBAQCB2b2lk
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBib29sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhN
RTogVGhpcyBjaGVjayBhbG9uZyB3aXRoIHRoZSBvbmUgaW4gd2lsbFNlbmRSZXF1ZXN0IGlzIHNw
ZWNpZmljIHRvIHhociBhbmQKLSAgICAvLyBzaG91bGQgYmUgbWFkZSBtb3JlIGdlbmVyaWMuCi0g
ICAgaWYgKG1fc2FtZU9yaWdpblJlcXVlc3QgJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCktPmNhblJlcXVlc3QocmVzcG9uc2UudXJsKCkpKSB7CisgICAgLy8gRklYTUU6IEZyYW1lTG9h
ZGVyOjpsb2FkU3luY2hyb25vdXNseSgpIGRvZXMgbm90IHRlbGwgdXMgd2hldGhlciBhIHJlZGly
ZWN0IGhhcHBlbmVkIG9yIG5vdCwgc28gd2UgZ3Vlc3MgYnkgY29tcGFyaW5nIHRoZQorICAgIC8v
IHJlcXVlc3QgYW5kIHJlc3BvbnNlIFVSTHMuIFRoaXMgaXNuJ3QgYSBwZXJmZWN0IHRlc3QgdGhv
dWdoLCBzaW5jZSBhIHNlcnZlciBjYW4gc2VydmUgYSByZWRpcmVjdCB0byB0aGUgc2FtZSBVUkwg
dGhhdCB3YXMKKyAgICAvLyByZXF1ZXN0ZWQuCisgICAgaWYgKHJlcXVlc3QudXJsKCkgIT0gcmVz
cG9uc2UudXJsKCkgJiYgIWlzQWxsb3dlZFJlZGlyZWN0KHJlc3BvbnNlLnVybCgpKSkgewogICAg
ICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTMzOCw0ICszMzgsMTUgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbAogICAgIGRp
ZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CiB9CiAKK2Jvb2wgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgaWYgKG1f
b3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gQWxsb3dDcm9zc09yaWdpblJlcXVl
c3RzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGlt
cGxlbWVudCBhY2Nlc3MgY29udHJvbCBmb3IgZWFjaCByZWRpcmVjdC4gVGhpcyB3aWxsIHJlcXVp
cmUgc29tZSByZWZhY3RvcmluZyB0aG91Z2gsIGJlY2F1c2UgdGhlIGNvZGUKKyAgICAvLyB0aGF0
IHByb2Nlc3NlcyByZWRpcmVjdHMgZG9lc24ndCBrbm93IGFib3V0IGFjY2VzcyBjb250cm9sIGFu
ZCBleHBlY3RzIGEgc3luY2hyb25vdXMgYW5zd2VyIGZyb20gaXRzIGNsaWVudCBhYm91dCB3aGV0
aGVyCisgICAgLy8gYSByZWRpcmVjdCBzaG91bGQgcHJvY2VlZC4KKyAgICByZXR1cm4gbV9zYW1l
T3JpZ2luUmVxdWVzdCAmJiBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0
KHVybCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYThjYmY0Ni4uNjRiMWEyMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERvY3VtZW50OworICAgIGNsYXNzIEtVUkw7CiAg
ICAgc3RydWN0IFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50OwogCkBAIC04NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBwcmVmbGlnaHRGYWlsdXJlKCk7CiAKICAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBib29sIHNraXBDYW5Mb2FkQ2hlY2spOworICAgICAgICBib29sIGlz
QWxsb3dlZFJlZGlyZWN0KGNvbnN0IEtVUkwmKTsKIAogICAgICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IG1fbG9hZGVyOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2Ns
aWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaCBiL1dl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAppbmRleCA1NmJhYmI5Li5hNTJiZmFkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCkBAIC01NCwxOSArNTQsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMKICAgICB9OwogICAg
IAotICAgIGVudW0gQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSB7Ci0gICAgICAgIERlbnlDcm9z
c09yaWdpblJlZGlyZWN0LAotICAgICAgICBBbGxvd0Nyb3NzT3JpZ2luUmVkaXJlY3QKLSAgICB9
OwotICAgIAogICAgIHN0cnVjdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyB7Ci0gICAgICAgIFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENhbGxiYWNrcyhmYWxzZSksIHNuaWZm
Q29udGVudChmYWxzZSksIGFsbG93Q3JlZGVudGlhbHMoZmFsc2UpLCBmb3JjZVByZWZsaWdodChm
YWxzZSksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cyks
IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3koQWxsb3dDcm9zc09yaWdpblJlZGlyZWN0KSB7IH0K
KyAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKGZh
bHNlKSwgc25pZmZDb250ZW50KGZhbHNlKSwgYWxsb3dDcmVkZW50aWFscyhmYWxzZSksIGZvcmNl
UHJlZmxpZ2h0KGZhbHNlKSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KERlbnlDcm9zc09yaWdp
blJlcXVlc3RzKSB7IH0KICAgICAgICAgYm9vbCBzZW5kTG9hZENhbGxiYWNrczsKICAgICAgICAg
Ym9vbCBzbmlmZkNvbnRlbnQ7CiAgICAgICAgIGJvb2wgYWxsb3dDcmVkZW50aWFsczsgIC8vIFdo
ZXRoZXIgSFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRoIHRoZSByZXF1
ZXN0LgogICAgICAgICBib29sIGZvcmNlUHJlZmxpZ2h0OyAgLy8gSWYgQWNjZXNzQ29udHJvbCBp
cyB1c2VkLCB3aGV0aGVyIHRvIGZvcmNlIGEgcHJlZmxpZ2h0LgogICAgICAgICBDcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwotICAgICAgICBDcm9zc09y
aWdpblJlZGlyZWN0UG9saWN5IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3k7CiAgICAgfTsKIAog
ICAgIC8vIFVzZWZ1bCBmb3IgZG9pbmcgbG9hZGVyIG9wZXJhdGlvbnMgZnJvbSBhbnkgdGhyZWFk
IChub3QgdGhyZWFkc2FmZSwgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBjZDI3Mjg3Li40NzI0M2Q5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTk0LDcgKzk0LDYgQEAgdm9pZCBFdmVudFNvdXJjZTo6
Y29ubmVjdCgpCiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHRydWU7CiAgICAgb3B0
aW9ucy5zbmlmZkNvbnRlbnQgPSBmYWxzZTsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMg
PSB0cnVlOwotICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSA9IERlbnlDcm9z
c09yaWdpblJlZGlyZWN0OwogCiAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAppbmRleCBhOTA2MTM0Li5kNGQwZTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBXb3JrZXI6Oldvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3NjcmlwdExvYWRlciA9IG5ldyBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKLSAgICBtX3Njcmlw
dExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2Ny
aXB0VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZWRpcmVjdCwgdGhpcyk7CisgICAgbV9zY3JpcHRMb2Fk
ZXItPmxvYWRBc3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNjcmlwdFVS
TCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHRoaXMpOwogICAgIHNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsgIC8vIFRoZSB3b3JrZXIgY29udGV4dCBkb2VzIG5vdCBleGlzdCB3aGlsZSBsb2Fk
aW5nLCBzbyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSB3b3JrZXIgb2JqZWN0IGlzIG5vdCBjb2xs
ZWN0ZWQsIGFzIHdlbGwgYXMgaXRzIGV2ZW50IGxpc3RlbmVycy4KIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuY3BwCmluZGV4IDNkNmFkYmYuLjNjYjE3MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OmltcG9ydFNj
cmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbAogCiAg
ICAgZm9yIChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgV29ya2VyU2NyaXB0TG9hZGVyIHNj
cmlwdExvYWRlcjsKLSAgICAgICAgc2NyaXB0TG9hZGVyLmxvYWRTeW5jaHJvbm91c2x5KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKml0LCBBbGxvd0Nyb3NzT3JpZ2luUmVkaXJlY3QpOworICAg
ICAgICBzY3JpcHRMb2FkZXIubG9hZFN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCAqaXQsIEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cyk7CiAKICAgICAgICAgLy8gSWYgdGhl
IGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktfRVJSIGV4Y2VwdGlvbiBh
bmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoc2NyaXB0TG9hZGVyLmZhaWxl
ZCgpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDA2NDE2ZjQu
LjUyYmFmMmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC01MCw3
ICs1MCw3IEBAIFdvcmtlclNjcmlwdExvYWRlcjo6V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsKIH0K
IAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jv
c3NPcmlnaW5SZWRpcmVjdFBvbGljeSBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5KQordm9pZCBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSkKIHsKICAgICBtX3VybCA9IHVy
bDsKIApAQCAtNjIsMTMgKzYyLDEyIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpCiAKICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50
aWFscyA9IHRydWU7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBBbGxv
d0Nyb3NzT3JpZ2luUmVxdWVzdHM7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlZGlyZWN0UG9s
aWN5ID0gY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeTsKKyAgICBvcHRpb25zLmNyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeSA9IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKIAogICAgIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGljX2Nhc3Q8V29y
a2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRoaXMsIG9w
dGlvbnMpOwogfQogICAgIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25v
dXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25z
dCBLVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kgY3Jvc3NPcmlnaW5SZWRpcmVj
dFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7
CkBAIC04MCw4ICs3OSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9u
b3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0CiAKICAgICBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9
IHRydWU7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBBbGxvd0Nyb3Nz
T3JpZ2luUmVxdWVzdHM7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlZGlyZWN0UG9saWN5ID0g
Y3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeTsKKyAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSA9IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKIAogICAgIG1fdGhyZWFkYWJsZUxv
YWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0
aGlzLCAqcmVxdWVzdCwgb3B0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKaW5kZXggMjkyNGVjOC4uNDc2MjNmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaApAQCAtNDYsOCArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKIAotICAgICAgICB2b2lkIGxvYWRTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5S
ZWRpcmVjdFBvbGljeSk7Ci0gICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSwg
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7CisgICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3Vz
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kpOworICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50Kik7CiAKICAgICAgICAgdm9pZCBub3RpZnlFcnJvcigpOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMTdiMWJiMS4uMGIyZmFiYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcApAQCAtNDk4LDcgKzQ5OCw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
cXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgb3B0aW9ucy5mb3JjZVByZWZsaWdodCA9IGZv
cmNlUHJlZmxpZ2h0OwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IG1fc2FtZU9yaWdp
blJlcXVlc3QgfHwgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kgPSBVc2VBY2Nlc3NDb250cm9sOwotICAgIG9wdGlvbnMuY3Jvc3NPcmln
aW5SZWRpcmVjdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJlZGlyZWN0OwogCiAgICAgbV9leGNl
cHRpb25Db2RlID0gMDsKICAgICBtX2Vycm9yID0gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34957</attachid>
            <date>2009-08-16 23:34:45 -0700</date>
            <delta_ts>2009-08-17 13:40:11 -0700</delta_ts>
            <desc>isLegalRedirect-&gt;isAllowedRedirect in WebCore/ChangeLog</desc>
            <filename>bug28313.patch</filename>
            <type>text/plain</type>
            <size>17709</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzBhY2MwLi44OTI4ZGVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDgt
MTYgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI4MzEzOiBDb21iaW5lIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpjcm9z
c09yaWdpblJlcXVlc3RQb2xpY3kgYW5kCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
Ojpjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IHNpbmNlIHRoZXkgYXJlIGFsd2F5cyBzZXQgdGhl
IHNhbWUgd2F5LgorCisgICAgICAgIEFsc28sIHRpZ2h0ZW5lZCB1cCBiZWhhdmlvciBvZiBYTUxI
dHRwUmVxdWVzdCB3aXRoIGNyb3NzLW9yaWdpbiByZWRpcmVjdHMgYW5kIGFjY2VzcyBjb250cm9s
LiBXZSBoYXZlIG5vdCBpbXBsZW1lbnRlZCByZWRpcmVjdHMKKyAgICAgICAgZm9yIGFjY2VzcyBj
b250cm9sLCBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3QgYWNyb3NzIG9yaWdpbnMuIEJ1dCBp
biB0d28gZWRnZSBjYXNlcywgd2Ugd2VyZToKKworICAgICAgICAqIEFzeW5jaHJvbm91cyBYSFI6
IFNjcmlwdCBvbiBvcmlnaW4gQSByZXF1ZXN0cyByZXNvdXJjZSBmcm9tIG9yaWdpbiBCLiBTZXJ2
ZXIgcmVkaXJlY3RzICh3aXRob3V0IHNlbmRpbmcgYWNjZXNzIGNvbnRyb2wKKyAgICAgICAgICBh
dXRob3JpemF0aW9uIGhlYWRlcnMpIHRvIGEgcmVzb3VyY2Ugb24gb3JpZ2luIEEuCisgICAgICAg
ICogU3luY2hyb25vdXMgWEhSOiBTY3JpcHQgb24gb3JpZ2luIEEgcmVxdWVzdHMgcmVzb3VyY2Ug
ZnJvbSBvcmlnaW4gQi4gU2VydmVyIHJlZGlyZWN0cyAod2l0aG91dCBzZW5kaW5nIGFjY2VzcyBj
b250cm9sCisgICAgICAgICAgYXV0aG9yaXphdGlvbiBoZWFkZXJzKSB0byBhbm90aGVyIHJlc291
cmNlIG9uIG9yaWdpbiBCICh0aGlzIHRpbWUgc2VuZGluZyBhY2Nlc3MgY29udHJvbCBhdXRob3Jp
emF0aW9uIGhlYWRlcnMpLgorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3Rz
Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTA4LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFz
LnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQWRk
IG1pc3NpbmcgV01MIHNwZWNpZmljIGxheW91dCB0ZXN0IHJlc3VsdC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJl
ZGlyZWN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRpcmVjdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNmUzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRp
cmVjdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3RzIHRoYXQgcmVkaXJlY3Rz
IGJldHdlZW4gb3JpZ2lucyBhcmUgbmV2ZXIgYWxsb3dlZCwgZXZlbiB3aGVuIGFjY2VzcyBjb250
cm9sIGlzIGludm9sdmVkLgorCitQZXIgdGhlIHNwZWMsIHRoZXNlIHRlc3QgY2FzZXMgc2hvdWxk
IGJlIGFsbG93ZWQsIGJ1dCBjcm9zcy1vcmlnaW4gcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgdW5z
dXBwb3J0ZWQgaW4gV2ViQ29yZS4KKworVGVzdGluZyAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91
cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3Mt
Y29udHJvbC1iYXNpYy1hbGxvdy5jZ2kgKHN5bmMpCitFeHBlY3Rpbmcgc3VjY2VzczogZmFsc2UK
K1BBU1M6IEVycm9yOiBORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMQor
VGVzdGluZyAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2ko
YXN5bmMpCitFeHBlY3Rpbmcgc3VjY2VzczogZmFsc2UKK1BBU1M6IDAKK1Rlc3RpbmcgaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxs
b3cuY2dpIChzeW5jKQorRXhwZWN0aW5nIHN1Y2Nlc3M6IGZhbHNlCitQQVNTOiBFcnJvcjogTkVU
V09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDEKK1Rlc3RpbmcgaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cu
Y2dpKGFzeW5jKQorRXhwZWN0aW5nIHN1Y2Nlc3M6IGZhbHNlCitQQVNTOiAwCitUZXN0aW5nIGh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9j
YWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2lj
LWFsbG93LmNnaSAoc3luYykKK0V4cGVjdGluZyBzdWNjZXNzOiBmYWxzZQorUEFTUzogRXJyb3I6
IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxCitUZXN0aW5nIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxo
b3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFs
bG93LmNnaShhc3luYykKK0V4cGVjdGluZyBzdWNjZXNzOiBmYWxzZQorUEFTUzogMAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLWFuZC1yZWRpcmVjdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmU3ZDVmYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWFuZC1yZWRpcmVjdHMu
aHRtbApAQCAtMCwwICsxLDYzIEBACis8cD5UZXN0cyB0aGF0IHJlZGlyZWN0cyBiZXR3ZWVuIG9y
aWdpbnMgYXJlIG5ldmVyIGFsbG93ZWQsIGV2ZW4gd2hlbiBhY2Nlc3MgY29udHJvbCBpcyBpbnZv
bHZlZC48L3A+Cis8cD5QZXIgdGhlIHNwZWMsIHRoZXNlIHRlc3QgY2FzZXMgc2hvdWxkIGJlIGFs
bG93ZWQsIGJ1dCBjcm9zcy1vcmlnaW4gcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0
ZWQgaW4gV2ViQ29yZS48L3A+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1l
c3NhZ2UgKyAnXG4nKSk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodXJsLCBleHBlY3RTeW5jU3Vj
Y2VzcywgZXhwZWN0QXN5bmNTdWNjZXNzKQoreworICAgIGxvZygiVGVzdGluZyAiICsgdXJsICsg
IiAoc3luYykiKTsKKyAgICBsb2coIkV4cGVjdGluZyBzdWNjZXNzOiAiICsgZXhwZWN0U3luY1N1
Y2Nlc3MpOworCisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5v
cGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKKworICAgIHRyeSB7CisgICAgICAgIHJlcS5zZW5kKG51
bGwpOworICAgICAgICBsb2coKGV4cGVjdFN5bmNTdWNjZXNzID8gIlBBU1MiIDogIkZBSUwiKSAr
ICI6ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBs
b2coKGV4cGVjdFN5bmNTdWNjZXNzID8gIkZBSUwiIDogIlBBU1MiKSArICI6ICIgKyBleCk7Cisg
ICAgfQorICAgIAorICAgIGxvZygiVGVzdGluZyAiICsgdXJsICsgIihhc3luYykiKTsKKyAgICBs
b2coIkV4cGVjdGluZyBzdWNjZXNzOiAiICsgZXhwZWN0QXN5bmNTdWNjZXNzKTsKKworICAgIHJl
cSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUp
OworICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKChleHBlY3RBc3lu
Y1N1Y2Nlc3MgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogIiArIHJlcS5yZXNwb25zZVRleHQpOwor
ICAgICAgICBuZXh0VGVzdCgpOworICAgIH0KKyAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBsb2coKGV4cGVjdEFzeW5jU3VjY2VzcyA/ICJGQUlMIiA6ICJQQVNTIikgKyAi
OiAiICsgcmVxLnN0YXR1cyk7CisgICAgICAgIG5leHRUZXN0KCk7CisgICAgfQorICAgIHJlcS5z
ZW5kKG51bGwpOworfQorCit2YXIgdGVzdHMgPSBbCisgICAgWyIvcmVzb3VyY2VzL3JlZGlyZWN0
LnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2kiLCBmYWxzZSwgZmFsc2VdLAorICAgIFsiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMt
YWxsb3cuY2dpIiwgZmFsc2UsIGZhbHNlXSwKKyAgICBbImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9y
ZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaSIsIGZhbHNlLCBm
YWxzZV0KK10KKwordmFyIGN1cnJlbnRUZXN0ID0gMDsKKworZnVuY3Rpb24gbmV4dFRlc3QoKSB7
CisgICAgaWYgKGN1cnJlbnRUZXN0IDwgdGVzdHMubGVuZ3RoKQorICAgICAgICBydW5UZXN0LmFw
cGx5KG51bGwsIHRlc3RzW2N1cnJlbnRUZXN0KytdKTsKKyAgICBlbHNlIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworbmV4dFRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYTkwOTUzLi43NDE1NmJiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDA5LTA4LTE2ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODMxMzogQ29tYmluZSBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9uczo6Y3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGFuZAorICAgICAgICBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9uczo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBzaW5jZSB0aGV5
IGFyZSBhbHdheXMgc2V0IHRoZSBzYW1lIHdheS4KKworICAgICAgICBBbHNvLCB0aWdodGVuZWQg
dXAgYmVoYXZpb3Igb2YgWE1MSHR0cFJlcXVlc3Qgd2l0aCBjcm9zcy1vcmlnaW4gcmVkaXJlY3Rz
IGFuZCBhY2Nlc3MgY29udHJvbC4gV2UgaGF2ZSBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgcmVk
aXJlY3RzIGFjY2VzcyBjb250cm9sLCBzbyB3ZSBzaG91bGQgbmV2ZXIgcmVkaXJlY3QgYWNyb3Nz
IG9yaWdpbnMuIEJ1dCBpbiB0d28gZWRnZSBjYXNlcywgd2Ugd2VyZToKKworICAgICAgICAqIEFz
eW5jaHJvbm91cyBYSFI6IFNjcmlwdCBvbiBvcmlnaW4gQSByZXF1ZXN0cyByZXNvdXJjZSBmcm9t
IG9yaWdpbiBCLiBTZXJ2ZXIgcmVkaXJlY3RzICh3aXRob3V0IHNlbmRpbmcgYWNjZXNzIGNvbnRy
b2wKKyAgICAgICAgICBhdXRob3JpemF0aW9uIGhlYWRlcnMpIHRvIGEgcmVzb3VyY2Ugb24gb3Jp
Z2luIEEuCisgICAgICAgICogU3luY2hyb25vdXMgWEhSOiBTY3JpcHQgb24gb3JpZ2luIEEgcmVx
dWVzdHMgcmVzb3VyY2UgZnJvbSBvcmlnaW4gQi4gU2VydmVyIHJlZGlyZWN0cyAod2l0aG91dCBz
ZW5kaW5nIGFjY2VzcyBjb250cm9sCisgICAgICAgICAgYXV0aG9yaXphdGlvbiBoZWFkZXJzKSB0
byBhbm90aGVyIHJlc291cmNlIG9uIG9yaWdpbiBCICh0aGlzIHRpbWUgc2VuZGluZyBhY2Nlc3Mg
Y29udHJvbCBhdXRob3JpemF0aW9uIGhlYWRlcnMpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCisKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogUmVmYWN0
b3IgcmVkaXJlY3QgY2hlY2tpbmcgY29kZSBpbnRvIHNoYXJlZCBsb2NhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVk
aXJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyk6IFJl
bW92ZSBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeS4K
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpjb25uZWN0KTogRGl0dG8uCisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6V29ya2VyKTogRGl0dG8uCisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKTogRGl0dG8uCisgICAgICAgICogd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9h
ZGVyOjpsb2FkU3luY2hyb25vdXNseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOiBEaXR0by4KKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oOiAKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOiBE
aXR0by4KKwogMjAwOS0wOC0xNiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJt
YW5uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtv
cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDc0
MTg2ZDYuLjBkOGRjMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcApAQCAtMTY5LDggKzE2OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgUmVzb3VyCiAgICAg
QVNTRVJUKG1fY2xpZW50KTsKICAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1f
bG9hZGVyKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxv
dyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4K
LSAgICBpZiAobV9vcHRpb25zLmNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kgPT0gRGVueUNyb3Nz
T3JpZ2luUmVkaXJlY3QgJiYgIW1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3QocmVxdWVzdC51cmwoKSkpIHsKKyAgICBpZiAoIWlzQWxsb3dlZFJlZGlyZWN0KHJlcXVlc3Qu
dXJsKCkpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7CiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAg
ICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CkBAIC0zMjIsOSArMzIxLDEwIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGJvb2wKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJ
WE1FOiBUaGlzIGNoZWNrIGFsb25nIHdpdGggdGhlIG9uZSBpbiB3aWxsU2VuZFJlcXVlc3QgaXMg
c3BlY2lmaWMgdG8geGhyIGFuZAotICAgIC8vIHNob3VsZCBiZSBtYWRlIG1vcmUgZ2VuZXJpYy4K
LSAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhbV9kb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuUmVxdWVzdChyZXNwb25zZS51cmwoKSkpIHsKKyAgICAvLyBGSVhNRTogRnJhbWVM
b2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KCkgZG9lcyBub3QgdGVsbCB1cyB3aGV0aGVyIGEgcmVk
aXJlY3QgaGFwcGVuZWQgb3Igbm90LCBzbyB3ZSBndWVzcyBieSBjb21wYXJpbmcgdGhlCisgICAg
Ly8gcmVxdWVzdCBhbmQgcmVzcG9uc2UgVVJMcy4gVGhpcyBpc24ndCBhIHBlcmZlY3QgdGVzdCB0
aG91Z2gsIHNpbmNlIGEgc2VydmVyIGNhbiBzZXJ2ZSBhIHJlZGlyZWN0IHRvIHRoZSBzYW1lIFVS
TCB0aGF0IHdhcworICAgIC8vIHJlcXVlc3RlZC4KKyAgICBpZiAocmVxdWVzdC51cmwoKSAhPSBy
ZXNwb25zZS51cmwoKSAmJiAhaXNBbGxvd2VkUmVkaXJlY3QocmVzcG9uc2UudXJsKCkpKSB7CiAg
ICAgICAgIG1fY2xpZW50LT5kaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMzM4LDQgKzMzOCwxNSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sCiAgICAg
ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAo
bV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBBbGxvd0Nyb3NzT3JpZ2luUmVx
dWVzdHMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
aW1wbGVtZW50IGFjY2VzcyBjb250cm9sIGZvciBlYWNoIHJlZGlyZWN0LiBUaGlzIHdpbGwgcmVx
dWlyZSBzb21lIHJlZmFjdG9yaW5nIHRob3VnaCwgYmVjYXVzZSB0aGUgY29kZQorICAgIC8vIHRo
YXQgcHJvY2Vzc2VzIHJlZGlyZWN0cyBkb2Vzbid0IGtub3cgYWJvdXQgYWNjZXNzIGNvbnRyb2wg
YW5kIGV4cGVjdHMgYSBzeW5jaHJvbm91cyBhbnN3ZXIgZnJvbSBpdHMgY2xpZW50IGFib3V0IHdo
ZXRoZXIKKyAgICAvLyBhIHJlZGlyZWN0IHNob3VsZCBwcm9jZWVkLgorICAgIHJldHVybiBtX3Nh
bWVPcmlnaW5SZXF1ZXN0ICYmIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3QodXJsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBhOGNiZjQ2Li42NGIxYTIyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtNDAsNiArNDAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgS1VSTDsK
ICAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXJD
bGllbnQ7CiAKQEAgLTg1LDYgKzg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHByZWZsaWdodEZhaWx1cmUoKTsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIGJvb2wg
aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgS1VSTCYpOwogCiAgICAgICAgIFJlZlB0cjxTdWJyZXNv
dXJjZUxvYWRlcj4gbV9sb2FkZXI7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIG1f
Y2xpZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oIGIv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDU2YmFiYjkuLmE1MmJmYWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTU0LDE5ICs1NCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cwogICAgIH07CiAg
ICAgCi0gICAgZW51bSBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5IHsKLSAgICAgICAgRGVueUNy
b3NzT3JpZ2luUmVkaXJlY3QsCi0gICAgICAgIEFsbG93Q3Jvc3NPcmlnaW5SZWRpcmVjdAotICAg
IH07Ci0gICAgCiAgICAgc3RydWN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIHsKLSAgICAgICAg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKGZhbHNlKSwgc25p
ZmZDb250ZW50KGZhbHNlKSwgYWxsb3dDcmVkZW50aWFscyhmYWxzZSksIGZvcmNlUHJlZmxpZ2h0
KGZhbHNlKSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KERlbnlDcm9zc09yaWdpblJlcXVlc3Rz
KSwgY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeShBbGxvd0Nyb3NzT3JpZ2luUmVkaXJlY3QpIHsg
fQorICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpIDogc2VuZExvYWRDYWxsYmFja3Mo
ZmFsc2UpLCBzbmlmZkNvbnRlbnQoZmFsc2UpLCBhbGxvd0NyZWRlbnRpYWxzKGZhbHNlKSwgZm9y
Y2VQcmVmbGlnaHQoZmFsc2UpLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koRGVueUNyb3NzT3Jp
Z2luUmVxdWVzdHMpIHsgfQogICAgICAgICBib29sIHNlbmRMb2FkQ2FsbGJhY2tzOwogICAgICAg
ICBib29sIHNuaWZmQ29udGVudDsKICAgICAgICAgYm9vbCBhbGxvd0NyZWRlbnRpYWxzOyAgLy8g
V2hldGhlciBIVFRQIGNyZWRlbnRpYWxzIGFuZCBjb29raWVzIGFyZSBzZW50IHdpdGggdGhlIHJl
cXVlc3QuCiAgICAgICAgIGJvb2wgZm9yY2VQcmVmbGlnaHQ7ICAvLyBJZiBBY2Nlc3NDb250cm9s
IGlzIHVzZWQsIHdoZXRoZXIgdG8gZm9yY2UgYSBwcmVmbGlnaHQuCiAgICAgICAgIENyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7Ci0gICAgICAgIENyb3Nz
T3JpZ2luUmVkaXJlY3RQb2xpY3kgY3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeTsKICAgICB9Owog
CiAgICAgLy8gVXNlZnVsIGZvciBkb2luZyBsb2FkZXIgb3BlcmF0aW9ucyBmcm9tIGFueSB0aHJl
YWQgKG5vdCB0aHJlYWRzYWZlLCAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGNkMjcyODcuLjQ3MjQz
ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtOTQsNyArOTQsNiBAQCB2b2lkIEV2ZW50U291cmNl
Ojpjb25uZWN0KCkKICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsKICAgICBv
cHRpb25zLnNuaWZmQ29udGVudCA9IGZhbHNlOwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFs
cyA9IHRydWU7Ci0gICAgb3B0aW9ucy5jcm9zc09yaWdpblJlZGlyZWN0UG9saWN5ID0gRGVueUNy
b3NzT3JpZ2luUmVkaXJlY3Q7CiAKICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCmluZGV4IGE5MDYxMzQuLmQ0ZDBlOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFdvcmtlcjo6V29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdvcmtlclNjcmlwdExvYWRlcigpOwotICAgIG1fc2Ny
aXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBz
Y3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LCB0aGlzKTsKKyAgICBtX3NjcmlwdExv
YWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0
VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywgdGhpcyk7CiAgICAgc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOyAgLy8gVGhlIHdvcmtlciBjb250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxv
YWRpbmcsIHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNv
bGxlY3RlZCwgYXMgd2VsbCBhcyBpdHMgZXZlbnQgbGlzdGVuZXJzLgogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAKaW5kZXggM2Q2YWRiZi4uM2NiMTczMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0
U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsCiAK
ICAgICBmb3IgKFZlY3RvcjxLVVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRVUkxz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBXb3JrZXJTY3JpcHRMb2FkZXIg
c2NyaXB0TG9hZGVyOwotICAgICAgICBzY3JpcHRMb2FkZXIubG9hZFN5bmNocm9ub3VzbHkoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIEFsbG93Q3Jvc3NPcmlnaW5SZWRpcmVjdCk7Cisg
ICAgICAgIHNjcmlwdExvYWRlci5sb2FkU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICppdCwgQWxsb3dDcm9zc09yaWdpblJlcXVlc3RzKTsKIAogICAgICAgICAvLyBJZiB0
aGUgZmV0Y2hpbmcgYXR0ZW1wdCBmYWlsZWQsIHRocm93IGEgTkVUV09SS19FUlIgZXhjZXB0aW9u
IGFuZCBhYm9ydCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgICAgIGlmIChzY3JpcHRMb2FkZXIuZmFp
bGVkKCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMDY0MTZm
NC4uNTJiYWYyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgV29ya2VyU2NyaXB0TG9hZGVyOjpXb3JrZXJTY3JpcHRMb2FkZXIoKQogewog
fQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBD
cm9zc09yaWdpblJlZGlyZWN0UG9saWN5IGNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kpCit2b2lk
IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KQogewogICAgIG1fdXJsID0g
dXJsOwogCkBAIC02MiwxMyArNjIsMTIgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRT
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGkKIAogICAg
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzID0gdHJ1ZTsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IEFs
bG93Q3Jvc3NPcmlnaW5SZXF1ZXN0czsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVkaXJlY3RQ
b2xpY3kgPSBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5OworICAgIG9wdGlvbnMuY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwogCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAqdGhpcywg
b3B0aW9ucyk7CiB9CiAgICAgCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNv
bnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZWRpcmVjdFBvbGljeSBjcm9zc09yaWdpblJlZGly
ZWN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGll
bnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBtX2NsaWVudCA9IGNsaWVu
dDsKQEAgLTgwLDggKzc5LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXQKIAogICAgIFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxz
ID0gdHJ1ZTsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IEFsbG93Q3Jv
c3NPcmlnaW5SZXF1ZXN0czsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVkaXJlY3RQb2xpY3kg
PSBjcm9zc09yaWdpblJlZGlyZWN0UG9saWN5OworICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1
ZXN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwogCiAgICAgbV90aHJlYWRhYmxl
TG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaAppbmRleCAyOTI0ZWM4Li40NzYyM2Y2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCkBAIC00Niw4ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFdvcmtlclNjcmlwdExvYWRlcigpOwogCi0gICAgICAgIHZvaWQgbG9hZFN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdp
blJlZGlyZWN0UG9saWN5KTsKLSAgICAgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdpblJlZGlyZWN0UG9saWN5
LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqKTsKKyAgICAgICAgdm9pZCBsb2FkU3luY2hyb25v
dXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeSk7CisgICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQqKTsKIAogICAgICAgICB2b2lkIG5vdGlmeUVycm9yKCk7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxN2IxYmIxLi4wYjJmYWJiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC00OTgsNyArNDk4LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICBvcHRpb25zLmZvcmNlUHJlZmxpZ2h0ID0g
Zm9yY2VQcmVmbGlnaHQ7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9zYW1lT3Jp
Z2luUmVxdWVzdCB8fCBtX2luY2x1ZGVDcmVkZW50aWFsczsKICAgICBvcHRpb25zLmNyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeSA9IFVzZUFjY2Vzc0NvbnRyb2w7Ci0gICAgb3B0aW9ucy5jcm9zc09y
aWdpblJlZGlyZWN0UG9saWN5ID0gRGVueUNyb3NzT3JpZ2luUmVkaXJlY3Q7CiAKICAgICBtX2V4
Y2VwdGlvbkNvZGUgPSAwOwogICAgIG1fZXJyb3IgPSBmYWxzZTsK
</data>
<flag name="review"
          id="19135"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="19146"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>