<?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>157241</bug_id>
          
          <creation_ts>2016-04-30 21:51:10 -0700</creation_ts>
          <short_desc>Update Fetch to use enum class instead of string for enumerations</short_desc>
          <delta_ts>2016-05-01 17:17:21 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189165</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-30 21:51:10 -0700</bug_when>
    <thetext>Update Fetch to use enum class instead of string for enumerations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189167</commentid>
    <comment_count>1</comment_count>
      <attachid>277841</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-30 21:58:55 -0700</bug_when>
    <thetext>Created attachment 277841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189171</commentid>
    <comment_count>2</comment_count>
      <attachid>277844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-30 22:32:25 -0700</bug_when>
    <thetext>Created attachment 277844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189176</commentid>
    <comment_count>3</comment_count>
      <attachid>277844</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-30 22:56:35 -0700</bug_when>
    <thetext>Comment on attachment 277844
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchOptions.h:36
&gt; +enum class ReferrerPolicy { EmptyString, NoReferrer, NoReferrerWhenDowngrade, OriginOnly, OriginWhenCrossOrigin, UnsafeUrl };

These enum classes are now in namespace WebCore scope, when they were inside the scope of the class.  Do we really want all these enums to be in WebCore scope?  I&apos;m not sure if this is a good idea.  This applies to https://bugs.webkit.org/show_bug.cgi?id=157242 too.

&gt; Source/WebCore/platform/ReferrerPolicy.h:32
&gt; -#define ReferrerPolicy_h
&gt; +#pragma once

We could do this with several other headers in this patch, too.  Document.h is already done, but the others aren&apos;t.

&gt; Source/WebCore/platform/ReferrerPolicy.h:38
&gt; +// I am not sure which it is. We should remove the unneeded ones, and also
&gt; +// should work around this issue somewhere else, maybe even in config.h.

This is no good.  I think someone who manages the GTK port should look at this and fix it the right way.  This causes strange, hard to find bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189216</commentid>
    <comment_count>4</comment_count>
      <attachid>277844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 09:03:23 -0700</bug_when>
    <thetext>Comment on attachment 277844
Patch

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

&gt;&gt; Source/WebCore/Modules/fetch/FetchOptions.h:36
&gt;&gt; +enum class ReferrerPolicy { EmptyString, NoReferrer, NoReferrerWhenDowngrade, OriginOnly, OriginWhenCrossOrigin, UnsafeUrl };
&gt; 
&gt; These enum classes are now in namespace WebCore scope, when they were inside the scope of the class.  Do we really want all these enums to be in WebCore scope?  I&apos;m not sure if this is a good idea.  This applies to https://bugs.webkit.org/show_bug.cgi?id=157242 too.

This is pretty fundamental and I have been discussing it in all these patches with Chris Dumez as I have been doing them. This is the way these things are all specified in Web IDL. We could put them in classes but the enumerations are not scoped to an interface in the specifications. In another of these bugs Chris and I discussed an idea where we would scope all of these to the interface of the IDL file they are in and shorten their names if the interface was also a prefix of the enumeration&apos;s name. But as I did this patch I realized that if we had done that then these here&apos;s in this patch would all be members of the FetchRequest class which would make it impossible to use them in FetchOptions in this case.

I don&apos;t think there is any obvious trivial way to make this better and I like having this exactly match the IDL from the specifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189221</commentid>
    <comment_count>5</comment_count>
      <attachid>277844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 09:54:18 -0700</bug_when>
    <thetext>Comment on attachment 277844
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/fetch/FetchOptions.h:36
&gt;&gt;&gt; +enum class ReferrerPolicy { EmptyString, NoReferrer, NoReferrerWhenDowngrade, OriginOnly, OriginWhenCrossOrigin, UnsafeUrl };
&gt;&gt; 
&gt;&gt; These enum classes are now in namespace WebCore scope, when they were inside the scope of the class.  Do we really want all these enums to be in WebCore scope?  I&apos;m not sure if this is a good idea.  This applies to https://bugs.webkit.org/show_bug.cgi?id=157242 too.
&gt; 
&gt; This is pretty fundamental and I have been discussing it in all these patches with Chris Dumez as I have been doing them. This is the way these things are all specified in Web IDL. We could put them in classes but the enumerations are not scoped to an interface in the specifications. In another of these bugs Chris and I discussed an idea where we would scope all of these to the interface of the IDL file they are in and shorten their names if the interface was also a prefix of the enumeration&apos;s name. But as I did this patch I realized that if we had done that then these here&apos;s in this patch would all be members of the FetchRequest class which would make it impossible to use them in FetchOptions in this case.
&gt; 
&gt; I don&apos;t think there is any obvious trivial way to make this better and I like having this exactly match the IDL from the specifications.

I still like the idea of always defining theses enums in a class.

Couldn&apos;t we add an IDL extended attribute to indicate in which scope the enum is defined? e.g.
[Scope=FetchOptions] enum requestType { ... };

We could also assume that by default the scope would be the class corresponding the IDL where the enum is declared (as this is probably the most common).

&gt; Source/WebCore/platform/ReferrerPolicy.h:41
&gt; +#undef Always

Based on the initial error, I suspect only the one for &quot;Always&quot; is needed. Also, maybe we could limit this to the GTK port? e.g.
// FIXME: ...
#if PLATFORM(GTK)
#undef Always
#endif

I agree someone from the GTK port should investigate although I don&apos;t think this should necessarily block this patch from landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189225</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-05-01 10:53:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; This is no good.  I think someone who manages the GTK port should look at
&gt; this and fix it the right way.  This causes strange, hard to find bugs.

Unfortunately changing this header triggers a rebuild of 2000 files, so it&apos;s hard to test to figure out where it&apos;s coming from, but it indeed seems some header felt it appropriate to define &quot;Always&quot;. This is... unimpressive. I think #undef is the way to go until we figure out where this is coming from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189229</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-05-01 11:09:40 -0700</bug_when>
    <thetext>Trick is to try redefining it again, then the compiler will spit out the line it was first defined on: /usr/include/X11/X.h:441

/* Used in CreateWindow for backing-store hint */

#define NotUseful               0
#define WhenMapped              1
#define Always                  2

This file is full of unnamespaced macros. I think #undef is the only option. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189256</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 16:28:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This file is full of unnamespaced macros. I think #undef is the only option.

Not a surprise; but the question is where to put that #undef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189257</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 16:33:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I still like the idea of always defining theses enums in a class.

I’m happy to move to that model. I’m almost done getting rid of the string-based enums, and I would be happy to return to all these new enums and move them and change their names as needed to fit the new model.

We can also choose whether to use enum class or old-school enum.

&gt; Couldn&apos;t we add an IDL extended attribute to indicate in which scope the
&gt; enum is defined? e.g.
&gt; [Scope=FetchOptions] enum requestType { ... };
&gt; 
&gt; We could also assume that by default the scope would be the class
&gt; corresponding the IDL where the enum is declared (as this is probably the
&gt; most common).

Sure, we can do that if you think we get a better result that way. I was starting with literal translation of the IDL to our C++, and preferred something that didn’t require a new extended attribute, but we can do easily do whatever mapping we like.

I don’t know that Scope is the right name for this attribute, though. Seems a lot like ImplementedAs to me. Could be:

    [ImplementedAs=FetchOptions::RequestType] enum RequestType

It might be considered inelegant to repeat the enumeration name, but it’s more flexible.

&gt; Also, maybe we could limit this to the GTK port? e.g.
&gt; // FIXME: ...
&gt; #if PLATFORM(GTK)
&gt; #undef Always
&gt; #endif

We could, but as long as the comment explains it’s for GTK, I can’t think of a reason it’s better to actually put the #undef inside an #if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189265</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 16:40:32 -0700</bug_when>
    <thetext>Thanks for the comments from all of you.

Chris, I noticed that you did not say review+ yet. What changes do you consider mandatory before I land this? I’m getting really close to eliminating the old string-based enums entirely, and I’d love to get this step landed, even if there is some follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189267</commentid>
    <comment_count>11</comment_count>
      <attachid>277844</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 16:43:16 -0700</bug_when>
    <thetext>Comment on attachment 277844
Patch

I was hoping we would do the [Scope] or [ImplementedAs] support instead of moving all of the enums to WebCore but r=me as long as we revisit later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189268</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 16:45:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; I still like the idea of always defining theses enums in a class.
&gt; 
&gt; I’m happy to move to that model. I’m almost done getting rid of the
&gt; string-based enums, and I would be happy to return to all these new enums
&gt; and move them and change their names as needed to fit the new model.
&gt; 
&gt; We can also choose whether to use enum class or old-school enum.
&gt; 
&gt; &gt; Couldn&apos;t we add an IDL extended attribute to indicate in which scope the
&gt; &gt; enum is defined? e.g.
&gt; &gt; [Scope=FetchOptions] enum requestType { ... };
&gt; &gt; 
&gt; &gt; We could also assume that by default the scope would be the class
&gt; &gt; corresponding the IDL where the enum is declared (as this is probably the
&gt; &gt; most common).
&gt; 
&gt; Sure, we can do that if you think we get a better result that way. I was
&gt; starting with literal translation of the IDL to our C++, and preferred
&gt; something that didn’t require a new extended attribute, but we can do easily
&gt; do whatever mapping we like.
&gt; 
&gt; I don’t know that Scope is the right name for this attribute, though. Seems
&gt; a lot like ImplementedAs to me. Could be:
&gt; 
&gt;     [ImplementedAs=FetchOptions::RequestType] enum RequestType

Yes, this is good too although the parser might need tweaking to allow &quot;::&quot; in there since this is not very IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189276</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 17:17:21 -0700</bug_when>
    <thetext>Committed r200313: &lt;http://trac.webkit.org/changeset/200313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277841</attachid>
            <date>2016-04-30 21:58:55 -0700</date>
            <delta_ts>2016-04-30 22:32:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157241-20160430215930.patch</filename>
            <type>text/plain</type>
            <size>31654</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJiYjFkMWUwZTM3NzY1
OTJjZmNjYjBiYjNhYWU4MTBjNTc1MDJjZS4uZGUwNWM3NDJmMDY0NTk1MTY0NTI5NzkwNTIxNmE2
M2U3Njc0ZTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDE2LTA0LTMwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBVcGRhdGUgRmV0Y2ggdG8gdXNl
IGVudW0gY2xhc3MgaW5zdGVhZCBvZiBzdHJpbmcgZm9yIGVudW1lcmF0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoT3B0aW9ucy5oOiBDaGFuZ2VkIHRoaXMgY2xhc3MgaW50byBhIHN0cnVjdCwKKyAgICAgICAg
Z2V0dGluZyByaWQgb2YgYWxsIHRoZSBnZXR0ZXIgYW5kIHNldHRlciBmdW5jdGlvbnMuIE1vdmVk
IGFsbCB0aGUKKyAgICAgICAgZW51bWVyYXRpb24gdHlwZXMgb3V0IG9mIHRoaXMgY2xhc3MgdG8g
dGhlIFdlYkNvcmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGFuZCBnYXZlIHRoZW0gYWxsIHRo
ZSBuYW1lcyBhbmQgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIG9uZXMgZnJvbSB0aGUKKyAgICAgICAg
SURMIGZpbGUuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBvbGljeSk6IFVwZGF0ZWQgZm9yIHRoZSBjaGFu
Z2VzIHRvIEZldGNoT3B0aW9ucy4KKyAgICAgICAgVGhlIHN0cmluZyBtYXRjaGluZyBoZXJlIHdp
bGwgbGlrZWx5IGdvIGF3YXkgd2hlbiB3ZSBjaGFuZ2UgZGljdGlvbmFyeQorICAgICAgICBzbyBp
dCBzZXRzIHVwIGEgc3RydWN0dXJlLCB3aGljaCB3aWxsIHBhcnNlIHRoZSBlbnVtZXJhdGlvbiB2
YWx1ZXMsIGJ1dAorICAgICAgICB0aGF0IHdvbid0IGJlIGZvciBhIHdoaWxlLCBzbyB0aGlzIHN0
YXlzIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0
Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvIEZl
dGNoT3B0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVxdWVzdDo6dHlwZSk6IE1vdmVkIHRoaXMgdG8gdGhlIGhlYWRlciBhbmQg
Y2hhbmdlZCBpdHMKKyAgICAgICAgcmV0dXJuIHR5cGUgdG8gdGhlIGVudW07IGl0J3Mgbm90IGp1
c3QgYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVx
dWVzdDo6ZGVzdGluYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVz
dDo6cmVmZXJyZXJQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVz
dDo6bW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjcmVkZW50
aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjYWNoZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpyZWRpcmVjdCk6IERpdHRvLgor
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaDogQ2hhbmdlZCBhbGwgdGhl
IGdldHRlcnMgdGhhdCByZXR1cm4KKyAgICAgICAgZW51bWVyYXRpb25zIHRvIHJldHVybiB0aGUg
ZW51bSBjbGFzcyB2YWx1ZXMgaW5zdGVhZCBvZiBzdHJpbmdzLgorICAgICAgICBQdXQgYWxsIHRo
ZSBpbmxpbmUgdmVyc2lvbnMgaGVyZSBpbiB0aGUgaGVhZGVyLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOiBSZW1vdmVkIHRoZSBzZXZlbiBlbnVtIHR5cGVz
IHRoYXQKKyAgICAgICAgYXJlIGluIEZldGNoUmVxdWVzdC5pZGwgZnJvbSB0aGUgbGlzdCBvZiAi
c3RyaW5nLWJhc2VkIiBlbnVtcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOiBVcGRhdGVkIGZvciB0aGUgY2hhbmdl
IHdoZXJlIEkKKyAgICAgICAgcmVuYW1lZCBSZWZlcnJlclBvbGljeSB0byBSZWZlcnJlckhlYWRl
clBvbGljeSwgYXQgbGVhc3QgZm9yIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpw
cm9jZXNzUmVmZXJyZXJQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphcHBseUNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94KTogRGl0dG8uCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9GcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaDogUmVuYW1lZCB0aGlzIGVudW0gZnJv
bSBSZWZlcnJlclBvbGljeSB0bworICAgICAgICBSZWZlcnJlckhlYWRlclBvbGljeSwgc2luY2Ug
dGhlIG9uZSBzcGVjaWZpZWQgaW4gdGhlIEZldGNoIEFQSSBoYXMgdGhlCisgICAgICAgIG5hbWUg
UmVmZXJyZXJQb2xpY3kuIEkgdGhpbmsgdGhlIGJlc3Qgd2F5IHRvIHJlc29sdmUgdGhpcyBsb25n
ZXIgdGVybSBpcworICAgICAgICB0byBtZXJnZSB0aGVtIHNpbmNlIHRoZXkgcmVhbGx5IGRvIHJl
cHJlc2VudCB0aGUgc2FtZSBjb25jZXB0LCBhbHRob3VnaAorICAgICAgICB0aGUgb25lIGZyb20g
dGhlIEZldGNoIEFQSSBoYXMgYSBmZXcgbW9yZSBmZWF0dXJlcy4KKworMjAxNi0wNC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKICAgICAgICAgVXBkYXRlIFhNTEh0dHBSZXF1
ZXN0IHRvIHVzZSBlbnVtIGNsYXNzIGluc3RlYWQgb2Ygc3RyaW5nIGZvciBlbnVtZXJhdGlvbgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjM4CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxYWMwMzE3ZTE1MTM0NjljZjViMjFjZGU3OWNiMWNkNzQ3Y2E4OTk3Li4x
MzVhNjJmNGVkNGQ2ODNkNjQ2ZmRmYmZkODA2YmQ2YTNhN2VkYThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTYtMDQtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFVwZGF0ZSBGZXRjaCB0byB1c2UgZW51bSBjbGFzcyBpbnN0ZWFkIG9mIHN0cmlu
ZyBmb3IgZW51bWVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOiBVcGRhdGVk
IGZvciB0aGUgY2hhbmdlIHdoZXJlIEkKKyAgICAgICAgcmVuYW1lZCBSZWZlcnJlclBvbGljeSB0
byBSZWZlcnJlckhlYWRlclBvbGljeSwgYXQgbGVhc3QgZm9yIG5vdy4KKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6IERpdHRvLgor
CiAyMDE2LTA0LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCB1c2VsZXNzIGNoZWNrIGluIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9h
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlvbnMuaAppbmRleCBh
ZTVlOGQ1ODUwZmMwZDEyYzk5NmRjZWFiYzExOWZmNmVhYmY1ZGU1Li4zNjllODZlYTA1MWY1MTVk
NTFiZTk4NjAzNWEzZWQwZTA0ZjI3NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hPcHRpb25zLmgKQEAgLTMzLDk4ICszMywyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZldGNoT3B0aW9ucyB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBl
IHsKLSAgICAgICAgRGVmYXVsdCwKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIEZvbnQsCi0gICAg
ICAgIEltYWdlLAotICAgICAgICBTY3JpcHQsCi0gICAgICAgIFN0eWxlLAotICAgICAgICBUcmFj
aywKLSAgICAgICAgVmlkZW8KLSAgICB9OwotICAgIGVudW0gY2xhc3MgRGVzdGluYXRpb24gewot
ICAgICAgICBEZWZhdWx0LAotICAgICAgICBEb2N1bWVudCwKLSAgICAgICAgU2hhcmVkV29ya2Vy
LAotICAgICAgICBTdWJyZXNvdXJjZSwKLSAgICAgICAgVW5rbm93biwKLSAgICAgICAgV29ya2Vy
Ci0gICAgfTsKLSAgICBlbnVtIGNsYXNzIE1vZGUgewotICAgICAgICBOb0NvcnMsCi0gICAgICAg
IE5hdmlnYXRlLAotICAgICAgICBTYW1lT3JpZ2luLAotICAgICAgICBDb3JzCi0gICAgfTsKLSAg
ICBlbnVtIGNsYXNzIENyZWRlbnRpYWxzIHsKLSAgICAgICAgT21pdCwKLSAgICAgICAgU2FtZU9y
aWdpbiwKLSAgICAgICAgSW5jbHVkZQotICAgIH07Ci0gICAgZW51bSBjbGFzcyBDYWNoZSB7Ci0g
ICAgICAgIERlZmF1bHQsCi0gICAgICAgIE5vU3RvcmUsCi0gICAgICAgIFJlbG9hZCwKLSAgICAg
ICAgTm9DYWNoZSwKLSAgICAgICAgRm9yY2VDYWNoZSwKLSAgICB9OwotICAgIGVudW0gY2xhc3Mg
UmVkaXJlY3QgewotICAgICAgICBGb2xsb3csCi0gICAgICAgIEVycm9yLAotICAgICAgICBNYW51
YWwKLSAgICB9OwotICAgIGVudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgewotICAgICAgICBFbXB0
eSwKLSAgICAgICAgTm9SZWZlcnJlciwKLSAgICAgICAgTm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUs
Ci0gICAgICAgIE9yaWdpbk9ubHksCi0gICAgICAgIE9yaWdpbldoZW5Dcm9zc09yaWdpbiwKLSAg
ICAgICAgVW5zYWZlVVJMCi0gICAgfTsKLQotICAgIEZldGNoT3B0aW9ucygpIHsgfQotICAgIEZl
dGNoT3B0aW9ucyhUeXBlLCBEZXN0aW5hdGlvbiwgTW9kZSwgQ3JlZGVudGlhbHMsIENhY2hlLCBS
ZWRpcmVjdCwgUmVmZXJyZXJQb2xpY3kpOwotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgRGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
OyB9Ci0gICAgQ3JlZGVudGlhbHMgY3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2NyZWRl
bnRpYWxzOyB9Ci0gICAgQ2FjaGUgY2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlOyB9Ci0g
ICAgUmVkaXJlY3QgcmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0OyB9Ci0gICAg
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVy
UG9saWN5OyB9Ci0KLSAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7
IH0KLSAgICB2b2lkIHNldERlc3RpbmF0aW9uKERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKSB7IG1f
ZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjsgfQotICAgIHZvaWQgc2V0TW9kZShNb2RlIG1vZGUp
IHsgbV9tb2RlID0gbW9kZTsgfQotICAgIHZvaWQgc2V0Q3JlZGVudGlhbHMoQ3JlZGVudGlhbHMg
Y3JlZGVudGlhbHMpIHsgbV9jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzOyB9Ci0gICAgdm9pZCBz
ZXRDYWNoZShDYWNoZSBjYWNoZSkgeyBtX2NhY2hlID0gY2FjaGU7IH0KLSAgICB2b2lkIHNldFJl
ZGlyZWN0KFJlZGlyZWN0IHJlZGlyZWN0KSB7IG1fcmVkaXJlY3QgPSByZWRpcmVjdDsgfQotICAg
IHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsg
bV9yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlw
ZSBtX3R5cGUgPSBUeXBlOjpEZWZhdWx0OwotICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb24g
PSBEZXN0aW5hdGlvbjo6RGVmYXVsdDsKLSAgICBNb2RlIG1fbW9kZSA9IE1vZGU6Ok5vQ29yczsK
LSAgICBDcmVkZW50aWFscyBtX2NyZWRlbnRpYWxzID0gQ3JlZGVudGlhbHM6Ok9taXQ7Ci0gICAg
Q2FjaGUgbV9jYWNoZSA9IENhY2hlOjpEZWZhdWx0OwotICAgIFJlZGlyZWN0IG1fcmVkaXJlY3Qg
PSBSZWRpcmVjdDo6IEZvbGxvdzsKLSAgICBSZWZlcnJlclBvbGljeSBtX3JlZmVycmVyUG9saWN5
ID0gUmVmZXJyZXJQb2xpY3k6OkVtcHR5OworZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSB7IEVt
cHR5U3RyaW5nLCBOb1JlZmVycmVyLCBOb1JlZmVycmVyV2hlbkRvd25ncmFkZSwgT3JpZ2luT25s
eSwgT3JpZ2luV2hlbkNyb3NzT3JpZ2luLCBVbnNhZmVVcmwgfTsKK2VudW0gY2xhc3MgUmVxdWVz
dENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBOb0NhY2hlLCBGb3JjZUNhY2hlIH07
CitlbnVtIGNsYXNzIFJlcXVlc3RDcmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIEluY2x1
ZGUgfTsKK2VudW0gY2xhc3MgUmVxdWVzdERlc3RpbmF0aW9uIHsgRW1wdHlTdHJpbmcsIERvY3Vt
ZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNlLCBVbmtub3duLCBXb3JrZXIgfTsKK2VudW0g
Y2xhc3MgUmVxdWVzdE1vZGUgeyBOYXZpZ2F0ZSwgU2FtZU9yaWdpbiwgTm9Db3JzLCBDb3JzIH07
CitlbnVtIGNsYXNzIFJlcXVlc3RSZWRpcmVjdCB7IEZvbGxvdywgRXJyb3IsIE1hbnVhbCB9Owor
ZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IEVtcHR5U3RyaW5nLCBBdWRpbywgRm9udCwgSW1hZ2Us
IFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OworCitzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsK
KyAgICBSZXF1ZXN0VHlwZSB0eXBlIHsgUmVxdWVzdFR5cGU6OkVtcHR5U3RyaW5nIH07CisgICAg
UmVxdWVzdERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIHsgUmVxdWVzdERlc3RpbmF0aW9uOjpFbXB0
eVN0cmluZyB9OworICAgIFJlcXVlc3RNb2RlIG1vZGUgeyBSZXF1ZXN0TW9kZTo6Tm9Db3JzIH07
CisgICAgUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzIHsgUmVxdWVzdENyZWRlbnRpYWxz
OjpPbWl0IH07CisgICAgUmVxdWVzdENhY2hlIGNhY2hlIHsgUmVxdWVzdENhY2hlOjpEZWZhdWx0
IH07CisgICAgUmVxdWVzdFJlZGlyZWN0IHJlZGlyZWN0IHsgUmVxdWVzdFJlZGlyZWN0OjpGb2xs
b3cgfTsKKyAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyB9OwogfTsKIAotaW5saW5lIEZldGNoT3B0aW9uczo6RmV0Y2hPcHRpb25z
KFR5cGUgdHlwZSwgRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1vZGUgbW9kZSwgQ3JlZGVudGlh
bHMgY3JlZGVudGlhbHMsIENhY2hlIGNhY2hlLCBSZWRpcmVjdCByZWRpcmVjdCwgUmVmZXJyZXJQ
b2xpY3kgcmVmZXJyZXJQb2xpY3kpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fZGVzdGlu
YXRpb24oZGVzdGluYXRpb24pCi0gICAgLCBtX21vZGUobW9kZSkKLSAgICAsIG1fY3JlZGVudGlh
bHMoY3JlZGVudGlhbHMpCi0gICAgLCBtX2NhY2hlKGNhY2hlKQotICAgICwgbV9yZWRpcmVjdChy
ZWRpcmVjdCkKLSAgICAsIG1fcmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpCi17Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggZGY5
NjQ5MjM4NTY3ZTc3NjBlNjEyMzJmYzFiZmZjM2VmOWNlMmIwOS4uMTBmN2M1Y2FmNmY3ZWI5MmE2
ZDAzNDJkYjY2MDUxMGE4YjkzZDhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtNDIsMTcgKzQyLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0YXRpYyBib29sIHNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkKIHsKICAgICBpZiAocmVmZXJyZXJQb2xpY3ku
aXNFbXB0eSgpKQotICAgICAgICBvcHRpb25zLnNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5KTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGlj
eSA9IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKICAgICBlbHNlIGlmIChyZWZlcnJlclBv
bGljeSA9PSAibm8tcmVmZXJyZXIiKQotICAgICAgICBvcHRpb25zLnNldFJlZmVycmVyUG9saWN5
KEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXIpOworICAgICAgICBvcHRp
b25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI7CiAgICAgZWxz
ZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlIikKLSAg
ICAgICAgb3B0aW9ucy5zZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9s
aWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGU7CiAgICAgZWxz
ZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm9yaWdpbi1vbmx5IikKLSAgICAgICAgb3B0aW9ucy5z
ZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW5Pbmx5
KTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpPcmln
aW5Pbmx5OwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJvcmlnaW4td2hlbi1jcm9z
cy1vcmlnaW4iKQotICAgICAgICBvcHRpb25zLnNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6Ok9yaWdpbldoZW5Dcm9zc09yaWdpbik7CisgICAgICAgIG9wdGlv
bnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3JpZ2lu
OwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJ1bnNhZmUtdXJsIikKLSAgICAgICAg
b3B0aW9ucy5zZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpV
bnNhZmVVUkwpOworICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xp
Y3k6OlVuc2FmZVVybDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTYxLDEzICs2MSwxMyBAQCBzdGF0aWMgYm9vbCBzZXRSZWZlcnJlclBvbGlj
eShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpYwogc3Rh
dGljIGJvb2wgc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBpZiAobW9kZSA9PSAibmF2aWdhdGUiKQotICAgICAgICBvcHRpb25zLnNldE1v
ZGUoRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSk7CisgICAgICAgIG9wdGlvbnMubW9kZSA9
IFJlcXVlc3RNb2RlOjpOYXZpZ2F0ZTsKICAgICBlbHNlIGlmIChtb2RlID09ICJzYW1lLW9yaWdp
biIpCi0gICAgICAgIG9wdGlvbnMuc2V0TW9kZShGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmln
aW4pOworICAgICAgICBvcHRpb25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6U2FtZU9yaWdpbjsKICAg
ICBlbHNlIGlmIChtb2RlID09ICJuby1jb3JzIikKLSAgICAgICAgb3B0aW9ucy5zZXRNb2RlKEZl
dGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzKTsKKyAgICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVz
dE1vZGU6Ok5vQ29yczsKICAgICBlbHNlIGlmIChtb2RlID09ICJjb3JzIikKLSAgICAgICAgb3B0
aW9ucy5zZXRNb2RlKEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CisgICAgICAgIG9wdGlvbnMu
bW9kZSA9IFJlcXVlc3RNb2RlOjpDb3JzOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNzYsMTEgKzc2LDExIEBAIHN0YXRpYyBib29sIHNldE1v
ZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1vZGUpCiBzdGF0aWMgYm9v
bCBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbHMpCiB7CiAgICAgaWYgKGNyZWRlbnRpYWxzID09ICJvbWl0IikKLSAgICAgICAgb3B0
aW9ucy5zZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0KTsKKyAg
ICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6T21pdDsKICAg
ICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAic2FtZS1vcmlnaW4iKQotICAgICAgICBvcHRpb25z
LnNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW4pOwor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpTYW1lT3Jp
Z2luOwogICAgIGVsc2UgaWYgKGNyZWRlbnRpYWxzID09ICJpbmNsdWRlIikKLSAgICAgICAgb3B0
aW9ucy5zZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlKTsK
KyAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6SW5jbHVk
ZTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTg5LDE1ICs4OSwxNSBAQCBzdGF0aWMgYm9vbCBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbHMpCiBzdGF0aWMgYm9vbCBzZXRDYWNo
ZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUpCiB7CiAgICAgaWYg
KGNhY2hlID09ICJkZWZhdWx0IikKLSAgICAgICAgb3B0aW9ucy5zZXRDYWNoZShGZXRjaE9wdGlv
bnM6OkNhY2hlOjpEZWZhdWx0KTsKKyAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNo
ZTo6RGVmYXVsdDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tc3RvcmUiKQotICAgICAgICBv
cHRpb25zLnNldENhY2hlKEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vU3RvcmUpOworICAgICAgICBv
cHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpOb1N0b3JlOwogICAgIGVsc2UgaWYgKGNhY2hl
ID09ICJyZWxvYWQiKQotICAgICAgICBvcHRpb25zLnNldENhY2hlKEZldGNoT3B0aW9uczo6Q2Fj
aGU6OlJlbG9hZCk7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OlJlbG9h
ZDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tY2FjaGUiKQotICAgICAgICBvcHRpb25zLnNl
dENhY2hlKEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2FjaGUpOworICAgICAgICBvcHRpb25zLmNh
Y2hlID0gUmVxdWVzdENhY2hlOjpOb0NhY2hlOwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJmb3Jj
ZS1jYWNoZSIpCi0gICAgICAgIG9wdGlvbnMuc2V0Q2FjaGUoRmV0Y2hPcHRpb25zOjpDYWNoZTo6
Rm9yY2VDYWNoZSk7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OkZvcmNl
Q2FjaGU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMDYsMTEgKzEwNiwxMSBAQCBzdGF0aWMgYm9vbCBzZXRDYWNoZShGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUpCiBzdGF0aWMgYm9vbCBzZXRSZWRpcmVjdChG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3QpCiB7CiAgICAgaWYg
KHJlZGlyZWN0ID09ICJmb2xsb3ciKQotICAgICAgICBvcHRpb25zLnNldFJlZGlyZWN0KEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdyk7CisgICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBS
ZXF1ZXN0UmVkaXJlY3Q6OkZvbGxvdzsKICAgICBlbHNlIGlmIChyZWRpcmVjdCA9PSAiZXJyb3Ii
KQotICAgICAgICBvcHRpb25zLnNldFJlZGlyZWN0KEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkVy
cm9yKTsKKyAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRpcmVjdDo6RXJyb3I7
CiAgICAgZWxzZSBpZiAocmVkaXJlY3QgPT0gIm1hbnVhbCIpCi0gICAgICAgIG9wdGlvbnMuc2V0
UmVkaXJlY3QoRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6TWFudWFsKTsKKyAgICAgICAgb3B0aW9u
cy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRpcmVjdDo6TWFudWFsOwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRp
YyBib29sIGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVz
dCwgU2NyaXB0RXhlY3V0aW9uCiAKICAgICBpZiAoaW5pdC5nZXQoIm1vZGUiLCB2YWx1ZSkgJiYg
IXNldE1vZGUocmVxdWVzdC5vcHRpb25zLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAocmVxdWVzdC5vcHRpb25zLm1vZGUoKSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5h
dmlnYXRlKQorICAgIGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9PSBSZXF1ZXN0TW9kZTo6TmF2
aWdhdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbml0LmdldCgiY3JlZGVu
dGlhbHMiLCB2YWx1ZSkgJiYgIXNldENyZWRlbnRpYWxzKHJlcXVlc3Qub3B0aW9ucywgdmFsdWUp
KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBib29sIGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVl
c3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uCiBzdGF0aWMgUmVm
UHRyPEZldGNoSGVhZGVycz4gYnVpbGRIZWFkZXJzKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIGNv
bnN0IEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaEhl
YWRlcnMqIGlucHV0SGVhZGVycyA9IG51bGxwdHIpCiB7CiAgICAgRmV0Y2hIZWFkZXJzOjpHdWFy
ZCBndWFyZCA9IEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlcXVlc3Q7Ci0gICAgaWYgKHJlcXVlc3Qu
b3B0aW9ucy5tb2RlKCkgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpIHsKKyAgICBpZiAo
cmVxdWVzdC5vcHRpb25zLm1vZGUgPT0gUmVxdWVzdE1vZGU6Ok5vQ29ycykgewogICAgICAgICBj
b25zdCBTdHJpbmcmIG1ldGhvZCA9IHJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAg
ICAgIGlmIChtZXRob2QgIT0gIkdFVCIgJiYgbWV0aG9kICE9ICJQT1NUIiAmJiBtZXRob2QgIT0g
IkhFQUQiKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDQsOCArMjQ0LDggQEAg
UmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICB9CiAKICAgICBGZXRjaFJlcXVlc3Q6OkludGVy
bmFsUmVxdWVzdCBpbnRlcm5hbFJlcXVlc3Q7Ci0gICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMu
c2V0TW9kZShGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpOwotICAgIGludGVybmFsUmVxdWVzdC5v
cHRpb25zLnNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQpOwor
ICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6Q29yczsKKyAg
ICBpbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFs
czo6T21pdDsKICAgICBpbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIgPSBBU0NJSUxpdGVyYWwoImNs
aWVudCIpOwogICAgIGludGVybmFsUmVxdWVzdC5yZXF1ZXN0LnNldFVSTChyZXF1ZXN0VVJMKTsK
IApAQCAtMzAxLDcwICszMDEsNiBAQCBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaAogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBoZWFk
ZXJzLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOwogfQogCi1T
dHJpbmcgRmV0Y2hSZXF1ZXN0Ojp0eXBlKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1faW50ZXJu
YWxSZXF1ZXN0Lm9wdGlvbnMudHlwZSgpKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlR5cGU6
OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBjYXNlIEZldGNoT3B0aW9u
czo6VHlwZTo6QXVkaW8gOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhdWRpbyIpOwot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpUeXBlOjpGb250IDoKLSAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiZm9udCIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpUeXBlOjpJbWFnZSA6Ci0g
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImltYWdlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlv
bnM6OlR5cGU6OlNjcmlwdCA6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNjcmlwdCIp
OwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpUeXBlOjpTdHlsZSA6Ci0gICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoInN0eWxlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlR5cGU6OlRyYWNr
IDoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidHJhY2siKTsKLSAgICBjYXNlIEZldGNo
T3B0aW9uczo6VHlwZTo6VmlkZW8gOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aWRl
byIpOwotICAgIH07Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCi1TdHJpbmcgRmV0Y2hSZXF1ZXN0OjpkZXN0aW5hdGlvbigpIGNvbnN0Ci17Ci0g
ICAgc3dpdGNoIChtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmRlc3RpbmF0aW9uKCkpIHsKLSAg
ICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRvY3VtZW50
OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkb2N1bWVudCIpOwotICAgIGNhc2UgRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkV29ya2VyOgotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJzaGFyZWR3b3JrZXIiKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OlN1YnJlc291cmNlOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzdWJyZXNv
dXJjZSIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6VW5rbm93bjoKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidW5rbm93biIpOwotICAgIGNhc2UgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6V29ya2VyOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ3
b3JrZXIiKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotCi1TdHJpbmcgRmV0Y2hSZXF1ZXN0OjpyZWZlcnJlclBvbGljeSgpIGNvbnN0
Ci17Ci0gICAgc3dpdGNoIChtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnJlZmVycmVyUG9saWN5
KCkpIHsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5OgotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9s
aWN5OjpOb1JlZmVycmVyOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJuby1yZWZlcnJl
ciIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldo
ZW5Eb3duZ3JhZGU6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vLXJlZmVycmVyLXdo
ZW4tZG93bmdyYWRlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpP
cmlnaW5Pbmx5OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvcmlnaW4tb25seSIpOwot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3Jp
Z2luOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvcmlnaW4td2hlbi1jcm9zcy1vcmln
aW4iKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OlVuc2FmZVVSTDoK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidW5zYWZlLXVybCIpOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIFN0cmluZyBG
ZXRjaFJlcXVlc3Q6OnJlZmVycmVyKCkgY29uc3QKIHsKICAgICBpZiAobV9pbnRlcm5hbFJlcXVl
c3QucmVmZXJyZXIgPT0gIm5vLXJlZmVycmVyIikKQEAgLTM3NCw2OCArMzEwLDYgQEAgU3RyaW5n
IEZldGNoUmVxdWVzdDo6cmVmZXJyZXIoKSBjb25zdAogICAgIHJldHVybiBtX2ludGVybmFsUmVx
dWVzdC5yZWZlcnJlcjsKIH0KIAotU3RyaW5nIEZldGNoUmVxdWVzdDo6bW9kZSgpIGNvbnN0Ci17
Ci0gICAgc3dpdGNoIChtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUoKSkgewotICAgIGNh
c2UgRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgibmF2aWdhdGUiKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdp
bjoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2FtZS1vcmlnaW4iKTsKLSAgICBjYXNl
IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJuby1jb3JzIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnM6Ci0gICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoImNvcnMiKTsKLSAgICB9OwotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEZldGNoUmVxdWVzdDo6
Y3JlZGVudGlhbHMoKSBjb25zdAotewotICAgIHN3aXRjaCAobV9pbnRlcm5hbFJlcXVlc3Qub3B0
aW9ucy5jcmVkZW50aWFscygpKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxz
OjpPbWl0OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvbWl0Iik7Ci0gICAgY2FzZSBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOgotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJzYW1lLW9yaWdpbiIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDcmVkZW50
aWFsczo6SW5jbHVkZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW5jbHVkZSIpOwot
ICAgIH07Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwot
fQotCi1TdHJpbmcgRmV0Y2hSZXF1ZXN0OjpjYWNoZSgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICht
X2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmNhY2hlKCkpIHsKLSAgICBjYXNlIEZldGNoT3B0aW9u
czo6Q2FjaGU6OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRlZmF1bHQi
KTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vU3RvcmU6Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIm5vLXN0b3JlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hl
OjpSZWxvYWQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInJlbG9hZCIpOwotICAgIGNh
c2UgRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgibm8tY2FjaGUiKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6OkZvcmNlQ2Fj
aGU6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZvcmNlLWNhY2hlIik7Ci0gICAgfQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3Ry
aW5nIEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdAotewotICAgIHN3aXRjaCAobV9pbnRl
cm5hbFJlcXVlc3Qub3B0aW9ucy5yZWRpcmVjdCgpKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6
OlJlZGlyZWN0OjpGb2xsb3c6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZvbGxvdyIp
OwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJyb3I6Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoImVycm9yIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0
OjpNYW51YWw6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm1hbnVhbCIpOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIFJl
c291cmNlUmVxdWVzdCBGZXRjaFJlcXVlc3Q6OmludGVybmFsUmVxdWVzdCgpIGNvbnN0CiB7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2ludGVybmFsUmVxdWVzdC5yZXF1ZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggOTIwMGJk
MWI2N2Y5N2FkZGZhNWRiYTVkYTFmM2QxNzNlZDUyNjk1My4uNWY1NDgwNjlkYTUyMWJkMGRmNGEz
NzRiY2E1OTYxMDk3MmRmODYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5oCkBAIC00OCwxOSArNDgsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoUmVx
dWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIFJl
ZlB0cjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIC8vIFJl
cXVlc3QgQVBJCiAgICAgY29uc3QgU3RyaW5nJiBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsUmVxdWVzdC5yZXF1ZXN0Lmh0dHBNZXRob2QoKTsgfQogICAgIGNvbnN0IFN0cmluZyYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3QucmVxdWVzdC51cmwoKS5zdHJp
bmcoKTsgfQogICAgIEZldGNoSGVhZGVycyYgaGVhZGVycygpIHsgcmV0dXJuIG1faGVhZGVycy5n
ZXQoKTsgfQogCi0gICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBTdHJpbmcgZGVzdGluYXRp
b24oKSBjb25zdDsKKyAgICBSZXF1ZXN0VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgUmVxdWVzdERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHJlZmVycmVyUG9saWN5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1vZGUo
KSBjb25zdDsKLSAgICBTdHJpbmcgY3JlZGVudGlhbHMoKSBjb25zdDsKLSAgICBTdHJpbmcgY2Fj
aGUoKSBjb25zdDsKLSAgICBTdHJpbmcgcmVkaXJlY3QoKSBjb25zdDsKKyAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OworICAgIFJlcXVlc3RNb2RlIG1vZGUoKSBjb25z
dDsKKyAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMoKSBjb25zdDsKKyAgICBSZXF1
ZXN0Q2FjaGUgY2FjaGUoKSBjb25zdDsKKyAgICBSZXF1ZXN0UmVkaXJlY3QgcmVkaXJlY3QoKSBj
b25zdDsKICAgICBjb25zdCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxSZXF1ZXN0LmludGVncml0eTsgfQogCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xv
bmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkzLDYgKzky
LDQxIEBAIGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBGZXRjaEJvZHkmJiBiCiB7CiB9CiAKK2lubGluZSBSZXF1ZXN0Q2Fj
aGUgRmV0Y2hSZXF1ZXN0OjpjYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxS
ZXF1ZXN0Lm9wdGlvbnMuY2FjaGU7Cit9CisKK2lubGluZSBSZXF1ZXN0Q3JlZGVudGlhbHMgRmV0
Y2hSZXF1ZXN0OjpjcmVkZW50aWFscygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxS
ZXF1ZXN0Lm9wdGlvbnMuY3JlZGVudGlhbHM7Cit9CisKK2lubGluZSBSZXF1ZXN0RGVzdGluYXRp
b24gRmV0Y2hSZXF1ZXN0OjpkZXN0aW5hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50
ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMuZGVzdGluYXRpb247Cit9CisKK2lubGluZSBSZXF1ZXN0TW9k
ZSBGZXRjaFJlcXVlc3Q6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVybmFsUmVx
dWVzdC5vcHRpb25zLm1vZGU7Cit9CisKK2lubGluZSBSZXF1ZXN0UmVkaXJlY3QgRmV0Y2hSZXF1
ZXN0OjpyZWRpcmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9w
dGlvbnMucmVkaXJlY3Q7Cit9CisKK2lubGluZSBSZWZlcnJlclBvbGljeSBGZXRjaFJlcXVlc3Q6
OnJlZmVycmVyUG9saWN5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qu
b3B0aW9ucy5yZWZlcnJlclBvbGljeTsKK30KKworaW5saW5lIFJlcXVlc3RUeXBlIEZldGNoUmVx
dWVzdDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlv
bnMudHlwZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQppbmRleCAwYjEzNzBmMjY2YWNmNDdhMTVlMTEzYWZiNWI3MTM0NDkyZTcwMDI4
Li42MWFkYWExNTkxMDZkMmFhMDBjMGU1ODExNjZkOWIxZGQ5ZjkzZjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0xMzUsMTMg
KzEzNSw2IEBAIG15ICVzdmdUeXBlV2l0aFdyaXRhYmxlUHJvcGVydGllc05lZWRpbmdUZWFyT2Zm
ID0gKAogbXkgJXN0cmluZ0Jhc2VkRW51bWVyYXRpb25IYXNoID0gKAogICAgICJSVENCdW5kbGVQ
b2xpY3lFbnVtIiA9PiAxLAogICAgICJSVENJY2VUcmFuc3BvcnRQb2xpY3lFbnVtIiA9PiAxLAot
ICAgICJSZWZlcnJlclBvbGljeSIgPT4gMSwKLSAgICAiUmVxdWVzdENhY2hlIiA9PiAxLAotICAg
ICJSZXF1ZXN0Q3JlZGVudGlhbHMiID0+IDEsCi0gICAgIlJlcXVlc3REZXN0aW5hdGlvbiIgPT4g
MSwKLSAgICAiUmVxdWVzdE1vZGUiID0+IDEsCi0gICAgIlJlcXVlc3RSZWRpcmVjdCIgPT4gMSwK
LSAgICAiUmVxdWVzdFR5cGUiID0+IDEsCiAgICAgIlRleHRUcmFja0tpbmQiID0+IDEsCiAgICAg
IlRleHRUcmFja01vZGUiID0+IDEsCiApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDIx
MTBkNjhjZTI2OWZlYTkyNDgwOTE0ZWE5ZDcyYmNlYWI3OGZhMy4uMDNmOWRmOTMzZWRjMTQ0MWJk
OWMzNjBiNjEzNDZkMTk1YmFhYTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEs
NyArNTIxLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRpZgogICAgICwgbV9sb2Fk
RXZlbnREZWxheUNvdW50KDApCiAgICAgLCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRoaXMsICZE
b2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQotICAgICwgbV9yZWZlcnJlclBvbGlj
eShSZWZlcnJlclBvbGljeURlZmF1bHQpCisgICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVy
SGVhZGVyUG9saWN5OjpEZWZhdWx0KQogICAgICwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcChm
YWxzZSkKICAgICAsIG1fd3JpdGVSZWN1cnNpb25EZXB0aCgwKQogICAgICwgbV9sYXN0SGFuZGxl
ZFVzZXJHZXN0dXJlVGltZXN0YW1wKDApCkBAIC0zMzYwLDE2ICszMzYwLDE2IEBAIHZvaWQgRG9j
dW1lbnQ6OnByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSkKICAgICAv
LyBOb3RlIHRoYXQgd2UncmUgc3VwcG9ydGluZyBib3RoIHRoZSBzdGFuZGFyZCBhbmQgbGVnYWN5
IGtleXdvcmRzIGZvciByZWZlcnJlcgogICAgIC8vIHBvbGljaWVzLCBhcyBkZWZpbmVkIGJ5IGh0
dHA6Ly93d3cudzMub3JnL1RSL3JlZmVycmVyLXBvbGljeS8jcmVmZXJyZXItcG9saWN5LWRlbGl2
ZXJ5LW1ldGEKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAi
bm8tcmVmZXJyZXIiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJu
ZXZlciIpKQotICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeU5ldmVyKTsK
KyAgICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsK
ICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNh
ZmUtdXJsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiYWx3YXlz
IikpCi0gICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5QWx3YXlzKTsKKyAg
ICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkFsd2F5cyk7CiAg
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAib3JpZ2lu
IikpCi0gICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5T3JpZ2luKTsKKyAg
ICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbik7CiAg
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibm8tcmVm
ZXJyZXItd2hlbi1kb3duZ3JhZGUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
b2xpY3ksICJkZWZhdWx0IikpCi0gICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9s
aWN5RGVmYXVsdCk7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9s
aWN5OjpEZWZhdWx0KTsKICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNl
dCByZWZlcnJlciBwb2xpY3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUg
b2YgJ25vLXJlZmVycmVyJywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScs
IG9yICd1bnNhZmUtdXJsJy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwotICAgICAg
ICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeU5ldmVyKTsKKyAgICAgICAgc2V0UmVm
ZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsKICAgICB9CiB9CiAKQEAg
LTY5MzcsNyArNjkzNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5Q29udGVudERpc3Bvc2l0aW9u
QXR0YWNobWVudFNhbmRib3goKQogewogICAgIEFTU0VSVChzaG91bGRFbmZvcmNlQ29udGVudERp
c3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3goKSk7CiAKLSAgICBzZXRSZWZlcnJlclBvbGljeShS
ZWZlcnJlclBvbGljeU5ldmVyKTsKKyAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlckhlYWRl
clBvbGljeTo6TmV2ZXIpOwogICAgIGlmICghaXNNZWRpYURvY3VtZW50KCkpCiAgICAgICAgIGVu
Zm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEFsbCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCAxYmNiNDhiZTI1ZWJhYmQ5YWM2OGVjY2Q1MDFlNjY1MTkxNTE3ZTNiLi4xNjYyMWVi
YTcxNzBiOTE2ZWJhODY2ZTEwYTg4ZWVjYTU4NDk3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMzYxLDggKzM2MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpZERpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFBy
b3BlcnRpZXNDaGFuZ2VkOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3ko
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9IHJlZmVy
cmVyUG9saWN5OyB9Ci0gICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CisgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShS
ZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX3JlZmVycmVyUG9saWN5ID0g
cmVmZXJyZXJQb2xpY3k7IH0KKyAgICBSZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7IH0KIAogICAgIERvY3VtZW50VHlw
ZSogZG9jdHlwZSgpIGNvbnN0OwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBwcml2YXRlOgogCiAg
ICAgVmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKIAotICAgIFJlZmVycmVy
UG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7CisgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgbV9yZWZl
cnJlclBvbGljeTsKIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIERvY3VtZW50VGltaW5n
IG1fZG9jdW1lbnRUaW1pbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaAppbmRleCBjMGMyZDI2ZWVlNjY0ZGQ1YTk0NjFjY2IzNzc3OGNiN2QyYTVk
NWUyLi5mODUzOWM1MGRlZDVmMjI3ZmI2OTk4NTRkZDc1ZDU1ODY1YTc1MTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xp
Y3koKSA9PSBSZWZlcnJlclBvbGljeURlZmF1bHQ7CisgICAgICAgIHJldHVybiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZh
dWx0OwogICAgIH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmNwcAppbmRleCAzYmQzMjAwNTZkOTQyZWY4Y2IzYjkzZjU2ODYxN2E0ZTQ3ZWQ2N2U0Li4yM2Rj
ZjExY2JlYzdlYWMzZTY1ZDc2M2I0MTI1ZGJhMTI5NTFkNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5
OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCiAgICAgcmV0dXJuICFVUkxJc1NlY3VyZVVSTDsKIH0KIAotU3RyaW5nIFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK1N0cmluZyBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlckhlYWRlclBvbGljeSByZWZl
cnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAg
ICAgaWYgKHJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
NzUsMTEgKzc1LDExIEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIHN3aXRjaCAocmVmZXJyZXJQb2xpY3kpIHsKLSAgICBjYXNlIFJlZmVy
cmVyUG9saWN5TmV2ZXI6CisgICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXI6CiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBjYXNlIFJlZmVycmVyUG9saWN5QWx3YXlzOgor
ICAgIGNhc2UgUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkFsd2F5czoKICAgICAgICAgcmV0dXJuIHJl
ZmVycmVyOwotICAgIGNhc2UgUmVmZXJyZXJQb2xpY3lPcmlnaW46IHsKKyAgICBjYXNlIFJlZmVy
cmVySGVhZGVyUG9saWN5OjpPcmlnaW46IHsKICAgICAgICAgU3RyaW5nIG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKS0+dG9TdHJpbmcoKTsKICAgICAg
ICAgaWYgKG9yaWdpbiA9PSAibnVsbCIpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uCiAgICAgICAgIC8vIHRvIHR1
cm4gaXQgaW50byBhIGNhbm9uaWNhbCBVUkwgd2UgY2FuIHVzZSBhcyByZWZlcnJlci4KICAgICAg
ICAgcmV0dXJuIG9yaWdpbiArICIvIjsKICAgICB9Ci0gICAgY2FzZSBSZWZlcnJlclBvbGljeURl
ZmF1bHQ6CisgICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggNzY3
OWM5ZmJiYWYyMzg2NzQwZWQzZjY1MmM3Yzk1YTZiNjMyMjVlZC4uNWNkZGExMGMwYTMyMGUyYTlm
MTcxZGU2YjM0YjZkM2FiZjNmZDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
aApAQCAtMzQsMjAgKzM0LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJM
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBVUkw7CiAKIGNsYXNzIFNlY3VyaXR5UG9s
aWN5IHsKIHB1YmxpYzoKLSAgICAvLyBUcnVlIGlmIHRoZSByZWZlcnJlciBzaG91bGQgYmUgb21p
dHRlZCBhY2NvcmRpbmcgdG8gdGhlCi0gICAgLy8gUmVmZXJyZXJQb2xpY3lEZWZhdWx0LiBJZiB5
b3UgaW50ZW5kIHRvIHNlbmQgYSByZWZlcnJlciBoZWFkZXIsIHlvdQotICAgIC8vIHNob3VsZCB1
c2UgZ2VuZXJhdGVSZWZlcnJlckhlYWRlciBpbnN0ZWFkLgorICAgIC8vIFRydWUgaWYgdGhlIHJl
ZmVycmVyIHNob3VsZCBiZSBvbWl0dGVkIGFjY29yZGluZyB0byBSZWZlcnJlckhlYWRlclBvbGlj
eTo6RGVmYXVsdC4KKyAgICAvLyBJZiB5b3UgaW50ZW5kIHRvIHNlbmQgYSByZWZlcnJlciBoZWFk
ZXIsIHlvdSBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIgaW5zdGVhZC4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByZWZlcnJlciBt
b2RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVycmVyIHBvbGljeSBmb3IgYQogICAgIC8vIG5h
dmlnYXRpb24gdG8gYSBnaXZlbiBVUkwuIElmIHRoZSByZWZlcnJlciByZXR1cm5lZCBpcyBlbXB0
eSwgdGhlCiAgICAgLy8gcmVmZXJyZXIgaGVhZGVyIHNob3VsZCBiZSBvbWl0dGVkLgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJl
clBvbGljeSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVySGVh
ZGVyUG9saWN5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIGVu
dW0gTG9jYWxMb2FkUG9saWN5IHsKICAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBO
byByZXN0cmljdGlvbiBvbiBsb2NhbCBsb2Fkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZl
cnJlclBvbGljeS5oCmluZGV4IDM5YjYwYmI0M2IyMzRhYmY4OGEyZjQ0ZDM2NWQwOGQ2YjM2NWIw
MTguLmEwYmRhYWMxM2FiMDIxNThlOWU3OTQ4MTg2OTVkZTFhYzgzZjFhZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaApAQCAtMzQsMTMgKzM0LDE0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBSZWZlcnJlclBvbGljeSB7Ci0gICAgUmVmZXJyZXJQ
b2xpY3lBbHdheXMsCi0gICAgUmVmZXJyZXJQb2xpY3lEZWZhdWx0LAotICAgIFJlZmVycmVyUG9s
aWN5TmV2ZXIsCi0gICAgLy8gU2FtZSBhcyBSZWZlcnJlclBvbGljeUFsd2F5cywgZXhjZXB0IHRo
YXQgb25seSB0aGUgb3JpZ2luIG9mIHRoZQotICAgIC8vIHJlZmVycmluZyBVUkwgaXMgc2VuZC4K
LSAgICBSZWZlcnJlclBvbGljeU9yaWdpbiwKKy8vIEZJWE1FOiBSZW5hbWVkIHRoaXMgdG8gUmVm
ZXJyZXJIZWFkZXJQb2xpY3kgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCB0aGUgUmVmZXJyZXJQb2xp
Y3kgZGVmaW5lZCBpbiB0aGUgRmV0Y2ggc3BlY2lmaWNhdGlvbi4KKy8vIEJlc3QgbG9uZyB0ZXJt
IHNvbHV0aW9uIHdvdWxkIGJlIHRvIG1lcmdlIHRoZXNlIHR3by4KK2VudW0gY2xhc3MgUmVmZXJy
ZXJIZWFkZXJQb2xpY3kgeworICAgIEFsd2F5cywKKyAgICBEZWZhdWx0LAorICAgIE5ldmVyLAor
ICAgIC8vIFNhbWUgYXMgQWx3YXlzLCBleGNlcHQgdGhhdCBvbmx5IHRoZSBvcmlnaW4gb2YgdGhl
IHJlZmVycmluZyBVUkwgaXMgc2VudC4KKyAgICBPcmlnaW4sCiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAppbmRleCBmNjdmZjgwNzFjNzRhMzE4MGVhODVhNzg5ODFlM2M2NzE1ZTI5NDI4Li4xODA5NmMy
YzVmMmEyY2NiNmI3MzQ0OWQ2N2I0NDBjZTgxMDc4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJMb2FkZXJTdHJhdGVneTo6
bG9hZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmUKIHsKICAgICBSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJl
c291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQotICAgICAgICBzY2hl
ZHVsZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVy
cmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0KTsKKyAgICAgICAgc2NoZWR1bGVM
b2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBv
bGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZhdWx0KTsKICAgICByZXR1cm4gbG9h
ZGVyOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGCiB7CiAg
ICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGllbnQsIHJlcXVlc3QpOwogICAgIGlm
IChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIDAsIGZyYW1lLT5k
b2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7Cisg
ICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5y
ZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZhdWx0KTsKICAgICBy
ZXR1cm4gbG9hZGVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277844</attachid>
            <date>2016-04-30 22:32:25 -0700</date>
            <delta_ts>2016-05-01 16:43:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157241-20160430223300.patch</filename>
            <type>text/plain</type>
            <size>32143</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJiYjFkMWUwZTM3NzY1
OTJjZmNjYjBiYjNhYWU4MTBjNTc1MDJjZS4uZGUwNWM3NDJmMDY0NTk1MTY0NTI5NzkwNTIxNmE2
M2U3Njc0ZTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDE2LTA0LTMwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBVcGRhdGUgRmV0Y2ggdG8gdXNl
IGVudW0gY2xhc3MgaW5zdGVhZCBvZiBzdHJpbmcgZm9yIGVudW1lcmF0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoT3B0aW9ucy5oOiBDaGFuZ2VkIHRoaXMgY2xhc3MgaW50byBhIHN0cnVjdCwKKyAgICAgICAg
Z2V0dGluZyByaWQgb2YgYWxsIHRoZSBnZXR0ZXIgYW5kIHNldHRlciBmdW5jdGlvbnMuIE1vdmVk
IGFsbCB0aGUKKyAgICAgICAgZW51bWVyYXRpb24gdHlwZXMgb3V0IG9mIHRoaXMgY2xhc3MgdG8g
dGhlIFdlYkNvcmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGFuZCBnYXZlIHRoZW0gYWxsIHRo
ZSBuYW1lcyBhbmQgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIG9uZXMgZnJvbSB0aGUKKyAgICAgICAg
SURMIGZpbGUuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBvbGljeSk6IFVwZGF0ZWQgZm9yIHRoZSBjaGFu
Z2VzIHRvIEZldGNoT3B0aW9ucy4KKyAgICAgICAgVGhlIHN0cmluZyBtYXRjaGluZyBoZXJlIHdp
bGwgbGlrZWx5IGdvIGF3YXkgd2hlbiB3ZSBjaGFuZ2UgZGljdGlvbmFyeQorICAgICAgICBzbyBp
dCBzZXRzIHVwIGEgc3RydWN0dXJlLCB3aGljaCB3aWxsIHBhcnNlIHRoZSBlbnVtZXJhdGlvbiB2
YWx1ZXMsIGJ1dAorICAgICAgICB0aGF0IHdvbid0IGJlIGZvciBhIHdoaWxlLCBzbyB0aGlzIHN0
YXlzIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0
Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvIEZl
dGNoT3B0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVxdWVzdDo6dHlwZSk6IE1vdmVkIHRoaXMgdG8gdGhlIGhlYWRlciBhbmQg
Y2hhbmdlZCBpdHMKKyAgICAgICAgcmV0dXJuIHR5cGUgdG8gdGhlIGVudW07IGl0J3Mgbm90IGp1
c3QgYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVx
dWVzdDo6ZGVzdGluYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVz
dDo6cmVmZXJyZXJQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVz
dDo6bW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjcmVkZW50
aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpjYWNoZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpyZWRpcmVjdCk6IERpdHRvLgor
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaDogQ2hhbmdlZCBhbGwgdGhl
IGdldHRlcnMgdGhhdCByZXR1cm4KKyAgICAgICAgZW51bWVyYXRpb25zIHRvIHJldHVybiB0aGUg
ZW51bSBjbGFzcyB2YWx1ZXMgaW5zdGVhZCBvZiBzdHJpbmdzLgorICAgICAgICBQdXQgYWxsIHRo
ZSBpbmxpbmUgdmVyc2lvbnMgaGVyZSBpbiB0aGUgaGVhZGVyLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOiBSZW1vdmVkIHRoZSBzZXZlbiBlbnVtIHR5cGVz
IHRoYXQKKyAgICAgICAgYXJlIGluIEZldGNoUmVxdWVzdC5pZGwgZnJvbSB0aGUgbGlzdCBvZiAi
c3RyaW5nLWJhc2VkIiBlbnVtcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOiBVcGRhdGVkIGZvciB0aGUgY2hhbmdl
IHdoZXJlIEkKKyAgICAgICAgcmVuYW1lZCBSZWZlcnJlclBvbGljeSB0byBSZWZlcnJlckhlYWRl
clBvbGljeSwgYXQgbGVhc3QgZm9yIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpw
cm9jZXNzUmVmZXJyZXJQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphcHBseUNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94KTogRGl0dG8uCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9GcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaDogUmVuYW1lZCB0aGlzIGVudW0gZnJv
bSBSZWZlcnJlclBvbGljeSB0bworICAgICAgICBSZWZlcnJlckhlYWRlclBvbGljeSwgc2luY2Ug
dGhlIG9uZSBzcGVjaWZpZWQgaW4gdGhlIEZldGNoIEFQSSBoYXMgdGhlCisgICAgICAgIG5hbWUg
UmVmZXJyZXJQb2xpY3kuIEkgdGhpbmsgdGhlIGJlc3Qgd2F5IHRvIHJlc29sdmUgdGhpcyBsb25n
ZXIgdGVybSBpcworICAgICAgICB0byBtZXJnZSB0aGVtIHNpbmNlIHRoZXkgcmVhbGx5IGRvIHJl
cHJlc2VudCB0aGUgc2FtZSBjb25jZXB0LCBhbHRob3VnaAorICAgICAgICB0aGUgb25lIGZyb20g
dGhlIEZldGNoIEFQSSBoYXMgYSBmZXcgbW9yZSBmZWF0dXJlcy4KKworMjAxNi0wNC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKICAgICAgICAgVXBkYXRlIFhNTEh0dHBSZXF1
ZXN0IHRvIHVzZSBlbnVtIGNsYXNzIGluc3RlYWQgb2Ygc3RyaW5nIGZvciBlbnVtZXJhdGlvbgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjM4CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxYWMwMzE3ZTE1MTM0NjljZjViMjFjZGU3OWNiMWNkNzQ3Y2E4OTk3Li4x
MzVhNjJmNGVkNGQ2ODNkNjQ2ZmRmYmZkODA2YmQ2YTNhN2VkYThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTYtMDQtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFVwZGF0ZSBGZXRjaCB0byB1c2UgZW51bSBjbGFzcyBpbnN0ZWFkIG9mIHN0cmlu
ZyBmb3IgZW51bWVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOiBVcGRhdGVk
IGZvciB0aGUgY2hhbmdlIHdoZXJlIEkKKyAgICAgICAgcmVuYW1lZCBSZWZlcnJlclBvbGljeSB0
byBSZWZlcnJlckhlYWRlclBvbGljeSwgYXQgbGVhc3QgZm9yIG5vdy4KKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6IERpdHRvLgor
CiAyMDE2LTA0LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCB1c2VsZXNzIGNoZWNrIGluIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9h
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlvbnMuaAppbmRleCBh
ZTVlOGQ1ODUwZmMwZDEyYzk5NmRjZWFiYzExOWZmNmVhYmY1ZGU1Li4zNjllODZlYTA1MWY1MTVk
NTFiZTk4NjAzNWEzZWQwZTA0ZjI3NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hPcHRpb25zLmgKQEAgLTMzLDk4ICszMywyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZldGNoT3B0aW9ucyB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBl
IHsKLSAgICAgICAgRGVmYXVsdCwKLSAgICAgICAgQXVkaW8sCi0gICAgICAgIEZvbnQsCi0gICAg
ICAgIEltYWdlLAotICAgICAgICBTY3JpcHQsCi0gICAgICAgIFN0eWxlLAotICAgICAgICBUcmFj
aywKLSAgICAgICAgVmlkZW8KLSAgICB9OwotICAgIGVudW0gY2xhc3MgRGVzdGluYXRpb24gewot
ICAgICAgICBEZWZhdWx0LAotICAgICAgICBEb2N1bWVudCwKLSAgICAgICAgU2hhcmVkV29ya2Vy
LAotICAgICAgICBTdWJyZXNvdXJjZSwKLSAgICAgICAgVW5rbm93biwKLSAgICAgICAgV29ya2Vy
Ci0gICAgfTsKLSAgICBlbnVtIGNsYXNzIE1vZGUgewotICAgICAgICBOb0NvcnMsCi0gICAgICAg
IE5hdmlnYXRlLAotICAgICAgICBTYW1lT3JpZ2luLAotICAgICAgICBDb3JzCi0gICAgfTsKLSAg
ICBlbnVtIGNsYXNzIENyZWRlbnRpYWxzIHsKLSAgICAgICAgT21pdCwKLSAgICAgICAgU2FtZU9y
aWdpbiwKLSAgICAgICAgSW5jbHVkZQotICAgIH07Ci0gICAgZW51bSBjbGFzcyBDYWNoZSB7Ci0g
ICAgICAgIERlZmF1bHQsCi0gICAgICAgIE5vU3RvcmUsCi0gICAgICAgIFJlbG9hZCwKLSAgICAg
ICAgTm9DYWNoZSwKLSAgICAgICAgRm9yY2VDYWNoZSwKLSAgICB9OwotICAgIGVudW0gY2xhc3Mg
UmVkaXJlY3QgewotICAgICAgICBGb2xsb3csCi0gICAgICAgIEVycm9yLAotICAgICAgICBNYW51
YWwKLSAgICB9OwotICAgIGVudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgewotICAgICAgICBFbXB0
eSwKLSAgICAgICAgTm9SZWZlcnJlciwKLSAgICAgICAgTm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUs
Ci0gICAgICAgIE9yaWdpbk9ubHksCi0gICAgICAgIE9yaWdpbldoZW5Dcm9zc09yaWdpbiwKLSAg
ICAgICAgVW5zYWZlVVJMCi0gICAgfTsKLQotICAgIEZldGNoT3B0aW9ucygpIHsgfQotICAgIEZl
dGNoT3B0aW9ucyhUeXBlLCBEZXN0aW5hdGlvbiwgTW9kZSwgQ3JlZGVudGlhbHMsIENhY2hlLCBS
ZWRpcmVjdCwgUmVmZXJyZXJQb2xpY3kpOwotCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9Ci0gICAgRGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2Rl
OyB9Ci0gICAgQ3JlZGVudGlhbHMgY3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2NyZWRl
bnRpYWxzOyB9Ci0gICAgQ2FjaGUgY2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlOyB9Ci0g
ICAgUmVkaXJlY3QgcmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0OyB9Ci0gICAg
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVy
UG9saWN5OyB9Ci0KLSAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7
IH0KLSAgICB2b2lkIHNldERlc3RpbmF0aW9uKERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKSB7IG1f
ZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjsgfQotICAgIHZvaWQgc2V0TW9kZShNb2RlIG1vZGUp
IHsgbV9tb2RlID0gbW9kZTsgfQotICAgIHZvaWQgc2V0Q3JlZGVudGlhbHMoQ3JlZGVudGlhbHMg
Y3JlZGVudGlhbHMpIHsgbV9jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzOyB9Ci0gICAgdm9pZCBz
ZXRDYWNoZShDYWNoZSBjYWNoZSkgeyBtX2NhY2hlID0gY2FjaGU7IH0KLSAgICB2b2lkIHNldFJl
ZGlyZWN0KFJlZGlyZWN0IHJlZGlyZWN0KSB7IG1fcmVkaXJlY3QgPSByZWRpcmVjdDsgfQotICAg
IHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsg
bV9yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlw
ZSBtX3R5cGUgPSBUeXBlOjpEZWZhdWx0OwotICAgIERlc3RpbmF0aW9uIG1fZGVzdGluYXRpb24g
PSBEZXN0aW5hdGlvbjo6RGVmYXVsdDsKLSAgICBNb2RlIG1fbW9kZSA9IE1vZGU6Ok5vQ29yczsK
LSAgICBDcmVkZW50aWFscyBtX2NyZWRlbnRpYWxzID0gQ3JlZGVudGlhbHM6Ok9taXQ7Ci0gICAg
Q2FjaGUgbV9jYWNoZSA9IENhY2hlOjpEZWZhdWx0OwotICAgIFJlZGlyZWN0IG1fcmVkaXJlY3Qg
PSBSZWRpcmVjdDo6IEZvbGxvdzsKLSAgICBSZWZlcnJlclBvbGljeSBtX3JlZmVycmVyUG9saWN5
ID0gUmVmZXJyZXJQb2xpY3k6OkVtcHR5OworZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSB7IEVt
cHR5U3RyaW5nLCBOb1JlZmVycmVyLCBOb1JlZmVycmVyV2hlbkRvd25ncmFkZSwgT3JpZ2luT25s
eSwgT3JpZ2luV2hlbkNyb3NzT3JpZ2luLCBVbnNhZmVVcmwgfTsKK2VudW0gY2xhc3MgUmVxdWVz
dENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBOb0NhY2hlLCBGb3JjZUNhY2hlIH07
CitlbnVtIGNsYXNzIFJlcXVlc3RDcmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIEluY2x1
ZGUgfTsKK2VudW0gY2xhc3MgUmVxdWVzdERlc3RpbmF0aW9uIHsgRW1wdHlTdHJpbmcsIERvY3Vt
ZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNlLCBVbmtub3duLCBXb3JrZXIgfTsKK2VudW0g
Y2xhc3MgUmVxdWVzdE1vZGUgeyBOYXZpZ2F0ZSwgU2FtZU9yaWdpbiwgTm9Db3JzLCBDb3JzIH07
CitlbnVtIGNsYXNzIFJlcXVlc3RSZWRpcmVjdCB7IEZvbGxvdywgRXJyb3IsIE1hbnVhbCB9Owor
ZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IEVtcHR5U3RyaW5nLCBBdWRpbywgRm9udCwgSW1hZ2Us
IFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OworCitzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsK
KyAgICBSZXF1ZXN0VHlwZSB0eXBlIHsgUmVxdWVzdFR5cGU6OkVtcHR5U3RyaW5nIH07CisgICAg
UmVxdWVzdERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIHsgUmVxdWVzdERlc3RpbmF0aW9uOjpFbXB0
eVN0cmluZyB9OworICAgIFJlcXVlc3RNb2RlIG1vZGUgeyBSZXF1ZXN0TW9kZTo6Tm9Db3JzIH07
CisgICAgUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzIHsgUmVxdWVzdENyZWRlbnRpYWxz
OjpPbWl0IH07CisgICAgUmVxdWVzdENhY2hlIGNhY2hlIHsgUmVxdWVzdENhY2hlOjpEZWZhdWx0
IH07CisgICAgUmVxdWVzdFJlZGlyZWN0IHJlZGlyZWN0IHsgUmVxdWVzdFJlZGlyZWN0OjpGb2xs
b3cgfTsKKyAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyB9OwogfTsKIAotaW5saW5lIEZldGNoT3B0aW9uczo6RmV0Y2hPcHRpb25z
KFR5cGUgdHlwZSwgRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1vZGUgbW9kZSwgQ3JlZGVudGlh
bHMgY3JlZGVudGlhbHMsIENhY2hlIGNhY2hlLCBSZWRpcmVjdCByZWRpcmVjdCwgUmVmZXJyZXJQ
b2xpY3kgcmVmZXJyZXJQb2xpY3kpCi0gICAgOiBtX3R5cGUodHlwZSkKLSAgICAsIG1fZGVzdGlu
YXRpb24oZGVzdGluYXRpb24pCi0gICAgLCBtX21vZGUobW9kZSkKLSAgICAsIG1fY3JlZGVudGlh
bHMoY3JlZGVudGlhbHMpCi0gICAgLCBtX2NhY2hlKGNhY2hlKQotICAgICwgbV9yZWRpcmVjdChy
ZWRpcmVjdCkKLSAgICAsIG1fcmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpCi17Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggZGY5
NjQ5MjM4NTY3ZTc3NjBlNjEyMzJmYzFiZmZjM2VmOWNlMmIwOS4uMTBmN2M1Y2FmNmY3ZWI5MmE2
ZDAzNDJkYjY2MDUxMGE4YjkzZDhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtNDIsMTcgKzQyLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0YXRpYyBib29sIHNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkKIHsKICAgICBpZiAocmVmZXJyZXJQb2xpY3ku
aXNFbXB0eSgpKQotICAgICAgICBvcHRpb25zLnNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5KTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGlj
eSA9IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKICAgICBlbHNlIGlmIChyZWZlcnJlclBv
bGljeSA9PSAibm8tcmVmZXJyZXIiKQotICAgICAgICBvcHRpb25zLnNldFJlZmVycmVyUG9saWN5
KEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXIpOworICAgICAgICBvcHRp
b25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI7CiAgICAgZWxz
ZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlIikKLSAg
ICAgICAgb3B0aW9ucy5zZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9s
aWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGU7CiAgICAgZWxz
ZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm9yaWdpbi1vbmx5IikKLSAgICAgICAgb3B0aW9ucy5z
ZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW5Pbmx5
KTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpPcmln
aW5Pbmx5OwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJvcmlnaW4td2hlbi1jcm9z
cy1vcmlnaW4iKQotICAgICAgICBvcHRpb25zLnNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6Ok9yaWdpbldoZW5Dcm9zc09yaWdpbik7CisgICAgICAgIG9wdGlv
bnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3JpZ2lu
OwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJ1bnNhZmUtdXJsIikKLSAgICAgICAg
b3B0aW9ucy5zZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpV
bnNhZmVVUkwpOworICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xp
Y3k6OlVuc2FmZVVybDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTYxLDEzICs2MSwxMyBAQCBzdGF0aWMgYm9vbCBzZXRSZWZlcnJlclBvbGlj
eShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpYwogc3Rh
dGljIGJvb2wgc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBpZiAobW9kZSA9PSAibmF2aWdhdGUiKQotICAgICAgICBvcHRpb25zLnNldE1v
ZGUoRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSk7CisgICAgICAgIG9wdGlvbnMubW9kZSA9
IFJlcXVlc3RNb2RlOjpOYXZpZ2F0ZTsKICAgICBlbHNlIGlmIChtb2RlID09ICJzYW1lLW9yaWdp
biIpCi0gICAgICAgIG9wdGlvbnMuc2V0TW9kZShGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmln
aW4pOworICAgICAgICBvcHRpb25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6U2FtZU9yaWdpbjsKICAg
ICBlbHNlIGlmIChtb2RlID09ICJuby1jb3JzIikKLSAgICAgICAgb3B0aW9ucy5zZXRNb2RlKEZl
dGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzKTsKKyAgICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVz
dE1vZGU6Ok5vQ29yczsKICAgICBlbHNlIGlmIChtb2RlID09ICJjb3JzIikKLSAgICAgICAgb3B0
aW9ucy5zZXRNb2RlKEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CisgICAgICAgIG9wdGlvbnMu
bW9kZSA9IFJlcXVlc3RNb2RlOjpDb3JzOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNzYsMTEgKzc2LDExIEBAIHN0YXRpYyBib29sIHNldE1v
ZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1vZGUpCiBzdGF0aWMgYm9v
bCBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbHMpCiB7CiAgICAgaWYgKGNyZWRlbnRpYWxzID09ICJvbWl0IikKLSAgICAgICAgb3B0
aW9ucy5zZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0KTsKKyAg
ICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6T21pdDsKICAg
ICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAic2FtZS1vcmlnaW4iKQotICAgICAgICBvcHRpb25z
LnNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW4pOwor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpTYW1lT3Jp
Z2luOwogICAgIGVsc2UgaWYgKGNyZWRlbnRpYWxzID09ICJpbmNsdWRlIikKLSAgICAgICAgb3B0
aW9ucy5zZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlKTsK
KyAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6SW5jbHVk
ZTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTg5LDE1ICs4OSwxNSBAQCBzdGF0aWMgYm9vbCBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbHMpCiBzdGF0aWMgYm9vbCBzZXRDYWNo
ZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUpCiB7CiAgICAgaWYg
KGNhY2hlID09ICJkZWZhdWx0IikKLSAgICAgICAgb3B0aW9ucy5zZXRDYWNoZShGZXRjaE9wdGlv
bnM6OkNhY2hlOjpEZWZhdWx0KTsKKyAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNo
ZTo6RGVmYXVsdDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tc3RvcmUiKQotICAgICAgICBv
cHRpb25zLnNldENhY2hlKEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vU3RvcmUpOworICAgICAgICBv
cHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpOb1N0b3JlOwogICAgIGVsc2UgaWYgKGNhY2hl
ID09ICJyZWxvYWQiKQotICAgICAgICBvcHRpb25zLnNldENhY2hlKEZldGNoT3B0aW9uczo6Q2Fj
aGU6OlJlbG9hZCk7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OlJlbG9h
ZDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tY2FjaGUiKQotICAgICAgICBvcHRpb25zLnNl
dENhY2hlKEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2FjaGUpOworICAgICAgICBvcHRpb25zLmNh
Y2hlID0gUmVxdWVzdENhY2hlOjpOb0NhY2hlOwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJmb3Jj
ZS1jYWNoZSIpCi0gICAgICAgIG9wdGlvbnMuc2V0Q2FjaGUoRmV0Y2hPcHRpb25zOjpDYWNoZTo6
Rm9yY2VDYWNoZSk7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OkZvcmNl
Q2FjaGU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMDYsMTEgKzEwNiwxMSBAQCBzdGF0aWMgYm9vbCBzZXRDYWNoZShGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUpCiBzdGF0aWMgYm9vbCBzZXRSZWRpcmVjdChG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3QpCiB7CiAgICAgaWYg
KHJlZGlyZWN0ID09ICJmb2xsb3ciKQotICAgICAgICBvcHRpb25zLnNldFJlZGlyZWN0KEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdyk7CisgICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBS
ZXF1ZXN0UmVkaXJlY3Q6OkZvbGxvdzsKICAgICBlbHNlIGlmIChyZWRpcmVjdCA9PSAiZXJyb3Ii
KQotICAgICAgICBvcHRpb25zLnNldFJlZGlyZWN0KEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkVy
cm9yKTsKKyAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRpcmVjdDo6RXJyb3I7
CiAgICAgZWxzZSBpZiAocmVkaXJlY3QgPT0gIm1hbnVhbCIpCi0gICAgICAgIG9wdGlvbnMuc2V0
UmVkaXJlY3QoRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6TWFudWFsKTsKKyAgICAgICAgb3B0aW9u
cy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRpcmVjdDo6TWFudWFsOwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRp
YyBib29sIGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVz
dCwgU2NyaXB0RXhlY3V0aW9uCiAKICAgICBpZiAoaW5pdC5nZXQoIm1vZGUiLCB2YWx1ZSkgJiYg
IXNldE1vZGUocmVxdWVzdC5vcHRpb25zLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAocmVxdWVzdC5vcHRpb25zLm1vZGUoKSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5h
dmlnYXRlKQorICAgIGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9PSBSZXF1ZXN0TW9kZTo6TmF2
aWdhdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbml0LmdldCgiY3JlZGVu
dGlhbHMiLCB2YWx1ZSkgJiYgIXNldENyZWRlbnRpYWxzKHJlcXVlc3Qub3B0aW9ucywgdmFsdWUp
KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBib29sIGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVl
c3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uCiBzdGF0aWMgUmVm
UHRyPEZldGNoSGVhZGVycz4gYnVpbGRIZWFkZXJzKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIGNv
bnN0IEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaEhl
YWRlcnMqIGlucHV0SGVhZGVycyA9IG51bGxwdHIpCiB7CiAgICAgRmV0Y2hIZWFkZXJzOjpHdWFy
ZCBndWFyZCA9IEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlcXVlc3Q7Ci0gICAgaWYgKHJlcXVlc3Qu
b3B0aW9ucy5tb2RlKCkgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpIHsKKyAgICBpZiAo
cmVxdWVzdC5vcHRpb25zLm1vZGUgPT0gUmVxdWVzdE1vZGU6Ok5vQ29ycykgewogICAgICAgICBj
b25zdCBTdHJpbmcmIG1ldGhvZCA9IHJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAg
ICAgIGlmIChtZXRob2QgIT0gIkdFVCIgJiYgbWV0aG9kICE9ICJQT1NUIiAmJiBtZXRob2QgIT0g
IkhFQUQiKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDQsOCArMjQ0LDggQEAg
UmVmUHRyPEZldGNoUmVxdWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICB9CiAKICAgICBGZXRjaFJlcXVlc3Q6OkludGVy
bmFsUmVxdWVzdCBpbnRlcm5hbFJlcXVlc3Q7Ci0gICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMu
c2V0TW9kZShGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpOwotICAgIGludGVybmFsUmVxdWVzdC5v
cHRpb25zLnNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQpOwor
ICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6Q29yczsKKyAg
ICBpbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFs
czo6T21pdDsKICAgICBpbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIgPSBBU0NJSUxpdGVyYWwoImNs
aWVudCIpOwogICAgIGludGVybmFsUmVxdWVzdC5yZXF1ZXN0LnNldFVSTChyZXF1ZXN0VVJMKTsK
IApAQCAtMzAxLDcwICszMDEsNiBAQCBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRjaFJlcXVlc3Q6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaAogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBoZWFk
ZXJzLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkpOwogfQogCi1T
dHJpbmcgRmV0Y2hSZXF1ZXN0Ojp0eXBlKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1faW50ZXJu
YWxSZXF1ZXN0Lm9wdGlvbnMudHlwZSgpKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlR5cGU6
OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBjYXNlIEZldGNoT3B0aW9u
czo6VHlwZTo6QXVkaW8gOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhdWRpbyIpOwot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpUeXBlOjpGb250IDoKLSAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiZm9udCIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpUeXBlOjpJbWFnZSA6Ci0g
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImltYWdlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlv
bnM6OlR5cGU6OlNjcmlwdCA6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNjcmlwdCIp
OwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpUeXBlOjpTdHlsZSA6Ci0gICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoInN0eWxlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlR5cGU6OlRyYWNr
IDoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidHJhY2siKTsKLSAgICBjYXNlIEZldGNo
T3B0aW9uczo6VHlwZTo6VmlkZW8gOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ2aWRl
byIpOwotICAgIH07Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOwotfQotCi1TdHJpbmcgRmV0Y2hSZXF1ZXN0OjpkZXN0aW5hdGlvbigpIGNvbnN0Ci17Ci0g
ICAgc3dpdGNoIChtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmRlc3RpbmF0aW9uKCkpIHsKLSAg
ICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRvY3VtZW50
OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkb2N1bWVudCIpOwotICAgIGNhc2UgRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkV29ya2VyOgotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJzaGFyZWR3b3JrZXIiKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OlN1YnJlc291cmNlOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzdWJyZXNv
dXJjZSIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6VW5rbm93bjoKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidW5rbm93biIpOwotICAgIGNhc2UgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6V29ya2VyOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ3
b3JrZXIiKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotCi1TdHJpbmcgRmV0Y2hSZXF1ZXN0OjpyZWZlcnJlclBvbGljeSgpIGNvbnN0
Ci17Ci0gICAgc3dpdGNoIChtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnJlZmVycmVyUG9saWN5
KCkpIHsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5OgotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9s
aWN5OjpOb1JlZmVycmVyOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJuby1yZWZlcnJl
ciIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldo
ZW5Eb3duZ3JhZGU6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vLXJlZmVycmVyLXdo
ZW4tZG93bmdyYWRlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpP
cmlnaW5Pbmx5OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvcmlnaW4tb25seSIpOwot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3Jp
Z2luOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvcmlnaW4td2hlbi1jcm9zcy1vcmln
aW4iKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OlVuc2FmZVVSTDoK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidW5zYWZlLXVybCIpOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIFN0cmluZyBG
ZXRjaFJlcXVlc3Q6OnJlZmVycmVyKCkgY29uc3QKIHsKICAgICBpZiAobV9pbnRlcm5hbFJlcXVl
c3QucmVmZXJyZXIgPT0gIm5vLXJlZmVycmVyIikKQEAgLTM3NCw2OCArMzEwLDYgQEAgU3RyaW5n
IEZldGNoUmVxdWVzdDo6cmVmZXJyZXIoKSBjb25zdAogICAgIHJldHVybiBtX2ludGVybmFsUmVx
dWVzdC5yZWZlcnJlcjsKIH0KIAotU3RyaW5nIEZldGNoUmVxdWVzdDo6bW9kZSgpIGNvbnN0Ci17
Ci0gICAgc3dpdGNoIChtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUoKSkgewotICAgIGNh
c2UgRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgibmF2aWdhdGUiKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdp
bjoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2FtZS1vcmlnaW4iKTsKLSAgICBjYXNl
IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJuby1jb3JzIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnM6Ci0gICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoImNvcnMiKTsKLSAgICB9OwotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEZldGNoUmVxdWVzdDo6
Y3JlZGVudGlhbHMoKSBjb25zdAotewotICAgIHN3aXRjaCAobV9pbnRlcm5hbFJlcXVlc3Qub3B0
aW9ucy5jcmVkZW50aWFscygpKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxz
OjpPbWl0OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvbWl0Iik7Ci0gICAgY2FzZSBG
ZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOgotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJzYW1lLW9yaWdpbiIpOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDcmVkZW50
aWFsczo6SW5jbHVkZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW5jbHVkZSIpOwot
ICAgIH07Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwot
fQotCi1TdHJpbmcgRmV0Y2hSZXF1ZXN0OjpjYWNoZSgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICht
X2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmNhY2hlKCkpIHsKLSAgICBjYXNlIEZldGNoT3B0aW9u
czo6Q2FjaGU6OkRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRlZmF1bHQi
KTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vU3RvcmU6Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIm5vLXN0b3JlIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hl
OjpSZWxvYWQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInJlbG9hZCIpOwotICAgIGNh
c2UgRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgibm8tY2FjaGUiKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6OkZvcmNlQ2Fj
aGU6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZvcmNlLWNhY2hlIik7Ci0gICAgfQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3Ry
aW5nIEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdAotewotICAgIHN3aXRjaCAobV9pbnRl
cm5hbFJlcXVlc3Qub3B0aW9ucy5yZWRpcmVjdCgpKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6
OlJlZGlyZWN0OjpGb2xsb3c6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZvbGxvdyIp
OwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJyb3I6Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoImVycm9yIik7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0
OjpNYW51YWw6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm1hbnVhbCIpOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIFJl
c291cmNlUmVxdWVzdCBGZXRjaFJlcXVlc3Q6OmludGVybmFsUmVxdWVzdCgpIGNvbnN0CiB7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2ludGVybmFsUmVxdWVzdC5yZXF1ZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggOTIwMGJk
MWI2N2Y5N2FkZGZhNWRiYTVkYTFmM2QxNzNlZDUyNjk1My4uNWY1NDgwNjlkYTUyMWJkMGRmNGEz
NzRiY2E1OTYxMDk3MmRmODYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5oCkBAIC00OCwxOSArNDgsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8RmV0Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoUmVx
dWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIFJl
ZlB0cjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIC8vIFJl
cXVlc3QgQVBJCiAgICAgY29uc3QgU3RyaW5nJiBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsUmVxdWVzdC5yZXF1ZXN0Lmh0dHBNZXRob2QoKTsgfQogICAgIGNvbnN0IFN0cmluZyYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3QucmVxdWVzdC51cmwoKS5zdHJp
bmcoKTsgfQogICAgIEZldGNoSGVhZGVycyYgaGVhZGVycygpIHsgcmV0dXJuIG1faGVhZGVycy5n
ZXQoKTsgfQogCi0gICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICBTdHJpbmcgZGVzdGluYXRp
b24oKSBjb25zdDsKKyAgICBSZXF1ZXN0VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgUmVxdWVzdERl
c3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHJlZmVycmVyKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHJlZmVycmVyUG9saWN5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1vZGUo
KSBjb25zdDsKLSAgICBTdHJpbmcgY3JlZGVudGlhbHMoKSBjb25zdDsKLSAgICBTdHJpbmcgY2Fj
aGUoKSBjb25zdDsKLSAgICBTdHJpbmcgcmVkaXJlY3QoKSBjb25zdDsKKyAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OworICAgIFJlcXVlc3RNb2RlIG1vZGUoKSBjb25z
dDsKKyAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMoKSBjb25zdDsKKyAgICBSZXF1
ZXN0Q2FjaGUgY2FjaGUoKSBjb25zdDsKKyAgICBSZXF1ZXN0UmVkaXJlY3QgcmVkaXJlY3QoKSBj
b25zdDsKICAgICBjb25zdCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJuYWxSZXF1ZXN0LmludGVncml0eTsgfQogCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xv
bmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkzLDYgKzky
LDQxIEBAIGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBGZXRjaEJvZHkmJiBiCiB7CiB9CiAKK2lubGluZSBSZXF1ZXN0Q2Fj
aGUgRmV0Y2hSZXF1ZXN0OjpjYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxS
ZXF1ZXN0Lm9wdGlvbnMuY2FjaGU7Cit9CisKK2lubGluZSBSZXF1ZXN0Q3JlZGVudGlhbHMgRmV0
Y2hSZXF1ZXN0OjpjcmVkZW50aWFscygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxS
ZXF1ZXN0Lm9wdGlvbnMuY3JlZGVudGlhbHM7Cit9CisKK2lubGluZSBSZXF1ZXN0RGVzdGluYXRp
b24gRmV0Y2hSZXF1ZXN0OjpkZXN0aW5hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50
ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMuZGVzdGluYXRpb247Cit9CisKK2lubGluZSBSZXF1ZXN0TW9k
ZSBGZXRjaFJlcXVlc3Q6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVybmFsUmVx
dWVzdC5vcHRpb25zLm1vZGU7Cit9CisKK2lubGluZSBSZXF1ZXN0UmVkaXJlY3QgRmV0Y2hSZXF1
ZXN0OjpyZWRpcmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9w
dGlvbnMucmVkaXJlY3Q7Cit9CisKK2lubGluZSBSZWZlcnJlclBvbGljeSBGZXRjaFJlcXVlc3Q6
OnJlZmVycmVyUG9saWN5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qu
b3B0aW9ucy5yZWZlcnJlclBvbGljeTsKK30KKworaW5saW5lIFJlcXVlc3RUeXBlIEZldGNoUmVx
dWVzdDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlv
bnMudHlwZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEZFVENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQppbmRleCAwYjEzNzBmMjY2YWNmNDdhMTVlMTEzYWZiNWI3MTM0NDkyZTcwMDI4
Li42MWFkYWExNTkxMDZkMmFhMDBjMGU1ODExNjZkOWIxZGQ5ZjkzZjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0xMzUsMTMg
KzEzNSw2IEBAIG15ICVzdmdUeXBlV2l0aFdyaXRhYmxlUHJvcGVydGllc05lZWRpbmdUZWFyT2Zm
ID0gKAogbXkgJXN0cmluZ0Jhc2VkRW51bWVyYXRpb25IYXNoID0gKAogICAgICJSVENCdW5kbGVQ
b2xpY3lFbnVtIiA9PiAxLAogICAgICJSVENJY2VUcmFuc3BvcnRQb2xpY3lFbnVtIiA9PiAxLAot
ICAgICJSZWZlcnJlclBvbGljeSIgPT4gMSwKLSAgICAiUmVxdWVzdENhY2hlIiA9PiAxLAotICAg
ICJSZXF1ZXN0Q3JlZGVudGlhbHMiID0+IDEsCi0gICAgIlJlcXVlc3REZXN0aW5hdGlvbiIgPT4g
MSwKLSAgICAiUmVxdWVzdE1vZGUiID0+IDEsCi0gICAgIlJlcXVlc3RSZWRpcmVjdCIgPT4gMSwK
LSAgICAiUmVxdWVzdFR5cGUiID0+IDEsCiAgICAgIlRleHRUcmFja0tpbmQiID0+IDEsCiAgICAg
IlRleHRUcmFja01vZGUiID0+IDEsCiApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDIx
MTBkNjhjZTI2OWZlYTkyNDgwOTE0ZWE5ZDcyYmNlYWI3OGZhMy4uMDNmOWRmOTMzZWRjMTQ0MWJk
OWMzNjBiNjEzNDZkMTk1YmFhYTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEs
NyArNTIxLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRpZgogICAgICwgbV9sb2Fk
RXZlbnREZWxheUNvdW50KDApCiAgICAgLCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRoaXMsICZE
b2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQotICAgICwgbV9yZWZlcnJlclBvbGlj
eShSZWZlcnJlclBvbGljeURlZmF1bHQpCisgICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVy
SGVhZGVyUG9saWN5OjpEZWZhdWx0KQogICAgICwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcChm
YWxzZSkKICAgICAsIG1fd3JpdGVSZWN1cnNpb25EZXB0aCgwKQogICAgICwgbV9sYXN0SGFuZGxl
ZFVzZXJHZXN0dXJlVGltZXN0YW1wKDApCkBAIC0zMzYwLDE2ICszMzYwLDE2IEBAIHZvaWQgRG9j
dW1lbnQ6OnByb2Nlc3NSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSkKICAgICAv
LyBOb3RlIHRoYXQgd2UncmUgc3VwcG9ydGluZyBib3RoIHRoZSBzdGFuZGFyZCBhbmQgbGVnYWN5
IGtleXdvcmRzIGZvciByZWZlcnJlcgogICAgIC8vIHBvbGljaWVzLCBhcyBkZWZpbmVkIGJ5IGh0
dHA6Ly93d3cudzMub3JnL1RSL3JlZmVycmVyLXBvbGljeS8jcmVmZXJyZXItcG9saWN5LWRlbGl2
ZXJ5LW1ldGEKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAi
bm8tcmVmZXJyZXIiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJu
ZXZlciIpKQotICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeU5ldmVyKTsK
KyAgICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsK
ICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNh
ZmUtdXJsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiYWx3YXlz
IikpCi0gICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5QWx3YXlzKTsKKyAg
ICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkFsd2F5cyk7CiAg
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAib3JpZ2lu
IikpCi0gICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5T3JpZ2luKTsKKyAg
ICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbik7CiAg
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibm8tcmVm
ZXJyZXItd2hlbi1kb3duZ3JhZGUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
b2xpY3ksICJkZWZhdWx0IikpCi0gICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9s
aWN5RGVmYXVsdCk7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9s
aWN5OjpEZWZhdWx0KTsKICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNl
dCByZWZlcnJlciBwb2xpY3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUg
b2YgJ25vLXJlZmVycmVyJywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScs
IG9yICd1bnNhZmUtdXJsJy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwotICAgICAg
ICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeU5ldmVyKTsKKyAgICAgICAgc2V0UmVm
ZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsKICAgICB9CiB9CiAKQEAg
LTY5MzcsNyArNjkzNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5Q29udGVudERpc3Bvc2l0aW9u
QXR0YWNobWVudFNhbmRib3goKQogewogICAgIEFTU0VSVChzaG91bGRFbmZvcmNlQ29udGVudERp
c3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3goKSk7CiAKLSAgICBzZXRSZWZlcnJlclBvbGljeShS
ZWZlcnJlclBvbGljeU5ldmVyKTsKKyAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlckhlYWRl
clBvbGljeTo6TmV2ZXIpOwogICAgIGlmICghaXNNZWRpYURvY3VtZW50KCkpCiAgICAgICAgIGVu
Zm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEFsbCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCAxYmNiNDhiZTI1ZWJhYmQ5YWM2OGVjY2Q1MDFlNjY1MTkxNTE3ZTNiLi4xNjYyMWVi
YTcxNzBiOTE2ZWJhODY2ZTEwYTg4ZWVjYTU4NDk3YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMzYxLDggKzM2MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpZERpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFBy
b3BlcnRpZXNDaGFuZ2VkOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3ko
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9IHJlZmVy
cmVyUG9saWN5OyB9Ci0gICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CisgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShS
ZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX3JlZmVycmVyUG9saWN5ID0g
cmVmZXJyZXJQb2xpY3k7IH0KKyAgICBSZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7IH0KIAogICAgIERvY3VtZW50VHlw
ZSogZG9jdHlwZSgpIGNvbnN0OwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBwcml2YXRlOgogCiAg
ICAgVmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKIAotICAgIFJlZmVycmVy
UG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7CisgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgbV9yZWZl
cnJlclBvbGljeTsKIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIERvY3VtZW50VGltaW5n
IG1fZG9jdW1lbnRUaW1pbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaAppbmRleCBjMGMyZDI2ZWVlNjY0ZGQ1YTk0NjFjY2IzNzc3OGNiN2QyYTVk
NWUyLi5mODUzOWM1MGRlZDVmMjI3ZmI2OTk4NTRkZDc1ZDU1ODY1YTc1MTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xp
Y3koKSA9PSBSZWZlcnJlclBvbGljeURlZmF1bHQ7CisgICAgICAgIHJldHVybiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZh
dWx0OwogICAgIH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmNwcAppbmRleCAzYmQzMjAwNTZkOTQyZWY4Y2IzYjkzZjU2ODYxN2E0ZTQ3ZWQ2N2U0Li4yM2Rj
ZjExY2JlYzdlYWMzZTY1ZDc2M2I0MTI1ZGJhMTI5NTFkNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5
OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCiAgICAgcmV0dXJuICFVUkxJc1NlY3VyZVVSTDsKIH0KIAotU3RyaW5nIFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK1N0cmluZyBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlckhlYWRlclBvbGljeSByZWZl
cnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAg
ICAgaWYgKHJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
NzUsMTEgKzc1LDExIEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIHN3aXRjaCAocmVmZXJyZXJQb2xpY3kpIHsKLSAgICBjYXNlIFJlZmVy
cmVyUG9saWN5TmV2ZXI6CisgICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXI6CiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBjYXNlIFJlZmVycmVyUG9saWN5QWx3YXlzOgor
ICAgIGNhc2UgUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkFsd2F5czoKICAgICAgICAgcmV0dXJuIHJl
ZmVycmVyOwotICAgIGNhc2UgUmVmZXJyZXJQb2xpY3lPcmlnaW46IHsKKyAgICBjYXNlIFJlZmVy
cmVySGVhZGVyUG9saWN5OjpPcmlnaW46IHsKICAgICAgICAgU3RyaW5nIG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKS0+dG9TdHJpbmcoKTsKICAgICAg
ICAgaWYgKG9yaWdpbiA9PSAibnVsbCIpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uCiAgICAgICAgIC8vIHRvIHR1
cm4gaXQgaW50byBhIGNhbm9uaWNhbCBVUkwgd2UgY2FuIHVzZSBhcyByZWZlcnJlci4KICAgICAg
ICAgcmV0dXJuIG9yaWdpbiArICIvIjsKICAgICB9Ci0gICAgY2FzZSBSZWZlcnJlclBvbGljeURl
ZmF1bHQ6CisgICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggNzY3
OWM5ZmJiYWYyMzg2NzQwZWQzZjY1MmM3Yzk1YTZiNjMyMjVlZC4uNWNkZGExMGMwYTMyMGUyYTlm
MTcxZGU2YjM0YjZkM2FiZjNmZDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
aApAQCAtMzQsMjAgKzM0LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJM
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBVUkw7CiAKIGNsYXNzIFNlY3VyaXR5UG9s
aWN5IHsKIHB1YmxpYzoKLSAgICAvLyBUcnVlIGlmIHRoZSByZWZlcnJlciBzaG91bGQgYmUgb21p
dHRlZCBhY2NvcmRpbmcgdG8gdGhlCi0gICAgLy8gUmVmZXJyZXJQb2xpY3lEZWZhdWx0LiBJZiB5
b3UgaW50ZW5kIHRvIHNlbmQgYSByZWZlcnJlciBoZWFkZXIsIHlvdQotICAgIC8vIHNob3VsZCB1
c2UgZ2VuZXJhdGVSZWZlcnJlckhlYWRlciBpbnN0ZWFkLgorICAgIC8vIFRydWUgaWYgdGhlIHJl
ZmVycmVyIHNob3VsZCBiZSBvbWl0dGVkIGFjY29yZGluZyB0byBSZWZlcnJlckhlYWRlclBvbGlj
eTo6RGVmYXVsdC4KKyAgICAvLyBJZiB5b3UgaW50ZW5kIHRvIHNlbmQgYSByZWZlcnJlciBoZWFk
ZXIsIHlvdSBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIgaW5zdGVhZC4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKICAgICAvLyBSZXR1cm5zIHRoZSByZWZlcnJlciBt
b2RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVycmVyIHBvbGljeSBmb3IgYQogICAgIC8vIG5h
dmlnYXRpb24gdG8gYSBnaXZlbiBVUkwuIElmIHRoZSByZWZlcnJlciByZXR1cm5lZCBpcyBlbXB0
eSwgdGhlCiAgICAgLy8gcmVmZXJyZXIgaGVhZGVyIHNob3VsZCBiZSBvbWl0dGVkLgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJl
clBvbGljeSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVySGVh
ZGVyUG9saWN5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIGVu
dW0gTG9jYWxMb2FkUG9saWN5IHsKICAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBO
byByZXN0cmljdGlvbiBvbiBsb2NhbCBsb2Fkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZl
cnJlclBvbGljeS5oCmluZGV4IDM5YjYwYmI0M2IyMzRhYmY4OGEyZjQ0ZDM2NWQwOGQ2YjM2NWIw
MTguLjE3NDc5OGI3OGI2YTQ1OTI5NzliODgwZmM5OTgxM2Y1MDFkNWVhYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaApAQCAtMjksMjAgKzI5LDI4IEBACiAgKgog
ICovCiAKLSNpZm5kZWYgUmVmZXJyZXJQb2xpY3lfaAotI2RlZmluZSBSZWZlcnJlclBvbGljeV9o
CisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIFJlZmVycmVyUG9s
aWN5IHsKLSAgICBSZWZlcnJlclBvbGljeUFsd2F5cywKLSAgICBSZWZlcnJlclBvbGljeURlZmF1
bHQsCi0gICAgUmVmZXJyZXJQb2xpY3lOZXZlciwKLSAgICAvLyBTYW1lIGFzIFJlZmVycmVyUG9s
aWN5QWx3YXlzLCBleGNlcHQgdGhhdCBvbmx5IHRoZSBvcmlnaW4gb2YgdGhlCi0gICAgLy8gcmVm
ZXJyaW5nIFVSTCBpcyBzZW5kLgotICAgIFJlZmVycmVyUG9saWN5T3JpZ2luLAorLy8gRklYTUU6
IE9uZSBvZiB0aGVzZSBpcyBhIG1hY3JvIHRoYXQgaXMgZGVmaW5lZCBpbiB0aGUgR1RLIGJ1aWxk
LgorLy8gSSBhbSBub3Qgc3VyZSB3aGljaCBpdCBpcy4gV2Ugc2hvdWxkIHJlbW92ZSB0aGUgdW5u
ZWVkZWQgb25lcywgYW5kIGFsc28KKy8vIHNob3VsZCB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlIHNv
bWV3aGVyZSBlbHNlLCBtYXliZSBldmVuIGluIGNvbmZpZy5oLgorLy8gSW5jbHVkaW5nIHRoZXNl
IGFsbCBmb3Igbm93IHNpbmNlIHRoaXMgaXMgdGhlIG1vc3QgZXhwZWRpZW50IHdheSB0byBnZXQK
Ky8vIGV2ZXJ5dGhpbmcgYnVpbGRpbmcuCisjdW5kZWYgQWx3YXlzCisjdW5kZWYgRGVmYXVsdAor
I3VuZGVmIE5ldmVyCisjdW5kZWYgT3JpZ2luCisKKy8vIEZJWE1FOiBSZW5hbWVkIHRoaXMgdG8g
UmVmZXJyZXJIZWFkZXJQb2xpY3kgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCB0aGUgUmVmZXJyZXJQ
b2xpY3kgZGVmaW5lZCBpbiB0aGUgRmV0Y2ggc3BlY2lmaWNhdGlvbi4KKy8vIEJlc3QgbG9uZyB0
ZXJtIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG1lcmdlIHRoZXNlIHR3by4KK2VudW0gY2xhc3MgUmVm
ZXJyZXJIZWFkZXJQb2xpY3kgeworICAgIEFsd2F5cywKKyAgICBEZWZhdWx0LAorICAgIE5ldmVy
LAorICAgIC8vIFNhbWUgYXMgQWx3YXlzLCBleGNlcHQgdGhhdCBvbmx5IHRoZSBvcmlnaW4gb2Yg
dGhlIHJlZmVycmluZyBVUkwgaXMgc2VudC4KKyAgICBPcmlnaW4sCiB9OwogCiB9Ci0KLSNlbmRp
ZiAvLyBSZWZlcnJlclBvbGljeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBmNjdmZjgwNzFjNzRhMzE4
MGVhODVhNzg5ODFlM2M2NzE1ZTI5NDI4Li4xODA5NmMyYzVmMmEyY2NiNmI3MzQ0OWQ2N2I0NDBj
ZTgxMDc4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lKiBmcmFt
ZSwgQ2FjaGVkUmUKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1
YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25z
KTsKICAgICBpZiAobG9hZGVyKQotICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCBy
ZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQ
b2xpY3lEZWZhdWx0KTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3Vy
Y2UsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVy
UG9saWN5OjpEZWZhdWx0KTsKICAgICByZXR1cm4gbG9hZGVyOwogfQogCkBAIC04Myw3ICs4Myw3
IEBAIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGCiB7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyPiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRl
KGZyYW1lLCBjbGllbnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVk
dWxlTG9hZChsb2FkZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2Fk
ZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVy
cmVySGVhZGVyUG9saWN5OjpEZWZhdWx0KTsKICAgICByZXR1cm4gbG9hZGVyOwogfQogCg==
</data>
<flag name="review"
          id="301985"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>