<?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>136181</bug_id>
          
          <creation_ts>2014-08-22 16:33:43 -0700</creation_ts>
          <short_desc>WebCore: Use ASCIILiteral where possible</short_desc>
          <delta_ts>2022-05-16 14:44:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1030832</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-22 16:33:43 -0700</bug_when>
    <thetext>Related with some explanation:
&lt;https://webkit.org/b/136179&gt; JavaScriptCore: Use ASCIILiteral where possible

My tool only analyzed pre-processed files that the Mac port compiles. So I&apos;m sure other ports / platform code could have changes.

I&apos;ve gone over all the changes manually myself at least once, but I&apos;d appreciate a careful review.

I could see us not wanting to make all these changes, or using this as a hint that we should create new methods taking string literals. Like WTFString::find(const char*)/WTFString::contains(const char *).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030834</commentid>
    <comment_count>1</comment_count>
      <attachid>237009</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-22 16:37:16 -0700</bug_when>
    <thetext>Created attachment 237009
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030836</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-22 16:39:32 -0700</bug_when>
    <thetext>Attachment 237009 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorHistory.cpp:46:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/canvas/WebGLRenderingContext.cpp:6090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 262 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030981</commentid>
    <comment_count>3</comment_count>
      <attachid>237009</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-24 11:56:32 -0700</bug_when>
    <thetext>Comment on attachment 237009
[PATCH] Proposed Fix

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

Sorry, I gave up reviewing this partway through. I think there are some categories here where we’d like to overload functions to take ASCIILiteral instead of String. Sorry, I was confused elsewhere thinking that ASCIILiteral actually compiled in the length, but I now remember that Ben found that bloated code a bit too much for wide use. The thing ASCIILiteral does is tell us that: 1) the string storage is immortal and 2) the characters are all ASCII. For creating a string, (1) is critical. But for other contexts it might be useful to know (2) to disambiguate from UTF-8 strings and even from Latin-1 strings so we can get possibly higher performance implementations.

&gt; Source/WTF/wtf/text/WTFString.h:286
&gt; +    void append(const char* characters, unsigned length) { append(reinterpret_cast&lt;const LChar*&gt;(characters), length); }

Doesn’t seem like we want this; as with other functions in String that take const char* it’s ambiguous whether they are ASCII-only, Latin-1, or UTF-8. Where are we using it exactly? Can we avoid this?

I also don’t think that adding this overload optimizes append(ASCIILiteral(&quot;abc&quot;)), but I think we have code below that is doing that.

&gt; Source/WebCore/css/CSSSelectorList.cpp:128
&gt; +            result.append(&quot;, &quot;, 2);

This should be appendLiteral(&quot;, &quot;).

&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:184
&gt; +    return m_propertySet-&gt;propertyIsImportant(propertyID) ? ASCIILiteral(&quot;important&quot;) : &quot;&quot;;

Should be emptyString(), not &quot;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031030</commentid>
    <comment_count>4</comment_count>
      <attachid>237009</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-08-24 22:03:37 -0700</bug_when>
    <thetext>Comment on attachment 237009
[PATCH] Proposed Fix

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

We should add HashTable access from StringLiterals, there are too many silly string creation.

We should look into having a special constructor of SQLiteStatement that never create a StringImpl for the query. After all, you can use SQLite just fine with literals when using its APIs.

Everything I have read is correct...but the patch is waaaayyy too big.
This is a wonderful opportunities to find dumb mistakes, we should take advantage of it. Can you please split the patch by subdirectory and submit several patches?

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:168
&gt; +        decoder = TextResourceDecoder::create(ASCIILiteral(&quot;text/html&quot;), &quot;UTF-8&quot;);

&quot;UTF-8&quot; -&gt; TextEncoding::UTF8Encoding()

&gt; Source/WebCore/mathml/MathMLMencloseElement.cpp:131
&gt;      StringBuilder padding;

appendLiteral() below for the &quot;px&quot;.

This function is so weird.

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:1740
&gt; +    String ignoring = ASCIILiteral(&quot;The fragment identifier, including the &apos;#&apos;, will be ignored.&quot;);
&gt;      if (invalidChar == &apos;?&apos;)
&gt; -        ignoring = &quot;The query component, including the &apos;?&apos;, will be ignored.&quot;;
&gt; +        ignoring = ASCIILiteral(&quot;The query component, including the &apos;?&apos;, will be ignored.&quot;);

This looks like a bad patter, having if-else for the creation would be better.

&gt; Source/WebCore/page/EventSource.cpp:67
&gt; +    , m_decoder(TextResourceDecoder::create(ASCIILiteral(&quot;text/plain&quot;), &quot;UTF-8&quot;))

The &quot;UTF-8&quot; should be TextEncoding::UTF8Encoding()

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1383
&gt; -    JSC::Yarr::RegularExpression regExp(&quot;webgl_[0123456789abcdefABCDEF]+&quot;, TextCaseSensitive);
&gt; +    JSC::Yarr::RegularExpression regExp(ASCIILiteral(&quot;webgl_[0123456789abcdefABCDEF]+&quot;), TextCaseSensitive);

That&apos;s quite an expensive way of getting substrings! :(

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:194
&gt; -        if (refresh.find(&quot;url&quot;, urlStartPos, false) == urlStartPos) {
&gt; +        if (refresh.find(ASCIILiteral(&quot;url&quot;), urlStartPos, false) == urlStartPos) {

You should just add an overload for string.find that takes a const char*.

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:317
&gt; -        pos = mediaType.find(&quot;charset&quot;, pos, false);
&gt; +        pos = mediaType.find(ASCIILiteral(&quot;charset&quot;), pos, false);

Ditto.

&gt; Source/WebCore/platform/network/ResourceResponseBase.cpp:407
&gt; -        m_cacheControlContainsNoCache = pragmaValue.contains(&quot;no-cache&quot;, false);
&gt; +        m_cacheControlContainsNoCache = pragmaValue.contains(ASCIILiteral(&quot;no-cache&quot;), false);

String::contains() taking a LChar would be good enough for literals. All you need to do is add a version that takes a const char* and does a cast.

&gt; Source/WebCore/platform/network/cf/DNSCFNet.cpp:63
&gt; +    RetainPtr&lt;CFURLRef&gt; httpCFURL = URL(ParsedURLString, ASCIILiteral(&quot;http://example.com/&quot;)).createCFURL();
&gt; +    RetainPtr&lt;CFURLRef&gt; httpsCFURL = URL(ParsedURLString, ASCIILiteral(&quot;https://example.com/&quot;)).createCFURL();

This is so bad. I wonder why not creating a CFURL in the first place.

The ParsedURLString is okay but that&apos;s super shady.

&gt; Source/WebCore/testing/Internals.cpp:1994
&gt;      result.append(&quot; hotSpot=&quot;);

appendLiteral() for the ones above and below.

&gt; Source/WebCore/workers/WorkerScriptLoader.cpp:128
&gt; +            m_decoder = TextResourceDecoder::create(ASCIILiteral(&quot;text/javascript&quot;), &quot;UTF-8&quot;);

The second argument should be TextEncoding::UTF8Encoding()

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:653
&gt; +                setRequestHeaderInternal(ASCIILiteral(&quot;Content-Type&quot;), &quot;&quot;);

&quot;&quot; -&gt; emptyString()

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1162
&gt; -            m_decoder = TextResourceDecoder::create(&quot;text/html&quot;, &quot;UTF-8&quot;);
&gt; +            m_decoder = TextResourceDecoder::create(ASCIILiteral(&quot;text/html&quot;), &quot;UTF-8&quot;);
&gt;          else
&gt; -            m_decoder = TextResourceDecoder::create(&quot;text/plain&quot;, &quot;UTF-8&quot;);
&gt; +            m_decoder = TextResourceDecoder::create(ASCIILiteral(&quot;text/plain&quot;), &quot;UTF-8&quot;);

For the second argument, instead of &quot;UTF-8&quot;, I think you can pass TextEncoding::UTF8Encoding().

&gt; Source/WebCore/xml/XSLTProcessorLibxslt.cpp:294
&gt;          resultType = (const xmlChar*)&quot;html&quot;;

It looks like here you could just do
    return ASCIILiteral(&quot;text/html&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032243</commentid>
    <comment_count>5</comment_count>
      <attachid>237009</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-29 13:51:48 -0700</bug_when>
    <thetext>Comment on attachment 237009
[PATCH] Proposed Fix

Based on feedback I&apos;m going to break this up into smaller patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493490</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-10 14:54:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/47191524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869429</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-05-16 14:44:30 -0700</bug_when>
    <thetext>This is ancient, and Chris Dumez&apos;s string work likely addressed such cases. Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237009</attachid>
            <date>2014-08-22 16:37:16 -0700</date>
            <delta_ts>2014-08-29 13:51:47 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>webcore.patch</filename>
            <type>text/plain</type>
            <size>572446</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmEzNDk4YS4uY2MzOTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNC0wOC0yMiAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkNvcmU6
IFVzZSBBU0NJSUxpdGVyYWwgd2hlcmUgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAg
IChXVEY6OlN0cmluZzo6YXBwZW5kKToKKyAgICAgICAgRm9yIHRoZSByYXJlIGNhc2VzIHdoZXJl
IHdlIHVzZSBTdHJpbmc6OmFwcGVuZCBpdCB3b3VsZCBiZSBuaWNlCisgICAgICAgIHRvIHVzZSB0
aGUgc3BlY2lmaWMgdmVyc2lvbnMgZm9yIGxpdGVyYWxzLiBBZGQgdGhlIGJvaWxlcnBsYXRlLgor
CisyMDE0LTA4LTIyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAg
ICAgICAgSmF2YVNjcmlwdENvcmU6IFVzZSBBU0NJSUxpdGVyYWwgd2hlcmUgcG9zc2libGUKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjE3OQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA2ODUwNDE2Li43YTkyMWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKQEAgLTI4Myw2ICsyODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQo
Y2hhciBjKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOyB9OwogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChVQ2hhcik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsgYXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgaW5zZXJ0KGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NjgzNDI4Li5jN2I4NDFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODk3IEBACisyMDE0LTA4LTIyICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZTogVXNlIEFTQ0lJTGl0
ZXJhbCB3aGVyZSBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM2MTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgR2VuZXJhbCBzdHJpbmcgLyBjaGFyYWN0ZXIgcmVsYXRlZCBjaGFuZ2VzLiBV
c2UgQVNDSUlMaXRlcmFsIHdoZXJlCisgICAgICAgIHBvc3NpYmxlLCBqc05vbnRyaXZpYWxTdHJp
bmcgd2hlcmUgcG9zc2libGUsIGFuZCByZXBsYWNlIHN0cmluZworICAgICAgICBsaXRlcmFscyB3
aXRoIGNoYXJhY3RlciBsaXRlcmFscyBpbiBzb21lIHBsYWNlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGNoYW5nZXMgdG8gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kOjpwcm9jZXNzUGVuZGluZ09wZW5DYWxscyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0ZURhdGFiYXNlQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VFeGNlcHRpb246OmdldEVycm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Z2V0RXJyb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRh
OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UGF0
aDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGg6OmRlY29kZSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmQ6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZDo6Y29tbWl0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjppc1R5cGVTdXBw
b3J0ZWQpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0
YWxsUmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cXVlcnlLZXlzQW5kVmFsdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NBbmRDcmVhdGVZb3VUdWJlVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5v
ZGU6OnR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3Nvcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R2Fpbk5vZGU6OkdhaW5Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6dHlwZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
bm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6cGFu
bmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhbmdlVmVyc2lvbldyYXBwZXI6OnBlcmZvcm1QcmVmbGlnaHQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OmNsb3NlSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnJ1blRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVO
YW1lcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VBdXRob3JpemVyOjphZGRXaGl0ZWxpc3Rl
ZEZ1bmN0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmdldFZl
cnNpb25Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQmFz
ZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6Y2hhbmdl
VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVN5bmM6OnJ1blRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2VO
b0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbk5v
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJh
c2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dXNhZ2VGb3JP
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpxdW90YUZvck9yaWdp
bk5vTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yaWdpbkxv
Y2s6OmxvY2tGaWxlTmFtZUZvclBhdGgpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnRC
YWNrZW5kOjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVudEJhY2tlbmQ6
OnNldERhdGFiYXNlRGVsZXRlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVu
dEJhY2tlbmQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMU3RhdGVtZW50QmFja2VuZDo6c2V0RmFpbHVyZUR1ZVRvUXVvdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50U3luYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxTdGF0ZW1lbnRTeW5jOjpleGVjdXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
OjpkZWxpdmVyVHJhbnNhY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5leHRTdGF0ZUZvckN1cnJlbnRT
dGF0ZW1lbnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6
OnBvc3RmbGlnaHRBbmRDb21taXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbkJhY2tlbmRTeW5jOjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uQmFja2VuZFN5bmM6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uQmFja2VuZFN5bmM6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b25CYWNrZW5kU3luYzo6Y29tbWl0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpiaW5hcnlUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWxTb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUpOgorICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6V2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRl
ZmxhdGVGcmFtZTo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6aW5mbGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5k
Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0
dXNMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBI
ZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNw
b25zZUhlYWRlcnMpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciByb2xlRGVzY3JpcHRpb25dKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlv
QnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlv
Q29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0F1ZGlvQ29u
dGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN0cnVjdEpTQmxvYik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
cHV0RGVsZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGlj
dGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNDYmNQYXJhbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUnNhS2V5R2VuUGFyYW1zKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhUlNB
Q29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6OmtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRKU09ORm9yT2N0ZXRTZXF1ZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZEpXS0FsZ29yaXRobVRvSlNPTik6CisgICAgICAgIChXZWJDb3JlOjph
ZGRVc2FnZXNUb0pTT04pOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjpzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0
aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpT
VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0aHJvd1NlcXVlbmNlVHlwZUVycm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6b3Blbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdEpTRGF0YUN1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEltYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0
aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNNdXRh
dGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHRO
b2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5l
ck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleUZvcm1hdEZyb21K
U1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHBvcnRLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0
aW9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXli
ZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBi
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNlOjppbnZv
a2VNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6c2V0VmFsdWVBdCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjQXJyYXk6OnZhbHVlQXQpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXQpOgorICAgICAgICAo
SlNDOjpSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0Ojp0aHJv
d0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUNvcm5lclJhZGl1c1dpZHRoQW5kSGVpZ2h0KToKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ0ZvclBvc2l0aW9uKToKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VHcmlk
VHJhY2tTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
TGlzdDo6c2VsZWN0b3JzVGV4dCk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpNZWRpYVF1ZXJ5U2V0KToKKyAgICAgICAgKiBj
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlvcml0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU291cmNlU2l6ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlU2l6ZTo6bWF0Y2gpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0
aW9uKToKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNEQVRBU2VjdGlvbjo6bm9kZU5hbWUpOgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERv
Y3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmNvbXBhdE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc2V0
QWN0aXZlTGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxWZXJz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxTdGFuZGFsb25lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6d3JpdGVsbik6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bm9kZU5hbWUpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Zm9ybWF0
Rm9yRGVidWdnZXIpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQp
OgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
TGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzYW5pdGl6ZVNjcmlwdEVycm9yKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1
bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0Vmlld3BvcnRXYXJuaW5nKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omlu
c2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omluc2VydFBhcmFncmFw
aFNlcGFyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRvZ2dsZUJvbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0b2dnbGVVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydEJhY2t0YWIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydExpbmVCcmVhayk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlSW5zZXJ0TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
SW5zZXJ0VGFiKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVKdXN0aWZ5Q2VudGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVKdXN0aWZ5RnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlSnVzdGlmeUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUp1c3RpZnlSaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5zY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpDb21tYW5kOjp2YWx1ZSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5l
QnJlYWtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1h
bmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYik6CisgICAgICAg
ICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0
eWxlU3BhbklubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJbnNl
cnRpb25CYXNlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5BcHBlbmROZXdMaW5l
RmVlZFRvU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9wZXJ0eVZhbHVlRm9yTm9kZSk6
CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KToK
KyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRp
dGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFuRWxl
bWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkSFRNTCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dCk6CisgICAgICAgICog
ZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JVUkw6OmNyZWF0ZUlu
dGVybmFsVVJMKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVJlYWRlckxvYWRlcjo6Y29udmVydFRvVGV4dCk6CisgICAgICAgICogaHRtbC9Db2xv
cklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6ZmFsbGJh
Y2tWYWx1ZSk6CisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSk6CisgICAgICAgICogaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlQmFzaWNEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRGb3JtU3RydWN0dXJlKToK
KyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBcHBsZXRFbGVtZW50OjpIVE1MQXBwbGV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6
OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvRW5jb2RpbmdN
aW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJM
KToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnQ6OmRlc2lnbk1vZGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJl
ZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJh
Y3RpdmVseSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OmxvY2F0aW9uKToKKyAgICAgICAg
KiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0Vs
ZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnNldFZhbHVlQ29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnNldERlZmF1bHRWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlyZWN0aW9uRm9yRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlw
ZTo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0
dXJlOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6c3VwcG9ydGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1l
bnRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzZXR1cEZsYWdzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjaGVja1RleHR1
cmVDb21wbGV0ZW5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpwcmludEdMRXJyb3JUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjptYXliZVJlc3RvcmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwcmludEdMV2FybmluZ1RvQ29uc29sZSk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5p
dGlhdG9yRm9yKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlZFNuaXBwZXRG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlZFNuaXBw
ZXRGb3JKYXZhU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZp
b2xhdGlvblJlcG9ydCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1p
bkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQ6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgICog
aHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94OjphcHBs
eUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUpOgorICAgICAgICAq
IGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBh
cnNlcjo6V2ViVlRUUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6cGFy
c2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjb2xsZWN0Q3VlSWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjb2xsZWN0Q3VlVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJWVFRQYXJzZXI6Omlnbm9yZUJhZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6CisgICAgICAgICogaW5z
cGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OlJlbW92
ZUNoaWxkQWN0aW9uOjpSZW1vdmVDaGlsZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01F
ZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbjo6SW5zZXJ0QmVmb3JlQWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUVkaXRvcjo6UmVtb3ZlQXR0cmlidXRlQWN0aW9uOjpSZW1vdmVBdHRyaWJ1
dGVBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpTZXRBdHRyaWJ1dGVBY3Rp
b246OlNldEF0dHJpYnV0ZUFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OlNl
dE91dGVySFRNTEFjdGlvbjo6U2V0T3V0ZXJIVE1MQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUVkaXRvcjo6UmVwbGFjZVdob2xlVGV4dEFjdGlvbjo6UmVwbGFjZVdob2xlVGV4dEFjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OlJlcGxhY2VDaGlsZE5vZGVBY3Rpb246
OlJlcGxhY2VDaGlsZE5vZGVBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpT
ZXROb2RlVmFsdWVBY3Rpb246OlNldE5vZGVWYWx1ZUFjdGlvbik6CisgICAgICAgICogaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBv
cnQ6OnBhdGNoTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2Vy
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydERvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojphc3NlcnRFZGl0YWJsZU5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxk
Tm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JB
bGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbGVhc2VCYWNrZW5k
Tm9kZUlkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmli
dXRlc0FzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVtb3Zl
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0T3V0ZXJIVE1M
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNw
ZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hs
aWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Om1vdmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Zm9jdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3Bv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5hdGl2ZUV2
ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OnNldERPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpleGVjdXRlU1FMKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdU
YWIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNE
ZWJ1Z2dpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzUHJvZmlsaW5nSmF2YVNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzdGFydFByb2Zp
bGluZ0phdmFTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6c3RvcFByb2ZpbGluZ0phdmFTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2hvd1Jlc291cmNlcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnREb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjphc3NlcnRJREJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0
aW5nTGF5ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yUmVnaW9uSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkT2JqZWN0Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE9iamVjdEZvclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDU1NSZWdp
b25Db250ZW50Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlbmRlcmVy
RnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdo
bGlnaHRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1
YWRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1Bh
dXNlZEluRGVidWdnZXJNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6Om92ZXJsYXlQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlSW5PdmVy
bGF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVhIUlRleHREZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6cmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldERvY3VtZW50Q29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRUb3VjaEVtdWxhdGlvbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpoYW5kbGVKYXZhU2Ny
aXB0RGlhbG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9k
eSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6Om5ld0xpbmVBbmRXaGl0ZXNwYWNlRGVsaW1pdGVy
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1MKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RnJhbWVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFw
cGVuZFJlY29yZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50Ojpjb25uZWN0VG9Xb3Jr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RG
cm9tV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpzZW5k
TWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHREZWNvZGVy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUJhY2tncm91
bmRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVHQ0V2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmVudERpc3BhdGNoRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lcklu
c3RhbGxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlWEhSUmVhZHlTdGF0ZUNoYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJMb2FkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVTdGFtcERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVTY2hlZHVsZVJlc291
cmNlUmVxdWVzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlRmlu
aXNoRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVMYXlvdXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlRGVjb2RlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzaXplSW1hZ2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlTWFya0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQW5pbWF0aW9uRnJh
bWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
UGFpbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6YXBw
ZW5kTGF5b3V0Um9vdCk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2spOgorICAg
ICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjpwYXJzZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1Jl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5j
ZWwpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNo
YW5nZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMSW50
b0NoaWxkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3Blbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1p
eGVkQ29udGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1peGVkQ29udGVudENoZWNrZXI6OmxvZ1dhcm5pbmcpOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUGlu
Z0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpsb2FkSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgICogbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpzaG91
bGRVc2VQbHVnaW4pOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVh
dGVSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTWFuaWZlc3QpOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hp
dmVNSU1FVHlwZXMpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OkNhY2hlZENTU1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6Q2FjaGVkU1ZHRG9jdW1lbnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0OjpDYWNoZWRTY3JpcHQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6
OkNhY2hlZFhTTFN0eWxlU2hlZXQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpkZWZhdWx0VVJMKToK
KyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpkYXRhYmFz
ZVZlcnNpb25OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZERhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFiYXNlVGFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okljb25EYXRhYmFzZTo6cGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OnBydW5lVW5yZXRhaW5lZEljb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRh
YmFzZTo6Y2hlY2tGb3JEYW5nbGluZ1BhZ2VVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25E
YXRhYmFzZTo6c2V0SWNvbklERm9yUGFnZVVSTEluU1FMRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlOjpyZW1vdmVQYWdlVVJMRnJvbVNRTERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6Z2V0SWNvbklERm9ySWNvblVSTEZyb21TUUxEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmFkZEljb25VUkxUb1NRTERh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6Z2V0SW1hZ2VEYXRhRm9y
SWNvblVSTEZyb21TUUxEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6
OnJlbW92ZUljb25Gcm9tU1FMRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFi
YXNlOjp3cml0ZUljb25TbmFwc2hvdFRvU1FMRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjp3YXNFeGNsdWRlZEZyb21CYWNrdXApOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjpzZXRXYXNFeGNsdWRlZEZyb21CYWNrdXApOgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWVu
Y2xvc2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MTWVuY2xvc2VFbGVtZW50Ojpsb25nRGl2TGVmdFBhZGRpbmcp
OgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4
dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrRXZhbEFuZFJlcG9ydFZpb2xh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjpjaGVja01lZGlhVHlw
ZUFuZFJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0
OjpjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWRQYXRoQ2hhcmFjdGVy
KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01TZWxlY3Rpb246OnR5cGUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cHJpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93OjphbGVydCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNvbmZpcm0p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1l
bnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNl
Ojpjb25uZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjphZGp1c3RNZWRpYVR5cGVGb3JQcmludGluZyk6CisgICAgICAgICog
cGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cGF0aG5hbWUp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRvcjo6YXBwVmVyc2lvbik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJhc2U6OmFwcE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yQmFzZTo6YXBwQ29kZU5hbWUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCk6CisgICAgICAgICogcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkpOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1Jh
d1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZSk6
CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRl
Q29tcG9uZW50czo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllcik6CisgICAgICAg
ICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE1l
bnVMaXN0UG9wdXBBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVudUxpc3RBY3Rp
b25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYTGlzdEl0ZW1BY3Rpb25WZXJiKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplUG9zdFNjcmlwdE1JTUVUeXBlcyk6CisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNTYWZh
cmkpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25Jc0FwcGxlTWFpbCk6CisgICAgICAg
IChXZWJDb3JlOjphcHBsaWNhdGlvbklzSVR1bmVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxp
Y2F0aW9uSXNNaWNyb3NvZnRNZXNzZW5nZXIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRp
b25Jc0Fkb2JlSW5zdGFsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNBT0xJ
bnN0YW50TWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uSXNNaWNyb3Nv
ZnRNeURheSk6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbklzTWljcm9zb2Z0T3V0bG9v
ayk6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbklzUXVpY2tlbkVzc2VudGlhbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25Jc0FwZXJ0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGxpY2F0aW9uSXNWZXJzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlv
bklzSFJCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlvbklzU29saWRTdGF0ZU5l
dHdvcmtzRG93bmxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxVUkxTY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlY3VyZVNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zKToKKyAgICAgICAgKFdlYkNvcmU6OmVtcHR5RG9jdW1lbnRTY2hlbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDT1JTRW5hYmxlZFNjaGVtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wpOgorICAgICAgICAo
V2ViQ29yZTo6bWltZVR5cGVGcm9tRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vVVVJRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkRhdGFiYXNlOjpIUlRGRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0tl
eUV2ZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yQ2hhckNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjpkZXNjcmlwdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlRm9udERhdGE6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVy
dHlJZFRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlQ29udGVudHNSZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNyZWF0
ZVRpbGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OlRpbGVHcmlkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNH
SW1hZ2VUb0RhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGFUb0RhdGFVUkwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJs
ZW5kOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnNpbWlsYXJGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5tYW5nbGVkSW5mb0xv
Zyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6a2V5SWRlbnRpZmllckZvcktleUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEJ1aWxkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhh
bmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
UmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBw
ZW5kS2V5VmFsdWVQYWlySXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQUmVmcmVzaCk6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kQ2hhcnNldEluTWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlSFRUUFJlcXVlc3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUEhlYWRlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRl
bnRUeXBlOjpjaGFyc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVk
ZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnJlYWRTdHJl
YW1DYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Z2V0RmlsZU5hbWVGb3JOZXdE
YXRhYmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2Ip
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFu
c2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2Nh
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51
bWJlcik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGV4dEVuY29kaW5nTmFtZUZvclN5c3RlbUxhbmd1
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlUHJpbWFyeUdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3Rv
ckNsaXBwaW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVEZXNjZW5kYW50Q2xpcHBpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVNYXNrTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVTY3JvbGxpbmdMYXllcnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvclRvcE92ZXJoYW5nQXJlYSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9y
Qm90dG9tT3ZlcmhhbmdBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckZvb3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGF5ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RNYXJrZXI6OnN1ZmZpeCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VGFnTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrU2hhcGVJbWFnZU9yaWdpbik6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJl
YVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1w
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6c3luYyk6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UpOgorICAgICAg
ICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoRm9yT3JpZ2luKToKKyAg
ICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3VzdG9tQ1NTVGV4dCk6CisgICAgICAgICogc3Zn
L1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6
OnBhcnNlVmlld0JveCk6CisgICAgICAgICogc3ZnL1NWR1BhaW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50OjpjdXN0b21DU1NUZXh0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjp2YWx1ZUFzU3RyaW5nKToKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50Ojp0b0NsaXBQYXRoKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRpdGlvbik6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6Zmls
ZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6c2hhZG93Um9vdFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmdldEN1cnJlbnRDdXJzb3JJbmZvKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpwYXRobmFtZSk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
eG1sL1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6Cisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpzZXRSZXNwb25zZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YUGF0aFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6UGFyc2VyOjpuZXh0VG9rZW5JbnRlcm5h
bCk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9GcmFnbWVudCk6CisgICAgICAgICogeG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc3VsdE1JTUVUeXBlKToK
KwogMjAxNC0wOC0yMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
R29vZ2xlIENhbnZhczJEIG1hcHMgYXJlIHRvbyBzbG93IGFuZCB1bmNvbnRyb2xsYWJsZSB3aXRo
IFNhZmFyaSB3aXRoIGZ1bGwgc2NyZWVuIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA2MTAwOTEyLi41ZGVmZTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBA
IC0xNDcsNyArMTQ3LDcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICAgICAgVmVjdG9y
PFN0cmluZz4ga2V5UGF0aEFycmF5OwogICAgICAgICBpZiAob3B0aW9ucy5nZXQoImtleVBhdGgi
LCBrZXlQYXRoQXJyYXkpKQogICAgICAgICAgICAga2V5UGF0aCA9IElEQktleVBhdGgoa2V5UGF0
aEFycmF5KTsKLSAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5nZXRXaXRoVW5kZWZpbmVkT3JOdWxs
Q2hlY2soImtleVBhdGgiLCBrZXlQYXRoU3RyaW5nKSkKKyAgICAgICAgZWxzZSBpZiAob3B0aW9u
cy5nZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soQVNDSUlMaXRlcmFsKCJrZXlQYXRoIiksIGtl
eVBhdGhTdHJpbmcpKQogICAgICAgICAgICAga2V5UGF0aCA9IElEQktleVBhdGgoa2V5UGF0aFN0
cmluZyk7CiAKICAgICAgICAgb3B0aW9ucy5nZXQoImF1dG9JbmNyZW1lbnQiLCBhdXRvSW5jcmVt
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmQuY3BwCmluZGV4IGVlNTM4MWEuLjY1ZTg2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNw
cApAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjp0cmFuc2FjdGlv
bkZpbmlzaGVkQW5kQWJvcnRGaXJlZChJREJUcmFuc2FjdGlvbkJhY2tlbmQqCiAgICAgICAgIC8v
IGhhbGYiIG9wZW4gY2FsbCB3YWl0aW5nIGZvciB1cyBpbiBwcm9jZXNzUGVuZGluZ0NhbGxzLgog
ICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBubyBsb25nZXIgc3VwcG9ydCBzZXRWZXJzaW9uLCBh
c3NlcnQgc3VjaCBhIHRoaW5nLgogICAgICAgICBpZiAobV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4p
IHsKLSAgICAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLT5jYWxsYmFja3MoKS0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0
RXJyb3IsICJWZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCBpbiB1cGdyYWRl
bmVlZGVkIGV2ZW50IGhhbmRsZXIuIikpOworICAgICAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFs
Zk9wZW4tPmNhbGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgQVNDSUlMaXRlcmFsKCJWZXJzaW9uIGNoYW5n
ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCBpbiB1cGdyYWRlbmVlZGVkIGV2ZW50IGhhbmRsZXIu
IikpKTsKICAgICAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuID0gbnVsbHB0cjsKICAg
ICAgICAgfQogICAgICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CkBAIC00MjksNyArNDI5LDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OnByb2Nlc3NQZW5kaW5nT3BlbkNhbGxzKGJvb2wg
c3VjY2VzcykKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlOwog
ICAgICAgICAgICAgaWYgKHBlbmRpbmdPcGVuQ2FsbC0+dmVyc2lvbigpID09IElEQkRhdGFiYXNl
TWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkludGVy
bmFsIGVycm9yIG9wZW5pbmcgZGF0YWJhc2Ugd2l0aCBubyB2ZXJzaW9uIHNwZWNpZmllZC4iOwor
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yIG9w
ZW5pbmcgZGF0YWJhc2Ugd2l0aCBubyB2ZXJzaW9uIHNwZWNpZmllZC4iKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIkludGVybmFs
IGVycm9yIG9wZW5pbmcgZGF0YWJhc2Ugd2l0aCB2ZXJzaW9uICVsbHUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KHBlbmRpbmdPcGVuQ2FsbC0+dmVyc2lvbigpKSk7CiAgICAgICAg
ICAgICBwZW5kaW5nT3BlbkNhbGwtPmNhbGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBtZXNzYWdlKSk7
CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0ZURhdGFi
YXNlQXN5bmMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWMKICAgICAgICAgICAg
IHNlbGYtPm1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNsZWFyKCk7CiAgICAgICAgICAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcygpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGRlbGV0aW5nIGRhdGFiYXNlLiIpKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciBkZWxldGluZyBkYXRhYmFzZS4iKSkpOwogCiAgICAgICAgIHNlbGYtPnByb2Nlc3NQZW5k
aW5nQ2FsbHMoKTsKICAgICB9KTsKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzKQogCiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJhY2tzKTsKICAg
ICBpZiAobV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4gJiYgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4t
PmRhdGFiYXNlQ2FsbGJhY2tzKCkgPT0gY2FsbGJhY2tzKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Nl
Y29uZEhhbGZPcGVuLT5jYWxsYmFja3MoKS0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IsICJUaGUgY29ubmVjdGlvbiB3YXMg
Y2xvc2VkLiIpKTsKKyAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4tPmNhbGxiYWNrcygp
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
QWJvcnRFcnJvciwgQVNDSUlMaXRlcmFsKCJUaGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkLiIpKSk7
CiAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuID0gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTYwMiw3ICs2MDIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6Y2xvc2UoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQogICAgIC8vIEZJWE1FOiBBZGQg
YSB0ZXN0IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxzIGNhc2VzIGJlbG93LgogICAgIGlmICgh
Y29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGluZ09wZW5DYWxscy5zaXplKCkgJiYgIW1fcGVu
ZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSkgewogICAgICAgICBUcmFuc2FjdGlvbk1hcCB0cmFuc2Fj
dGlvbnMobV90cmFuc2FjdGlvbnMpOwotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
ZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgY2xvc2luZy4iKTsKKyAgICAgICAgUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ29ubmVjdGlvbiBpcyBj
bG9zaW5nLiIpKTsKICAgICAgICAgZm9yIChUcmFuc2FjdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBpdCA9IHRyYW5zYWN0aW9ucy52YWx1ZXMoKS5iZWdpbigpLCBlbmQgPSB0cmFuc2Fj
dGlvbnMudmFsdWVzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgICgqaXQp
LT5hYm9ydChlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcAppbmRleCAyODdjY2ZlLi5hN2IxZWRk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlRXhjZXB0aW9uLmNwcApAQCAtOTEsNyArOTEsNyBAQCBTdHJpbmcgSURCRGF0YWJh
c2VFeGNlcHRpb246OmdldEVycm9yTmFtZShFeGNlcHRpb25Db2RlIGVjKQogICAgIGNvbnN0IElE
QkRhdGFiYXNlRXhjZXB0aW9uTmFtZURlc2NyaXB0aW9uKiBlbnRyeSA9IGdldEVycm9yRW50cnko
ZWMpOwogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgcmV0dXJu
ICJVbmtub3duRXJyb3IiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJVbmtub3duRXJy
b3IiKTsKIAogICAgIHJldHVybiBlbnRyeS0+bmFtZTsKIH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBT
dHJpbmcgSURCRGF0YWJhc2VFeGNlcHRpb246OmdldEVycm9yRGVzY3JpcHRpb24oRXhjZXB0aW9u
Q29kZSBlYykKICAgICBjb25zdCBJREJEYXRhYmFzZUV4Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiog
ZW50cnkgPSBnZXRFcnJvckVudHJ5KGVjKTsKICAgICBBU1NFUlQoZW50cnkpOwogICAgIGlmICgh
ZW50cnkpCi0gICAgICAgIHJldHVybiAiVW5rbm93biBlcnJvci4iOworICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yLiIpOwogCiAgICAgcmV0dXJuIGVudHJ5LT5kZXNj
cmlwdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5jcHAKaW5kZXggNzk2MWNjZS4uNDdhNjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTEzMiwyNiArMTMyLDI2IEBAIElE
QktleURhdGEgSURCS2V5RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogdm9pZCBJREJLZXlE
YXRhOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIu
ZW5jb2RlQm9vbCgibnVsbCIsIGlzTnVsbCk7CisgICAgZW5jb2Rlci5lbmNvZGVCb29sKEFTQ0lJ
TGl0ZXJhbCgibnVsbCIpLCBpc051bGwpOwogICAgIGlmIChpc051bGwpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGVuY29kZXIuZW5jb2RlRW51bSgidHlwZSIsIHR5cGUpOworICAgIGVuY29kZXIu
ZW5jb2RlRW51bShBU0NJSUxpdGVyYWwoInR5cGUiKSwgdHlwZSk7CiAKICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgotICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdHMo
ImFycmF5IiwgYXJyYXlWYWx1ZS5iZWdpbigpLCBhcnJheVZhbHVlLmVuZCgpLCBbXShLZXllZEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IElEQktleURhdGEmIGtleSkgeworICAgICAgICBlbmNvZGVy
LmVuY29kZU9iamVjdHMoQVNDSUlMaXRlcmFsKCJhcnJheSIpLCBhcnJheVZhbHVlLmJlZ2luKCks
IGFycmF5VmFsdWUuZW5kKCksIFtdKEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSURCS2V5
RGF0YSYga2V5KSB7CiAgICAgICAgICAgICBrZXkuZW5jb2RlKGVuY29kZXIpOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgotICAgICAg
ICBlbmNvZGVyLmVuY29kZVN0cmluZygic3RyaW5nIiwgc3RyaW5nVmFsdWUpOworICAgICAgICBl
bmNvZGVyLmVuY29kZVN0cmluZyhBU0NJSUxpdGVyYWwoInN0cmluZyIpLCBzdHJpbmdWYWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CiAgICAgY2FzZSBJ
REJLZXk6Ok51bWJlclR5cGU6Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRG91YmxlKCJudW1iZXIi
LCBudW1iZXJWYWx1ZSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRG91YmxlKEFTQ0lJTGl0ZXJh
bCgibnVtYmVyIiksIG51bWJlclZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURC
S2V5OjpNYXhUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgpAQCAtMTYzLDcgKzE2Myw3
IEBAIHZvaWQgSURCS2V5RGF0YTo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IAogYm9vbCBJREJLZXlEYXRhOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlE
YXRhJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woIm51bGwiLCByZXN1
bHQuaXNOdWxsKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbChBU0NJSUxpdGVyYWwoIm51
bGwiKSwgcmVzdWx0LmlzTnVsbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChy
ZXN1bHQuaXNOdWxsKQpAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgSURCS2V5RGF0YTo6ZGVjb2Rl
KEtleWVkRGVjb2RlciYgZGVjb2RlciwgSURCS2V5RGF0YSYgcmVzdWx0KQogICAgICAgICAgICAg
fHwgdmFsdWUgPT0gSURCS2V5OjpOdW1iZXJUeXBlCiAgICAgICAgICAgICB8fCB2YWx1ZSA9PSBJ
REJLZXk6Ok1pblR5cGU7CiAgICAgfTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSgidHlw
ZSIsIHJlc3VsdC50eXBlLCBlbnVtRnVuY3Rpb24pKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKEFTQ0lJTGl0ZXJhbCgidHlwZSIpLCByZXN1bHQudHlwZSwgZW51bUZ1bmN0aW9uKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHJlc3VsdC50eXBlID09IElEQktleTo6SW52
YWxpZFR5cGUpCkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBib29sIElEQktleURhdGE6OmRlY29kZShL
ZXllZERlY29kZXImIGRlY29kZXIsIElEQktleURhdGEmIHJlc3VsdCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpZiAocmVzdWx0LnR5cGUgPT0gSURCS2V5OjpTdHJpbmdUeXBlKQotICAg
ICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVTdHJpbmcoInN0cmluZyIsIHJlc3VsdC5zdHJpbmdW
YWx1ZSk7CisgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVN0cmluZyhBU0NJSUxpdGVyYWwo
InN0cmluZyIpLCByZXN1bHQuc3RyaW5nVmFsdWUpOwogCiAgICAgaWYgKHJlc3VsdC50eXBlID09
IElEQktleTo6TnVtYmVyVHlwZSB8fCByZXN1bHQudHlwZSA9PSBJREJLZXk6OkRhdGVUeXBlKQot
ICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVEb3VibGUoIm51bWJlciIsIHJlc3VsdC5udW1i
ZXJWYWx1ZSk7CisgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZURvdWJsZShBU0NJSUxpdGVy
YWwoIm51bWJlciIpLCByZXN1bHQubnVtYmVyVmFsdWUpOwogCiAgICAgQVNTRVJUKHJlc3VsdC50
eXBlID09IElEQktleTo6QXJyYXlUeXBlKTsKIAogICAgIGF1dG8gYXJyYXlGdW5jdGlvbiA9IFtd
KEtleWVkRGVjb2RlciYgZGVjb2RlciwgSURCS2V5RGF0YSYgcmVzdWx0KSB7CiAgICAgICAgIHJl
dHVybiBkZWNvZGUoZGVjb2RlciwgcmVzdWx0KTsKICAgICB9OwotICAgIHJldHVybiBkZWNvZGVy
LmRlY29kZU9iamVjdHMoImFycmF5IiwgcmVzdWx0LmFycmF5VmFsdWUsIGFycmF5RnVuY3Rpb24p
OworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZU9iamVjdHMoQVNDSUlMaXRlcmFsKCJhcnJheSIp
LCByZXN1bHQuYXJyYXlWYWx1ZSwgYXJyYXlGdW5jdGlvbik7CiB9CiAKIGludCBJREJLZXlEYXRh
Ojpjb21wYXJlKGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdApAQCAtMjU0LDExICsyNTQs
MTEgQEAgaW50IElEQktleURhdGE6OmNvbXBhcmUoY29uc3QgSURCS2V5RGF0YSYgb3RoZXIpIGNv
bnN0CiBTdHJpbmcgSURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KGlzTnVsbCkKLSAgICAgICAgcmV0dXJuICI8bnVsbD4iOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCI8bnVsbD4iKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSURCS2V5
OjpJbnZhbGlkVHlwZToKLSAgICAgICAgcmV0dXJuICI8aW52YWxpZD4iOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCI8aW52YWxpZD4iKTsKICAgICBjYXNlIElEQktleTo6QXJyYXlUeXBl
OgogICAgICAgICB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKQEAgLTI3OCw5
ICsyNzgsOSBAQCBTdHJpbmcgSURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAg
Y2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgi
PG51bWJlcj4gLSAlZiIsIG51bWJlclZhbHVlKTsKICAgICBjYXNlIElEQktleTo6TWF4VHlwZToK
LSAgICAgICAgcmV0dXJuICI8bWF4aW11bT4iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCI8bWF4aW11bT4iKTsKICAgICBjYXNlIElEQktleTo6TWluVHlwZToKLSAgICAgICAgcmV0dXJu
ICI8bWluaW11bT4iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8bWluaW11bT4iKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcAppbmRleCA1NGU0ZjRk
Li41ZGNjZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlQYXRoLmNwcApAQCAtMjYyLDE2ICsyNjIsMTYgQEAgSURCS2V5UGF0aCBJREJLZXlQYXRoOjpp
c29sYXRlZENvcHkoKSBjb25zdAogCiB2b2lkIElEQktleVBhdGg6OmVuY29kZShLZXllZEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKCJ0eXBlIiwgbV90
eXBlKTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oQVNDSUlMaXRlcmFsKCJ0eXBlIiksIG1fdHlw
ZSk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIElEQktleVBhdGg6Ok51bGxUeXBl
OgogICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktleVBhdGg6OlN0cmluZ1R5cGU6Ci0gICAg
ICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJzdHJpbmciLCBtX3N0cmluZyk7CisgICAgICAgIGVu
Y29kZXIuZW5jb2RlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgic3RyaW5nIiksIG1fc3RyaW5nKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6Ci0gICAgICAgIGVu
Y29kZXIuZW5jb2RlT2JqZWN0cygiYXJyYXkiLCBtX2FycmF5LmJlZ2luKCksIG1fYXJyYXkuZW5k
KCksIFtdKFdlYkNvcmU6OktleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpIHsKLSAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJzdHJpbmciLCBzdHJpbmcp
OworICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdHMoQVNDSUlMaXRlcmFsKCJhcnJheSIpLCBt
X2FycmF5LmJlZ2luKCksIG1fYXJyYXkuZW5kKCksIFtdKFdlYkNvcmU6OktleWVkRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsKKyAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlU3RyaW5nKEFTQ0lJTGl0ZXJhbCgic3RyaW5nIiksIHN0cmluZyk7CiAgICAgICAgIH0pOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjg1LDIyICsyODUsMjIgQEAgYm9vbCBJ
REJLZXlQYXRoOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlQYXRoJiByZXN1
bHQpCiAgICAgICAgIHJldHVybiB2YWx1ZSA9PSBOdWxsVHlwZSB8fCB2YWx1ZSA9PSBTdHJpbmdU
eXBlIHx8IHZhbHVlID09IEFycmF5VHlwZTsKICAgICB9OwogCi0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUVudW0oInR5cGUiLCByZXN1bHQubV90eXBlLCBlbnVtRnVuY3Rpb24pKQorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKEFTQ0lJTGl0ZXJhbCgidHlwZSIpLCByZXN1bHQubV90eXBlLCBl
bnVtRnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAocmVzdWx0Lm1f
dHlwZSA9PSBOdWxsVHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocmVzdWx0
Lm1fdHlwZSA9PSBTdHJpbmdUeXBlKQotICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVTdHJp
bmcoInN0cmluZyIsIHJlc3VsdC5tX3N0cmluZyk7CisgICAgICAgIHJldHVybiBkZWNvZGVyLmRl
Y29kZVN0cmluZyhBU0NJSUxpdGVyYWwoInN0cmluZyIpLCByZXN1bHQubV9zdHJpbmcpOwogCiAg
ICAgQVNTRVJUKHJlc3VsdC5tX3R5cGUgPT0gQXJyYXlUeXBlKTsKIAogICAgIGF1dG8gYXJyYXlG
dW5jdGlvbiA9IFtdKEtleWVkRGVjb2RlciYgZGVjb2RlciwgU3RyaW5nJiByZXN1bHQpIHsKLSAg
ICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlU3RyaW5nKCJzdHJpbmciLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVTdHJpbmcoQVNDSUlMaXRlcmFsKCJzdHJpbmciKSwg
cmVzdWx0KTsKICAgICB9OwogCi0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlT2JqZWN0cygiYXJy
YXkiLCByZXN1bHQubV9hcnJheSwgYXJyYXlGdW5jdGlvbik7CisgICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlT2JqZWN0cyhBU0NJSUxpdGVyYWwoImFycmF5IiksIHJlc3VsdC5tX2FycmF5LCBhcnJh
eUZ1bmN0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCBl
OTI5YzZjLi5lNTc5ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIGJvb2wgSURC
T3BlbkRCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAg
ICAvLyBhbiAiZXJyb3IiIGV2ZW50IHNob3VsZCBiZSBmaXJlZCBpbnN0ZWFkLgogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgJiYgbV9yZXN1bHQtPnR5
cGUoKSA9PSBJREJBbnk6OklEQkRhdGFiYXNlVHlwZSAmJiBtX3Jlc3VsdC0+aWRiRGF0YWJhc2Uo
KS0+aXNDbG9zZVBlbmRpbmcoKSkgewogICAgICAgICBtX3Jlc3VsdC5jbGVhcigpOwotICAgICAg
ICBvbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
QWJvcnRFcnJvciwgIlRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuIikpOworICAgICAgICBvbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRF
cnJvciwgQVNDSUlMaXRlcmFsKCJUaGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkLiIpKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggYjk4ZTI5MC4uZTYzMmEwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTUzMiw3
ICs1MzIsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCiB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRs
ZXIoKQogewogICAgIGlmIChtX3RyYW5zYWN0aW9uICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7Ci0g
ICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEVycm9yKERPTUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OmdldEVycm9yTmFtZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJv
cikpLCAiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGV2ZW50IGhhbmRsZXIuIik7CisgICAgICAgIG1f
dHJhbnNhY3Rpb24tPnNldEVycm9yKERPTUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OmdldEVycm9yTmFtZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpLCBBU0NJ
SUxpdGVyYWwoIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBldmVudCBoYW5kbGVyLiIpKTsKICAgICAg
ICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKaW5kZXggMzc5ODg2Yy4uZTMzYmU3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVk
dWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHR5cGUsIFBhc3MKIAogdm9pZCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmQ6OmFib3J0KCkKIHsKLSAgICBhYm9ydChJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFs
IGVycm9yICh1bmtub3duIGNhdXNlKSIpKTsKKyAgICBhYm9ydChJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJ
bnRlcm5hbCBlcnJvciAodW5rbm93biBjYXVzZSkiKSkpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uQmFja2VuZDo6YWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikKQEAg
LTI2Miw3ICsyNjIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6Y29tbWl0KCkKICAg
ICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkNvbXBsZXRlKGlkKCkpOwogICAgICAgICAgICAgbV9k
YXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQodGhpcyk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChpZCgpLCBJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
IkludGVybmFsIGVycm9yIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24uIikpOworICAgICAgICAgICAg
bV9jYWxsYmFja3MtPm9uQWJvcnQoaWQoKSwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJy
b3IgY29tbWl0dGluZyB0cmFuc2FjdGlvbi4iKSkpOwogICAgICAgICAgICAgbV9kYXRhYmFzZS0+
dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQodGhpcyk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCBhZGIxMmJiLi41OWVlNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtNzE0LDcgKzcxNCw3IEBAIGJvb2wgTWVk
aWFTb3VyY2U6OmlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKHR5cGUpOwotICAgIFN0
cmluZyBjb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoImNvZGVjcyIpOworICAgIFN0cmlu
ZyBjb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoQVNDSUlMaXRlcmFsKCJjb2RlY3MiKSk7
CiAKICAgICAvLyAyLiBJZiB0eXBlIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBNSU1FIHR5cGUg
c3RyaW5nLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICBpZiAoY29udGVudFR5cGUudHlwZSgpLmlz
RW1wdHkoKSB8fCBjb2RlY3MuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA4
YTBlMjA5Li5kYWYxYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtODMsMTYgKzgzLDE2
IEBAIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hh
ZG93Um9vdCogcm9vdCkKICAgICByb290LT5hcHBlbmRDaGlsZChtX2VtYmVkU2hhZG93RWxlbWVu
dC5nZXQoKSk7CiAKICAgICBSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IGlmcmFtZUVsZW1lbnQg
PSBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1lVGFnLCBtX3BhcmVu
dEVsZW1lbnQtPmRvY3VtZW50KCkpOwotICAgIGlmIChtX2F0dHJpYnV0ZXMuY29udGFpbnMoIndp
ZHRoIikpCisgICAgaWYgKG1fYXR0cmlidXRlcy5jb250YWlucyhBU0NJSUxpdGVyYWwoIndpZHRo
IikpKQogICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp3aWR0
aEF0dHIsIEF0b21pY1N0cmluZygiMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKICAgICAKLSAgICBjb25zdCBhdXRvJiBoZWlnaHRWYWx1ZSA9IG1fYXR0cmlidXRl
cy5maW5kKCJoZWlnaHQiKTsKKyAgICBjb25zdCBhdXRvJiBoZWlnaHRWYWx1ZSA9IG1fYXR0cmli
dXRlcy5maW5kKEFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IikpOwogICAgIGlmIChoZWlnaHRWYWx1ZSAh
PSBtX2F0dHJpYnV0ZXMuZW5kKCkpIHsKICAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBBdG9taWNTdHJpbmcoIm1heC1oZWlnaHQ6IDEwMCUi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgICAgIGlmcmFtZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodFZhbHVlLT52
YWx1ZSk7CiAgICAgfQogCi0gICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6c3JjQXR0ciwgeW91VHViZVVSTChtX2F0dHJpYnV0ZXMuZ2V0KCJzcmMiKSkpOworICAgIGlm
cmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNyY0F0dHIsIHlvdVR1YmVVUkwo
bV9hdHRyaWJ1dGVzLmdldChBU0NJSUxpdGVyYWwoInNyYyIpKSkpOwogICAgIGlmcmFtZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmZyYW1lYm9yZGVyQXR0ciwgQXRvbWljU3RyaW5n
KCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIAogICAgIC8v
IERpc2FibGUgZnJhbWUgZmxhdHRlbmluZyBmb3IgdGhpcyBpZnJhbWUuCkBAIC0xMjgsNyArMTI4
LDcgQEAgc3RhdGljIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlL
ZXlzQW5kVmFsdWVzKGNvbnN0IFN0cmluZyYgcXUKICAgICB3aGlsZSAoZXF1YWxTZWFyY2hMb2Nh
dGlvbiA8IHF1ZXJ5TGVuZ3RoIC0gMSAmJiBlcXVhbFNlYXJjaExlbmd0aCkgewogICAgICAgICAK
ICAgICAgICAgLy8gU2VhcmNoIGZvciAiPSIuCi0gICAgICAgIHNpemVfdCBlcXVhbExvY2F0aW9u
ID0gcXVlcnlTdHJpbmcuZmluZCgiPSIsIGVxdWFsU2VhcmNoTG9jYXRpb24pOworICAgICAgICBz
aXplX3QgZXF1YWxMb2NhdGlvbiA9IHF1ZXJ5U3RyaW5nLmZpbmQoJz0nLCBlcXVhbFNlYXJjaExv
Y2F0aW9uKTsKICAgICAgICAgaWYgKGVxdWFsTG9jYXRpb24gPT0gbm90Rm91bmQpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgCkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudDo6S2V5VmFsdWVNYXAgcXVlcnlLZXlzQW5kVmFsdWVzKGNvbnN0IFN0
cmluZyYgcXUKICAgICAgICAgc2l6ZV90IGtleUxlbmd0aCA9IGVxdWFsTG9jYXRpb24gLSBlcXVh
bFNlYXJjaExvY2F0aW9uOwogICAgICAgICAKICAgICAgICAgLy8gU2VhY2ggZm9yIHRoZSBhbXBl
cnNhbmQuCi0gICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IHF1ZXJ5U3RyaW5nLmZp
bmQoIiYiLCBpbmRleEFmdGVyRXF1YWwpOworICAgICAgICBzaXplX3QgYW1wZXJzYW5kTG9jYXRp
b24gPSBxdWVyeVN0cmluZy5maW5kKCcmJywgaW5kZXhBZnRlckVxdWFsKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEdldCB0aGUgdmFsdWUgYWZ0ZXIgdGhlICI9IiwgYmVmb3JlIHRoZSBhbXBlcnNh
bmQuCiAgICAgICAgIHNpemVfdCB2YWx1ZUxvY2F0aW9uID0gaW5kZXhBZnRlckVxdWFsOwpAQCAt
MjQxLDExICsyNDEsMTEgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChj
b25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICBpZiAocGF0aC5s
b3dlcigpID09ICIvd2F0Y2giKSB7CiAgICAgICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBjb25zdCBhdXRvJiBxdWVyeURpY3Rpb25hcnkgPSBxdWVyeUtleXNBbmRWYWx1
ZXMocXVlcnkpOwotICAgICAgICAgICAgU3RyaW5nIHZpZGVvSUQgPSB2YWx1ZUZvcktleShxdWVy
eURpY3Rpb25hcnksICJ2Iik7CisgICAgICAgICAgICBTdHJpbmcgdmlkZW9JRCA9IHZhbHVlRm9y
S2V5KHF1ZXJ5RGljdGlvbmFyeSwgQVNDSUlMaXRlcmFsKCJ2IikpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoIXZpZGVvSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgZnJhZ21lbnREaWN0aW9uYXJ5ID0gcXVlcnlLZXlzQW5kVmFsdWVzKHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRpbWVJRCA9IHZhbHVl
Rm9yS2V5KGZyYWdtZW50RGljdGlvbmFyeSwgInQiKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
dGltZUlEID0gdmFsdWVGb3JLZXkoZnJhZ21lbnREaWN0aW9uYXJ5LCBBU0NJSUxpdGVyYWwoInQi
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVlvdVR1YmVVUkwodmlkZW9JRCwgdGlt
ZUlEKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjU2LDE1ICsyNTYsMTUgQEAgc3Rh
dGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYg
aXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFxdWVy
eS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBxdWVyeURpY3Rpb25h
cnkgPSBxdWVyeUtleXNBbmRWYWx1ZXMocXVlcnkpOwotICAgICAgICAgICAgICAgIFN0cmluZyB2
aWRlb0lEID0gdmFsdWVGb3JLZXkocXVlcnlEaWN0aW9uYXJ5LCAidiIpOworICAgICAgICAgICAg
ICAgIFN0cmluZyB2aWRlb0lEID0gdmFsdWVGb3JLZXkocXVlcnlEaWN0aW9uYXJ5LCBBU0NJSUxp
dGVyYWwoInYiKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCF2aWRl
b0lELmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGltZUlEID0gdmFs
dWVGb3JLZXkocXVlcnlEaWN0aW9uYXJ5LCAidCIpOworICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgdGltZUlEID0gdmFsdWVGb3JLZXkocXVlcnlEaWN0aW9uYXJ5LCBBU0NJSUxpdGVyYWwoInQi
KSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVZb3VUdWJlVVJMKHZpZGVvSUQs
IHRpbWVJRCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmIChoYXNDYXNlSW5zZW5zaXRpdmVQcmVmaXgocGF0aCwgIi92LyIpIHx8IGhh
c0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChwYXRoLCAiL2UvIikpIHsKKyAgICB9IGVsc2UgaWYgKGhh
c0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChwYXRoLCBBU0NJSUxpdGVyYWwoIi92LyIpKSB8fCBoYXND
YXNlSW5zZW5zaXRpdmVQcmVmaXgocGF0aCwgQVNDSUlMaXRlcmFsKCIvZS8iKSkpIHsKICAgICAg
ICAgU3RyaW5nIHZpZGVvSUQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFRoZXNlIFVSTHMgYXJlIGZ1bm55IC0gdGhleSBkb24ndCBoYXZlIGEgPyBmb3Ig
dGhlIGZpcnN0IHF1ZXJ5IHBhcmFtZXRlci4KQEAgLTMwMiw3ICszMDIsNyBAQCBTdHJpbmcgWW91
VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgc3JjU3RyaW5n
KQogICAgICAgICBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBzcmNTdHJpbmcuZmluZChz
cmNQYXRoLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwogICAgIH0gZWxz
ZSBpZiAoc3JjUGF0aC5sb3dlcigpID09ICIvd2F0Y2giKSB7CiAgICAgICAgIC8vIEZyb20gdGhl
IG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC93YXRjaC8jIXY9
VmlkZW9JRAotICAgICAgICBsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBzcmNTdHJpbmcu
ZmluZCgiL3dhdGNoIik7CisgICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IHNy
Y1N0cmluZy5maW5kKEFTQ0lJTGl0ZXJhbCgiL3dhdGNoIikpOwogICAgIH0gZWxzZQogICAgICAg
ICByZXR1cm4gc3JjU3RyaW5nOwogCkBAIC0zMTMsMTAgKzMxMywxMCBAQCBTdHJpbmcgWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQog
CiAgICAgLy8gQnkgZGVmYXVsdCwgdGhlIGlmcmFtZSB3aWxsIGRpc3BsYXkgaW5mb3JtYXRpb24g
bGlrZSB0aGUgdmlkZW8gdGl0bGUgYW5kIHVwbG9hZGVyIG9uIHRvcCBvZiB0aGUgdmlkZW8uIERv
bid0IGRpc3BsYXkKICAgICAvLyB0aGVtIGlmIHRoZSBlbWJlZGluZyBodG1sIGRvZXNuJ3Qgc3Bl
Y2lmeSBpdC4KLSAgICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSAmJiAhcXVlcnkuY29udGFpbnMoInNo
b3dpbmZvIikpCi0gICAgICAgIHF1ZXJ5LmFwcGVuZCgiJnNob3dpbmZvPTAiKTsKKyAgICBpZiAo
IXF1ZXJ5LmlzRW1wdHkoKSAmJiAhcXVlcnkuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJzaG93aW5m
byIpKSkKKyAgICAgICAgcXVlcnkuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiJnNob3dpbmZvPTAiKSk7
CiAgICAgZWxzZQotICAgICAgICBxdWVyeSA9ICJzaG93aW5mbz0wIjsKKyAgICAgICAgcXVlcnkg
PSBBU0NJSUxpdGVyYWwoInNob3dpbmZvPTAiKTsKICAgICAKICAgICAvLyBBcHBlbmQgdGhlIHF1
ZXJ5IHN0cmluZyBpZiBpdCBpcyB2YWxpZC4gU29tZSBzaXRlcyBhcHBhcmVudGx5IGZvcmdldCB0
byBhZGQgIj8iIGZvciB0aGUgcXVlcnkgc3RyaW5nLCBpbiB0aGF0IGNhc2UsCiAgICAgLy8gd2Ug
d2lsbCBkaXNjYXJkIHRoZSBwYXJhbWV0ZXJzIGluIHRoZSB1cmwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAK
aW5kZXggNjIwMGZjOS4uYTY2NzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNjksOCArNjks
OCBAQCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBl
QXVkaW9CdWZmZXJTb3VyY2UpOwogCi0gICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNv
bnRleHQsICJnYWluIiwgMS4wLCAwLjAsIDEuMCk7Ci0gICAgbV9wbGF5YmFja1JhdGUgPSBBdWRp
b1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBsYXliYWNrUmF0ZSIsIDEuMCwgMC4wLCBNYXhSYXRl
KTsKKyAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgQVNDSUlMaXRlcmFs
KCJnYWluIiksIDEuMCwgMC4wLCAxLjApOworICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJh
bTo6Y3JlYXRlKGNvbnRleHQsIEFTQ0lJTGl0ZXJhbCgicGxheWJhY2tSYXRlIiksIDEuMCwgMC4w
LCBNYXhSYXRlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gbW9uby4gIEEgY2FsbCB0byBzZXRCdWZm
ZXIoKSB3aWxsIHNldCB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyB0byB0aGF0IG9mIHRo
ZSBidWZmZXIuCiAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHAKaW5kZXggNGM0MDcyNS4uNjcwYjM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtMjE5LDExICsyMTksMTEgQEAgU3RyaW5nIEF1
ZGlvTm9kZTo6Y2hhbm5lbENvdW50TW9kZSgpCiB7CiAgICAgc3dpdGNoIChtX2NoYW5uZWxDb3Vu
dE1vZGUpIHsKICAgICBjYXNlIE1heDoKLSAgICAgICAgcmV0dXJuICJtYXgiOworICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJtYXgiKTsKICAgICBjYXNlIENsYW1wZWRNYXg6Ci0gICAgICAg
IHJldHVybiAiY2xhbXBlZC1tYXgiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbGFt
cGVkLW1heCIpOwogICAgIGNhc2UgRXhwbGljaXQ6Ci0gICAgICAgIHJldHVybiAiZXhwbGljaXQi
OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJleHBsaWNpdCIpOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gIiI7CkBAIC0yNTMsOSArMjUzLDkgQEAg
U3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0aW9uKCkKIHsKICAgICBzd2l0Y2gg
KG1fY2hhbm5lbEludGVycHJldGF0aW9uKSB7CiAgICAgY2FzZSBBdWRpb0J1czo6U3BlYWtlcnM6
Ci0gICAgICAgIHJldHVybiAic3BlYWtlcnMiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJzcGVha2VycyIpOwogICAgIGNhc2UgQXVkaW9CdXM6OkRpc2NyZXRlOgotICAgICAgICByZXR1
cm4gImRpc2NyZXRlIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGlzY3JldGUiKTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuICIiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAK
aW5kZXggYjA1YjE0NC4uNzI4ZmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC00NCwyNCArNDQsMjQgQEAgU3Ry
aW5nIEJpcXVhZEZpbHRlck5vZGU6OnR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAoY29uc3Rf
Y2FzdDxCaXF1YWRGaWx0ZXJOb2RlKj4odGhpcyktPmJpcXVhZFByb2Nlc3NvcigpLT50eXBlKCkp
IHsKICAgICBjYXNlIEJpcXVhZFByb2Nlc3Nvcjo6TG93UGFzczoKLSAgICAgICAgcmV0dXJuICJs
b3dwYXNzIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibG93cGFzcyIpOwogICAgIGNh
c2UgQmlxdWFkUHJvY2Vzc29yOjpIaWdoUGFzczoKLSAgICAgICAgcmV0dXJuICJoaWdocGFzcyI7
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImhpZ2hwYXNzIik7CiAgICAgY2FzZSBCaXF1
YWRQcm9jZXNzb3I6OkJhbmRQYXNzOgotICAgICAgICByZXR1cm4gImJhbmRwYXNzIjsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYmFuZHBhc3MiKTsKICAgICBjYXNlIEJpcXVhZFByb2Nl
c3Nvcjo6TG93U2hlbGY6Ci0gICAgICAgIHJldHVybiAibG93c2hlbGYiOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJsb3dzaGVsZiIpOwogICAgIGNhc2UgQmlxdWFkUHJvY2Vzc29yOjpI
aWdoU2hlbGY6Ci0gICAgICAgIHJldHVybiAiaGlnaHNoZWxmIjsKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiaGlnaHNoZWxmIik7CiAgICAgY2FzZSBCaXF1YWRQcm9jZXNzb3I6OlBlYWtp
bmc6Ci0gICAgICAgIHJldHVybiAicGVha2luZyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoInBlYWtpbmciKTsKICAgICBjYXNlIEJpcXVhZFByb2Nlc3Nvcjo6Tm90Y2g6Ci0gICAgICAg
IHJldHVybiAibm90Y2giOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJub3RjaCIpOwog
ICAgIGNhc2UgQmlxdWFkUHJvY2Vzc29yOjpBbGxwYXNzOgotICAgICAgICByZXR1cm4gImFsbHBh
c3MiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhbGxwYXNzIik7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAibG93cGFz
cyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImxvd3Bhc3MiKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29y
LmNwcAppbmRleCA5Yzk4ZTNkLi5hOGFhYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC00NSwxMCArNDUsMTAgQEAg
QmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QKICAgICBkb3VibGUgbnlxdWlzdCA9IDAuNSAqIHRoaXMt
PnNhbXBsZVJhdGUoKTsKIAogICAgIC8vIENyZWF0ZSBwYXJhbWV0ZXJzIGZvciBCaXF1YWRGaWx0
ZXJOb2RlLgotICAgIG1fcGFyYW1ldGVyMSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAi
ZnJlcXVlbmN5IiwgMzUwLjAsIDEwLjAsIG55cXVpc3QpOwotICAgIG1fcGFyYW1ldGVyMiA9IEF1
ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiUSIsIDEsIDAuMDAwMSwgMTAwMC4wKTsKLSAgICBt
X3BhcmFtZXRlcjMgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdhaW4iLCAwLjAsIC00
MCwgNDApOwotICAgIG1fcGFyYW1ldGVyNCA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAi
ZGV0dW5lIiwgMC4wLCAtNDgwMCwgNDgwMCk7CisgICAgbV9wYXJhbWV0ZXIxID0gQXVkaW9QYXJh
bTo6Y3JlYXRlKGNvbnRleHQsIEFTQ0lJTGl0ZXJhbCgiZnJlcXVlbmN5IiksIDM1MC4wLCAxMC4w
LCBueXF1aXN0KTsKKyAgICBtX3BhcmFtZXRlcjIgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4
dCwgQVNDSUlMaXRlcmFsKCJRIiksIDEsIDAuMDAwMSwgMTAwMC4wKTsKKyAgICBtX3BhcmFtZXRl
cjMgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgQVNDSUlMaXRlcmFsKCJnYWluIiksIDAu
MCwgLTQwLCA0MCk7CisgICAgbV9wYXJhbWV0ZXI0ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRl
eHQsIEFTQ0lJTGl0ZXJhbCgiZGV0dW5lIiksIDAuMCwgLTQ4MDAsIDQ4MDApOwogCiAgICAgaWYg
KGF1dG9Jbml0aWFsaXplKQogICAgICAgICBpbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmluZGV4IGE1Y2M3NzUu
LjJjODg1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwCkBAIC0zNiw3ICszNiw3IEBAIERlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3NvcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
CiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgICwgbV9tYXhEZWxheVRpbWUobWF4RGVsYXlUaW1lKQogewotICAgIG1fZGVsYXlU
aW1lID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJkZWxheVRpbWUiLCAwLjAsIDAuMCwg
bWF4RGVsYXlUaW1lKTsKKyAgICBtX2RlbGF5VGltZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250
ZXh0LCBBU0NJSUxpdGVyYWwoImRlbGF5VGltZSIpLCAwLjAsIDAuMCwgbWF4RGVsYXlUaW1lKTsK
IH0KIAogRGVsYXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNw
cAppbmRleCA3YjgwMjQyLi4yZDQ1MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQ2LDEy
ICs0NiwxMiBAQCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcAogCiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFt
OjpjcmVhdGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7Ci0gICAgbV9rbmVl
ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKLSAgICBt
X3JhdGlvID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJyYXRpbyIsIDEyLCAxLCAyMCk7
Ci0gICAgbV9yZWR1Y3Rpb24gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInJlZHVjdGlv
biIsIDAsIC0yMCwgMCk7Ci0gICAgbV9hdHRhY2sgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4
dCwgImF0dGFjayIsIDAuMDAzLCAwLCAxKTsKLSAgICBtX3JlbGVhc2UgPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInJlbGVhc2UiLCAwLjI1MCwgMCwgMSk7CisgICAgbV90aHJlc2hvbGQg
PSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgQVNDSUlMaXRlcmFsKCJ0aHJlc2hvbGQiKSwg
LTI0LCAtMTAwLCAwKTsKKyAgICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
QVNDSUlMaXRlcmFsKCJrbmVlIiksIDMwLCAwLCA0MCk7CisgICAgbV9yYXRpbyA9IEF1ZGlvUGFy
YW06OmNyZWF0ZShjb250ZXh0LCBBU0NJSUxpdGVyYWwoInJhdGlvIiksIDEyLCAxLCAyMCk7Cisg
ICAgbV9yZWR1Y3Rpb24gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgQVNDSUlMaXRlcmFs
KCJyZWR1Y3Rpb24iKSwgMCwgLTIwLCAwKTsKKyAgICBtX2F0dGFjayA9IEF1ZGlvUGFyYW06OmNy
ZWF0ZShjb250ZXh0LCBBU0NJSUxpdGVyYWwoImF0dGFjayIpLCAwLjAwMywgMCwgMSk7CisgICAg
bV9yZWxlYXNlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsIEFTQ0lJTGl0ZXJhbCgicmVs
ZWFzZSIpLCAwLjI1MCwgMCwgMSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IGQzMjJjMTMuLmUyNTBm
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1fc2FtcGxl
QWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykgLy8g
RklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CiB7Ci0gICAg
bV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJnYWluIiwgMS4wLCAwLjAsIDEu
MCk7CisgICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsIEFTQ0lJTGl0ZXJh
bCgiZ2FpbiIpLCAxLjAsIDAuMCwgMS4wKTsKIAogICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKICAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggMDcwZGM5ZS4uZTA0NjQ4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShO
b2RlVHlwZU9zY2lsbGF0b3IpOwogCiAgICAgLy8gVXNlIG11c2ljYWwgcGl0Y2ggc3RhbmRhcmQg
QTQ0MCBhcyBhIGRlZmF1bHQuCi0gICAgbV9mcmVxdWVuY3kgPSBBdWRpb1BhcmFtOjpjcmVhdGUo
Y29udGV4dCwgImZyZXF1ZW5jeSIsIDQ0MCwgMCwgMTAwMDAwKTsKKyAgICBtX2ZyZXF1ZW5jeSA9
IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCBBU0NJSUxpdGVyYWwoImZyZXF1ZW5jeSIpLCA0
NDAsIDAsIDEwMDAwMCk7CiAgICAgLy8gRGVmYXVsdCB0byBubyBkZXR1bmluZy4KLSAgICBtX2Rl
dHVuZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZGV0dW5lIiwgMCwgLTQ4MDAsIDQ4
MDApOworICAgIG1fZGV0dW5lID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsIEFTQ0lJTGl0
ZXJhbCgiZGV0dW5lIiksIDAsIC00ODAwLCA0ODAwKTsKIAogICAgIC8vIFNldHMgdXAgZGVmYXVs
dCB3YXZlLgogICAgIHNldFR5cGUobV90eXBlKTsKQEAgLTg0LDE4ICs4NCwxOCBAQCBTdHJpbmcg
T3NjaWxsYXRvck5vZGU6OnR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAg
ICAgY2FzZSBTSU5FOgotICAgICAgICByZXR1cm4gInNpbmUiOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJzaW5lIik7CiAgICAgY2FzZSBTUVVBUkU6Ci0gICAgICAgIHJldHVybiAic3F1
YXJlIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic3F1YXJlIik7CiAgICAgY2FzZSBT
QVdUT09USDoKLSAgICAgICAgcmV0dXJuICJzYXd0b290aCI7CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoInNhd3Rvb3RoIik7CiAgICAgY2FzZSBUUklBTkdMRToKLSAgICAgICAgcmV0dXJu
ICJ0cmlhbmdsZSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRyaWFuZ2xlIik7CiAg
ICAgY2FzZSBDVVNUT006Ci0gICAgICAgIHJldHVybiAiY3VzdG9tIjsKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiY3VzdG9tIik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiY3VzdG9tIjsKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiY3VzdG9tIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCA4MjI1ODlmLi5lOWUzY2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTYw
LDggKzYwLDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgbV9jaGFubmVsQ291bnRNb2RlID0gQ2xhbXBlZE1heDsK
ICAgICBtX2NoYW5uZWxJbnRlcnByZXRhdGlvbiA9IEF1ZGlvQnVzOjpTcGVha2VyczsKIAotICAg
IG1fZGlzdGFuY2VHYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJkaXN0YW5jZUdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKLSAgICBtX2NvbmVHYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRl
KGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fZGlzdGFuY2VHYWlu
ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsIEFTQ0lJTGl0ZXJhbCgiZGlzdGFuY2VHYWlu
IiksIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUo
Y29udGV4dCwgQVNDSUlMaXRlcmFsKCJjb25lR2FpbiIpLCAxLjAsIDAuMCwgMS4wKTsKIAogICAg
IG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7CiAgICAgbV9vcmllbnRhdGlvbiA9
IEZsb2F0UG9pbnQzRCgxLCAwLCAwKTsKQEAgLTE2NywxNCArMTY3LDE0IEBAIFN0cmluZyBQYW5u
ZXJOb2RlOjpwYW5uaW5nTW9kZWwoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9wYW5uaW5nTW9k
ZWwpIHsKICAgICBjYXNlIEVRVUFMUE9XRVI6Ci0gICAgICAgIHJldHVybiAiZXF1YWxwb3dlciI7
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImVxdWFscG93ZXIiKTsKICAgICBjYXNlIEhS
VEY6Ci0gICAgICAgIHJldHVybiAiSFJURiI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
IkhSVEYiKTsKICAgICBjYXNlIFNPVU5ERklFTEQ6Ci0gICAgICAgIHJldHVybiAic291bmRmaWVs
ZCI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNvdW5kZmllbGQiKTsKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICJIUlRG
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSFJURiIpOwogICAgIH0KIH0KIApAQCAt
MjE4LDE0ICsyMTgsMTQgQEAgU3RyaW5nIFBhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25z
dAogewogICAgIHN3aXRjaCAoY29uc3RfY2FzdDxQYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFu
Y2VFZmZlY3QubW9kZWwoKSkgewogICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsTGluZWFy
OgotICAgICAgICByZXR1cm4gImxpbmVhciI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
ImxpbmVhciIpOwogICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsSW52ZXJzZToKLSAgICAg
ICAgcmV0dXJuICJpbnZlcnNlIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW52ZXJz
ZSIpOwogICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsRXhwb25lbnRpYWw6Ci0gICAgICAg
IHJldHVybiAiZXhwb25lbnRpYWwiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJleHBv
bmVudGlhbCIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gImludmVyc2UiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJp
bnZlcnNlIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDY5ZWMyN2EuLmM2NzViZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBA
IC03NCwxNCArNzQsMTQgQEAgU3RyaW5nIFdhdmVTaGFwZXJOb2RlOjpvdmVyc2FtcGxlKCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGNvbnN0X2Nhc3Q8V2F2ZVNoYXBlck5vZGUqPih0aGlzKS0+d2F2
ZVNoYXBlclByb2Nlc3NvcigpLT5vdmVyc2FtcGxlKCkpIHsKICAgICBjYXNlIFdhdmVTaGFwZXJQ
cm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lOgotICAgICAgICByZXR1cm4gIm5vbmUiOworICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJub25lIik7CiAgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vz
c29yOjpPdmVyU2FtcGxlMng6Ci0gICAgICAgIHJldHVybiAiMngiOworICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCIyeCIpOwogICAgIGNhc2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNh
bXBsZTR4OgotICAgICAgICByZXR1cm4gIjR4IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiNHgiKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuICJub25lIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibm9uZSIp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcAppbmRleCA1YzBlMTQ3Li5mNDdjNzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIENoYW5nZVZl
cnNpb25XcmFwcGVyOjpwZXJmb3JtUHJlZmxpZ2h0KFNRTFRyYW5zYWN0aW9uQmFja2VuZCogdHJh
bnNhY3Rpb24pCiAgICAgfQogCiAgICAgaWYgKGFjdHVhbFZlcnNpb24gIT0gbV9vbGRWZXJzaW9u
KSB7Ci0gICAgICAgIG1fc3FsRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpWRVJT
SU9OX0VSUiwgImN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgYW5kIGBvbGRWZXJzaW9u
YCBhcmd1bWVudCBkbyBub3QgbWF0Y2giKTsKKyAgICAgICAgbV9zcWxFcnJvciA9IFNRTEVycm9y
OjpjcmVhdGUoU1FMRXJyb3I6OlZFUlNJT05fRVJSLCBBU0NJSUxpdGVyYWwoImN1cnJlbnQgdmVy
c2lvbiBvZiB0aGUgZGF0YWJhc2UgYW5kIGBvbGRWZXJzaW9uYCBhcmd1bWVudCBkbyBub3QgbWF0
Y2giKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMGFhZGFiOS4uYzAxMzgw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkK
ICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFiYXNlVGhyZWFkID0gZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCk7CiAgICAgaWYgKGRhdGFiYXNlVGhyZWFkICYmICFkYXRhYmFzZVRo
cmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSAmJiBvcGVuZWQoKSkgewotICAgICAgICBsb2dF
cnJvck1lc3NhZ2UoImZvcmNpYmx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKKyAgICAgICAgbG9nRXJy
b3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiZm9yY2libHkgY2xvc2luZyBkYXRhYmFzZSIpKTsKICAg
ICAgICAgZGF0YWJhc2VUaHJlYWQtPnNjaGVkdWxlSW1tZWRpYXRlVGFzayhEYXRhYmFzZUNsb3Nl
VGFzazo6Y3JlYXRlKHRoaXMsIDApKTsKICAgICB9CiB9CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9p
ZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxi
YWNrPiBjYWxsYmFjaywgUGFzc1IKICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB0
cmFuc2FjdGlvbkJhY2tlbmQoYmFja2VuZCgpLT5ydW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5y
ZWxlYXNlKCksIHJlYWRPbmx5LCBjaGFuZ2VWZXJzaW9uRGF0YSkpOwogICAgIGlmICghdHJhbnNh
Y3Rpb25CYWNrZW5kICYmIGVycm9yQ2FsbGJhY2tQcm90ZWN0b3IpCiAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewotICAgICAgICAgICAgZXJyb3JDYWxsYmFja1Byb3RlY3Rvci0+aGFuZGxlRXZlbnQoU1FMRXJy
b3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJkYXRhYmFzZSBoYXMgYmVlbiBjbG9z
ZWQiKS5nZXQoKSk7CisgICAgICAgICAgICBlcnJvckNhbGxiYWNrUHJvdGVjdG9yLT5oYW5kbGVF
dmVudChTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZSBoYXMgYmVlbiBjbG9zZWQiKSkuZ2V0KCkpOwogICAgICAgICB9KTsKIH0KIApA
QCAtMTg3LDcgKzE4Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFi
bGVOYW1lcygpCiB7CiAgICAgZGlzYWJsZUF1dGhvcml6ZXIoKTsKIAotICAgIFNRTGl0ZVN0YXRl
bWVudCBzdGF0ZW1lbnQoc3FsaXRlRGF0YWJhc2UoKSwgIlNFTEVDVCBuYW1lIEZST00gc3FsaXRl
X21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZSc7Iik7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRl
bWVudChzcWxpdGVEYXRhYmFzZSgpLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCBuYW1lIEZST00gc3Fs
aXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZSc7IikpOwogICAgIGlmIChzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHJl
dHJpZXZlIGxpc3Qgb2YgdGFibGVzIGZvciBkYXRhYmFzZSAlcyIsIGRhdGFiYXNlRGVidWdOYW1l
KCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBlbmFibGVBdXRob3JpemVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXpl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9y
aXplci5jcHAKaW5kZXggZWFiYTFmNC4uODc3NjZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcApAQCAt
NjMsNjQgKzYzLDY0IEBAIHZvaWQgRGF0YWJhc2VBdXRob3JpemVyOjphZGRXaGl0ZWxpc3RlZEZ1
bmN0aW9ucygpCiB7CiAgICAgLy8gU1FMaXRlIGZ1bmN0aW9ucyB1c2VkIHRvIGhlbHAgaW1wbGVt
ZW50IHNvbWUgb3BlcmF0aW9ucwogICAgIC8vIEFMVEVSIFRBQkxFIGhlbHBlcnMKLSAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3FsaXRlX3JlbmFtZV90YWJsZSIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVfcmVuYW1lX3RyaWdnZXIiKTsKKyAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInNxbGl0ZV9yZW5hbWVfdGFibGUi
KSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJzcWxpdGVf
cmVuYW1lX3RyaWdnZXIiKSk7CiAgICAgLy8gR0xPQiBoZWxwZXJzCi0gICAgbV93aGl0ZWxpc3Rl
ZEZ1bmN0aW9ucy5hZGQoImdsb2IiKTsKKyAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZChB
U0NJSUxpdGVyYWwoImdsb2IiKSk7CiAKICAgICAvLyBTUUxpdGUgY29yZSBmdW5jdGlvbnMKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiYWJzIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoImNoYW5nZXMiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgi
Y29hbGVzY2UiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgiZ2xvYiIpOwotICAg
IG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJpZm51bGwiKTsKLSAgICBtX3doaXRlbGlzdGVk
RnVuY3Rpb25zLmFkZCgiaGV4Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImxh
c3RfaW5zZXJ0X3Jvd2lkIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImxlbmd0
aCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJsaWtlIik7Ci0gICAgbV93aGl0
ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImxvd2VyIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoImx0cmltIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoIm1heCIpOwot
ICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJtaW4iKTsKLSAgICBtX3doaXRlbGlzdGVk
RnVuY3Rpb25zLmFkZCgibnVsbGlmIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQo
InF1b3RlIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInJlcGxhY2UiKTsKLSAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgicm91bmQiKTsKLSAgICBtX3doaXRlbGlzdGVk
RnVuY3Rpb25zLmFkZCgicnRyaW0iKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgi
c291bmRleCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJzcWxpdGVfc291cmNl
X2lkIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInNxbGl0ZV92ZXJzaW9uIik7
Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInN1YnN0ciIpOwotICAgIG1fd2hpdGVs
aXN0ZWRGdW5jdGlvbnMuYWRkKCJ0b3RhbF9jaGFuZ2VzIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoInRyaW0iKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgidHlw
ZW9mIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInVwcGVyIik7Ci0gICAgbV93
aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInplcm9ibG9iIik7CisgICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJhYnMiKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJjaGFuZ2VzIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5j
dGlvbnMuYWRkKEFTQ0lJTGl0ZXJhbCgiY29hbGVzY2UiKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1
bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJnbG9iIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5j
dGlvbnMuYWRkKEFTQ0lJTGl0ZXJhbCgiaWZudWxsIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5j
dGlvbnMuYWRkKEFTQ0lJTGl0ZXJhbCgiaGV4IikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKEFTQ0lJTGl0ZXJhbCgibGFzdF9pbnNlcnRfcm93aWQiKSk7CisgICAgbV93aGl0ZWxp
c3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJsZW5ndGgiKSk7CisgICAgbV93aGl0ZWxp
c3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJsaWtlIikpOworICAgIG1fd2hpdGVsaXN0
ZWRGdW5jdGlvbnMuYWRkKEFTQ0lJTGl0ZXJhbCgibG93ZXIiKSk7CisgICAgbV93aGl0ZWxpc3Rl
ZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJsdHJpbSIpKTsKKyAgICBtX3doaXRlbGlzdGVk
RnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoIm1heCIpKTsKKyAgICBtX3doaXRlbGlzdGVkRnVu
Y3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoIm1pbiIpKTsKKyAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZChBU0NJSUxpdGVyYWwoIm51bGxpZiIpKTsKKyAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZChBU0NJSUxpdGVyYWwoInF1b3RlIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKEFTQ0lJTGl0ZXJhbCgicmVwbGFjZSIpKTsKKyAgICBtX3doaXRlbGlzdGVkRnVuY3Rp
b25zLmFkZChBU0NJSUxpdGVyYWwoInJvdW5kIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKEFTQ0lJTGl0ZXJhbCgicnRyaW0iKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoQVNDSUlMaXRlcmFsKCJzb3VuZGV4IikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlv
bnMuYWRkKEFTQ0lJTGl0ZXJhbCgic3FsaXRlX3NvdXJjZV9pZCIpKTsKKyAgICBtX3doaXRlbGlz
dGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInNxbGl0ZV92ZXJzaW9uIikpOworICAgIG1f
d2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKEFTQ0lJTGl0ZXJhbCgic3Vic3RyIikpOworICAgIG1f
d2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKEFTQ0lJTGl0ZXJhbCgidG90YWxfY2hhbmdlcyIpKTsK
KyAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInRyaW0iKSk7Cisg
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJ0eXBlb2YiKSk7Cisg
ICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJ1cHBlciIpKTsKKyAg
ICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInplcm9ibG9iIikpOwog
CiAgICAgLy8gU1FMaXRlIGRhdGUgYW5kIHRpbWUgZnVuY3Rpb25zCi0gICAgbV93aGl0ZWxpc3Rl
ZEZ1bmN0aW9ucy5hZGQoImRhdGUiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgi
dGltZSIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJkYXRldGltZSIpOwotICAg
IG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJqdWxpYW5kYXkiKTsKLSAgICBtX3doaXRlbGlz
dGVkRnVuY3Rpb25zLmFkZCgic3RyZnRpbWUiKTsKKyAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25z
LmFkZChBU0NJSUxpdGVyYWwoImRhdGUiKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5h
ZGQoQVNDSUlMaXRlcmFsKCJ0aW1lIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRk
KEFTQ0lJTGl0ZXJhbCgiZGF0ZXRpbWUiKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5h
ZGQoQVNDSUlMaXRlcmFsKCJqdWxpYW5kYXkiKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9u
cy5hZGQoQVNDSUlMaXRlcmFsKCJzdHJmdGltZSIpKTsKIAogICAgIC8vIFNRTGl0ZSBhZ2dyZWdh
dGUgZnVuY3Rpb25zCiAgICAgLy8gbWF4KCkgYW5kIG1pbigpIGFyZSBhbHJlYWR5IGluIHRoZSBs
aXN0Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoImF2ZyIpOwotICAgIG1fd2hpdGVs
aXN0ZWRGdW5jdGlvbnMuYWRkKCJjb3VudCIpOwotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMu
YWRkKCJncm91cF9jb25jYXQiKTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic3Vt
Iik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoInRvdGFsIik7CisgICAgbV93aGl0
ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJhdmciKSk7CisgICAgbV93aGl0ZWxp
c3RlZEZ1bmN0aW9ucy5hZGQoQVNDSUlMaXRlcmFsKCJjb3VudCIpKTsKKyAgICBtX3doaXRlbGlz
dGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoImdyb3VwX2NvbmNhdCIpKTsKKyAgICBtX3do
aXRlbGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInN1bSIpKTsKKyAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInRvdGFsIikpOwogCiAgICAgLy8gU1FM
aXRlIEZUUyBmdW5jdGlvbnMKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgibWF0Y2gi
KTsKLSAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZCgic25pcHBldCIpOwotICAgIG1fd2hp
dGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJvZmZzZXRzIik7Ci0gICAgbV93aGl0ZWxpc3RlZEZ1bmN0
aW9ucy5hZGQoIm9wdGltaXplIik7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoQVND
SUlMaXRlcmFsKCJtYXRjaCIpKTsKKyAgICBtX3doaXRlbGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJ
SUxpdGVyYWwoInNuaXBwZXQiKSk7CisgICAgbV93aGl0ZWxpc3RlZEZ1bmN0aW9ucy5hZGQoQVND
SUlMaXRlcmFsKCJvZmZzZXRzIikpOworICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKEFT
Q0lJTGl0ZXJhbCgib3B0aW1pemUiKSk7CiAKICAgICAvLyBTUUxpdGUgSUNVIGZ1bmN0aW9ucwog
ICAgIC8vIGxpa2UoKSwgbG93ZXIoKSBhbmQgdXBwZXIoKSBhcmUgYWxyZWFkeSBpbiB0aGUgbGlz
dAotICAgIG1fd2hpdGVsaXN0ZWRGdW5jdGlvbnMuYWRkKCJyZWdleHAiKTsKKyAgICBtX3doaXRl
bGlzdGVkRnVuY3Rpb25zLmFkZChBU0NJSUxpdGVyYWwoInJlZ2V4cCIpKTsKIH0KIAogaW50IERh
dGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFj
a2VuZEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUJhY2tlbmRCYXNlLmNwcAppbmRleCAyZTUzOGUwLi4wMmI1OTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFz
ZS5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VCYWNrZW5k
QmFzZTo6ZGV0YWlscygpIGNvbnN0CiAKIGJvb2wgRGF0YWJhc2VCYWNrZW5kQmFzZTo6Z2V0VmVy
c2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJzaW9u
KQogewotICAgIFN0cmluZyBxdWVyeShTdHJpbmcoIlNFTEVDVCB2YWx1ZSBGUk9NICIpICsgaW5m
b1RhYmxlTmFtZSArICAiIFdIRVJFIGtleSA9ICciICsgdmVyc2lvbktleSArICInOyIpOworICAg
IFN0cmluZyBxdWVyeShTdHJpbmcoQVNDSUlMaXRlcmFsKCJTRUxFQ1QgdmFsdWUgRlJPTSAiKSkg
KyBpbmZvVGFibGVOYW1lICsgICIgV0hFUkUga2V5ID0gJyIgKyB2ZXJzaW9uS2V5ICsgIic7Iik7
CiAKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOwogCkBAIC00NjksNyArNDY5
LDcgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpzZXRWZXJzaW9uSW5EYXRhYmFzZShjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWwKIHsKICAgICAvLyBUaGUgSU5TRVJUIHdpbGwg
cmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSBmb3IgdGhlIGRhdGFiYXNlIHdpdGggdGhlIG5ldyB2
ZXJzaW9uIG51bWJlciwgZHVlIHRvIHRoZSBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRQogICAg
IC8vIGNsYXVzZSBpbiB0aGUgQ1JFQVRFIHN0YXRlbWVudCAoc2VlIERhdGFiYXNlOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeSgpKS4KLSAgICBTdHJpbmcgcXVlcnkoU3RyaW5nKCJJTlNFUlQgSU5UTyAi
KSArIGluZm9UYWJsZU5hbWUgKyAgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnIiArIHZlcnNpb25L
ZXkgKyAiJywgPyk7Iik7CisgICAgU3RyaW5nIHF1ZXJ5KFN0cmluZyhBU0NJSUxpdGVyYWwoIklO
U0VSVCBJTlRPICIpKSArIGluZm9UYWJsZU5hbWUgKyAgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgn
IiArIHZlcnNpb25LZXkgKyAiJywgPyk7Iik7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+
ZGlzYWJsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU3luYy5jcHAKaW5kZXggNjYyMmJjMS4uZWRmOTAwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcApAQCAtNzks
NyArNzksNyBAQCB2b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcm
IG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVycwogICAgIEFTU0VSVChtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKIAogICAgIGlmIChzcWxpdGVEYXRh
YmFzZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIHNldExhc3RFcnJvck1l
c3NhZ2UoInVuYWJsZSB0byBjaGFuZ2VWZXJzaW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24i
KTsKKyAgICAgICAgc2V0TGFzdEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwoInVuYWJsZSB0byBj
aGFuZ2VWZXJzaW9uIGZyb20gd2l0aGluIGEgdHJhbnNhY3Rpb24iKSk7CiAgICAgICAgIGVjID0g
U1FMRXhjZXB0aW9uOjpEQVRBQkFTRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgb2xkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzCiAgICAgfQogCiAgICAgaWYgKGFj
dHVhbFZlcnNpb24gIT0gb2xkVmVyc2lvbikgewotICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdl
KCJjdXJyZW50IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIGFuZCBgb2xkVmVyc2lvbmAgYXJndW1l
bnQgZG8gbm90IG1hdGNoIik7CisgICAgICAgIHNldExhc3RFcnJvck1lc3NhZ2UoQVNDSUlMaXRl
cmFsKCJjdXJyZW50IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIGFuZCBgb2xkVmVyc2lvbmAgYXJn
dW1lbnQgZG8gbm90IG1hdGNoIikpOwogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6VkVSU0lP
Tl9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBE
YXRhYmFzZVN5bmM6OnJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5j
Q2FsbGJhY2s+IGNhbGxiYWMKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBpZiAoc3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlv
bkluUHJvZ3Jlc3MoKSkgewotICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8g
c3RhcnQgYSB0cmFuc2FjdGlvbiBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uIik7CisgICAgICAg
IHNldExhc3RFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJ1bmFibGUgdG8gc3RhcnQgYSB0cmFu
c2FjdGlvbiBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uIikpOwogICAgICAgICBlYyA9IFNRTEV4
Y2VwdGlvbjo6REFUQUJBU0VfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTY1LDcg
KzE2NSw3IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpjbG9zZUltbWVkaWF0ZWx5KCkKICAgICBpZiAo
IW9wZW5lZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNp
Ymx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKKyAgICBsb2dFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJmb3JjaWJseSBjbG9zaW5nIGRhdGFiYXNlIikpOwogICAgIGNsb3NlRGF0YWJhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwCmluZGV4IGY0YTg1ZTkuLjZiYTU4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KCkgY29uc3QKIAogU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERhdGFiYXNlRmls
ZU5hbWVUb1BhdGgobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNvbGF0ZWRDb3B5KCksICJEYXRh
YmFzZXMuZGIiKTsKKyAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VG
aWxlTmFtZVRvUGF0aChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKSwgQVND
SUlMaXRlcmFsKCJEYXRhYmFzZXMuZGIiKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpv
cGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlvbkFjdGlvbiBjcmVhdGVBY3Rpb24pCkBA
IC0xMjQsMTUgKzEyNCwxNSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRh
YmFzZShUcmFja2VyQ3JlYXRpb25BY3Rpb24gY3JlYXRlQWN0aW9uKQogICAgIH0KICAgICBtX2Rh
dGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAotICAgIGlmICghbV9kYXRhYmFzZS50
YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05G
TElDVCBSRVBMQUNFLCBxdW90YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIp
KSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKEFTQ0lJTGl0ZXJhbCgiT3JpZ2lu
cyIpKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRl
cmFsKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNU
IFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIpKSB7Ci0gICAgICAgIGlm
ICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIERhdGFiYXNlcyAoZ3Vp
ZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdpbiBURVhULCBuYW1lIFRF
WFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdFUiwgcGF0aCBURVhUKTsi
KSkgeworICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cyhBU0NJSUxpdGVyYWwoIkRhdGFi
YXNlcyIpKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoQVNDSUlM
aXRlcmFsKCJDUkVBVEUgVEFCTEUgRGF0YWJhc2VzIChndWlkIElOVEVHRVIgUFJJTUFSWSBLRVkg
QVVUT0lOQ1JFTUVOVCwgb3JpZ2luIFRFWFQsIG5hbWUgVEVYVCwgZGlzcGxheU5hbWUgVEVYVCwg
ZXN0aW1hdGVkU2l6ZSBJTlRFR0VSLCBwYXRoIFRFWFQpOyIpKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IGFuZCBoZXJlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUg
RGF0YWJhc2VzIHRhYmxlIik7CiAgICAgICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW5Ob0xvY2soU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBv
cmlnaW4gRlJPTSBPcmlnaW5zIHdoZXJlIG9yaWdpbj0/OyIpOworICAgIFNRTGl0ZVN0YXRlbWVu
dCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1Qgb3JpZ2luIEZST00g
T3JpZ2lucyB3aGVyZSBvcmlnaW49PzsiKSk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMUmVzdWx0T2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBz
dGF0ZW1lbnQuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2Nyw3ICsyNjcsNyBAQCBi
b29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgLy8gV2UndmUgZ290IGEgdHJhY2tl
ciBkYXRhYmFzZS4gU2V0IHVwIGEgcXVlcnkgdG8gYXNrIGZvciB0aGUgZGIgb2YgaW50ZXJlc3Q6
Ci0gICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIGd1aWQg
RlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PzsiKTsKKyAgICBTUUxpdGVT
dGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIGd1aWQg
RlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PzsiKSk7CiAKICAgICBpZiAo
c3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzUxLDcgKzM1MSw3IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9y
RGF0YWJhc2VOb0xvY2soU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QKICAgICAvLyBTZWUg
aWYgd2UgaGF2ZSBhIHBhdGggZm9yIHRoaXMgZGF0YWJhc2UgeWV0CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgU1FMaXRlU3RhdGVt
ZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHBhdGggRlJPTSBEYXRhYmFzZXMgV0hF
UkUgb3JpZ2luPT8gQU5EIG5hbWU9PzsiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIHBhdGggRlJPTSBEYXRhYmFzZXMgV0hF
UkUgb3JpZ2luPT8gQU5EIG5hbWU9PzsiKSk7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMzk3LDcgKzM5
Nyw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiYgb3JpZ2luc1Jlc3VsdCkKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRh
YmFzZSwgIlNFTEVDVCBvcmlnaW4gRlJPTSBPcmlnaW5zIik7CisgICAgU1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCBvcmlnaW4gRlJPTSBP
cmlnaW5zIikpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7
CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LiIpOwogICAg
ICAgICByZXR1cm47CkBAIC00MjEsNyArNDIxLDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW5Ob0xvY2soU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG8K
ICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBuYW1lIEZS
T00gRGF0YWJhc2VzIHdoZXJlIG9yaWdpbj0/OyIpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1QgbmFtZSBGUk9NIERhdGFiYXNl
cyB3aGVyZSBvcmlnaW49PzsiKSk7CiAKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIERh
dGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNv
bnN0IFN0cmluZyYgbmFtZSwgU2VjCiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENy
ZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQog
ICAgICAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscygpOwotICAgICAgICBTUUxpdGVTdGF0
ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgZGlzcGxheU5hbWUsIGVzdGltYXRl
ZFNpemUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyIpOworICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VM
RUNUIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdp
bj0/IEFORCBuYW1lPT8iKSk7CiAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TFJlc3VsdE9rKQogICAgICAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscygpOwogCkBAIC01
MDEsNyArNTAxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscyhT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG4KICAgICBvcGVuVHJhY2tlckRh
dGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgZ3VpZCBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFt
ZT0/Iik7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxp
dGVyYWwoIlNFTEVDVCBndWlkIEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1l
PT8iKSk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpz
ZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgdXBkYXRlU3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgRGF0YWJhc2VzIFNFVCBkaXNwbGF5TmFtZT0/LCBl
c3RpbWF0ZWRTaXplPT8gV0hFUkUgZ3VpZD0/Iik7CisgICAgU1FMaXRlU3RhdGVtZW50IHVwZGF0
ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlVQREFURSBEYXRhYmFzZXMgU0VU
IGRpc3BsYXlOYW1lPT8sIGVzdGltYXRlZFNpemU9PyBXSEVSRSBndWlkPT8iKSk7CiAgICAgaWYg
KHVwZGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNjkyLDcgKzY5Miw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNr
ZXI6OnVzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgU3RyaW5n
IG9yaWdpblBhdGggPSB0aGlzLT5vcmlnaW5QYXRoKG9yaWdpbik7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGRpc2tVc2FnZSA9IDA7Ci0gICAgVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzID0gbGlz
dERpcmVjdG9yeShvcmlnaW5QYXRoLCBTdHJpbmcoIiouZGIiKSk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gZmlsZU5hbWVzID0gbGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBTdHJpbmcoQVNDSUlMaXRl
cmFsKCIqLmRiIikpKTsKICAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgZmlsZU5hbWUgPSBm
aWxlTmFtZXMuYmVnaW4oKTsKICAgICBWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgbGFzdEZpbGVO
YW1lID0gZmlsZU5hbWVzLmVuZCgpOwogICAgIGZvciAoOyBmaWxlTmFtZSAhPSBsYXN0RmlsZU5h
bWU7ICsrZmlsZU5hbWUpIHsKQEAgLTcxMiw3ICs3MTIsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
RGF0YWJhc2VUcmFja2VyOjpxdW90YUZvck9yaWdpbk5vTG9jayhTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIHF1b3Rh
OwogCi0gICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHF1
b3RhIEZST00gT3JpZ2lucyB3aGVyZSBvcmlnaW49PzsiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQg
c3RhdGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIHF1b3RhIEZST00gT3Jp
Z2lucyB3aGVyZSBvcmlnaW49PzsiKSk7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMUmVzdWx0T2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0
ZW1lbnQuIik7CiAgICAgICAgIHJldHVybiBxdW90YTsKQEAgLTc0OCw3ICs3NDgsNyBAQCB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWdu
ZWQgbG9uZyBsb25nIHF1b3RhKQogCiAgICAgYm9vbCBvcmlnaW5FbnRyeUV4aXN0cyA9IGhhc0Vu
dHJ5Rm9yT3JpZ2luTm9Mb2NrKG9yaWdpbik7CiAgICAgaWYgKCFvcmlnaW5FbnRyeUV4aXN0cykg
ewotICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQg
SU5UTyBPcmlnaW5zIFZBTFVFUyAoPywgPykiKTsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0
YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIE9yaWdpbnMgVkFM
VUVTICg/LCA/KSIpKTsKICAgICAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVz
dWx0T2spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmln
aW4gJXMgaW4gdGhlIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lp
KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKQogI2VuZGlmCiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgT3JpZ2lucyBT
RVQgcXVvdGE9PyBXSEVSRSBvcmlnaW49PyIpOworICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiVVBEQVRFIE9yaWdpbnMgU0VUIHF1b3Rh
PT8gV0hFUkUgb3JpZ2luPT8iKSk7CiAgICAgICAgIGJvb2wgZXJyb3IgPSBzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rOwogICAgICAgICBpZiAoIWVycm9yKSB7CiAgICAgICAgICAg
ICBzdGF0ZW1lbnQuYmluZEludDY0KDEsIHF1b3RhKTsKQEAgLTc5OCw3ICs3OTgsNyBAQCBib29s
IERhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjbwogICAgIC8vIE5ldyBkYXRhYmFzZSBzaG91bGQgbmV2ZXIgYmUg
YWRkZWQgdW50aWwgdGhlIG9yaWdpbiBoYXMgYmVlbiBlc3RhYmxpc2hlZAogICAgIEFTU0VSVCho
YXNFbnRyeUZvck9yaWdpbk5vTG9jayhvcmlnaW4pKTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBz
dGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIERhdGFiYXNlcyAob3JpZ2luLCBuYW1l
LCBwYXRoKSBWQUxVRVMgKD8sID8sID8pOyIpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1l
bnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJJTlNFUlQgSU5UTyBEYXRhYmFzZXMgKG9yaWdp
biwgbmFtZSwgcGF0aCkgVkFMVUVTICg/LCA/LCA/KTsiKSk7CiAKICAgICBpZiAoc3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYz
LDcgKzg2Myw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0ZvcihvcmlnaW4pOwogICAg
ICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIAotICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3Jp
Z2luPT8iKTsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCBB
U0NJSUxpdGVyYWwoIkRFTEVURSBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyIpKTsKICAg
ICAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZy
b20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODc2LDcgKzg3
Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAg
IFNRTGl0ZVN0YXRlbWVudCBvcmlnaW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9N
IE9yaWdpbnMgV0hFUkUgb3JpZ2luPT8iKTsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IG9yaWdp
blN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIkRFTEVURSBGUk9NIE9yaWdpbnMg
V0hFUkUgb3JpZ2luPT8iKSk7CiAgICAgICAgIGlmIChvcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVw
YXJlIGRlbGV0aW9uIG9mIG9yaWdpbiAlcyBmcm9tIHRyYWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTg5Niw3ICs4OTYsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250
Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkg
ewotICAgICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VM
RUNUIG9yaWdpbiBGUk9NIE9yaWdpbnMiKTsKKyAgICAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBz
dGF0ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1Qgb3JpZ2luIEZST00gT3Jp
Z2lucyIpKTsKICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3Vs
dE9rKQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVt
ZW50LiIpOwogICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxSZXN1
bHRSb3cpCkBAIC0xMDYyLDcgKzEwNjIsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogCiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKLSAgICBTUUxp
dGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxFVEUgRlJPTSBEYXRhYmFzZXMg
V0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyIpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1l
bnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUg
b3JpZ2luPT8gQU5EIG5hbWU9PyIpKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPaykgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0
aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG5hbWUuYXNj
aWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICBkb25lRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggYjk0
MzkzYS4uODA5NDdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpbkxvY2suY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU3RyaW5nIE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBhdGgoU3RyaW5nIG9yaWdpblBh
dGgpCiB7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCBT
dHJpbmcoIi5sb2NrIikpOworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3Jp
Z2luUGF0aCwgQVNDSUlMaXRlcmFsKCIubG9jayIpKTsKIH0KIAogT3JpZ2luTG9jazo6T3JpZ2lu
TG9jayhTdHJpbmcgb3JpZ2luUGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuY3BwCmluZGV4IGYzZGJmNDYu
LjRlNGM4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wg
U1FMU3RhdGVtZW50QmFja2VuZDo6ZXhlY3V0ZShEYXRhYmFzZUJhY2tlbmQqIGRiKQogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZXkgbWlnaHQgYmUgdHJ5aW5nIHRvIGRvIHNvbWV0aGlu
ZyBmaXNoeSBvciBtYWxpY2lvdXMKICAgICBpZiAoc3RhdGVtZW50LmJpbmRQYXJhbWV0ZXJDb3Vu
dCgpICE9IG1fYXJndW1lbnRzLnNpemUoKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkJp
bmQgcGFyYW1ldGVyIGNvdW50IGRvZXNuJ3QgbWF0Y2ggbnVtYmVyIG9mIHF1ZXN0aW9uIG1hcmtz
Iik7Ci0gICAgICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKGRiLT5pc0ludGVycnVwdGVk
KCkgPyBTUUxFcnJvcjo6REFUQUJBU0VfRVJSIDogU1FMRXJyb3I6OlNZTlRBWF9FUlIsICJudW1i
ZXIgb2YgJz8ncyBpbiBzdGF0ZW1lbnQgc3RyaW5nIGRvZXMgbm90IG1hdGNoIGFyZ3VtZW50IGNv
dW50Iik7CisgICAgICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKGRiLT5pc0ludGVycnVw
dGVkKCkgPyBTUUxFcnJvcjo6REFUQUJBU0VfRVJSIDogU1FMRXJyb3I6OlNZTlRBWF9FUlIsIEFT
Q0lJTGl0ZXJhbCgibnVtYmVyIG9mICc/J3MgaW4gc3RhdGVtZW50IHN0cmluZyBkb2VzIG5vdCBt
YXRjaCBhcmd1bWVudCBjb3VudCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMjA3LDE5ICsyMDcsMTkgQEAgYm9vbCBTUUxTdGF0ZW1lbnRCYWNrZW5kOjpleGVjdXRlKERh
dGFiYXNlQmFja2VuZCogZGIpCiB2b2lkIFNRTFN0YXRlbWVudEJhY2tlbmQ6OnNldERhdGFiYXNl
RGVsZXRlZEVycm9yKCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IgJiYgIW1fcmVzdWx0U2V0KTsK
LSAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1
bmFibGUgdG8gZXhlY3V0ZSBzdGF0ZW1lbnQsIGJlY2F1c2UgdGhlIHVzZXIgZGVsZXRlZCB0aGUg
ZGF0YWJhc2UiKTsKKyAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5L
Tk9XTl9FUlIsIEFTQ0lJTGl0ZXJhbCgidW5hYmxlIHRvIGV4ZWN1dGUgc3RhdGVtZW50LCBiZWNh
dXNlIHRoZSB1c2VyIGRlbGV0ZWQgdGhlIGRhdGFiYXNlIikpOwogfQogCiB2b2lkIFNRTFN0YXRl
bWVudEJhY2tlbmQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IoKQogewogICAgIEFTU0VSVCgh
bV9lcnJvciAmJiAhbV9yZXN1bHRTZXQpOwotICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRl
KFNRTEVycm9yOjpWRVJTSU9OX0VSUiwgImN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2Ug
YW5kIGBvbGRWZXJzaW9uYCBhcmd1bWVudCBkbyBub3QgbWF0Y2giKTsKKyAgICBtX2Vycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VkVSU0lPTl9FUlIsIEFTQ0lJTGl0ZXJhbCgiY3Vy
cmVudCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBhbmQgYG9sZFZlcnNpb25gIGFyZ3VtZW50IGRv
IG5vdCBtYXRjaCIpKTsKIH0KIAogdm9pZCBTUUxTdGF0ZW1lbnRCYWNrZW5kOjpzZXRGYWlsdXJl
RHVlVG9RdW90YSgpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yICYmICFtX3Jlc3VsdFNldCk7Ci0g
ICAgbV9lcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlFVT1RBX0VSUiwgInRoZXJl
IHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlLCBvciB0aGUgc3RvcmFnZSBx
dW90YSB3YXMgcmVhY2hlZCBhbmQgdGhlIHVzZXIgZGVjbGluZWQgdG8gYWxsb3cgbW9yZSBzcGFj
ZSIpOworICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpRVU9UQV9FUlIs
IEFTQ0lJTGl0ZXJhbCgidGhlcmUgd2FzIG5vdCBlbm91Z2ggcmVtYWluaW5nIHN0b3JhZ2Ugc3Bh
Y2UsIG9yIHRoZSBzdG9yYWdlIHF1b3RhIHdhcyByZWFjaGVkIGFuZCB0aGUgdXNlciBkZWNsaW5l
ZCB0byBhbGxvdyBtb3JlIHNwYWNlIikpOwogfQogCiB2b2lkIFNRTFN0YXRlbWVudEJhY2tlbmQ6
OmNsZWFyRmFpbHVyZUR1ZVRvUXVvdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50U3luYy5jcHAKaW5kZXggZjBiNzUxNS4uYzJm
ZWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnRTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFN0YXRlbWVudFN5bmMuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFBhc3NSZWZQdHI8U1FMUmVz
dWx0U2V0PiBTUUxTdGF0ZW1lbnRTeW5jOjpleGVjdXRlKERhdGFiYXNlU3luYyogZGIsIEV4Y2Vw
dGlvbkNvCiAKICAgICBpZiAoc3RhdGVtZW50LmJpbmRQYXJhbWV0ZXJDb3VudCgpICE9IG1fYXJn
dW1lbnRzLnNpemUoKSkgewogICAgICAgICBlYyA9IChkYi0+aXNJbnRlcnJ1cHRlZCgpPyBTUUxF
eGNlcHRpb246OkRBVEFCQVNFX0VSUiA6IFNRTEV4Y2VwdGlvbjo6U1lOVEFYX0VSUik7Ci0gICAg
ICAgIGRiLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJudW1iZXIgb2YgJz8ncyBpbiBzdGF0ZW1lbnQg
c3RyaW5nIGRvZXMgbm90IG1hdGNoIGFyZ3VtZW50IGNvdW50Iik7CisgICAgICAgIGRiLT5zZXRM
YXN0RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgibnVtYmVyIG9mICc/J3MgaW4gc3RhdGVtZW50
IHN0cmluZyBkb2VzIG5vdCBtYXRjaCBhcmd1bWVudCBjb3VudCIpKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCkBAIC03NSw3ICs3NSw3IEBAIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0PiBT
UUxTdGF0ZW1lbnRTeW5jOjpleGVjdXRlKERhdGFiYXNlU3luYyogZGIsIEV4Y2VwdGlvbkNvCiAg
ICAgICAgIHJlc3VsdCA9IHN0YXRlbWVudC5iaW5kVmFsdWUoaSArIDEsIG1fYXJndW1lbnRzW2ld
KTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxSZXN1bHRGdWxsKSB7CiAgICAgICAgICAgICBl
YyA9IFNRTEV4Y2VwdGlvbjo6UVVPVEFfRVJSOwotICAgICAgICAgICAgZGItPnNldExhc3RFcnJv
ck1lc3NhZ2UoInRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlIik7
CisgICAgICAgICAgICBkYi0+c2V0TGFzdEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwoInRoZXJl
IHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlIikpOwogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KIApAQCAtMTE2LDExICsxMTYsMTEgQEAgUGFzc1JlZlB0cjxT
UUxSZXN1bHRTZXQ+IFNRTFN0YXRlbWVudFN5bmM6OmV4ZWN1dGUoRGF0YWJhc2VTeW5jKiBkYiwg
RXhjZXB0aW9uQ28KICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxSZXN1bHRGdWxsKSB7CiAg
ICAgICAgIC8vIFF1b3RhIGVycm9yLCB0aGUgZGVsZWdhdGUgd2lsbCBiZSBhc2tlZCBmb3IgbW9y
ZSBzcGFjZSBhbmQgdGhpcyBzdGF0ZW1lbnQgbWlnaHQgYmUgcmUtcnVuLgogICAgICAgICBlYyA9
IFNRTEV4Y2VwdGlvbjo6UVVPVEFfRVJSOwotICAgICAgICBkYi0+c2V0TGFzdEVycm9yTWVzc2Fn
ZSgidGhlcmUgd2FzIG5vdCBlbm91Z2ggcmVtYWluaW5nIHN0b3JhZ2Ugc3BhY2UiKTsKKyAgICAg
ICAgZGItPnNldExhc3RFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJ0aGVyZSB3YXMgbm90IGVu
b3VnaCByZW1haW5pbmcgc3RvcmFnZSBzcGFjZSIpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMUmVzdWx0Q29uc3RyYWludCkgewogICAgICAgICBlYyA9
IFNRTEV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7Ci0gICAgICAgIGRiLT5zZXRMYXN0RXJyb3JN
ZXNzYWdlKCJzdGF0ZW1lbnQgZmFpbGVkIGR1ZSB0byBhIGNvbnN0cmFpbnQgZmFpbHVyZSIpOwor
ICAgICAgICBkYi0+c2V0TGFzdEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwoInN0YXRlbWVudCBm
YWlsZWQgZHVlIHRvIGEgY29uc3RyYWludCBmYWlsdXJlIikpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9IGVsc2UgewogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6REFUQUJBU0VfRVJSOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAppbmRleCBjOWVlMjAzLi41OGYxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMTUwLDcgKzE1
MCw3IEBAIFNRTFRyYW5zYWN0aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2Fj
dGlvbkNhbGxiYWNrKCkKICAgICAvLyBTcGVjIDQuMy4yIDU6IElmIHRoZSB0cmFuc2FjdGlvbiBj
YWxsYmFjayB3YXMgbnVsbCBvciByYWlzZWQgYW4gZXhjZXB0aW9uLCBqdW1wIHRvIHRoZSBlcnJv
ciBjYWxsYmFjawogICAgIFNRTFRyYW5zYWN0aW9uU3RhdGUgbmV4dFN0YXRlID0gU1FMVHJhbnNh
Y3Rpb25TdGF0ZTo6UnVuU3RhdGVtZW50czsKICAgICBpZiAoc2hvdWxkRGVsaXZlckVycm9yQ2Fs
bGJhY2spIHsKLSAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShT
UUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ0aGUgU1FMVHJhbnNhY3Rpb25DYWxsYmFjayB3YXMgbnVs
bCBvciB0aHJldyBhbiBleGNlcHRpb24iKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIEFTQ0lJTGl0ZXJhbCgidGhl
IFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgd2FzIG51bGwgb3IgdGhyZXcgYW4gZXhjZXB0aW9uIikp
OwogICAgICAgICBuZXh0U3RhdGUgPSBTUUxUcmFuc2FjdGlvblN0YXRlOjpEZWxpdmVyVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrOwogICAgIH0KICAgICByZXR1cm4gbmV4dFN0YXRlOwpAQCAtMTk2
LDcgKzE5Niw3IEBAIFNRTFRyYW5zYWN0aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJT
dGF0ZW1lbnRDYWxsYmFjaygpCiAgICAgbV9leGVjdXRlU3FsQWxsb3dlZCA9IGZhbHNlOwogCiAg
ICAgaWYgKHJlc3VsdCkgewotICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6
Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInRoZSBzdGF0ZW1lbnQgY2FsbGJhY2sgcmFp
c2VkIGFuIGV4Y2VwdGlvbiBvciBzdGF0ZW1lbnQgZXJyb3IgY2FsbGJhY2sgZGlkIG5vdCByZXR1
cm4gZmFsc2UiKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0
ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIEFTQ0lJTGl0ZXJhbCgidGhlIHN0YXRlbWVudCBjYWxs
YmFjayByYWlzZWQgYW4gZXhjZXB0aW9uIG9yIHN0YXRlbWVudCBlcnJvciBjYWxsYmFjayBkaWQg
bm90IHJldHVybiBmYWxzZSIpKTsKICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZUZvclRyYW5zYWN0
aW9uRXJyb3IoKTsKICAgICB9CiAgICAgcmV0dXJuIFNRTFRyYW5zYWN0aW9uU3RhdGU6OlJ1blN0
YXRlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjhhM2JmNC4uNDZkYjIwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIFNRTFRyYW5zYWN0
aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGln
aHQoKQogCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBkZWxldGVkLCBqdW1wIHRvIHRoZSBl
cnJvciBjYWxsYmFjawogICAgIGlmIChEYXRhYmFzZTo6ZnJvbShtX2RhdGFiYXNlLmdldCgpKS0+
ZGVsZXRlZCgpKSB7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVh
dGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5hYmxlIHRvIG9wZW4gYSB0cmFuc2FjdGlvbiwg
YmVjYXVzZSB0aGUgdXNlciBkZWxldGVkIHRoZSBkYXRhYmFzZSIpOworICAgICAgICBtX3RyYW5z
YWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgQVND
SUlMaXRlcmFsKCJ1bmFibGUgdG8gb3BlbiBhIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRoZSB1c2Vy
IGRlbGV0ZWQgdGhlIGRhdGFiYXNlIikpOwogICAgICAgICByZXR1cm4gbmV4dFN0YXRlRm9yVHJh
bnNhY3Rpb25FcnJvcigpOwogICAgIH0KIApAQCAtNjE5LDcgKzYxOSw3IEBAIFNRTFRyYW5zYWN0
aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGln
aHQoKQogICAgICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7CiAgICAgICAgIG1f
dHJhbnNhY3Rpb25FcnJvciA9IG1fd3JhcHBlci0+c3FsRXJyb3IoKTsKICAgICAgICAgaWYgKCFt
X3RyYW5zYWN0aW9uRXJyb3IpCi0gICAgICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxF
cnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVua25vd24gZXJyb3Igb2NjdXJy
ZWQgZHVyaW5nIHRyYW5zYWN0aW9uIHByZWZsaWdodCIpOworICAgICAgICAgICAgbV90cmFuc2Fj
dGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIEFTQ0lJ
TGl0ZXJhbCgidW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdHJhbnNhY3Rpb24gcHJlZmxp
Z2h0IikpOwogICAgICAgICByZXR1cm4gbmV4dFN0YXRlRm9yVHJhbnNhY3Rpb25FcnJvcigpOwog
ICAgIH0KIApAQCAtNzE3LDcgKzcxNyw3IEBAIFNRTFRyYW5zYWN0aW9uU3RhdGUgU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kOjpuZXh0U3RhdGVGb3JDdXJyZW50U3RhdGVtZW50RXJyb3IoKQogCiAgICAg
bV90cmFuc2FjdGlvbkVycm9yID0gbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZC0+c3FsRXJyb3Io
KTsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikKLSAgICAgICAgbV90cmFuc2FjdGlvbkVy
cm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidGhlIHN0YXRl
bWVudCBmYWlsZWQgdG8gZXhlY3V0ZSIpOworICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBT
UUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIEFTQ0lJTGl0ZXJhbCgidGhl
IHN0YXRlbWVudCBmYWlsZWQgdG8gZXhlY3V0ZSIpKTsKICAgICByZXR1cm4gbmV4dFN0YXRlRm9y
VHJhbnNhY3Rpb25FcnJvcigpOwogfQogCkBAIC03MjksNyArNzI5LDcgQEAgU1FMVHJhbnNhY3Rp
b25TdGF0ZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnBvc3RmbGlnaHRBbmRDb21taXQoKQogICAg
IGlmIChtX3dyYXBwZXIgJiYgIW1fd3JhcHBlci0+cGVyZm9ybVBvc3RmbGlnaHQodGhpcykpIHsK
ICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gbV93cmFwcGVyLT5zcWxFcnJvcigpOwogICAg
ICAgICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikKLSAgICAgICAgICAgIG1fdHJhbnNhY3Rpb25F
cnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5rbm93biBl
cnJvciBvY2N1cnJlZCBkdXJpbmcgdHJhbnNhY3Rpb24gcG9zdGZsaWdodCIpOworICAgICAgICAg
ICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9X
Tl9FUlIsIEFTQ0lJTGl0ZXJhbCgidW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdHJhbnNh
Y3Rpb24gcG9zdGZsaWdodCIpKTsKICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZUZvclRyYW5zYWN0
aW9uRXJyb3IoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwCmluZGV4
IDdjNzZiOGEuLmVlYThkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmNwcApAQCAt
NzcsMTMgKzc3LDEzIEBAIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0PiBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmRTeW5jOjpleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgc3FsCiAgICAgbV9kYXRhYmFzZS0+
c2V0TGFzdEVycm9yTWVzc2FnZSgiIik7CiAKICAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW5lZCgp
KSB7Ci0gICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoImNhbm5vdCBleGVj
dXRlU1FMIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGlzIG5vdCBvcGVuIik7CisgICAgICAgIG1fZGF0
YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJjYW5ub3QgZXhlY3V0ZVNR
TCBiZWNhdXNlIHRoZSBkYXRhYmFzZSBpcyBub3Qgb3BlbiIpKTsKICAgICAgICAgZWMgPSBTUUxF
eGNlcHRpb246OlVOS05PV05fRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBp
ZiAobV9oYXNWZXJzaW9uTWlzbWF0Y2gpIHsKLSAgICAgICAgbV9kYXRhYmFzZS0+c2V0TGFzdEVy
cm9yTWVzc2FnZSgiY2Fubm90IGV4ZWN1dGVTUUwgYmVjYXVzZSB0aGVyZSBpcyBhIHZlcnNpb24g
bWlzbWF0Y2giKTsKKyAgICAgICAgbV9kYXRhYmFzZS0+c2V0TGFzdEVycm9yTWVzc2FnZShBU0NJ
SUxpdGVyYWwoImNhbm5vdCBleGVjdXRlU1FMIGJlY2F1c2UgdGhlcmUgaXMgYSB2ZXJzaW9uIG1p
c21hdGNoIikpOwogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6VkVSU0lPTl9FUlI7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzUmVmUHRyPFNRTFJl
c3VsdFNldD4gU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYzo6ZXhlY3V0ZVNRTChjb25zdCBTdHJp
bmcmIHNxbAogICAgICAgICAgICAgICAgICAgICBlYyA9IDA7CiAgICAgICAgICAgICAgICAgICAg
IHJldHJ5U3RhdGVtZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBtX2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJ0aGVyZSB3YXMg
bm90IGVub3VnaCByZW1haW5pbmcgc3RvcmFnZSBzcGFjZSIpOworICAgICAgICAgICAgICAgICAg
ICBtX2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgidGhlcmUgd2Fz
IG5vdCBlbm91Z2ggcmVtYWluaW5nIHN0b3JhZ2Ugc3BhY2UiKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEzMSw3
ICsxMzEsNyBAQCBFeGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmM6OmJlZ2lu
KCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0NvbnRleHRUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuZWQoKSkgewotICAg
ICAgICBtX2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJjYW5ub3QgYmVnaW4gdHJhbnNh
Y3Rpb24gYmVjYXVzZSB0aGUgZGF0YWJhc2UgaXMgbm90IG9wZW4iKTsKKyAgICAgICAgbV9kYXRh
YmFzZS0+c2V0TGFzdEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwoImNhbm5vdCBiZWdpbiB0cmFu
c2FjdGlvbiBiZWNhdXNlIHRoZSBkYXRhYmFzZSBpcyBub3Qgb3BlbiIpKTsKICAgICAgICAgcmV0
dXJuIFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9FUlI7CiAgICAgfQogCkBAIC0xNzcsNyArMTc3LDcg
QEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jOjpleGVjdXRlKCkKICAg
ICBBU1NFUlQobV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRU
aHJlYWQoKSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuZWQoKSB8fCAobV9jYWxsYmFjayAm
JiAhbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb25TeW5jOjpmcm9tKHRoaXMp
KSkpIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBtX2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJmYWlsZWQg
dG8gZXhlY3V0ZSB0cmFuc2FjdGlvbiBjYWxsYmFjayIpOworICAgICAgICAgICAgbV9kYXRhYmFz
ZS0+c2V0TGFzdEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBleGVjdXRlIHRy
YW5zYWN0aW9uIGNhbGxiYWNrIikpOwogICAgICAgICBtX2NhbGxiYWNrID0gMDsKICAgICAgICAg
cmV0dXJuIFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9FUlI7CiAgICAgfQpAQCAtMTkwLDcgKzE5MCw3
IEBAIEV4Y2VwdGlvbkNvZGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYzo6Y29tbWl0KCkKIHsK
ICAgICBBU1NFUlQobV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRl
eHRUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuZWQoKSkgewotICAgICAgICBt
X2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gY29tbWl0IHRyYW5zYWN0
aW9uIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGlzIG5vdCBvcGVuLiIpOworICAgICAgICBtX2RhdGFi
YXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgidW5hYmxlIHRvIGNvbW1pdCB0
cmFuc2FjdGlvbiBiZWNhdXNlIHRoZSBkYXRhYmFzZSBpcyBub3Qgb3Blbi4iKSk7CiAgICAgICAg
IHJldHVybiBTUUxFeGNlcHRpb246OlVOS05PV05fRVJSOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCAwZGNkMzg5Li4x
ZjlmMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewogICAgICAgICBtX3N0YXRlID0g
Q0xPU0lORzsKLSAgICAgICAgbV9jaGFubmVsLT5mYWlsKCJXZWJTb2NrZXQgaXMgY2xvc2VkIGJl
Zm9yZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4iKTsKKyAgICAgICAgbV9jaGFubmVs
LT5mYWlsKEFTQ0lJTGl0ZXJhbCgiV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5l
Y3Rpb24gaXMgZXN0YWJsaXNoZWQuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1f
c3RhdGUgPSBDTE9TSU5HOwpAQCAtNDIyLDkgKzQyMiw5IEBAIFN0cmluZyBXZWJTb2NrZXQ6OmJp
bmFyeVR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2Fz
ZSBCaW5hcnlUeXBlQmxvYjoKLSAgICAgICAgcmV0dXJuICJibG9iIjsKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiYmxvYiIpOwogICAgIGNhc2UgQmluYXJ5VHlwZUFycmF5QnVmZmVyOgot
ICAgICAgICByZXR1cm4gImFycmF5YnVmZmVyIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiYXJyYXlidWZmZXIiKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDM5ZWQ0NjMuLjI4YmRkZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9w
ZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG1f
ZG9jdW1lbnQsIG1faWRlbnRpZmllciwgbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJlcXVl
c3QoKSk7CiAgICAgQ1N0cmluZyBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UtPmNsaWVu
dEhhbmRzaGFrZU1lc3NhZ2UoKTsKICAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNz
YWdlLmRhdGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpCi0gICAgICAgIGZhaWwoIkZh
aWxlZCB0byBzZW5kIFdlYlNvY2tldCBoYW5kc2hha2UuIik7CisgICAgICAgIGZhaWwoQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgaGFuZHNoYWtlLiIpKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5k
bGUqIGhhbmRsZSkKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjbwog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKCFhcHBlbmRUb0J1ZmZlcihkYXRhLCBsZW4pKSB7CiAg
ICAgICAgIG1fc2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9IHRydWU7Ci0gICAgICAgIGZhaWwo
IlJhbiBvdXQgb2YgbWVtb3J5IHdoaWxlIHJlY2VpdmluZyBXZWJTb2NrZXQgZGF0YS4iKTsKKyAg
ICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlJhbiBvdXQgb2YgbWVtb3J5IHdoaWxlIHJlY2Vpdmlu
ZyBXZWJTb2NrZXQgZGF0YS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd2hpbGUg
KCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiAhbV9idWZmZXIuaXNFbXB0eSgpKQpAQCAtMzIw
LDcgKzMyMCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbFNvY2tldFN0cmVhbShT
b2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgU29jCiAgICAgaWYgKG1fZG9jdW1lbnQp
IHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkK
LSAgICAgICAgICAgIG1lc3NhZ2UgPSAiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3IiOworICAgICAg
ICAgICAgbWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3IiKTsK
ICAgICAgICAgZWxzZSBpZiAoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS5pc051bGwoKSkK
ICAgICAgICAgICAgIG1lc3NhZ2UgPSAiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IGVycm9yIGNv
ZGUgIiArIFN0cmluZzo6bnVtYmVyKGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgZWxzZQpA
QCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkK
ICAgICB9CiAKICAgICBpZiAoZnJhbWUubWFza2VkKSB7Ci0gICAgICAgIGZhaWwoIkEgc2VydmVy
IG11c3Qgbm90IG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNlbmRzIHRvIHRoZSBjbGllbnQuIik7
CisgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJBIHNlcnZlciBtdXN0IG5vdCBtYXNrIGFueSBm
cmFtZXMgdGhhdCBpdCBzZW5kcyB0byB0aGUgY2xpZW50LiIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNTQzLDcgKzU0Myw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6
cHJvY2Vzc0ZyYW1lKCkKICAgICAvLyBBIG5ldyBkYXRhIGZyYW1lIGlzIHJlY2VpdmVkIGJlZm9y
ZSB0aGUgcHJldmlvdXMgY29udGludW91cyBmcmFtZSBmaW5pc2hlcy4KICAgICAvLyBOb3RlIHRo
YXQgY29udHJvbCBmcmFtZXMgYXJlIGFsbG93ZWQgdG8gY29tZSBpbiB0aGUgbWlkZGxlIG9mIGNv
bnRpbnVvdXMgZnJhbWVzLgogICAgIGlmIChtX2hhc0NvbnRpbnVvdXNGcmFtZSAmJiBmcmFtZS5v
cENvZGUgIT0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNvbnRpbnVhdGlvbiAmJiAhV2ViU29ja2V0
RnJhbWU6OmlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpKSB7Ci0gICAgICAgIGZhaWwoIlJl
Y2VpdmVkIG5ldyBkYXRhIGZyYW1lIGJ1dCBwcmV2aW91cyBjb250aW51b3VzIGZyYW1lIGlzIHVu
ZmluaXNoZWQuIik7CisgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJSZWNlaXZlZCBuZXcgZGF0
YSBmcmFtZSBidXQgcHJldmlvdXMgY29udGludW91cyBmcmFtZSBpcyB1bmZpbmlzaGVkLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTUzLDcgKzU1Myw3IEBAIGJvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICBjYXNlIFdlYlNvY2tldEZyYW1l
OjpPcENvZGVDb250aW51YXRpb246CiAgICAgICAgIC8vIEFuIHVuZXhwZWN0ZWQgY29udGludWF0
aW9uIGZyYW1lIGlzIHJlY2VpdmVkIHdpdGhvdXQgYW55IGxlYWRpbmcgZnJhbWUuCiAgICAgICAg
IGlmICghbV9oYXNDb250aW51b3VzRnJhbWUpIHsKLSAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVk
IHVuZXhwZWN0ZWQgY29udGludWF0aW9uIGZyYW1lLiIpOworICAgICAgICAgICAgZmFpbChBU0NJ
SUxpdGVyYWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgY29udGludWF0aW9uIGZyYW1lLiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBtX2NvbnRpbnVvdXNG
cmFtZURhdGEuYXBwZW5kKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOwpAQCAt
NTc0LDcgKzU3NCw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKICAg
ICAgICAgICAgICAgICBpZiAobWVzc2FnZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZmFpbCgiQ291bGQgbm90IGRlY29kZSBhIHRleHQgZnJhbWUgYXMgVVRGLTguIik7CisgICAgICAg
ICAgICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgZGVjb2RlIGEgdGV4dCBm
cmFtZSBhcyBVVEYtOC4iKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKG1fY29udGludW91c0ZyYW1lT3BDb2RlID09IFdlYlNvY2tldEZyYW1lOjpPcENv
ZGVCaW5hcnkpCkBAIC01OTEsNyArNTkxLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzRnJhbWUoKQogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKICAgICAgICAgICAgIHNr
aXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlci5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKG1l
c3NhZ2UuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgZmFpbCgiQ291bGQgbm90IGRlY29kZSBh
IHRleHQgZnJhbWUgYXMgVVRGLTguIik7CisgICAgICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVy
YWwoIkNvdWxkIG5vdCBkZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LiIpKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVz
c2FnZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC02MjMsNyArNjIzLDcgQEAgYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9
IENsb3NlRXZlbnRDb2RlTm9TdGF0dXNSY3ZkOwogICAgICAgICBlbHNlIGlmIChmcmFtZS5wYXls
b2FkTGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgIG1fY2xvc2VFdmVudENvZGUgPSBDbG9zZUV2
ZW50Q29kZUFibm9ybWFsQ2xvc3VyZTsKLSAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYnJv
a2VuIGNsb3NlIGZyYW1lIGNvbnRhaW5pbmcgYW4gaW52YWxpZCBzaXplIGJvZHkuIik7CisgICAg
ICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUg
Y29udGFpbmluZyBhbiBpbnZhbGlkIHNpemUgYm9keS4iKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGhpZ2hC
eXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZnJhbWUucGF5bG9hZFswXSk7CkBAIC02
MzEsNyArNjMxLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAg
ICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwogICAg
ICAgICAgICAgaWYgKG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVOb1N0YXR1c1Jj
dmQgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3VyZSB8
fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlVExTSGFuZHNoYWtlKSB7CiAgICAg
ICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9z
dXJlOwotICAgICAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYnJva2VuIGNsb3NlIGZyYW1l
IGNvbnRhaW5pbmcgYSByZXNlcnZlZCBzdGF0dXMgY29kZS4iKTsKKyAgICAgICAgICAgICAgICBm
YWlsKEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUgY29udGFpbmlu
ZyBhIHJlc2VydmVkIHN0YXR1cyBjb2RlLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTcxMSwxMyArNzExLDEzIEBAIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgIHN3
aXRjaCAoZnJhbWUtPmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0
cmluZzogewogICAgICAgICAgICAgaWYgKCFzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgZnJhbWUt
PnN0cmluZ0RhdGEuZGF0YSgpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSkpCi0gICAgICAg
ICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOworICAgICAg
ICAgICAgICAgIGZhaWwoQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJh
bWUuIikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFF1
ZXVlZEZyYW1lVHlwZVZlY3RvcjoKICAgICAgICAgICAgIGlmICghc2VuZEZyYW1lKGZyYW1lLT5v
cENvZGUsIGZyYW1lLT52ZWN0b3JEYXRhLmRhdGEoKSwgZnJhbWUtPnZlY3RvckRhdGEuc2l6ZSgp
KSkKLSAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUu
Iik7CisgICAgICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBzZW5kIFdl
YlNvY2tldCBmcmFtZS4iKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFF1
ZXVlZEZyYW1lVHlwZUJsb2I6IHsKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAgIG1fYmxv
YkxvYWRlci5jbGVhcigpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJs
b2JMb2FkZXJOb3RTdGFydGVkOwogICAgICAgICAgICAgICAgIGlmICghc2VuZEZyYW1lKGZyYW1l
LT5vcENvZGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihyZXN1bHQtPmRhdGEoKSksIHJlc3Vs
dC0+Ynl0ZUxlbmd0aCgpKSkKLSAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNl
bmQgV2ViU29ja2V0IGZyYW1lLiIpOworICAgICAgICAgICAgICAgICAgICBmYWlsKEFTQ0lJTGl0
ZXJhbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcAppbmRleCBmM2FhM2YwLi45MGQ3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAKIC8vIEZYSU1FOiBSZW1vdmUgdmVuZG9yIHByZWZp
eCBhZnRlciB0aGUgc3BlY2lmaWNhdGlvbiBtYXR1cmVkLgogV2ViU29ja2V0RXh0ZW5zaW9uRGVm
bGF0ZUZyYW1lOjpXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoV2ViU29ja2V0RGVmbGF0
ZUZyYW1lciogZnJhbWVyKQotICAgIDogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKCJ4LXdl
YmtpdC1kZWZsYXRlLWZyYW1lIikKKyAgICA6IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3NvcihB
U0NJSUxpdGVyYWwoIngtd2Via2l0LWRlZmxhdGUtZnJhbWUiKSkKICAgICAsIG1fZnJhbWVyKGZy
YW1lcikKICAgICAsIG1fcmVzcG9uc2VQcm9jZXNzZWQoZmFsc2UpCiB7CkBAIC03OSwyOCArNzks
MjggQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KIHsKICNpZiBVU0UoWkxJQikKICAgICBpZiAo
bV9yZXNwb25zZVByb2Nlc3NlZCkgewotICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2
ZWQgZHVwbGljYXRlIGRlZmxhdGUtZnJhbWUgcmVzcG9uc2UiOworICAgICAgICBtX2ZhaWx1cmVS
ZWFzb24gPSBBU0NJSUxpdGVyYWwoIlJlY2VpdmVkIGR1cGxpY2F0ZSBkZWZsYXRlLWZyYW1lIHJl
c3BvbnNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV9yZXNwb25zZVBy
b2Nlc3NlZCA9IHRydWU7CiAKICAgICBpbnQgZXhwZWN0ZWROdW1QYXJhbWV0ZXJzID0gMDsKICAg
ICBpbnQgd2luZG93Qml0cyA9IDE1OwotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93aW5kb3df
Yml0cyIpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXJh
bWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoQVNDSUlMaXRlcmFsKCJtYXhfd2luZG93X2Jp
dHMiKSk7CiAgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7CiAg
ICAgICAgIHdpbmRvd0JpdHMgPSBwYXJhbWV0ZXItPnZhbHVlLnRvSW50KCk7CiAgICAgICAgIGlm
ICh3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKLSAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIi
OworICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gQVNDSUlMaXRlcmFsKCJSZWNlaXZlZCBp
bnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBleHBlY3RlZE51bVBhcmFtZXRlcnMrKzsKICAgICB9
CiAKICAgICBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlID0gV2Vi
U29ja2V0RGVmbGF0ZXI6OlRha2VPdmVyQ29udGV4dDsKLSAgICBwYXJhbWV0ZXIgPSBzZXJ2ZXJQ
YXJhbWV0ZXJzLmZpbmQoIm5vX2NvbnRleHRfdGFrZW92ZXIiKTsKKyAgICBwYXJhbWV0ZXIgPSBz
ZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoQVNDSUlMaXRlcmFsKCJub19jb250ZXh0X3Rha2VvdmVyIikp
OwogICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQoKSkgewogICAgICAg
ICBpZiAoIXBhcmFtZXRlci0+dmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIgcGFyYW1ldGVy
IjsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZWQg
aW52YWxpZCBub19jb250ZXh0X3Rha2VvdmVyIHBhcmFtZXRlciIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIG1vZGUgPSBXZWJTb2NrZXREZWZsYXRlcjo6
RG9Ob3RUYWtlT3ZlckNvbnRleHQ7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBXZWJTb2NrZXRF
eHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW4KICAgICB9CiAKICAgICBpZiAoZXhwZWN0ZWROdW1QYXJhbWV0ZXJzICE9IHNlcnZl
clBhcmFtZXRlcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZl
ZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUgcGFyYW1ldGVyIjsKKyAgICAgICAgbV9mYWlsdXJl
UmVhc29uID0gQVNDSUlMaXRlcmFsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIGRlZmxhdGUtZnJhbWUg
cGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5Niw3ICsx
OTYsNyBAQCBQYXNzT3duUHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmCiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdl
YlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSB8fCAhZnJhbWUu
cGF5bG9hZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgaWYg
KCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3Ro
KSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKLSAgICAgICAgcmVzdWx0LT5mYWlsKCJGYWls
ZWQgdG8gY29tcHJlc3MgZnJhbWUiKTsKKyAgICAgICAgcmVzdWx0LT5mYWlsKEFTQ0lJTGl0ZXJh
bCgiRmFpbGVkIHRvIGNvbXByZXNzIGZyYW1lIikpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKICAgICB9CiAgICAgZnJhbWUuY29tcHJlc3MgPSB0cnVlOwpAQCAtMjIwLDE4ICsy
MjAsMTggQEAgUGFzc093blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1lJgogewogICAgIE93blB0cjxJbmZsYXRlUmVz
dWx0SG9sZGVyPiByZXN1bHQgPSBJbmZsYXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CiAg
ICAgaWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKLSAgICAgICAgcmVzdWx0LT5m
YWlsKCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZy
YW1lIGV4dGVuc2lvbiIpOworICAgICAgICByZXN1bHQtPmZhaWwoQVNDSUlMaXRlcmFsKCJDb21w
cmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1lIGV4dGVu
c2lvbiIpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogI2lmIFVT
RShaTElCKQogICAgIGlmICghZnJhbWUuY29tcHJlc3MpCiAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogICAgIGlmICghV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShm
cmFtZS5vcENvZGUpKSB7Ci0gICAgICAgIHJlc3VsdC0+ZmFpbCgiUmVjZWl2ZWQgdW5leHBlY3Rl
ZCBjb21wcmVzc2VkIGZyYW1lIik7CisgICAgICAgIHJlc3VsdC0+ZmFpbChBU0NJSUxpdGVyYWwo
IlJlY2VpdmVkIHVuZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZSIpKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAgIGlmICghbV9pbmZsYXRlci0+YWRkQnl0ZXMo
ZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1faW5mbGF0ZXItPmZpbmlz
aCgpKSB7Ci0gICAgICAgIHJlc3VsdC0+ZmFpbCgiRmFpbGVkIHRvIGRlY29tcHJlc3MgZnJhbWUi
KTsKKyAgICAgICAgcmVzdWx0LT5mYWlsKEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGRlY29tcHJl
c3MgZnJhbWUiKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAg
ICBmcmFtZS5jb21wcmVzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwCmluZGV4IDA2YjcxOTQuLjlkNzk0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyOjphcHBlbmRBY2NlcHRlZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2kKICAgICAg
ICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZCgiOyAiKTsKICAgICAgICAgbV9h
Y2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+a2V5KTsKICAgICAgICAg
aWYgKCFpdGVyYXRvci0+dmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fYWNjZXB0ZWRF
eHRlbnNpb25zQnVpbGRlci5hcHBlbmQoIj0iKTsKKyAgICAgICAgICAgIG1fYWNjZXB0ZWRFeHRl
bnNpb25zQnVpbGRlci5hcHBlbmQoJz0nKTsKICAgICAgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNp
b25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnZhbHVlKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTEwNCw3ICsxMDQsNyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nl
c3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogCiAgICAgLy8gSWYgd2Ug
ZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyLCB0aGUgc2VydmVyIHNo
b3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCiAgICAgaWYgKCFtX3Byb2Nlc3NvcnMuc2l6ZSgp
KSB7Ci0gICAgICAgIGZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1FeHRl
bnNpb25zIGhlYWRlciIpOworICAgICAgICBmYWlsKEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZWQgdW5l
eHBlY3RlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBoZWFkZXJW
YWx1ZSkKICAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuOwogICAgICAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBleHRlbnNpb25QYXJhbWV0ZXJzOwogICAgICAgICBpZiAoIXBhcnNlci5w
YXJzZUV4dGVuc2lvbihleHRlbnNpb25Ub2tlbiwgZXh0ZW5zaW9uUGFyYW1ldGVycykpIHsKLSAg
ICAgICAgICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxp
ZCIpOworICAgICAgICAgICAgZmFpbChBU0NJSUxpdGVyYWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyBoZWFkZXIgaXMgaW52YWxpZCIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEZyYW1lLmNwcAppbmRleCAxNmJiNDU4Li5mZWEwNzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKQEAgLTg0
LDExICs4NCwxMSBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRG
cmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICAgICAgcGF5bG9h
ZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOwogICAgICAgICB9
CiAgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID09IDIgJiYgcGF5bG9hZExl
bmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkgewot
ICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIE1V
U1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CisgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiVGhlIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNl
ZCB0byBlbmNvZGUgdGhlIGxlbmd0aCIpOwogICAgICAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPT0gOCAm
JiBwYXlsb2FkTGVuZ3RoNjQgPD0gMHhGRkZGKSB7Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9
ICJUaGUgbWluaW1hbCBudW1iZXIgb2YgYnl0ZXMgTVVTVCBiZSB1c2VkIHRvIGVuY29kZSB0aGUg
bGVuZ3RoIjsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJUaGUgbWlu
aW1hbCBudW1iZXIgb2YgYnl0ZXMgTVVTVCBiZSB1c2VkIHRvIGVuY29kZSB0aGUgbGVuZ3RoIik7
CiAgICAgICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKaW5kZXggMzNmZGNiYS4uYTgzNjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTIz
OCw5ICsyMzgsOSBAQCBSZXNvdXJjZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRI
YW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKIHsKICAgICAvLyBLZWVwIHRoZSBmb2xsb3dpbmcgY29u
c2lzdGVudCB3aXRoIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKS4KICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3VybCk7Ci0gICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAg
ICByZXF1ZXN0LnNldEhUVFBNZXRob2QoQVNDSUlMaXRlcmFsKCJHRVQiKSk7CiAKLSAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgIlVwZ3Jh
ZGUiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29u
bmVjdGlvbiwgQVNDSUlMaXRlcmFsKCJVcGdyYWRlIikpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpIb3N0LCBob3N0TmFtZShtX3VybCwgbV9zZWN1cmUp
KTsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6T3JpZ2lu
LCBjbGllbnRPcmlnaW4oKSk7CiAgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkK
QEAgLTI1NSwxMSArMjU1LDExIEBAIFJlc291cmNlUmVxdWVzdCBXZWJTb2NrZXRIYW5kc2hha2U6
OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogICAgICAgICAvLyBTZXQgIkNvb2tpZTI6
IDxjb29raWU+IiBpZiBjb29raWVzIDIgZXhpc3RzIGZvciB1cmw/CiAgICAgfQogCi0gICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlByYWdtYSwgIm5vLWNhY2hl
Iik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hl
Q29udHJvbCwgIm5vLWNhY2hlIik7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OlByYWdtYSwgQVNDSUlMaXRlcmFsKCJuby1jYWNoZSIpKTsKKyAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBBU0NJ
SUxpdGVyYWwoIm5vLWNhY2hlIikpOwogCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldEtleSwgbV9zZWNXZWJTb2NrZXRLZXkpOwotICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRW
ZXJzaW9uLCAiMTMiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6U2VjV2ViU29ja2V0VmVyc2lvbiwgQVNDSUlMaXRlcmFsKCIxMyIpKTsKICAgICBjb25z
dCBTdHJpbmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuY3JlYXRlSGVh
ZGVyVmFsdWUoKTsKICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUubGVuZ3RoKCkpCiAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRFeHRl
bnNpb25zLCBleHRlbnNpb25WYWx1ZSk7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3NvcihQYXNzT3duUHRyPFdlYlNvY2tldEV4
dGVuc2lvblByb2MKIFVSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNh
dGlvbkFuZENvb2tpZXMoKSBjb25zdAogewogICAgIFVSTCB1cmwgPSBtX3VybC5jb3B5KCk7Ci0g
ICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8gImh0
dHBzIiA6ICJodHRwIik7CisgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJsLnNldFByb3Rv
Y29sKG1fc2VjdXJlID8gQVNDSUlMaXRlcmFsKCJodHRwcyIpIDogQVNDSUlMaXRlcmFsKCJodHRw
IikpOwogICAgIEFTU0VSVF9VTlVTRUQoY291bGRTZXRQcm90b2NvbCwgY291bGRTZXRQcm90b2Nv
bCk7CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTQxNiw3ICs0MTYsNyBAQCBpbnQgV2ViU29ja2V0
SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFk
ZXJMZW5ndGgsCiAgICAgICAgICAgICAvLyBUaGUgY2FsbGVyIGlzbid0IHByZXBhcmVkIHRvIGRl
YWwgd2l0aCBudWxsIGJ5dGVzIGluIHN0YXR1cwogICAgICAgICAgICAgLy8gbGluZS4gV2ViU29j
a2V0cyBzcGVjaWZpY2F0aW9uIGRvZXNuJ3QgcHJvaGliaXQgdGhpcywgYnV0IEhUVFAKICAgICAg
ICAgICAgIC8vIGRvZXMsIHNvIHdlJ2xsIGp1c3QgdHJlYXQgdGhpcyBhcyBhbiBlcnJvci4KLSAg
ICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTdGF0dXMgbGluZSBjb250YWlucyBlbWJlZGRl
ZCBudWxsIjsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEFTQ0lJTGl0ZXJhbCgiU3Rh
dHVzIGxpbmUgY29udGFpbnMgZW1iZWRkZWQgbnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIHAg
KyAxIC0gaGVhZGVyOwogICAgICAgICB9IGVsc2UgaWYgKCpwID09ICdcbicpCiAgICAgICAgICAg
ICBicmVhazsKQEAgLTQyNywxMyArNDI3LDEzIEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAg
ICBjb25zdCBjaGFyKiBlbmQgPSBwICsgMTsKICAgICBpbnQgbGluZUxlbmd0aCA9IGVuZCAtIGhl
YWRlcjsKICAgICBpZiAobGluZUxlbmd0aCA+IG1heGltdW1MZW5ndGgpIHsKLSAgICAgICAgbV9m
YWlsdXJlUmVhc29uID0gIlN0YXR1cyBsaW5lIGlzIHRvbyBsb25nIjsKKyAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gQVNDSUlMaXRlcmFsKCJTdGF0dXMgbGluZSBpcyB0b28gbG9uZyIpOwogICAg
ICAgICByZXR1cm4gbWF4aW11bUxlbmd0aDsKICAgICB9CiAKICAgICAvLyBUaGUgbGluZSBtdXN0
IGVuZCB3aXRoICJcclxuIi4KICAgICBpZiAobGluZUxlbmd0aCA8IDIgfHwgKihlbmQgLSAyKSAh
PSAnXHInKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTdGF0dXMgbGluZSBkb2VzIG5v
dCBlbmQgd2l0aCBDUkxGIjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gQVNDSUlMaXRlcmFs
KCJTdGF0dXMgbGluZSBkb2VzIG5vdCBlbmQgd2l0aCBDUkxGIik7CiAgICAgICAgIHJldHVybiBs
aW5lTGVuZ3RoOwogICAgIH0KIApAQCAtNDc5LDcgKzQ3OSw3IEBAIGNvbnN0IGNoYXIqIFdlYlNv
Y2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBlCiAKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCJzZWMtd2Vic29ja2V0LWV4
dGVuc2lvbnMiLCBuYW1lKSkgewogICAgICAgICAgICAgaWYgKHNhd1NlY1dlYlNvY2tldEV4dGVu
c2lvbnNIZWFkZXJGaWVsZCkgewotICAgICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJU
aGUgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBNVVNUIE5PVCBhcHBlYXIgbW9yZSB0
aGFuIG9uY2UgaW4gYW4gSFRUUCByZXNwb25zZSI7CisgICAgICAgICAgICAgICAgbV9mYWlsdXJl
UmVhc29uID0gQVNDSUlMaXRlcmFsKCJUaGUgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRl
ciBNVVNUIE5PVCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgaW4gYW4gSFRUUCByZXNwb25zZSIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFtX2V4dGVuc2lvbkRpc3BhdGNoZXIucHJvY2Vzc0hlYWRlclZhbHVlKHZhbHVlKSkgewpAQCAt
NDg5LDE0ICs0ODksMTQgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRU
UEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgICAgIHNh
d1NlY1dlYlNvY2tldEV4dGVuc2lvbnNIZWFkZXJGaWVsZCA9IHRydWU7CiAgICAgICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoIlNlYy1XZWJTb2NrZXQtQWNjZXB0IiwgbmFtZSkpIHsK
ICAgICAgICAgICAgIGlmIChzYXdTZWNXZWJTb2NrZXRBY2NlcHRIZWFkZXJGaWVsZCkgewotICAg
ICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJUaGUgU2VjLVdlYlNvY2tldC1BY2NlcHQg
aGVhZGVyIE1VU1QgTk9UIGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhbiBIVFRQIHJlc3BvbnNl
IjsKKyAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBBU0NJSUxpdGVyYWwoIlRoZSBT
ZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIgTVVTVCBOT1QgYXBwZWFyIG1vcmUgdGhhbiBvbmNl
IGluIGFuIEhUVFAgcmVzcG9uc2UiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG1fc2VydmVySGFuZHNoYWtlUmVzcG9uc2UuYWRkSFRUUEhl
YWRlckZpZWxkKG5hbWUsIHZhbHVlKTsKICAgICAgICAgICAgIHNhd1NlY1dlYlNvY2tldEFjY2Vw
dEhlYWRlckZpZWxkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSgiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIsIG5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoc2F3
U2VjV2ViU29ja2V0UHJvdG9jb2xIZWFkZXJGaWVsZCkgewotICAgICAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJUaGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgTVVTVCBOT1Qg
YXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIGFuIEhUVFAgcmVzcG9uc2UiOworICAgICAgICAgICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9IEFTQ0lJTGl0ZXJhbCgiVGhlIFNlYy1XZWJTb2NrZXQtUHJv
dG9jb2wgaGVhZGVyIE1VU1QgTk9UIGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhbiBIVFRQIHJl
c3BvbnNlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtX3NlcnZlckhhbmRzaGFrZVJlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZChuYW1l
LCB2YWx1ZSk7CkBAIC01MTUsNDAgKzUxNSw0MCBAQCBib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6
Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQogICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0
QWNjZXB0ID0gdGhpcy0+c2VydmVyV2ViU29ja2V0QWNjZXB0KCk7CiAKICAgICBpZiAoc2VydmVy
VXBncmFkZS5pc051bGwoKSkgewotICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVy
aW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICdVcGdyYWRlJyBoZWFkZXIgaXMgbWlzc2luZyI7Cisg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZHVyaW5nIFdlYlNv
Y2tldCBoYW5kc2hha2U6ICdVcGdyYWRlJyBoZWFkZXIgaXMgbWlzc2luZyIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChzZXJ2ZXJDb25uZWN0aW9uLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRz
aGFrZTogJ0Nvbm5lY3Rpb24nIGhlYWRlciBpcyBtaXNzaW5nIjsKKyAgICAgICAgbV9mYWlsdXJl
UmVhc29uID0gQVNDSUlMaXRlcmFsKCJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTog
J0Nvbm5lY3Rpb24nIGhlYWRlciBpcyBtaXNzaW5nIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKHNlcnZlcldlYlNvY2tldEFjY2VwdC5pc051bGwoKSkgewotICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICdT
ZWMtV2ViU29ja2V0LUFjY2VwdCcgaGVhZGVyIGlzIG1pc3NpbmciOworICAgICAgICBtX2ZhaWx1
cmVSZWFzb24gPSBBU0NJSUxpdGVyYWwoIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiAnU2VjLVdlYlNvY2tldC1BY2NlcHQnIGhlYWRlciBpcyBtaXNzaW5nIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHNlcnZlclVw
Z3JhZGUsICJ3ZWJzb2NrZXQiKSkgewotICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3Ig
ZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICdVcGdyYWRlJyBoZWFkZXIgdmFsdWUgaXMgbm90
ICdXZWJTb2NrZXQnIjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gQVNDSUlMaXRlcmFsKCJF
cnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ1VwZ3JhZGUnIGhlYWRlciB2YWx1ZSBp
cyBub3QgJ1dlYlNvY2tldCciKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBp
ZiAoIWVxdWFsSWdub3JpbmdDYXNlKHNlcnZlckNvbm5lY3Rpb24sICJ1cGdyYWRlIikpIHsKLSAg
ICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiAnQ29ubmVjdGlvbicgaGVhZGVyIHZhbHVlIGlzIG5vdCAnVXBncmFkZSciOworICAgICAgICBt
X2ZhaWx1cmVSZWFzb24gPSBBU0NJSUxpdGVyYWwoIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFu
ZHNoYWtlOiAnQ29ubmVjdGlvbicgaGVhZGVyIHZhbHVlIGlzIG5vdCAnVXBncmFkZSciKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChzZXJ2ZXJXZWJTb2NrZXRBY2Nl
cHQgIT0gbV9leHBlY3RlZEFjY2VwdCkgewotICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJy
b3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtQWNjZXB0IG1pc21h
dGNoIjsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gQVNDSUlMaXRlcmFsKCJFcnJvciBkdXJp
bmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNvY2tldC1BY2NlcHQgbWlzbWF0Y2giKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoIXNlcnZlcldlYlNvY2tldFBy
b3RvY29sLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmIChtX2NsaWVudFByb3RvY29sLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2Nr
ZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoIjsKKyAgICAgICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9IEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZHVyaW5nIFdlYlNvY2tl
dCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgbWlzbWF0Y2giKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1
bHQ7CiAgICAgICAgIG1fY2xpZW50UHJvdG9jb2wuc3BsaXQoU3RyaW5nKFdlYlNvY2tldDo6c3Vi
UHJvdG9jb2xTZXBlcmF0b3IoKSksIHJlc3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0LmNvbnRh
aW5zKHNlcnZlcldlYlNvY2tldFByb3RvY29sKSkgewotICAgICAgICAgICAgbV9mYWlsdXJlUmVh
c29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVBy
b3RvY29sIG1pc21hdGNoIjsKKyAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEFTQ0lJTGl0
ZXJhbCgiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtUHJv
dG9jb2wgbWlzbWF0Y2giKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggN2JlNWVh
Ny4uZjkxYTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTIxNDMsNyArMjE0Myw3IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhB
Y2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpKSB7CiAgICAgICAgIGNhc2UgQXVkaW9Sb2xlOgotICAgICAgICAgICAg
cmV0dXJuIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoIkF1ZGlvRWxlbWVudCIp
OworICAgICAgICAgICAgcmV0dXJuIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmco
QVNDSUlMaXRlcmFsKCJBdWRpb0VsZW1lbnQiKSk7CiAgICAgICAgIGNhc2UgRGVmaW5pdGlvblJv
bGU6CiAgICAgICAgICAgICByZXR1cm4gQVhEZWZpbml0aW9uVGV4dCgpOwogICAgICAgICBjYXNl
IERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlOgpAQCAtMjE1Myw3ICsyMTUzLDcgQEAgc3RhdGljIE5T
U3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAg
ICAgICBjYXNlIEZvb3RlclJvbGU6CiAgICAgICAgICAgICByZXR1cm4gQVhGb290ZXJSb2xlRGVz
Y3JpcHRpb25UZXh0KCk7CiAgICAgICAgIGNhc2UgVmlkZW9Sb2xlOgotICAgICAgICAgICAgcmV0
dXJuIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoIlZpZGVvRWxlbWVudCIpOwor
ICAgICAgICAgICAgcmV0dXJuIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoQVND
SUlMaXRlcmFsKCJWaWRlb0VsZW1lbnQiKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSwgW3NlbGYgc3Vicm9sZV0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5j
cHAKaW5kZXggZTZiNTA2NC4uMDRhMDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcApAQCAt
NDMsMTIgKzQzLDEyIEBAIHZvaWQgSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQXVkaW9CdWZmZXIqIGJ1ZmZl
ciA9IHRvQXVkaW9CdWZmZXIodmFsdWUpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJWYWx1
ZSBpcyBub3Qgb2YgdHlwZSBBdWRpb0J1ZmZlciIpKTsKKyAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJWYWx1
ZSBpcyBub3Qgb2YgdHlwZSBBdWRpb0J1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgaWYgKCFpbXBsKCkuc2V0QnVmZmVyKGJ1ZmZlcikpCi0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdWRpb0J1
ZmZlciB1bnN1cHBvcnRlZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CisgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQXVkaW9CdWZmZXIgdW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoYW5uZWxzIikpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDM0YjQ1ZjMuLmVmYzhkMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5j
cHAKQEAgLTQ3LDE0ICs0NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBET01Db25zdHJ1Y3Rv
ck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4
ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoIWpzQ29uc3RydWN0b3IpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkF1ZGlvQ29udGV4
dCBjb25zdHJ1Y3RvciBjYWxsZWUgaXMgdW5hdmFpbGFibGUiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgY2FsbGVlIGlzIHVuYXZhaWxhYmxlIikpKTsKIAog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nv
bnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3Igc2NyaXB0IGV4ZWN1
dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXVkaW9D
b250ZXh0IGNvbnN0cnVjdG9yIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJs
ZSIpKSk7CiAgICAgICAgIAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgY2FsbGVkIGluIGEgc2NyaXB0
IGV4ZWN1dGlvbiBjb250ZXh0IHdoaWNoIGlzIG5vdCBhIGRvY3VtZW50IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNhbGxlZCBpbiBhIHNjcmlwdCBleGVj
dXRpb24gY29udGV4dCB3aGljaCBpcyBub3QgYSBkb2N1bWVudCIpKSk7CiAKICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSB0b0RvY3VtZW50KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApAQCAt
NjksNyArNjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTQXVk
aW9Db250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWF1ZGlvQ29udGV4dC5n
ZXQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoZXhlYywgImF1ZGlvIHJlc291cmNlcyB1bmF2YWlsYWJsZSBmb3IgQXVkaW9Db250ZXh0
IGNvbnN0cnVjdGlvbiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJhdWRpbyByZXNvdXJjZXMgdW5h
dmFpbGFibGUgZm9yIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3Rpb24iKSkpOwogICAgIH0gZWxzZSB7
CiAjaWYgRU5BQkxFKExFR0FDWV9XRUJfQVVESU8pCiAgICAgICAgIC8vIENvbnN0cnVjdG9yIGZv
ciBvZmZsaW5lIChyZW5kZXItdGFyZ2V0KSBBdWRpb0NvbnRleHQgd2hpY2ggcmVuZGVycyBpbnRv
IGFuIEF1ZGlvQnVmZmVyLgpAQCAtODQsMjAgKzg0LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNBdWRpb0NvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICBmbG9hdCBzYW1wbGVSYXRlID0gZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChudW1iZXJPZkNoYW5uZWxzIDw9IDAgfHwgbnVtYmVyT2ZDaGFu
bmVscyA+IDEwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMiKSkpOwogCiAgICAgICAgIGlm
IChudW1iZXJPZkZyYW1lcyA8PSAwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBudW1iZXIgb2YgZnJhbWVzIikp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgbnVtYmVyIG9mIGZyYW1lcyIpKSk7CiAKICAg
ICAgICAgaWYgKHNhbXBsZVJhdGUgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgc2FtcGxlIHJhdGUiKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBzYW1wbGUgcmF0ZSIpKSk7CiAKIAogICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgYXVkaW9Db250ZXh0ID0gT2ZmbGluZUF1
ZGlvQ29udGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZy
YW1lcywgc2FtcGxlUmF0ZSwgZWMpOwogICAgICAgICBpZiAoZWMpIHsKICAgICAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJFcnJvciBjcmVhdGluZyBPZmZsaW5lQXVk
aW9Db250ZXh0IikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNyZWF0aW5nIE9mZmxpbmVB
dWRpb0NvbnRleHQiKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbGxlZ2FsIEF1ZGlvQ29udGV4
dCBjb25zdHJ1Y3RvciIpKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB9
CiAKICAgICBpZiAoIWF1ZGlvQ29udGV4dC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiRXJyb3IgY3JlYXRpbmcgQXVk
aW9Db250ZXh0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY3JlYXRpbmcgQXVkaW9Db250
ZXh0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVS
KGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBBdWRpb0NvbnRleHQsIGF1ZGlvQ29udGV4
dC5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmlxdWFkRmlsdGVyTm9kZUN1c3RvbS5jcHAKaW5kZXggZjhjMTM4NS4uODIyZWUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVD
dXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgSlNCaXF1YWRGaWx0ZXJOb2RlOjpzZXRU
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgewogICAgICAgICB1aW50MzJfdCB0eXBlID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAg
ICAgICAgIGlmICghaW1wbCgpLnNldFR5cGUodHlwZSkpCi0gICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSWxsZWdhbCBCaXF1
YWRGaWx0ZXJOb2RlIHR5cGUiKSk7CisgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgQmlx
dWFkRmlsdGVyTm9kZSB0eXBlIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIEpTQmlxdWFkRmlsdGVyTm9kZTo6c2V0VHlwZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVn
YWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIikpOworICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBCaXF1
YWRGaWx0ZXJOb2RlIHR5cGUiKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAppbmRleCAyOTNhZmIzLi4z
YzMzOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U0Jsb2IoRXhlY1N0YXRlKiBleGVjKQogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0
cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJCbG9iIGNvbnN0
cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJCbG9iIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFi
bGUiKSkpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgUmVm
UHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUoKTsKQEAgLTg0LDcgKzg0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0Jsb2IoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBKU1ZhbHVlIGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7
CiAKICAgICAgICAgaWYgKCFibG9iUHJvcGVydHlCYWdWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlNl
Y29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0Iikp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNvbmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIE9iamVjdCIpKSk7CiAKICAgICAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRl
c3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2JqZWN0LgogICAgICAgICBKU09iamVjdCog
YmxvYlByb3BlcnR5QmFnT2JqZWN0ID0gYmxvYlByb3BlcnR5QmFnVmFsdWUudG9PYmplY3QoZXhl
Yyk7CkBAIC05OSw3ICs5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBpZiAoY29udGFpbnNFbmRpbmdz
KSB7CiAgICAgICAgICAgICBpZiAoZW5kaW5ncyAhPSAidHJhbnNwYXJlbnQiICYmIGVuZGluZ3Mg
IT0gIm5hdGl2ZSIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgIlRoZSBlbmRpbmdzIHByb3BlcnR5IG11c3QgYmUgZWl0aGVy
IFwidHJhbnNwYXJlbnRcIiBvciBcIm5hdGl2ZVwiIikpOworICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
VGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwi
bmF0aXZlXCIiKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQXR0ZW1wdCB0byBnZXQgdGhl
IHR5cGUgcHJvcGVydHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCAxMWRlNWQzLi41MmJiMDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5
bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTMyNywxMSArMzI3LDExIEBAIGJvb2wgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hCiAKICAgICBTdHJpbmcgcHJvcFZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhO
dWxsQ2hlY2soZXhlYywgdmFsdWUpOwogICAgIGlmIChwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBv
c1ByZWZpeCkKLSAgICAgICAgcHJvcFZhbHVlLmFwcGVuZCgicHgiKTsKKyAgICAgICAgcHJvcFZh
bHVlLmFwcGVuZCgicHgiLCAyKTsKIAogICAgIGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7CiAgICAg
aWYgKFNldHRpbmdzOjpzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMo
KSkgewotICAgICAgICBzaXplX3QgaW1wb3J0YW50SW5kZXggPSBwcm9wVmFsdWUuZmluZCgiIWlt
cG9ydGFudCIsIDAsIGZhbHNlKTsKKyAgICAgICAgc2l6ZV90IGltcG9ydGFudEluZGV4ID0gcHJv
cFZhbHVlLmZpbmQoQVNDSUlMaXRlcmFsKCIhaW1wb3J0YW50IiksIDAsIGZhbHNlKTsKICAgICAg
ICAgaWYgKGltcG9ydGFudEluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBpbXBvcnRh
bnQgPSB0cnVlOwogICAgICAgICAgICAgcHJvcFZhbHVlID0gcHJvcFZhbHVlLmxlZnQoaW1wb3J0
YW50SW5kZXggLSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IGQ5NWMxNzMuLjZlZDkxMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGht
RGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzQ2JjUGFyYW1zKEV4
ZWNTdGF0ZSoKICAgICB9CiAKICAgICBpZiAoaXZEYXRhLnNlY29uZCAhPSAxNikgewotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJBRVMt
Q0JDIGluaXRpYWxpemF0aW9uIGRhdGEgbXVzdCBiZSAxNiBieXRlcyIpKTsKKyAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkFFUy1DQkMgaW5pdGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzIikpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FLZXlH
ZW5QYXJhbXMoRXhlY1N0YXQKIAogICAgIFJlZlB0cjxVaW50OEFycmF5PiBwdWJsaWNFeHBvbmVu
dEFycmF5ID0gdG9VaW50OEFycmF5KHB1YmxpY0V4cG9uZW50VmFsdWUpOwogICAgIGlmICghcHVi
bGljRXhwb25lbnRBcnJheSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiRXhwZWN0
ZWQgYSBVaW50OEFycmF5IGluIHB1YmxpY0V4cG9uZW50Iik7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYSBVaW50OEFycmF5IGluIHB1YmxpY0V4
cG9uZW50IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmVzdWx0LT5w
dWJsaWNFeHBvbmVudC5hcHBlbmQocHVibGljRXhwb25lbnRBcnJheS0+ZGF0YSgpLCBwdWJsaWNF
eHBvbmVudEFycmF5LT5ieXRlTGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5kZXggYmU2
ZTFlMC4uOWQ1ZDU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC0xMTcsMTIgKzExNywxMiBA
QCBzdGF0aWMgYm9vbCBnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCoganNvbiwgY29uc3QgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIWJhc2U2NFVSTERlY29kZShiYXNlNjR1cmxFbmNvZGVkTnVtYmVyLCByZXN1bHQpKSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkg
ZGF0YSBpbiBKV0siKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBKV0siKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0WzBdID09IDApIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgIkpXSyBCaWdJbnRlZ2VyIG11c3QgdXRpbGl6ZSB0aGUgbWlu
aW11bSBudW1iZXIgb2Ygb2N0ZXRzIHRvIHJlcHJlc2VudCB0aGUgdmFsdWUiKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0
aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVl
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzcsNyArMTM3LDcgQEAg
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0so
RXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWpzb25W
YWx1ZSB8fCAhanNvblZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIkludmFsaWQgSldLIHNlcmlhbGl6YXRpb24iKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uIikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIGJvb2wgdHJ5
SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBDcnlwdG9LZXlVc2FnZSYgdXNhZ2VzLCBj
b25zdCBTdHIKIHsKICAgICBpZiAob3BlcmF0aW9uID09IHRyeU9wZXJhdGlvbikgewogICAgICAg
ICBpZiAodXNhZ2VzICYgdHJ5VXNhZ2UpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsICJKV0sga2V5X29wcyBjb250YWlucyBhIGR1cGxpY2F0ZSBvcGVyYXRpb24iKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgY29u
dGFpbnMgYSBkdXBsaWNhdGUgb3BlcmF0aW9uIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIHVzYWdlcyB8PSB0cnlVc2FnZTsKQEAgLTI3MSw3ICsyNzEs
NyBAQCB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKENy
eXB0b0tleVVzYWdlJiBzdWdnZXN0ZWRVc2FnZQogICAgICAgICAgICAgU3RyaW5nIG9wZXJhdGlv
bjsKICAgICAgICAgICAgIGlmICghanNWYWx1ZS5nZXRTdHJpbmcobV9leGVjLCBvcGVyYXRpb24p
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJKV0sga2V5X29wcyBhdHRyaWJ1
dGUgY291bGQgbm90IGJlIHByb2Nlc3NlZCIpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRlIGNvdWxk
IG5vdCBiZSBwcm9jZXNzZWQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCF0cnlKV0tLZXlPcHNWYWx1ZShtX2V4ZWMsIGp3a1VzYWdl
cywgb3BlcmF0aW9uLCBBU0NJSUxpdGVyYWwoInNpZ24iKSwgQ3J5cHRvS2V5VXNhZ2VTaWduKSkK
QEAgLTM2MSwxMyArMzYxLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGFPY3RldFNlcXVlbmNlCiAgICAgU3RyaW5n
IGtleUJhc2U2NFVSTDsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1fZXhlYywgbV9qc29u
LmdldCgpLCAiayIsIGtleUJhc2U2NFVSTCkpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiU2VjcmV0IGtl
eSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlNlY3JldCBrZXkgZGF0YSBpcyBub3QgcHJlc2VudCBp
cyBKV0siKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFZlY3Rvcjx1
aW50OF90PiBvY3RldFNlcXVlbmNlOwogICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKGtleUJhc2U2
NFVSTCwgb2N0ZXRTZXF1ZW5jZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAi
Q2Fubm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIik7CisgICAgICAgIHRocm93
VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBr
ZXkgZGF0YSBpbiBKV0siKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
Mzg3LDcgKzM4Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0tl
eVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGFSU0FDb21wb25lbnRzCiAKICAgICBpZiAoIWdldEJp
Z0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgIm4iLCBtb2R1bHVz
KSkgewogICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJSZXF1aXJlZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3Np
bmciKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJS
ZXF1aXJlZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMzk4LDcgKzM5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlEYXRhPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGFSU0FDb21wb25l
bnRzCiAKICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIG1fanNv
bi5nZXQoKSwgImUiLCBleHBvbmVudCkpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiUmVxdWlyZWQgSldL
IFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5n
IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ1NCwyMiArNDU0LDIy
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OmtleURhdGFSU0FDb21wb25lbnRzCiAgICAgICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmICghZWxlbWVu
dC5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJKV0sg
XCJvdGhcIiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBcIm90aFwiIGFycmF5IG1lbWJl
ciBpcyBub3QgYW4gb2JqZWN0IikpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBh
c09iamVjdChlbGVtZW50KSwgInIiLCBpbmZvLnByaW1lRmFjdG9yKSkgewogICAgICAgICAgICAg
aWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKG1fZXhlYywgIkNhbm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwib3Ro
XCIgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
QVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IHByaW1lIGZhY3RvciBmb3IgYSBwcmltZSBpbiBcIm90
aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2Jq
ZWN0KGVsZW1lbnQpLCAiZCIsIGluZm8uZmFjdG9yQ1JURXhwb25lbnQpKSB7CiAgICAgICAgICAg
ICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IobV9leGVjLCAiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9uZW50IGZvciBhIHByaW1l
IGluIFwib3RoXCIgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgZXhwb25lbnQgZm9y
IGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpT
T04obV9leGVjLCBhc09iamVjdChlbGVtZW50KSwgInQiLCBpbmZvLmZhY3RvckNSVENvZWZmaWNp
ZW50KSkgewogICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBj
b2VmZmljaWVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBm
YWN0b3IgQ1JUIGNvZWZmaWNpZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIp
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIG90aGVy
UHJpbWVJbmZvcy5hcHBlbmQoaW5mbyk7CkBAIC00ODMsNyArNDgzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YSgp
IGNvbnN0CiAgICAgU3RyaW5nIGp3a0tleVR5cGU7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNP
TihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImt0eSIsIGp3a0tleVR5cGUpKSB7CiAgICAgICAgIGlm
ICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgIlJlcXVpcmVkIEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIik7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwi
a3R5XCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtNTA2LDEzICs1MDYsMTMgQEAgc3RhdGljIHZvaWQgYWRkVG9KU09OKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgY29uc3QgU3QKIAogc3Rh
dGljIHZvaWQgYnVpbGRKU09ORm9yT2N0ZXRTZXF1ZW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5RGF0YSwgSlNPYmplY3QqIHJlc3VsdCkKIHsKLSAgICBhZGRU
b0pTT04oZXhlYywgcmVzdWx0LCAia3R5IiwgIm9jdCIpOworICAgIGFkZFRvSlNPTihleGVjLCBy
ZXN1bHQsICJrdHkiLCBBU0NJSUxpdGVyYWwoIm9jdCIpKTsKICAgICBhZGRUb0pTT04oZXhlYywg
cmVzdWx0LCAiayIsIGJhc2U2NFVSTEVuY29kZShrZXlEYXRhKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGJ1aWxkSlNPTkZvclJTQUNvbXBvbmVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBkYXRhLCBKU0M6OkpTT2JqZWN0KiByZXN1bHQpCiB7
Ci0gICAgYWRkVG9KU09OKGV4ZWMsIHJlc3VsdCwgImt0eSIsICJSU0EiKTsKKyAgICBhZGRUb0pT
T04oZXhlYywgcmVzdWx0LCAia3R5IiwgQVNDSUlMaXRlcmFsKCJSU0EiKSk7CiAgICAgYWRkVG9K
U09OKGV4ZWMsIHJlc3VsdCwgIm4iLCBiYXNlNjRVUkxFbmNvZGUoZGF0YS5tb2R1bHVzKCkpKTsK
ICAgICBhZGRUb0pTT04oZXhlYywgcmVzdWx0LCAiZSIsIGJhc2U2NFVSTEVuY29kZShkYXRhLmV4
cG9uZW50KCkpKTsKIApAQCAtNTU5LDE1ICs1NTksMTUgQEAgc3RhdGljIHZvaWQgYWRkSldLQWxn
b3JpdGhtVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IENyeXB0
b0sKICAgICAgICAgc3dpdGNoICh0b0NyeXB0b0tleUhNQUMoa2V5KS5oYXNoQWxnb3JpdGhtSWRl
bnRpZmllcigpKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzI1NjoKICAgICAgICAgICAgIGlmICh0b0NyeXB0b0tleUhNQUMoa2V5KS5rZXkoKS5zaXplKCkg
KiA4ID49IDI1NikKLSAgICAgICAgICAgICAgICBqd2tBbGdvcml0aG0gPSAiSFMyNTYiOworICAg
ICAgICAgICAgICAgIGp3a0FsZ29yaXRobSA9IEFTQ0lJTGl0ZXJhbCgiSFMyNTYiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6CiAgICAgICAgICAgICBpZiAodG9DcnlwdG9LZXlITUFDKGtleSkua2V5KCkuc2l6ZSgp
ICogOCA+PSAzODQpCi0gICAgICAgICAgICAgICAgandrQWxnb3JpdGhtID0gIkhTMzg0IjsKKyAg
ICAgICAgICAgICAgICBqd2tBbGdvcml0aG0gPSBBU0NJSUxpdGVyYWwoIkhTMzg0Iik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfNTEyOgogICAgICAgICAgICAgaWYgKHRvQ3J5cHRvS2V5SE1BQyhrZXkpLmtleSgpLnNpemUo
KSAqIDggPj0gNTEyKQotICAgICAgICAgICAgICAgIGp3a0FsZ29yaXRobSA9ICJIUzUxMiI7Cisg
ICAgICAgICAgICAgICAgandrQWxnb3JpdGhtID0gQVNDSUlMaXRlcmFsKCJIUzUxMiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAg
LTU3NiwyNiArNTc2LDI2IEBAIHN0YXRpYyB2b2lkIGFkZEpXS0FsZ29yaXRobVRvSlNPTihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBDcnlwdG9LCiAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgogICAgICAgICBzd2l0Y2ggKHRvQ3J5cHRv
S2V5QUVTKGtleSkua2V5KCkuc2l6ZSgpICogOCkgewogICAgICAgICBjYXNlIDEyODoKLSAgICAg
ICAgICAgIGp3a0FsZ29yaXRobSA9ICJBMTI4Q0JDIjsKKyAgICAgICAgICAgIGp3a0FsZ29yaXRo
bSA9IEFTQ0lJTGl0ZXJhbCgiQTEyOENCQyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgMTkyOgotICAgICAgICAgICAgandrQWxnb3JpdGhtID0gIkExOTJDQkMiOworICAgICAg
ICAgICAgandrQWxnb3JpdGhtID0gQVNDSUlMaXRlcmFsKCJBMTkyQ0JDIik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSAyNTY6Ci0gICAgICAgICAgICBqd2tBbGdvcml0aG0gPSAi
QTI1NkNCQyI7CisgICAgICAgICAgICBqd2tBbGdvcml0aG0gPSBBU0NJSUxpdGVyYWwoIkEyNTZD
QkMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgogICAgICAgICBzd2l0Y2gg
KHRvQ3J5cHRvS2V5QUVTKGtleSkua2V5KCkuc2l6ZSgpICogOCkgewogICAgICAgICBjYXNlIDEy
ODoKLSAgICAgICAgICAgIGp3a0FsZ29yaXRobSA9ICJBMTI4S1ciOworICAgICAgICAgICAgandr
QWxnb3JpdGhtID0gQVNDSUlMaXRlcmFsKCJBMTI4S1ciKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIDE5MjoKLSAgICAgICAgICAgIGp3a0FsZ29yaXRobSA9ICJBMTkyS1ciOwor
ICAgICAgICAgICAgandrQWxnb3JpdGhtID0gQVNDSUlMaXRlcmFsKCJBMTkyS1ciKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI1NjoKLSAgICAgICAgICAgIGp3a0FsZ29yaXRo
bSA9ICJBMjU2S1ciOworICAgICAgICAgICAgandrQWxnb3JpdGhtID0gQVNDSUlMaXRlcmFsKCJB
MjU2S1ciKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA
QCAtNjA4LDEzICs2MDgsMTMgQEAgc3RhdGljIHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09OKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IENyeXB0b0sKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBzd2l0Y2ggKGhhc2gpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICAgICAgandrQWxnb3JpdGhtID0gIlJT
MjU2IjsKKyAgICAgICAgICAgIGp3a0FsZ29yaXRobSA9IEFTQ0lJTGl0ZXJhbCgiUlMyNTYiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8zODQ6Ci0gICAgICAgICAgICBqd2tBbGdvcml0aG0gPSAiUlMzODQiOworICAgICAg
ICAgICAgandrQWxnb3JpdGhtID0gQVNDSUlMaXRlcmFsKCJSUzM4NCIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
LSAgICAgICAgICAgIGp3a0FsZ29yaXRobSA9ICJSUzUxMiI7CisgICAgICAgICAgICBqd2tBbGdv
cml0aG0gPSBBU0NJSUxpdGVyYWwoIlJTNTEyIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjI1LDcgKzYyNSw3IEBAIHN0YXRp
YyB2b2lkIGFkZEpXS0FsZ29yaXRobVRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBq
c29uLCBjb25zdCBDcnlwdG9LCiAgICAgICAgIGNvbnN0IENyeXB0b0tleVJTQSYgcnNhS2V5ID0g
dG9DcnlwdG9LZXlSU0Eoa2V5KTsKICAgICAgICAgaWYgKHJzYUtleS5rZXlTaXplSW5CaXRzKCkg
PCAyMDQ4KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGp3a0FsZ29yaXRobSA9ICJSU0Ex
XzUiOworICAgICAgICBqd2tBbGdvcml0aG0gPSBBU0NJSUxpdGVyYWwoIlJTQTFfNSIpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FfT0FFUDogewpAQCAtNjM2LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIGFkZEpXS0FsZ29yaXRo
bVRvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBDcnlwdG9LCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKHJzYUtleS5rZXlTaXplSW5CaXRzKCkgPCAy
MDQ4KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGp3a0FsZ29yaXRobSA9ICJSU0EtT0FF
UCI7CisgICAgICAgIGp3a0FsZ29yaXRobSA9IEFTQ0lJTGl0ZXJhbCgiUlNBLU9BRVAiKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC02NDUsNyArNjQ1LDcgQEAgc3Rh
dGljIHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGpzb24sIGNvbnN0IENyeXB0b0sKIAogICAgIGlmIChqd2tBbGdvcml0aG0uaXNOdWxsKCkpIHsK
ICAgICAgICAgLy8gVGhlIHNwZWMgZG9lc24ndCBjdXJyZW50bHkgdGVsbCB3aGV0aGVyIGV4cG9y
dCBzaG91bGQgZmFpbCwgb3IganVzdCBza2lwICJhbGciICh3aGljaCBpcyBhbiBvcHRpb25hbCBr
ZXkgaW4gSldLKS4KLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIktleSBhbGdvcml0aG0g
YW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldLIGFsZ29yaXRobSBpZGVudGlmaWVyIik7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5IGFsZ29yaXRobSBh
bmQgc2l6ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sgYWxnb3JpdGhtIGlkZW50aWZpZXIiKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY1OCwyMSArNjU4LDIxIEBAIHN0YXRpYyB2b2lk
IGFkZFVzYWdlc1RvSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBDcnlwdG9L
ZXlVc2FnZSB1c2FnCiAKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgaWYgKHVzYWdlcyAm
IENyeXB0b0tleVVzYWdlU2lnbikKLSAgICAgICAga2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVj
LCBpbmRleCsrLCBqc1N0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoInNpZ24iKSkpOworICAgICAg
ICBrZXlPcHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBBU0NJSUxpdGVyYWwoInNpZ24iKSkpOwogICAgIGlmICh1c2FnZXMgJiBDcnlwdG9L
ZXlVc2FnZVZlcmlmeSkKLSAgICAgICAga2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRl
eCsrLCBqc1N0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoInZlcmlmeSIpKSk7CisgICAgICAgIGtl
eU9wcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgidmVyaWZ5IikpKTsKICAgICBpZiAodXNhZ2VzICYgQ3J5cHRvS2V5
VXNhZ2VFbmNyeXB0KQotICAgICAgICBrZXlPcHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4
KyssIGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZW5jcnlwdCIpKSk7CisgICAgICAgIGtl
eU9wcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiZW5jcnlwdCIpKSk7CiAgICAgaWYgKHVzYWdlcyAmIENyeXB0b0tl
eVVzYWdlRGVjcnlwdCkKLSAgICAgICAga2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRl
eCsrLCBqc1N0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoImRlY3J5cHQiKSkpOworICAgICAgICBr
ZXlPcHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0cmluZyhl
eGVjLCBBU0NJSUxpdGVyYWwoImRlY3J5cHQiKSkpOwogICAgIGlmICh1c2FnZXMgJiBDcnlwdG9L
ZXlVc2FnZVdyYXBLZXkpCi0gICAgICAgIGtleU9wcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5k
ZXgrKywganNTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJ3cmFwS2V5IikpKTsKKyAgICAgICAg
a2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCsrLCBqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgQVNDSUlMaXRlcmFsKCJ3cmFwS2V5IikpKTsKICAgICBpZiAodXNhZ2VzICYgQ3J5cHRv
S2V5VXNhZ2VVbndyYXBLZXkpCi0gICAgICAgIGtleU9wcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aW5kZXgrKywganNTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJ1bndyYXBLZXkiKSkpOworICAg
ICAgICBrZXlPcHMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoInVud3JhcEtleSIpKSk7CiAgICAgaWYgKHVzYWdlcyAm
IENyeXB0b0tleVVzYWdlRGVyaXZlS2V5KQotICAgICAgICBrZXlPcHMtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIGluZGV4KyssIGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGVyaXZlS2V5Iikp
KTsKKyAgICAgICAga2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCsrLCBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJkZXJpdmVLZXkiKSkpOwogICAgIGlmICh1
c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpCi0gICAgICAgIGtleU9wcy0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgaW5kZXgrKywganNTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJkZXJp
dmVCaXRzIikpKTsKKyAgICAgICAga2V5T3BzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCsr
LCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJkZXJpdmVCaXRzIikpKTsK
IAogICAgIGpzb24tPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJrZXlf
b3BzIiksIGtleU9wcyk7CiB9CkBAIC02ODIsNyArNjgyLDcgQEAgU3RyaW5nIEpTQ3J5cHRvS2V5
U2VyaWFsaXphdGlvbkpXSzo6c2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ3J5cHRv
S2V5JgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBrZXlEYXRhID0ga2V5LmV4
cG9ydERhdGEoKTsKICAgICBpZiAoIWtleURhdGEpIHsKICAgICAgICAgLy8gVGhpcyBnZW5lcmFs
bHkgc2hvdWxkbid0IGhhcHBlbiBhcyBsb25nIGFzIGFsbCBrZXkgdHlwZXMgaW1wbGVtZW50IGV4
cG9ydERhdGEoKSwgYnV0IGFzIHVuZGVybHlpbmcgbGlicmFyaWVzIHJldHVybiBlcnJvcnMsIHRo
ZXJlIG1heSBiZSBzb21lIHJhcmUgZmFpbHVyZSBjb25kaXRpb25zLgotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCAiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGV4cG9ydCBrZXkgbWF0
ZXJpYWwiKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAgLTcwMyw3ICs3
MDMsNyBAQCBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpYWxpemUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmCiAgICAgZWxzZSBpZiAoaXNDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cygqa2V5RGF0YSkpCiAgICAgICAgIGJ1aWxkSlNPTkZvclJTQUNvbXBv
bmVudHMoZXhlYywgdG9DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygqa2V5RGF0YSksIHJlc3Vs
dCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJLZXkgZG9lc24n
dCBzdXBwb3J0IGV4cG9ydEtleSIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIktleSBkb2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOwogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3Bw
CmluZGV4IDg1YjE3YjUuLmI0ZDRlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcApAQCAtNDEsNyArNDEsNyBAQCBib29s
IGNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIENyeXB0b09wZXJhdAogICAgIGVsc2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
IGJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSkpCiAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRk
cmVzcygpKSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmll
dyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5k
IEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9u
RGF0YSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDM2ZDFh
MDAuLjdhYjVhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcApAQCAtNTc4LDcgKzU3OCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtCiAKIHZvaWQg
dGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHRocm93VHlwZUVycm9yKHN0YXRlLCAiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKTsKKyAg
ICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEFycmF5IGVsZW1l
bnQgdHlwZSIpKTsKIH0KIAogdm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkKQEAgLTU5OSw3ICs1OTksNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgY2hhciogaW50ZQogCiB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCAiVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UiKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKIH0KIAogdm9pZCB0aHJvd1NldHRlclR5
cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNWYzYjUxNy4uMWNmNWM5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
NTA0LDcgKzUwNCw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6Om9wZW4oRXhlY1N0YXRlKiBleGVj
KQogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVs
bENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIEF0b21pY1N0cmluZyBm
cmFtZU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpID8gIl9ibGFu
ayIgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
QXRvbWljU3RyaW5nIGZyYW1lTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JO
dWxsKCkgPyBBU0NJSUxpdGVyYWwoIl9ibGFuayIpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIHdpbmRvd0ZlYXR1cmVzU3Ry
aW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5h
cmd1bWVudCgyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rh
dGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3Vz
dG9tLmNwcAppbmRleCA4NzU3YjhjLi5mZTk4ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQog
I2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PiAzKSB7CiAgICAgICAgIGlmICghZXhlYy0+YXJndW1lbnQoMykuaXNTdHJpbmcoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJT
ZWNvbmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIFN0cmluZyIp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3Qgb2YgdHlwZSBTdHJpbmciKSkpOwogICAgICAgICB0eXBlID0gZXhlYy0+YXJndW1lbnQo
MykuZ2V0U3RyaW5nKGV4ZWMpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCBlNmExNDBmLi43MWRi
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNl
Q3VzdG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0
ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTVmFsdWUgb3B0aW9uc1ZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSAmJiAhb3B0aW9uc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjLCAiTm90IGFuIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGFuIG9iamVjdC4iKSk7CiAKICAgICBJ
REJLZXlQYXRoIGtleVBhdGg7CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20u
Y3BwCmluZGV4IDA0MDQ0ZDMuLjQ4MDM2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IEpTVmFsdWUgSlNJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiSURCT2JqZWN0
U3RvcmUgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAg
ICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklEQk9iamVjdFN0b3JlIHNjcmlwdCBleGVjdXRpb24g
Y29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKSk7CiAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMikKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwpAQCAtNjIsNyArNjIsNyBAQCBK
U1ZhbHVlIEpTSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgIEpTVmFsdWUgb3B0aW9uc1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMik7CiAgICAgaWYgKCFv
cHRpb25zVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhb3B0aW9uc1ZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiTm90IGFuIG9iamVjdC4i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90
IGFuIG9iamVjdC4iKSk7CiAKICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAgIGJvb2wgbXVs
dGlFbnRyeSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1h
Z2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNzNjY2IzZC4uZjI1NzA2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEltYWdl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0ltYWdlQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3Ig
PSBqc0Nhc3Q8SlNJbWFnZUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IGpzQ29uc3RydWN0b3ItPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1
bWVudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2
YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0
ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSkpOwogCiAgICAgLy8gQ2FsbGluZyB0b0pTIG9u
IHRoZSBkb2N1bWVudCBjYXVzZXMgdGhlIEpTIGRvY3VtZW50IHdyYXBwZXIgdG8gYmUKICAgICAv
LyBhZGRlZCB0byB0aGUgd2luZG93IG9iamVjdC4gVGhpcyBpcyBkb25lIHRvIGVuc3VyZSB0aGF0
IEpTRG9jdW1lbnQ6OnZpc2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAzODA1NTcyLi42MDNjMDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKICAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbGxiYWNr
IGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsYmFjayBh
cmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24iKSkpOwogCiAgICAgRE9NQ29uc3RydWN0b3JPYmpl
Y3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLT5j
YWxsZWUoKSk7CiAgICAgUmVmUHRyPEpTTXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBKU011
dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVj
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwCmluZGV4IDcxNzI2YmIuLjhjOTI4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBzaG9ydCBKU05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIE5vZGUqIGZpbHRlck5vZGUpCiAgICAgICAgIGZpbHRlciA9IGZpbHRlci5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiYWNjZXB0Tm9kZSIpKTsKICAgICAgICAgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShmaWx0ZXIsIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlTm9uZSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk5vZGVGaWx0ZXIgb2JqZWN0IGRvZXMgbm90
IGhhdmUgYW4gYWNjZXB0Tm9kZSBmdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Tm9kZUZpbHRlciBvYmplY3QgZG9lcyBub3QgaGF2ZSBhbiBhY2NlcHROb2RlIGZ1bmN0aW9uIikp
KTsKICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPc2Np
bGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2ls
bGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRleCAwMmMyYWJlLi43MWMxZjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcApA
QCAtNDUsNyArNDUsNyBAQCB2b2lkIEpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAg
ICAgIHVpbnQzMl90IHR5cGUgPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKCFp
bXAuc2V0VHlwZSh0eXBlKSkKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbGxlZ2FsIE9zY2lsbGF0b3JOb2RlIHR5cGUi
KSk7CisgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgT3NjaWxsYXRvck5vZGUgdHlwZSIp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU4LDcgKzU4LDcgQEAgdm9p
ZCBKU09zY2lsbGF0b3JOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSWxsZWdhbCBPc2NpbGxhdG9yTm9kZSB0eXBl
IikpOworICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBPc2NpbGxhdG9yTm9kZSB0eXBlIikpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKaW5kZXggMDVhYWI2OS4uOWI0ZjJhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIHZvaWQgSlNQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAg
ICAgICAgIHVpbnQzMl90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlm
ICghaW1wLnNldFBhbm5pbmdNb2RlbChtb2RlbCkpCi0gICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSWxsZWdhbCBwYW5uaW5n
TW9kZWwiKSk7CisgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgcGFubmluZ01vZGVsIikp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTgsNyArNTgsNyBAQCB2b2lk
IEpTUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSWxsZWdhbCBwYW5uaW5nTW9kZWwiKSk7
CisgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJJbGxlZ2FsIHBhbm5pbmdNb2RlbCIpKSk7CiB9CiAKIHZvaWQgSlNQ
YW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigp
KSB7CiAgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAg
ICAgIGlmICghaW1wLnNldERpc3RhbmNlTW9kZWwobW9kZWwpKQotICAgICAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwg
ZGlzdGFuY2VNb2RlbCIpKTsKKyAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBkaXN0YW5j
ZU1vZGVsIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtODIsNyArODIs
NyBAQCB2b2lkIEpTUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklsbGVnYWwgZGlzdGFu
Y2VNb2RlbCIpKTsKKyAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCBmNDA1YTAzLi4zZWI2MTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0
b20uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21K
U1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5CiAgICAgZWxz
ZSBpZiAoa2V5Rm9ybWF0U3RyaW5nID09ICJqd2siKQogICAgICAgICByZXN1bHQgPSBDcnlwdG9L
ZXlGb3JtYXQ6OkpXSzsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
IlVua25vd24ga2V5IGZvcm1hdCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlVua25vd24ga2V5IGZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBzdGF0aWMgdm9pZCBp
bXBvcnRLZXkoRXhlY1N0YXRlKiBleGVjLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlw
dG9PcGVyYXRpbwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKV0s6IHsKICAgICAgICAgU3Ry
aW5nIGp3a1N0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQp
OwogICAgICAgICBpZiAoandrU3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCAiSldLIEpTT04gc2VyaWFsaXphdGlvbiBpcyBub3QgdmFsaWQgVVRGLTgi
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIEpT
T04gc2VyaWFsaXphdGlvbiBpcyBub3QgdmFsaWQgVVRGLTgiKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAga2V5U2VyaWFsaXphdGlvbiA9IEpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSzo6Y3JlYXRlKGV4ZWMsIGp3a1N0cmluZyk7CkBAIC00NTcsNyArNDU3LDcg
QEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSogZXhlYywgQ3J5cHRvS2V5Rm9ybWF0
IGtleUZvcm1hdCwgQ3J5cHRvT3BlcmF0aW8KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbnN1cHBvcnRlZCBrZXkgZm9y
bWF0IGZvciBpbXBvcnQiKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBpbXBvcnQiKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQ2NSwxNCArNDY1LDE0IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShF
eGVjU3RhdGUqIGV4ZWMsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGlv
CiAKICAgICBpZiAoIWtleVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFsZ29yaXRobShhbGdvcml0
aG0sIHBhcmFtZXRlcnMpKSB7CiAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBr
ZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1
bWVudCIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJB
bGdvcml0aG0gc3BlY2lmaWVkIGluIGtleSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIG9uZSBwYXNz
ZWQgdG8gaW1wb3J0S2V5IGFzIGFyZ3VtZW50IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFhbGdvcml0aG0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIk5laXRoZXIga2V5
IG5vciBmdW5jdGlvbiBhcmd1bWVudCBoYXMgY3J5cHRvIGFsZ29yaXRobSBzcGVjaWZpZWQiKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOZWl0aGVyIGtleSBu
b3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBhbGdvcml0aG0gc3BlY2lmaWVkIikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKQEAgLTU2MCw3
ICs1NjAsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjppbXBvcnRLZXkoRXhlY1N0YXRlKiBl
eGVjKQogc3RhdGljIHZvaWQgZXhwb3J0S2V5KEV4ZWNTdGF0ZSogZXhlYywgQ3J5cHRvS2V5Rm9y
bWF0IGtleUZvcm1hdCwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIENyeXB0b0FsZ29yaXRobTo6VmVj
dG9yQ2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxiYWNrIGZhaWx1
cmVDYWxsYmFjaykKIHsKICAgICBpZiAoIWtleS5leHRyYWN0YWJsZSgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsICJLZXkgaXMgbm90IGV4dHJhY3RhYmxlIik7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5IGlzIG5vdCBleHRyYWN0YWJsZSIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTg0LDcgKzU4NCw3IEBAIHN0YXRpYyB2
b2lkIGV4cG9ydEtleShFeGVjU3RhdGUqIGV4ZWMsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQs
IGNvbnN0IENyeXB0b0tlCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgZXhw
b3J0Iik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBw
b3J0ZWQga2V5IGZvcm1hdCBmb3IgZXhwb3J0IikpOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCAyOGYyMmRhLi5hYWJhZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE1MjYsNyArMTUy
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRocm93VmFsaWRhdGlvbkVycm9yKCkKICAgICB7
Ci0gICAgICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihtX2V4ZWMsICJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CisgICAgICAgIG1f
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVR5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpKTsKICAgICB9CiAK
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24gPD0gQ3VycmVudFZl
cnNpb247IH0KQEAgLTI3MDksNyArMjcwOSw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjptYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEV4ZWNTdGF0ZSoKICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZhbGlkYXRpb25FcnJvcjoK
LSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKKyAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIERhdGFDbG9uZUVycm9yOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9D
TE9ORV9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCAzZjk3N2VjLi4xOTJhZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDUyMCw3ICs0
NTIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWMKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGV4ZWN1dGlvbkNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDb25zdHJ1Y3RvciBh
c3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2
YWlsYWJsZSIpKSk7CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCmlu
ZGV4IDRiM2VmNjYuLmI4MjRlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2Uu
Y3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIENJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1l
dGhvZCkKIHsKICAgICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cyhDUnVu
dGltZU1ldGhvZDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0IHRvIGludm9rZSBub24t
cGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBv
YmplY3QuIikpKTsKIAogICAgIENNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2Qq
PihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCAwMTVhNmZiLi5iYzBk
ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAg
LTIyOSw3ICsyMjksNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0TWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIEpTVmFsdWUgT2JqY0luc3RhbmNl
OjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0
aG9kKQogewogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCktPmluaGVyaXRzKE9iakNS
dW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5v
bi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWlu
IG9iamVjdC4iKSkpOwogCiAgICAgT2JqY01ldGhvZCAqbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2Jq
Y01ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBmYzY4ZDZj
Li4zMzkwYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CkBAIC0xNDksMTIgKzE0OSwxMiBAQCBPYmpjQXJyYXk6Ok9iamNBcnJheShPYmplY3RTdHJ1Y3RQ
dHIgYSwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQogdm9pZCBPYmpjQXJyYXk6
OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUg
YVZhbHVlKSBjb25zdAogewogICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdEluZGV4OildKSB7Ci0gICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBcnJheSBpcyBu
b3QgbXV0YWJsZS4iKSk7CisgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgaXMgbm90IG11dGFibGUu
IikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IFtfYXJyYXku
Z2V0KCkgY291bnRdKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKKyAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xNjUsMjAgKzE2NSwyMCBAQCB2b2lkIE9iamNBcnJh
eTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1
ZSBhVmFsdWUpCiAgICAgQHRyeSB7CiAgICAgICAgIFtfYXJyYXkuZ2V0KCkgaW5zZXJ0T2JqZWN0
Om9WYWx1ZS5vYmplY3RWYWx1ZSBhdEluZGV4OmluZGV4XTsKICAgICB9IEBjYXRjaChOU0V4Y2Vw
dGlvbiogbG9jYWxFeGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiT2JqZWN0aXZlLUMgZXhjZXB0aW9uLiIpKTsKKyAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSkpOwogICAgIH0KIH0KIAogSlNW
YWx1ZSBPYmpjQXJyYXk6OnZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5k
ZXgpIGNvbnN0CiB7CiAgICAgaWYgKGluZGV4ID4gW19hcnJheS5nZXQoKSBjb3VudF0pCi0gICAg
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CisgICAgICAgIHJldHVybiBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpKTsKICAgICBAdHJ5IHsKICAg
ICAgICAgaWQgb2JqID0gW19hcnJheS5nZXQoKSBvYmplY3RBdEluZGV4OmluZGV4XTsKICAgICAg
ICAgaWYgKG9iaikKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZSAo
ZXhlYywgJm9iaiwgT2JqY09iamVjdFR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgfSBA
Y2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7Ci0gICAgICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUt
QyBleGNlcHRpb24uIikpOworICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdGl2ZS1DIGV4Y2Vw
dGlvbi4iKSkpOwogICAgIH0KICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCAwMjIyMTkwLi5jZTYzNzVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
dm9pZCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwKIHsKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7Cisg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlJhbmdlIGVycm9yIikpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVgogewog
ICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lQXJyYXkqPihjZWxs
KTsKICAgICBpZiAoaW5kZXggPj0gdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKLSAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJS
YW5nZSBlcnJvciIpKTsKKyAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmFuZ2UgZXJyb3IiKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5jcHAKaW5kZXggMTBiMDFlZi4uYWVmOTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBSdW50aW1lT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGUKIAogSlNPYmplY3QqIFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmpl
Y3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CisgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4IDE4ZjE2ZWUuLjQ2
NDU1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMzY2LDcgKzM2
Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVDb3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdo
dChDU1NQcmltaXRpdmVWYWx1ZSogY29ybmVyLCBTCiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
aXIqIHJhZGl1cyA9IGNvcm5lci0+Z2V0UGFpclZhbHVlKCk7Ci0gICAgd2lkdGggPSByYWRpdXMt
PmZpcnN0KCkgPyByYWRpdXMtPmZpcnN0KCktPmNzc1RleHQoKSA6IFN0cmluZygiMCIpOworICAg
IHdpZHRoID0gcmFkaXVzLT5maXJzdCgpID8gcmFkaXVzLT5maXJzdCgpLT5jc3NUZXh0KCkgOiBT
dHJpbmcoQVNDSUlMaXRlcmFsKCIwIikpOwogICAgIGlmIChyYWRpdXMtPnNlY29uZCgpKQogICAg
ICAgICBoZWlnaHQgPSByYWRpdXMtPnNlY29uZCgpLT5jc3NUZXh0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGUz
MDE4OGMuLjRkNjVkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgc3RhdGljIFBhc3NSZWY8
Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZShjb25zdCBHcmlkVHJhY2tT
aXplJiB0cmEKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbWluTWF4VHJhY2tCcmVhZHRo
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgbWluTWF4
VHJhY2tCcmVhZHRocy0+YXBwZW5kKHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0
cmFja1NpemUubWluVHJhY2tCcmVhZHRoKCksIHN0eWxlKSk7CiAgICAgICAgIG1pbk1heFRyYWNr
QnJlYWR0aHMtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tT
aXplLm1heFRyYWNrQnJlYWR0aCgpLCBzdHlsZSkpOwotICAgICAgICByZXR1cm4gQ1NTRnVuY3Rp
b25WYWx1ZTo6Y3JlYXRlKCJtaW5tYXgoIiwgbWluTWF4VHJhY2tCcmVhZHRocyk7CisgICAgICAg
IHJldHVybiBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJtaW5tYXgoIiks
IG1pbk1heFRyYWNrQnJlYWR0aHMpOwogICAgIH0KIH0KIApAQCAtMzEzMCwxNiArMzEzMCwxNiBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIHNjcm9sbFNuYXBE
ZXN0aW5hdGlvbihzdHlsZS5nZXQoKSwgc3R5bGUtPnNjcm9sbFNuYXBEZXN0aW5hdGlvblgoKSwg
c3R5bGUtPnNjcm9sbFNuYXBEZXN0aW5hdGlvblkoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRTY3JvbGxTbmFwUG9pbnRzWDoKICAgICAgICAgICAgIGlmIChzdHlsZS0+c2Nyb2xs
U25hcFVzZXNFbGVtZW50c1goKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUoImVsZW1lbnRzIiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcp
OworICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShBU0NJ
SUxpdGVyYWwoImVsZW1lbnRzIiksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKICAg
ICAgICAgICAgIHJldHVybiBzY3JvbGxTbmFwUG9pbnRzKHN0eWxlLmdldCgpLCBzdHlsZS0+c2Ny
b2xsU25hcE9mZnNldHNYKCksIHN0eWxlLT5zY3JvbGxTbmFwUmVwZWF0T2Zmc2V0WCgpLCBzdHls
ZS0+c2Nyb2xsU25hcEhhc1JlcGVhdFgoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRTY3JvbGxTbmFwUG9pbnRzWToKICAgICAgICAgICAgIGlmIChzdHlsZS0+c2Nyb2xsU25hcFVz
ZXNFbGVtZW50c1koKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUoImVsZW1lbnRzIiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOworICAg
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShBU0NJSUxpdGVy
YWwoImVsZW1lbnRzIiksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKICAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxTbmFwUG9pbnRzKHN0eWxlLmdldCgpLCBzdHlsZS0+c2Nyb2xsU25h
cE9mZnNldHNZKCksIHN0eWxlLT5zY3JvbGxTbmFwUmVwZWF0T2Zmc2V0WSgpLCBzdHlsZS0+c2Ny
b2xsU25hcEhhc1JlcGVhdFkoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3Jv
bGxTbmFwQ29vcmRpbmF0ZToKICAgICAgICAgICAgIFZlY3RvcjxTbmFwQ29vcmRpbmF0ZT4gY29v
cmRzID0gc3R5bGUtPnNjcm9sbFNuYXBDb29yZGluYXRlcygpOwogICAgICAgICAgICAgaWYgKCFj
b29yZHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZSgibm9uZSIsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoQVNDSUlMaXRlcmFsKCJu
b25lIiksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKICAgICAgICAgICAgIHJldHVy
biBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoc3R5bGUuZ2V0KCksIGNvb3Jkcyk7CiAjZW5kaWYKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRleCAzMWQwMzkyLi44ZGMxN2EzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTYzNSw3ICs2MzUsNyBAQCBtYXliZV9t
ZWRpYV9yZXN0cmljdG9yOgogCiBtZWRpYV9xdWVyeToKICAgICBtZWRpYV9xdWVyeV9leHBfbGlz
dCB7Ci0gICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnkoTWVkaWFRdWVyeTo6Tm9uZSwgImFsbCIs
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+Pj4o
JDEpKTsKKyAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBBU0NJ
SUxpdGVyYWwoImFsbCIpLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVF1ZXJ5RXhwPj4+KCQxKSk7CiAgICAgfQogICAgIHwKICAgICBtYXliZV9tZWRpYV9yZXN0
cmljdG9yIG1heWJlX3NwYWNlIElERU5UIG1heWJlX3NwYWNlIG1heWJlX2FuZF9tZWRpYV9xdWVy
eV9leHBfbGlzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBs
YXRlQXJlYXNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJl
YXNWYWx1ZS5jcHAKaW5kZXggNWFkNzFmYi4uMWVmZjJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBz
dGF0aWMgU3RyaW5nIHN0cmluZ0ZvclBvc2l0aW9uKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdy
aWRBcmVhTWFwLCBzaXplX3Qgcm93LAogICAgICAgICAgICAgcmV0dXJuIGl0LmtleTsKICAgICB9
CiAKLSAgICByZXR1cm4gIi4iOworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIi4iKTsKIH0KIAog
U3RyaW5nIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzYTBhNjUzLi4xNjA5M2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtNTMyMiw3ICs1MzIyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1
dExpc3QKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VkQXJndW1lbnRzID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICBwYXJzZWRBcmd1bWVu
dHMtPmFwcGVuZChtaW5UcmFja0JyZWFkdGgucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIHBh
cnNlZEFyZ3VtZW50cy0+YXBwZW5kKG1heFRyYWNrQnJlYWR0aC5yZWxlYXNlTm9uTnVsbCgpKTsK
LSAgICAgICAgcmV0dXJuIENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSgibWlubWF4KCIsIHBhcnNl
ZEFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybiBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQVND
SUlMaXRlcmFsKCJtaW5tYXgoIiksIHBhcnNlZEFyZ3VtZW50cyk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHBhcnNlR3JpZEJyZWFkdGgoY3VycmVudFZhbHVlKTsKQEAgLTEyNDQyLDcgKzEyNDQyLDcg
QEAgU3RyaW5nIHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCJcJ1wnIik7CisgICAgICAgIHJldHVybiBTdHJpbmcoQVNDSUlMaXRl
cmFsKCJcJ1wnIikpOwogCiAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSAvIDMgLSAyKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXggNjJhYTI3Ni4uODc1ZTEzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBA
QCBTdHJpbmcgQ1NTU2VsZWN0b3JMaXN0OjpzZWxlY3RvcnNUZXh0KCkgY29uc3QKIAogICAgIGZv
ciAoY29uc3QgQ1NTU2VsZWN0b3IqIHMgPSBmaXJzdCgpOyBzOyBzID0gbmV4dChzKSkgewogICAg
ICAgICBpZiAocyAhPSBmaXJzdCgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIiwgMik7CiAgICAgICAgIHJlc3VsdC5hcHBl
bmQocy0+c2VsZWN0b3JUZXh0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApp
bmRleCA5NDQ1MDg2Li42MjM2OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtODQs
NyArODQsNyBAQCBNZWRpYVF1ZXJ5U2V0OjpNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYgbWVk
aWFTdHJpbmcsIGJvb2wgZmFsbGJhY2tUb0Rlc2NyaXB0bwogICAgIAogICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlLgogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAg
cGFyc2UoImludmFsaWQiKTsKKyAgICAgICAgcGFyc2UoQVNDSUlMaXRlcmFsKCJpbnZhbGlkIikp
OwogfQogCiBNZWRpYVF1ZXJ5U2V0OjpNZWRpYVF1ZXJ5U2V0KGNvbnN0IE1lZGlhUXVlcnlTZXQm
IG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCmluZGV4IDc0ZWJiODMuLjVmZTA1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xODEs
NyArMTgxLDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnQKICAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0
eUlEKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fcHJvcGVydHlTZXQt
PnByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlJRCkgPyAiaW1wb3J0YW50IiA6ICIiOworICAg
IHJldHVybiBtX3Byb3BlcnR5U2V0LT5wcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5SUQpID8g
QVNDSUlMaXRlcmFsKCJpbXBvcnRhbnQiKSA6ICIiOwogfQogCiBTdHJpbmcgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVNob3J0aGFuZChjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbgog
ICAgIGlmICghd2lsbE11dGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGltcG9y
dGFudCA9IHByaW9yaXR5LmZpbmQoImltcG9ydGFudCIsIDAsIGZhbHNlKSAhPSBub3RGb3VuZDsK
KyAgICBib29sIGltcG9ydGFudCA9IHByaW9yaXR5LmZpbmQoQVNDSUlMaXRlcmFsKCJpbXBvcnRh
bnQiKSwgMCwgZmFsc2UpICE9IG5vdEZvdW5kOwogCiAgICAgZWMgPSAwOwogICAgIGJvb2wgY2hh
bmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBv
cnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NvdXJjZVNpemVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Tb3VyY2VTaXplTGlz
dC5jcHAKaW5kZXggN2Q4NjJlMS4uMzBmNTY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NvdXJjZVNpemVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU291cmNlU2l6
ZUxpc3QuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgU291cmNlU2l6ZTo6bWF0Y2goUmVuZGVy
U3R5bGUmIHN0eWxlLCBGcmFtZSogZnJhbWUpCiAgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1l
ZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKTsKICAgICBtZWRpYVF1ZXJ5U2V0
LT5hZGRNZWRpYVF1ZXJ5KHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFRdWVyeT4oTWVkaWFRdWVyeTo6
Tm9uZSwgImFsbCIsIFdURjo6bW92ZShleHBMaXN0KSkpOwogCi0gICAgTWVkaWFRdWVyeUV2YWx1
YXRvciBtZWRpYVF1ZXJ5RXZhbHVhdG9yKCJzY3JlZW4iLCBmcmFtZSwgJnN0eWxlKTsKKyAgICBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yIG1lZGlhUXVlcnlFdmFsdWF0b3IoQVNDSUlMaXRlcmFsKCJzY3Jl
ZW4iKSwgZnJhbWUsICZzdHlsZSk7CiAgICAgcmV0dXJuIG1lZGlhUXVlcnlFdmFsdWF0b3IuZXZh
bChtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCmluZGV4IDMxNTRiODYuLjc0MTI2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5
bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNvbnN0IFJlbmRlclN0eWxlKiBlbAogICAgICAg
ICBzdGF0aWMgU3R5bGVLZXlmcmFtZSogemVyb1BlcmNlbnRLZXlmcmFtZTsKICAgICAgICAgaWYg
KCF6ZXJvUGVyY2VudEtleWZyYW1lKSB7CiAgICAgICAgICAgICB6ZXJvUGVyY2VudEtleWZyYW1l
ID0gU3R5bGVLZXlmcmFtZTo6Y3JlYXRlKE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgp
KS5sZWFrUmVmKCk7Ci0gICAgICAgICAgICB6ZXJvUGVyY2VudEtleWZyYW1lLT5zZXRLZXlUZXh0
KCIwJSIpOworICAgICAgICAgICAgemVyb1BlcmNlbnRLZXlmcmFtZS0+c2V0S2V5VGV4dChBU0NJ
SUxpdGVyYWwoIjAlIikpOwogICAgICAgICB9CiAgICAgICAgIEtleWZyYW1lVmFsdWUga2V5ZnJh
bWVWYWx1ZSgwLCAwKTsKICAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShzdHlsZUZvcktl
eWZyYW1lKGVsZW1lbnRTdHlsZSwgemVyb1BlcmNlbnRLZXlmcmFtZSwga2V5ZnJhbWVWYWx1ZSkp
OwpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJhbWVTdHlsZXNG
b3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqIGVsCiAgICAgICAgIHN0
YXRpYyBTdHlsZUtleWZyYW1lKiBodW5kcmVkUGVyY2VudEtleWZyYW1lOwogICAgICAgICBpZiAo
IWh1bmRyZWRQZXJjZW50S2V5ZnJhbWUpIHsKICAgICAgICAgICAgIGh1bmRyZWRQZXJjZW50S2V5
ZnJhbWUgPSBTdHlsZUtleWZyYW1lOjpjcmVhdGUoTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3Jl
YXRlKCkpLmxlYWtSZWYoKTsKLSAgICAgICAgICAgIGh1bmRyZWRQZXJjZW50S2V5ZnJhbWUtPnNl
dEtleVRleHQoIjEwMCUiKTsKKyAgICAgICAgICAgIGh1bmRyZWRQZXJjZW50S2V5ZnJhbWUtPnNl
dEtleVRleHQoQVNDSUlMaXRlcmFsKCIxMDAlIikpOwogICAgICAgICB9CiAgICAgICAgIEtleWZy
YW1lVmFsdWUga2V5ZnJhbWVWYWx1ZSgxLCAwKTsKICAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRT
dHlsZShzdHlsZUZvcktleWZyYW1lKGVsZW1lbnRTdHlsZSwgaHVuZHJlZFBlcmNlbnRLZXlmcmFt
ZSwga2V5ZnJhbWVWYWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRB
U2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAppbmRleCA0
YjM5NzJhLi5lYTUxZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmCiAKIFN0cmluZyBDREFUQVNlY3Rpb246
Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNjZGF0YS1zZWN0aW9uIjsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCIjY2RhdGEtc2VjdGlvbiIpOwogfQogCiBOb2RlOjpOb2RlVHlw
ZSBDREFUQVNlY3Rpb246Om5vZGVUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwCmluZGV4IGQ5MjI2MTguLjcxM2QzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIFBhc3NSZWZQdHI8
SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0
IFN0cmluZyYgdGl0CiB7CiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gZCA9IEhUTUxEb2N1bWVu
dDo6Y3JlYXRlKDAsIFVSTCgpKTsKICAgICBkLT5vcGVuKCk7Ci0gICAgZC0+d3JpdGUoIjwhZG9j
dHlwZSBodG1sPjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Iik7CisgICAgZC0+d3JpdGUoQVND
SUlMaXRlcmFsKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIpKTsK
ICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQogICAgICAgICBkLT5zZXRUaXRsZSh0aXRsZSk7CiAg
ICAgZC0+c2V0U2VjdXJpdHlPcmlnaW4obV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDlkMmYzNDUuLjgwYzdhYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbXBhdGli
aWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGUgbW9kZSkKIAogU3RyaW5nIERvY3Vt
ZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5RdWlya3NNb2RlKCkgPyAi
QmFja0NvbXBhdCIgOiAiQ1NTMUNvbXBhdCI7CisgICAgcmV0dXJuIGluUXVpcmtzTW9kZSgpID8g
QVNDSUlMaXRlcmFsKCJCYWNrQ29tcGF0IikgOiBBU0NJSUxpdGVyYWwoIkNTUzFDb21wYXQiKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IoKQpAQCAtODAxLDcgKzgwMSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcigpCiAKIHZvaWQgRG9jdW1lbnQ6
OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIHsKLSAgICBtX2FjdGl2ZUxpbmtDb2xvci5zZXROYW1l
ZENvbG9yKCJyZWQiKTsKKyAgICBtX2FjdGl2ZUxpbmtDb2xvci5zZXROYW1lZENvbG9yKEFTQ0lJ
TGl0ZXJhbCgicmVkIikpOwogfQogCiBET01JbXBsZW1lbnRhdGlvbiogRG9jdW1lbnQ6OmltcGxl
bWVudGF0aW9uKCkKQEAgLTEzMTUsNyArMTMxNSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRl
bnRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIERvY3VtZW50OjpzZXRY
TUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLT5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkpIHsK
KyAgICBpZiAoIWltcGxlbWVudGF0aW9uKCktPmhhc0ZlYXR1cmUoQVNDSUlMaXRlcmFsKCJYTUwi
KSwgU3RyaW5nKCkpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMzMwLDcgKzEzMzAsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRY
TUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZv
aWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBpZiAoIWltcGxlbWVudGF0aW9uKCktPmhhc0ZlYXR1cmUoIlhNTCIs
IFN0cmluZygpKSkgeworICAgIGlmICghaW1wbGVtZW50YXRpb24oKS0+aGFzRmVhdHVyZShBU0NJ
SUxpdGVyYWwoIlhNTCIpLCBTdHJpbmcoKSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1OTAsNyArMTU5MCw3IEBAIERPTVNl
Y3VyaXR5UG9saWN5KiBEb2N1bWVudDo6c2VjdXJpdHlQb2xpY3koKQogCiBTdHJpbmcgRG9jdW1l
bnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNkb2N1bWVudCI7CisgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiI2RvY3VtZW50Iik7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIERvY3Vt
ZW50Ojpub2RlVHlwZSgpIGNvbnN0CkBAIC0yNTUyLDcgKzI1NTIsNyBAQCB2b2lkIERvY3VtZW50
Ojp3cml0ZShjb25zdCBTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogdm9p
ZCBEb2N1bWVudDo6d3JpdGVsbihjb25zdCBTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRv
Y3VtZW50KQogewogICAgIHdyaXRlKHRleHQsIG93bmVyRG9jdW1lbnQpOwotICAgIHdyaXRlKCJc
biIsIG93bmVyRG9jdW1lbnQpOworICAgIHdyaXRlKEFTQ0lJTGl0ZXJhbCgiXG4iKSwgb3duZXJE
b2N1bWVudCk7CiB9CiAKIGRvdWJsZSBEb2N1bWVudDo6bWluaW11bVRpbWVySW50ZXJ2YWwoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDdiMWJhM2Eu
LjEwNzlmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudEZyYWdtZW50
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY28KIAogU3RyaW5nIERvY3VtZW50RnJh
Z21lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNkb2N1bWVudC1mcmFnbWVu
dCI7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiI2RvY3VtZW50LWZyYWdtZW50Iik7CiB9CiAK
IE5vZGU6Ok5vZGVUeXBlIERvY3VtZW50RnJhZ21lbnQ6Om5vZGVUeXBlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApp
bmRleCBkYzVjNDcyLi42NmVlMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVj
dG9yPFJlZlB0cjxTdHlsZVMKICAgICAgICAgICAgICAgICBpZiAobGlua0VsZW1lbnQuc3R5bGVT
aGVldElzTG9hZGluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGlzIGxvYWRpbmcg
YnV0IHdlIHNob3VsZCBzdGlsbCBkZWNpZGUgd2hpY2ggc3R5bGUgc2hlZXQgc2V0IHRvIHVzZQog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWVuYWJsZWRWaWFTY3JpcHQgJiYgIXRpdGxlLmlzRW1w
dHkoKSAmJiBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rRWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKHJlbEF0
dHIpLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFsaW5rRWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKHJlbEF0dHIpLmNvbnRhaW5zKEFTQ0lJTGl0
ZXJhbCgiYWx0ZXJuYXRlIikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmVm
ZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMzIyLDE0ICszMjIsMTQgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVMK
ICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIE5PVCBhbiBhbHRlcm5hdGUgc2hlZXQsIHRo
ZW4gZXN0YWJsaXNoCiAgICAgICAgICAgICAgICAgICAgIC8vIHVzIGFzIHRoZSBwcmVmZXJyZWQg
c2V0LiBPdGhlcndpc2UsIGp1c3QgaWdub3JlCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMg
c2hlZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmIChpc0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVu
dCkgfHwgIXJlbC5jb250YWlucygiYWx0ZXJuYXRlIikpCisgICAgICAgICAgICAgICAgICAgIGlm
IChpc0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVudCkgfHwgIXJlbC5jb250YWlucyhBU0NJSUxpdGVy
YWwoImFsdGVybmF0ZSIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJlZmVycmVkU3R5
bGVzaGVldFNldE5hbWUgPSBtX3NlbGVjdGVkU3R5bGVzaGVldFNldE5hbWUgPSB0aXRsZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHRpdGxlICE9IG1fcHJlZmVycmVk
U3R5bGVzaGVldFNldE5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHNoZWV0ID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHJlbC5jb250YWlucygiYWx0ZXJuYXRl
IikgJiYgdGl0bGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKHJlbC5jb250YWlucyhBU0NJ
SUxpdGVyYWwoImFsdGVybmF0ZSIpKSAmJiB0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgc2hlZXQgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaGVldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCBhMjMwNTkzLi43YjU4YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNjI5
LDcgKzE2MjksNyBAQCB2b2lkIE5vZGU6OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwg
dW5zaWduZWQgbGVuZ3RoKSBjb25zdAogCiAgICAgcyA9IG5vZGVOYW1lKCk7CiAgICAgaWYgKHMu
aXNFbXB0eSgpKQotICAgICAgICByZXN1bHQgPSAiPG5vbmU+IjsKKyAgICAgICAgcmVzdWx0ID0g
QVNDSUlMaXRlcmFsKCI8bm9uZT4iKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggZDZk
ZGRjYi4uMjg0YWVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNo
ZWNrU3R5bGVTaGVldCgpCiAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGF0
dHJzID0gcGFyc2VBdHRyaWJ1dGVzKGRhdGEoKSwgYXR0cnNPayk7CiAgICAgICAgIGlmICghYXR0
cnNPaykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhdHRycy5maW5kKCJ0eXBlIik7CisgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gYXR0cnMuZmluZChBU0NJSUxp
dGVyYWwoInR5cGUiKSk7CiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBpZiAoaSAhPSBh
dHRycy5lbmQoKSkKICAgICAgICAgICAgIHR5cGUgPSBpLT52YWx1ZTsKQEAgLTExMSwxMSArMTEx
LDExIEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogI2Vu
ZGlmCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgU3RyaW5nIGhyZWYgPSBhdHRycy5n
ZXQoImhyZWYiKTsKLSAgICAgICAgU3RyaW5nIGFsdGVybmF0ZSA9IGF0dHJzLmdldCgiYWx0ZXJu
YXRlIik7CisgICAgICAgIFN0cmluZyBocmVmID0gYXR0cnMuZ2V0KEFTQ0lJTGl0ZXJhbCgiaHJl
ZiIpKTsKKyAgICAgICAgU3RyaW5nIGFsdGVybmF0ZSA9IGF0dHJzLmdldChBU0NJSUxpdGVyYWwo
ImFsdGVybmF0ZSIpKTsKICAgICAgICAgbV9hbHRlcm5hdGUgPSBhbHRlcm5hdGUgPT0gInllcyI7
Ci0gICAgICAgIG1fdGl0bGUgPSBhdHRycy5nZXQoInRpdGxlIik7Ci0gICAgICAgIG1fbWVkaWEg
PSBhdHRycy5nZXQoIm1lZGlhIik7CisgICAgICAgIG1fdGl0bGUgPSBhdHRycy5nZXQoQVNDSUlM
aXRlcmFsKCJ0aXRsZSIpKTsKKyAgICAgICAgbV9tZWRpYSA9IGF0dHJzLmdldChBU0NJSUxpdGVy
YWwoIm1lZGlhIikpOwogCiAgICAgICAgIGlmIChtX2FsdGVybmF0ZSAmJiBtX3RpdGxlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAgICAgIGVsc2UKICNl
bmRpZgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0
cnMuZ2V0KCJjaGFyc2V0Iik7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRy
cy5nZXQoQVNDSUlMaXRlcmFsKCJjaGFyc2V0IikpOwogICAgICAgICAgICAgICAgIGlmIChjaGFy
c2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGRvY3VtZW50KCku
Y2hhcnNldCgpOwogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2hhcnNldChjaGFyc2V0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCA3MmM3Y2QwLi4zMTMxNmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0xMTcsMTkgKzExNywxOSBAQCBz
dGF0aWMgYm9vbCBpc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZShjb25zdCBTdHJp
bmcmIGxhbmd1YWdlKQogICAgIHR5cGVkZWYgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFz
aD4gTGFuZ3VhZ2VTZXQ7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExhbmd1
YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKICAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewot
ICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5h
ZGQoImphdmFzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMCIp
OwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS4xIik7Ci0gICAgICAgIGxhbmd1
YWdlcy5hZGQoImphdmFzY3JpcHQxLjIiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNj
cmlwdDEuMyIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS40Iik7Ci0gICAg
ICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjUiKTsKLSAgICAgICAgbGFuZ3VhZ2VzLmFk
ZCgiamF2YXNjcmlwdDEuNiIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS43
Iik7Ci0gICAgICAgIGxhbmd1YWdlcy5hZGQoImxpdmVzY3JpcHQiKTsKLSAgICAgICAgbGFuZ3Vh
Z2VzLmFkZCgiZWNtYXNjcmlwdCIpOwotICAgICAgICBsYW5ndWFnZXMuYWRkKCJqc2NyaXB0Iik7
CisgICAgICAgIGxhbmd1YWdlcy5hZGQoQVNDSUlMaXRlcmFsKCJqYXZhc2NyaXB0IikpOworICAg
ICAgICBsYW5ndWFnZXMuYWRkKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdCIpKTsKKyAgICAgICAg
bGFuZ3VhZ2VzLmFkZChBU0NJSUxpdGVyYWwoImphdmFzY3JpcHQxLjAiKSk7CisgICAgICAgIGxh
bmd1YWdlcy5hZGQoQVNDSUlMaXRlcmFsKCJqYXZhc2NyaXB0MS4xIikpOworICAgICAgICBsYW5n
dWFnZXMuYWRkKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDEuMiIpKTsKKyAgICAgICAgbGFuZ3Vh
Z2VzLmFkZChBU0NJSUxpdGVyYWwoImphdmFzY3JpcHQxLjMiKSk7CisgICAgICAgIGxhbmd1YWdl
cy5hZGQoQVNDSUlMaXRlcmFsKCJqYXZhc2NyaXB0MS40IikpOworICAgICAgICBsYW5ndWFnZXMu
YWRkKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlwdDEuNSIpKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFk
ZChBU0NJSUxpdGVyYWwoImphdmFzY3JpcHQxLjYiKSk7CisgICAgICAgIGxhbmd1YWdlcy5hZGQo
QVNDSUlMaXRlcmFsKCJqYXZhc2NyaXB0MS43IikpOworICAgICAgICBsYW5ndWFnZXMuYWRkKEFT
Q0lJTGl0ZXJhbCgibGl2ZXNjcmlwdCIpKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFkZChBU0NJSUxp
dGVyYWwoImVjbWFzY3JpcHQiKSk7CisgICAgICAgIGxhbmd1YWdlcy5hZGQoQVNDSUlMaXRlcmFs
KCJqc2NyaXB0IikpOwogICAgIH0KIAogICAgIHJldHVybiBsYW5ndWFnZXMuY29udGFpbnMobGFu
Z3VhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CmluZGV4IDk1MWM4MDkuLjQ0YmZlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTMzNyw3ICszMzcsNyBAQCBib29sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnNhbml0aXplU2NyaXB0RXJyb3IoU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCYgbGluZQogICAgIFVSTCB0YXJnZXRVUkwgPSBjb21wbGV0ZVVSTChzb3VyY2VVUkwpOwogICAg
IGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHRhcmdldFVSTCkgfHwgKGNhY2hlZFNj
cmlwdCAmJiBjYWNoZWRTY3JpcHQtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhzZWN1cml0eU9y
aWdpbigpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBlcnJvck1lc3NhZ2UgPSAiU2Ny
aXB0IGVycm9yLiI7CisgICAgZXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJTY3JpcHQgZXJy
b3IuIik7CiAgICAgc291cmNlVVJMID0gU3RyaW5nKCk7CiAgICAgbGluZU51bWJlciA9IDA7CiAg
ICAgY29sdW1uTnVtYmVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMu
Y3BwCmluZGV4IGM3ZWJkMWYuLmNhYjM5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcApAQCAtNDUxLDEyICs0NTEsMTIgQEAgdm9pZCByZXBvcnRWaWV3cG9ydFdh
cm5pbmcoRG9jdW1lbnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNv
bnMKIAogICAgIFN0cmluZyBtZXNzYWdlID0gdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShl
cnJvckNvZGUpOwogICAgIGlmICghcmVwbGFjZW1lbnQxLmlzTnVsbCgpKQotICAgICAgICBtZXNz
YWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudDEiLCByZXBsYWNlbWVudDEpOworICAgICAgICBtZXNz
YWdlLnJlcGxhY2UoQVNDSUlMaXRlcmFsKCIlcmVwbGFjZW1lbnQxIiksIHJlcGxhY2VtZW50MSk7
CiAgICAgaWYgKCFyZXBsYWNlbWVudDIuaXNOdWxsKCkpCi0gICAgICAgIG1lc3NhZ2UucmVwbGFj
ZSgiJXJlcGxhY2VtZW50MiIsIHJlcGxhY2VtZW50Mik7CisgICAgICAgIG1lc3NhZ2UucmVwbGFj
ZShBU0NJSUxpdGVyYWwoIiVyZXBsYWNlbWVudDIiKSwgcmVwbGFjZW1lbnQyKTsKIAogICAgIGlm
ICgoZXJyb3JDb2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yIHx8
IGVycm9yQ29kZSA9PSBUcnVuY2F0ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcikgJiYgcmVw
bGFjZW1lbnQxLmZpbmQoJzsnKSAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBtZXNzYWdlLmFw
cGVuZCgiIE5vdGUgdGhhdCAnOycgaXMgbm90IGEgc2VwYXJhdG9yIGluIHZpZXdwb3J0IHZhbHVl
cy4gVGhlIGxpc3Qgc2hvdWxkIGJlIGNvbW1hLXNlcGFyYXRlZC4iKTsKKyAgICAgICAgbWVzc2Fn
ZS5hcHBlbmQoQVNDSUlMaXRlcmFsKCIgTm90ZSB0aGF0ICc7JyBpcyBub3QgYSBzZXBhcmF0b3Ig
aW4gdmlld3BvcnQgdmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJhdGVkLiIp
KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIG1vdmVkIG9mZiB0aGUg
Y29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJv
ckNvZGUpLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3NDI1ZjYz
Li43NDRiM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMjUxLDcgKzEyNTEs
NyBAQCBib29sIEVkaXRvcjo6aW5zZXJ0TGluZUJyZWFrKCkKICAgICBpZiAoIWNhbkVkaXQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFzaG91bGRJbnNlcnRUZXh0KCJcbiIs
IG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5z
ZXJ0QWN0aW9uVHlwZWQpKQorICAgIGlmICghc2hvdWxkSW5zZXJ0VGV4dChBU0NJSUxpdGVyYWwo
IlxuIiksIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRp
dG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFZpc2li
bGVQb3NpdGlvbiBjYXJldCA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCk7CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yKCkKICAgICBpZiAoIWNhbkVkaXRSaWNobHkoKSkKICAgICAgICAgcmV0dXJu
IGluc2VydExpbmVCcmVhaygpOwogCi0gICAgaWYgKCFzaG91bGRJbnNlcnRUZXh0KCJcbiIsIG1f
ZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0
QWN0aW9uVHlwZWQpKQorICAgIGlmICghc2hvdWxkSW5zZXJ0VGV4dChBU0NJSUxpdGVyYWwoIlxu
IiksIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uVHlwZWQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFZpc2libGVQ
b3NpdGlvbiBjYXJldCA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0
YXJ0KCk7CkBAIC0xNjQ1LDEyICsxNjQ1LDEyIEBAIHZvaWQgRWRpdG9yOjpkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpCiAKIHZvaWQgRWRpdG9yOjp0b2dnbGVCb2xkKCkKIHsKLSAgICBj
b21tYW5kKCJUb2dnbGVCb2xkIikuZXhlY3V0ZSgpOworICAgIGNvbW1hbmQoQVNDSUlMaXRlcmFs
KCJUb2dnbGVCb2xkIikpLmV4ZWN1dGUoKTsKIH0KIAogdm9pZCBFZGl0b3I6OnRvZ2dsZVVuZGVy
bGluZSgpCiB7Ci0gICAgY29tbWFuZCgiVG9nZ2xlVW5kZXJsaW5lIikuZXhlY3V0ZSgpOworICAg
IGNvbW1hbmQoQVNDSUlMaXRlcmFsKCJUb2dnbGVVbmRlcmxpbmUiKSkuZXhlY3V0ZSgpOwogfQog
CiB2b2lkIEVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0xNjcyLDcgKzE2NzIsNyBAQCB2b2lkIEVkaXRvcjo6c2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgfQogCiAgICAgUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGll
czo6Y3JlYXRlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9u
LCBkaXJlY3Rpb24gPT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uID8gImx0ciIgOiBkaXJl
Y3Rpb24gPT0gUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uID8gInJ0bCIgOiAiaW5oZXJpdCIs
IGZhbHNlKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRp
cmVjdGlvbiA9PSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gPyBBU0NJSUxpdGVyYWwoImx0
ciIpIDogZGlyZWN0aW9uID09IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbiA/IEFTQ0lJTGl0
ZXJhbCgicnRsIikgOiBBU0NJSUxpdGVyYWwoImluaGVyaXQiKSwgZmFsc2UpOwogICAgIGFwcGx5
UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRp
bmdEaXJlY3Rpb24pOwogfQogCkBAIC0zMTE1LDkgKzMxMTUsOSBAQCB2b2lkIEVkaXRvcjo6YXBw
bHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIAogICAgIC8v
IE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQg
YmVoYXZpb3IgYXMgYSBzY3JpcHQuCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSB0
b1N0eWxlZEVsZW1lbnQoZWxlbWVudCktPnN0eWxlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5
SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSwgSUdOT1JF
X0VYQ0VQVElPTik7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0
ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgc3R5bGUtPnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQVNDSUlMaXRlcmFsKCJicmVh
ay13b3JkIiksIGZhbHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVy
dHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBBU0NJSUxpdGVyYWwoInNwYWNl
IiksIGZhbHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQVNDSUlMaXRlcmFsKCJhZnRlci13aGl0
ZS1zcGFjZSIpLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIGJvb2wgRWRpdG9yOjpm
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMjVkOGUxYi4uODBhZWQ0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC00OTIsNyAr
NDkyLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluZGVudChGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW4KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUlu
c2VydEJhY2t0YWIoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHRhcmdldEZyYW1lKGZyYW1lLCBldmVu
dCktPmV2ZW50SGFuZGxlcigpLmhhbmRsZVRleHRJbnB1dEV2ZW50KCJcdCIsIGV2ZW50LCBUZXh0
RXZlbnRJbnB1dEJhY2tUYWIpOworICAgIHJldHVybiB0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQp
LT5ldmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0SW5wdXRFdmVudChBU0NJSUxpdGVyYWwoIlx0Iiks
IGV2ZW50LCBUZXh0RXZlbnRJbnB1dEJhY2tUYWIpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
SW5zZXJ0SG9yaXpvbnRhbFJ1bGUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC01MjAsNyArNTIwLDcgQEAgc3RhdGljIGJv
b2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXIKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFu
ZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUoZnJhbWUs
IGV2ZW50KS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQs
IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lKGZy
YW1lLCBldmVudCktPmV2ZW50SGFuZGxlcigpLmhhbmRsZVRleHRJbnB1dEV2ZW50KEFTQ0lJTGl0
ZXJhbCgiXG4iKSwgZXZlbnQsIFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKICAgICBjYXNlIENv
bW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToK
ICAgICAgICAgLy8gRG9lc24ndCBzY3JvbGwgdG8gbWFrZSB0aGUgc2VsZWN0aW9uIHZpc2libGUs
IG9yIG1vZGlmeSB0aGUga2lsbCByaW5nLgpAQCAtNTM2LDcgKzUzNiw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnRMaW5lQnJlYWsoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRv
ckNvbW1hbmRTb3VyCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0TmV3bGluZShGcmFtZSYgZnJh
bWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
ICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBXZWJDb3JlOjp0YXJnZXRGcmFtZShmcmFtZSwgZXZl
bnQpOwotICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlVGV4dElu
cHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5
KCkgPyBUZXh0RXZlbnRJbnB1dEtleWJvYXJkIDogVGV4dEV2ZW50SW5wdXRMaW5lQnJlYWspOwor
ICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlVGV4dElucHV0RXZl
bnQoQVNDSUlMaXRlcmFsKCJcbiIpLCBldmVudCwgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVk
aXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dExpbmVC
cmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnROZXdsaW5lSW5RdW90ZWRDb250
ZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQpAQCAtNTYwLDcgKzU2MCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRQYXJhZ3Jh
cGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvCiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVJbnNlcnRUYWIoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHRhcmdldEZyYW1l
KGZyYW1lLCBldmVudCktPmV2ZW50SGFuZGxlcigpLmhhbmRsZVRleHRJbnB1dEV2ZW50KCJcdCIs
IGV2ZW50KTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUoZnJhbWUsIGV2ZW50KS0+ZXZlbnRIYW5k
bGVyKCkuaGFuZGxlVGV4dElucHV0RXZlbnQoQVNDSUlMaXRlcmFsKCJcdCIpLCBldmVudCk7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRUZXh0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNTc4LDIyICs1Nzgs
MjIgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydFVub3JkZXJlZExpc3QoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUp1c3Rp
ZnlDZW50ZXIoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHls
ZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uQ2VudGVyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwg
ImNlbnRlciIpOworICAgIHJldHVybiBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShmcmFtZSwg
c291cmNlLCBFZGl0QWN0aW9uQ2VudGVyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQVNDSUlMaXRl
cmFsKCJjZW50ZXIiKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVKdXN0aWZ5RnVsbChGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgcmV0dXJuIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKGZyYW1lLCBzb3Vy
Y2UsIEVkaXRBY3Rpb25KdXN0aWZ5LCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgImp1c3RpZnkiKTsK
KyAgICByZXR1cm4gZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRp
dEFjdGlvbkp1c3RpZnksIENTU1Byb3BlcnR5VGV4dEFsaWduLCBBU0NJSUxpdGVyYWwoImp1c3Rp
ZnkiKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVKdXN0aWZ5TGVmdChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRB
Y3Rpb25BbGlnbkxlZnQsIENTU1Byb3BlcnR5VGV4dEFsaWduLCAibGVmdCIpOworICAgIHJldHVy
biBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uQWxp
Z25MZWZ0LCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQVNDSUlMaXRlcmFsKCJsZWZ0IikpOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlSnVzdGlmeVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4g
ZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlvbkFsaWdu
UmlnaHQsIENTU1Byb3BlcnR5VGV4dEFsaWduLCAicmlnaHQiKTsKKyAgICByZXR1cm4gZXhlY3V0
ZUFwcGx5UGFyYWdyYXBoU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlvbkFsaWduUmlnaHQs
IENTU1Byb3BlcnR5VGV4dEFsaWduLCBBU0NJSUxpdGVyYWwoInJpZ2h0IikpOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUm
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC0x
MTQ2LDcgKzExNDYsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVW5saW5rKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbgogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlVW5zY3JpcHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ug
c291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleGVjdXRlQXBwbHlTdHlsZShm
cmFtZSwgc291cmNlLCBFZGl0QWN0aW9uVW5zY3JpcHQsIENTU1Byb3BlcnR5VmVydGljYWxBbGln
biwgImJhc2VsaW5lIik7CisgICAgcmV0dXJuIGV4ZWN1dGVBcHBseVN0eWxlKGZyYW1lLCBzb3Vy
Y2UsIEVkaXRBY3Rpb25VbnNjcmlwdCwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBBU0NJSUxp
dGVyYWwoImJhc2VsaW5lIikpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlVW5zZWxlY3QoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBA
IC0xNzc5LDcgKzE3NzksNyBAQCBTdHJpbmcgRWRpdG9yOjpDb21tYW5kOjp2YWx1ZShFdmVudCog
dHJpZ2dlcmluZ0V2ZW50KSBjb25zdAogICAgIGlmICghaXNTdXBwb3J0ZWQoKSB8fCAhbV9mcmFt
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmIChtX2NvbW1hbmQtPnZhbHVlID09
IHZhbHVlTnVsbCAmJiBtX2NvbW1hbmQtPnN0YXRlICE9IHN0YXRlTm9uZSkKLSAgICAgICAgcmV0
dXJuIG1fY29tbWFuZC0+c3RhdGUoKm1fZnJhbWUsIHRyaWdnZXJpbmdFdmVudCkgPT0gVHJ1ZVRy
aVN0YXRlID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAgcmV0dXJuIG1fY29tbWFuZC0+c3Rh
dGUoKm1fZnJhbWUsIHRyaWdnZXJpbmdFdmVudCkgPT0gVHJ1ZVRyaVN0YXRlID8gQVNDSUlMaXRl
cmFsKCJ0cnVlIikgOiBBU0NJSUxpdGVyYWwoImZhbHNlIik7CiAgICAgcmV0dXJuIG1fY29tbWFu
ZC0+dmFsdWUoKm1fZnJhbWUsIHRyaWdnZXJpbmdFdmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGU1NjM5NTAu
LmQxMzk3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKHNob3VsZFVzZUJyZWFrRWxlbWVudChwb3MpKQogICAg
ICAgICBub2RlVG9JbnNlcnQgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAg
ZWxzZQotICAgICAgICBub2RlVG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJc
biIpOworICAgICAgICBub2RlVG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKEFT
Q0lJTGl0ZXJhbCgiXG4iKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4
dCBub2RlcyB3aGVuIGluc2VydGluZyBqdXN0IGFmdGVyIG9yIGJlZm9yZSB0ZXh0LgogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCAyN2U4
OTM0Li4xYTI0MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRl
eHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIFBvc2l0aW9uIEluc2VydFRleHRDb21tYW5kOjpp
bnNlcnRUYWIoY29uc3QgUG9zaXRpb24mIHBvcykKICAgICAvLyBrZWVwIHRhYnMgY29hbGVzY2Vk
IGluIHRhYiBzcGFuCiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7CiAgICAgICAg
IFJlZlB0cjxUZXh0PiB0ZXh0Tm9kZSA9IHRvVGV4dChub2RlKTsKLSAgICAgICAgaW5zZXJ0VGV4
dEludG9Ob2RlKHRleHROb2RlLCBvZmZzZXQsICJcdCIpOworICAgICAgICBpbnNlcnRUZXh0SW50
b05vZGUodGV4dE5vZGUsIG9mZnNldCwgQVNDSUlMaXRlcmFsKCJcdCIpKTsKICAgICAgICAgcmV0
dXJuIFBvc2l0aW9uKHRleHROb2RlLnJlbGVhc2UoKSwgb2Zmc2V0ICsgMSk7CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCBkMDE5ZDIxLi41YjA5ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTU1LDkgKzU1NSw5IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBT
dHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAKICAgICAgICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUg
Q1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3Jp
cHQuCiAgICAgICAgICAgICBpZiAoaXNCbG9jayhlbGVtZW50KSkKLSAgICAgICAgICAgICAgICBl
bGVtZW50LT5zdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxheSwg
ImlubGluZSIsIGZhbHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAgICBlbGVt
ZW50LT5zdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxheSwgQVND
SUlMaXRlcmFsKCJpbmxpbmUiKSwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUo
KS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+c3R5bGUoKS0+c2V0UHJv
cGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCAibm9uZSIsIGZhbHNlLCBJR05PUkVfRVhD
RVBUSU9OKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5zdHlsZSgpLT5zZXRQcm9wZXJ0eUlu
dGVybmFsKENTU1Byb3BlcnR5RmxvYXQsIEFTQ0lJTGl0ZXJhbCgibm9uZSIpLCBmYWxzZSwgSUdO
T1JFX0VYQ0VQVElPTik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMzAzLDExICsxMzAzLDEx
IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmFkZFNwYWNlc0ZvclNtYXJ0UmVwbGFj
ZSgpCiAgICAgaWYgKG5lZWRzVHJhaWxpbmdTcGFjZSAmJiBlbmROb2RlKSB7CiAgICAgICAgIGJv
b2wgY29sbGFwc2VXaGl0ZVNwYWNlID0gIWVuZE5vZGUtPnJlbmRlcmVyKCkgfHwgZW5kTm9kZS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKICAgICAgICAgaWYgKGVu
ZE5vZGUtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRv
VGV4dChlbmROb2RlKSwgZW5kT2Zmc2V0LCBjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2lu
Z1NwYWNlU3RyaW5nKCkgOiAiICIpOworICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRv
VGV4dChlbmROb2RlKSwgZW5kT2Zmc2V0LCBjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2lu
Z1NwYWNlU3RyaW5nKCkgOiBBU0NJSUxpdGVyYWwoIiAiKSk7CiAgICAgICAgICAgICBpZiAobV9l
bmRPZkluc2VydGVkQ29udGVudC5jb250YWluZXJOb2RlKCkgPT0gZW5kTm9kZSkKICAgICAgICAg
ICAgICAgICBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNldChtX2VuZE9mSW5zZXJ0
ZWRDb250ZW50Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGlu
Z1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6
ICIgIik7CisgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRl
RWRpdGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJp
bmcoKSA6IEFTQ0lJTGl0ZXJhbCgiICIpKTsKICAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihu
b2RlLCBlbmROb2RlKTsKICAgICAgICAgICAgIHVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5nZXQo
KSk7CiAgICAgICAgIH0KQEAgLTEzMjcsMTEgKzEzMjcsMTEgQEAgdm9pZCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6YWRkU3BhY2VzRm9yU21hcnRSZXBsYWNlKCkKICAgICBpZiAobmVlZHNMZWFk
aW5nU3BhY2UgJiYgc3RhcnROb2RlKSB7CiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNl
ID0gIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSB8fCBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkuY29sbGFwc2VXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmIChzdGFydE5vZGUtPmlzVGV4dE5v
ZGUoKSkgewotICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRvVGV4dChzdGFydE5vZGUp
LCBzdGFydE9mZnNldCwgY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpIDogIiAiKTsKKyAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0b1RleHQoc3RhcnRO
b2RlKSwgc3RhcnRPZmZzZXQsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKSA6IEFTQ0lJTGl0ZXJhbCgiICIpKTsKICAgICAgICAgICAgIGlmIChtX2VuZE9mSW5z
ZXJ0ZWRDb250ZW50LmNvbnRhaW5lck5vZGUoKSA9PSBzdGFydE5vZGUgJiYgbV9lbmRPZkluc2Vy
dGVkQ29udGVudC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgICAgICBtX2Vu
ZE9mSW5zZXJ0ZWRDb250ZW50Lm1vdmVUb09mZnNldChtX2VuZE9mSW5zZXJ0ZWRDb250ZW50Lm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpICsgMSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGNv
bGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CisgICAg
ICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHRO
b2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6IEFTQ0lJ
TGl0ZXJhbCgiICIpKTsKICAgICAgICAgICAgIC8vIERvbid0IHVwZGF0ZU5vZGVzSW5zZXJ0ZWQu
IERvaW5nIHNvIHdvdWxkIHNldCBtX2VuZE9mSW5zZXJ0ZWRDb250ZW50IHRvIGJlIHRoZSBub2Rl
IGNvbnRhaW5pbmcgdGhlIGxlYWRpbmcgc3BhY2UsCiAgICAgICAgICAgICAvLyBidXQgbV9lbmRP
Zkluc2VydGVkQ29udGVudCBpcyBzdXBwb3NlZCB0byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVkIGNv
bnRlbnQuCiAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGUsIHN0YXJ0Tm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5j
cHAKaW5kZXggZmQ3MjE5ZC4uNzJjYjJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29s
IGNhbkFwcGVuZE5ld0xpbmVGZWVkVG9TZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIFJlZlB0cjxCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudD4gZXZlbnQgPSBCZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudDo6Y3JlYXRlKFN0cmluZygiXG4iKSk7CisgICAgUmVmUHRyPEJlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50PiBldmVudCA9IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OjpjcmVhdGUoQVND
SUlMaXRlcmFsKCJcbiIpKTsKICAgICBub2RlLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBJR05PUkVf
RVhDRVBUSU9OKTsKICAgICByZXR1cm4gZXZlbnQtPnRleHQoKS5sZW5ndGgoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCA2ZDRkNjhl
Li4zNDVjODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCkBAIC03NjEsNyArNzYxLDcgQEAgU3RyaW5nIEhUTUxDb252ZXJ0ZXJDYWNoZXM6OnBy
b3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmIG5vZGUsIENTU1Byb3BlcnR5SUQgcHJvcGUKICAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKICAgICAg
ICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShoZWFkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
c2NyaXB0VGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUobm9mcmFtZXNUYWcpKQotICAgICAgICAgICAgcmV0dXJuICJub25lIjsKKyAgICAg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm5vbmUiKTsKICAgICAgICAgZWxzZSBpZiAoZWxl
bWVudC5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShibG9ja3F1
b3RlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYm9keVRhZykgfHwgZWxlbWVudC5oYXNUYWdO
YW1lKGNlbnRlclRhZykKICAgICAgICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZGRUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXJUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkaXZU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShkbFRhZykKICAgICAgICAgICAgICB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoZHRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShmaWVsZHNldFRhZykgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShmcmFtZVRh
ZykKQEAgLTc2OSw2MiArNzY5LDYyIEBAIFN0cmluZyBIVE1MQ29udmVydGVyQ2FjaGVzOjpwcm9w
ZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgICAg
ICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGgyVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
aDNUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShoNFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KGg1VGFnKQogICAgICAgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShoNlRhZykgfHwgZWxl
bWVudC5oYXNUYWdOYW1lKGlmcmFtZVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKG1lbnVUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShub3NjcmlwdFRhZykKICAgICAgICAgICAgICB8fCBlbGVt
ZW50Lmhhc1RhZ05hbWUob2xUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShwVGFnKSB8fCBlbGVt
ZW50Lmhhc1RhZ05hbWUocHJlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUodWxUYWcpKQotICAg
ICAgICAgICAgcmV0dXJuICJibG9jayI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJibG9jayIpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUobGlUYWcpKQot
ICAgICAgICAgICAgcmV0dXJuICJsaXN0LWl0ZW0iOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgibGlzdC1pdGVtIik7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFnTmFt
ZSh0YWJsZVRhZykpCi0gICAgICAgICAgICByZXR1cm4gInRhYmxlIjsKKyAgICAgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoInRhYmxlIik7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFz
VGFnTmFtZSh0clRhZykpCi0gICAgICAgICAgICByZXR1cm4gInRhYmxlLXJvdyI7CisgICAgICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0YWJsZS1yb3ciKTsKICAgICAgICAgZWxzZSBpZiAo
ZWxlbWVudC5oYXNUYWdOYW1lKHRoVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUodGRUYWcpKQot
ICAgICAgICAgICAgcmV0dXJuICJ0YWJsZS1jZWxsIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoInRhYmxlLWNlbGwiKTsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdO
YW1lKHRoZWFkVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAidGFibGUtaGVhZGVyLWdyb3VwIjsK
KyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRhYmxlLWhlYWRlci1ncm91cCIpOwog
ICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUodGJvZHlUYWcpKQotICAgICAgICAg
ICAgcmV0dXJuICJ0YWJsZS1yb3ctZ3JvdXAiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgidGFibGUtcm93LWdyb3VwIik7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFn
TmFtZSh0Zm9vdFRhZykpCi0gICAgICAgICAgICByZXR1cm4gInRhYmxlLWZvb3Rlci1ncm91cCI7
CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0YWJsZS1mb290ZXItZ3JvdXAiKTsK
ICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGNvbFRhZykpCi0gICAgICAgICAg
ICByZXR1cm4gInRhYmxlLWNvbHVtbiI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJ0YWJsZS1jb2x1bW4iKTsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGNv
bGdyb3VwVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAidGFibGUtY29sdW1uLWdyb3VwIjsKKyAg
ICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRhYmxlLWNvbHVtbi1ncm91cCIpOwogICAg
ICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCi0gICAgICAgICAg
ICByZXR1cm4gInRhYmxlLWNhcHRpb24iOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgidGFibGUtY2FwdGlvbiIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2hpdGVTcGFjZToKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShwcmVUYWcpKQotICAg
ICAgICAgICAgcmV0dXJuICJwcmUiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
cHJlIik7CiAgICAgICAgIGluaGVyaXQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFN0eWxlOgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGlU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShjaXRlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
ZW1UYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh2YXJUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShhZGRyZXNzVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAiaXRhbGljIjsKKyAgICAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIml0YWxpYyIpOwogICAgICAgICBpbmhlcml0ID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CiAgICAgICAg
IGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYlRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHN0cm9u
Z1RhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRoVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAi
Ym9sZGVyIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImJvbGRlciIpOwogICAg
ICAgICBpbmhlcml0ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uOgogICAgICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKHVUYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShpbnNUYWcpKQotICAgICAgICAgICAgcmV0dXJuICJ1bmRlcmxp
bmUiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidW5kZXJsaW5lIik7CiAgICAg
ICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShzVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoc3RyaWtlVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZGVsVGFnKSkKLSAgICAgICAgICAg
IHJldHVybiAibGluZS10aHJvdWdoIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
ImxpbmUtdGhyb3VnaCIpOwogICAgICAgICBpbmhlcml0ID0gdHJ1ZTsgLy8gRklYTUU6IFRoaXMg
aXMgbm90IHN0cmljdGx5IGNvcnJlY3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRBbGlnbjoKICAgICAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShjZW50ZXJUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShjYXB0aW9uVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
dGhUYWcpKQotICAgICAgICAgICAgcmV0dXJuICJjZW50ZXIiOworICAgICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiY2VudGVyIik7CiAgICAgICAgIGluaGVyaXQgPSB0cnVlOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKICAgICAgICAgaWYg
KGVsZW1lbnQuaGFzVGFnTmFtZShzdXBUYWcpKQotICAgICAgICAgICAgcmV0dXJuICJzdXBlciI7
CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzdXBlciIpOwogICAgICAgICBlbHNl
IGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoc3ViVGFnKSkKLSAgICAgICAgICAgIHJldHVybiAic3Vi
IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInN1YiIpOwogICAgICAgICBlbHNl
IGlmIChlbGVtZW50Lmhhc1RhZ05hbWUodGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0
Ym9keVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRmb290VGFnKSkKLSAgICAgICAgICAgIHJl
dHVybiAibWlkZGxlIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm1pZGRsZSIp
OwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZSh0aFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSkKICAgICAgICAg
ICAgIGluaGVyaXQgPSB0cnVlOwogICAgICAgICBicmVhazsKQEAgLTEyMzAsMTkgKzEyMzAsMTkg
QEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBTdHJpbmcgZm9udExpZ2F0dXJlcyA9IF9jYWNo
ZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0Rm9udFZh
cmlhbnRMaWdhdHVyZXMpOwogICAgIGlmIChmb250TGlnYXR1cmVzLmxlbmd0aCgpKSB7Ci0gICAg
ICAgIGlmIChmb250TGlnYXR1cmVzLmNvbnRhaW5zKCJub3JtYWwiKSkKKyAgICAgICAgaWYgKGZv
bnRMaWdhdHVyZXMuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJub3JtYWwiKSkpCiAgICAgICAgICAg
ICA7ICAgLy8gZGVmYXVsdDogd2hhdGV2ZXIgdGhlIHN5c3RlbSBkZWNpZGVzIHRvIGRvCi0gICAg
ICAgIGVsc2UgaWYgKGZvbnRMaWdhdHVyZXMuY29udGFpbnMoImNvbW1vbi1saWdhdHVyZXMiKSkK
KyAgICAgICAgZWxzZSBpZiAoZm9udExpZ2F0dXJlcy5jb250YWlucyhBU0NJSUxpdGVyYWwoImNv
bW1vbi1saWdhdHVyZXMiKSkpCiAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAxIGZvcktl
eTpOU0xpZ2F0dXJlQXR0cmlidXRlTmFtZV07ICAgLy8gZXhwbGljaXRseSBlbmFibGVkCi0gICAg
ICAgIGVsc2UgaWYgKGZvbnRMaWdhdHVyZXMuY29udGFpbnMoIm5vLWNvbW1vbi1saWdhdHVyZXMi
KSkKKyAgICAgICAgZWxzZSBpZiAoZm9udExpZ2F0dXJlcy5jb250YWlucyhBU0NJSUxpdGVyYWwo
Im5vLWNvbW1vbi1saWdhdHVyZXMiKSkpCiAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAw
IGZvcktleTpOU0xpZ2F0dXJlQXR0cmlidXRlTmFtZV07ICAvLyBleHBsaWNpdGx5IGRpc2FibGVk
CiAgICAgfQogCiAgICAgU3RyaW5nIHRleHREZWNvcmF0aW9uID0gX2NhY2hlcy0+cHJvcGVydHlW
YWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbik7CiAgICAgaWYg
KHRleHREZWNvcmF0aW9uLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmICh0ZXh0RGVjb3JhdGlvbi5j
b250YWlucygidW5kZXJsaW5lIikpCisgICAgICAgIGlmICh0ZXh0RGVjb3JhdGlvbi5jb250YWlu
cyhBU0NJSUxpdGVyYWwoInVuZGVybGluZSIpKSkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZv
cktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIGlmICh0ZXh0RGVj
b3JhdGlvbi5jb250YWlucygibGluZS10aHJvdWdoIikpCisgICAgICAgIGlmICh0ZXh0RGVjb3Jh
dGlvbi5jb250YWlucyhBU0NJSUxpdGVyYWwoImxpbmUtdGhyb3VnaCIpKSkKICAgICAgICAgICAg
IFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5l
U3R5bGVTaW5nbGVdIGZvcktleTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwog
ICAgIH0KIApAQCAtMjAzMCw3ICsyMDMwLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vz
c0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgICAgICBSZXRh
aW5QdHI8TlNUZXh0TGlzdD4gbGlzdDsKICAgICAgICAgU3RyaW5nIGxpc3RTdHlsZVR5cGUgPSBf
Y2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUxpc3RTdHls
ZVR5cGUpOwogICAgICAgICBpZiAoIWxpc3RTdHlsZVR5cGUubGVuZ3RoKCkpCi0gICAgICAgICAg
ICBsaXN0U3R5bGVUeXBlID0gImRlY2ltYWwiOworICAgICAgICAgICAgbGlzdFN0eWxlVHlwZSA9
IEFTQ0lJTGl0ZXJhbCgiZGVjaW1hbCIpOwogICAgICAgICBsaXN0ID0gYWRvcHROUyhbW1BsYXRm
b3JtTlNUZXh0TGlzdCBhbGxvY10gaW5pdFdpdGhNYXJrZXJGb3JtYXQ6U3RyaW5nKCJ7IiArIGxp
c3RTdHlsZVR5cGUgKyAifSIpIG9wdGlvbnM6MF0pOwogICAgICAgICBpZiAoaXNIVE1MT0xpc3RF
bGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBOU0ludGVnZXIgc3RhcnRpbmdJdGVtTnVt
YmVyID0gdG9IVE1MT0xpc3RFbGVtZW50KGVsZW1lbnQpLnN0YXJ0KCk7OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA1NTVkN2VlLi5lNjYwYzQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtOTQ0LDcgKzk0NCw3IEBAIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNz
UmVmUHRyPE5vZGU+IHByCiAKICAgICAvLyBBZGQgdGFiIHRleHQgdG8gdGhhdCBzcGFuLgogICAg
IGlmICghdGFiVGV4dE5vZGUpCi0gICAgICAgIHRhYlRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRl
RWRpdGluZ1RleHROb2RlKCJcdCIpOworICAgICAgICB0YWJUZXh0Tm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZUVkaXRpbmdUZXh0Tm9kZShBU0NJSUxpdGVyYWwoIlx0IikpOwogCiAgICAgc3BhbkVsZW1l
bnQtPmFwcGVuZENoaWxkKHRhYlRleHROb2RlLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmNjUyMTYy
Li5lZjFhMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01
NDgsNyArNTQ4LDcgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIC8vIEl0J3MgYSBzaW1wbGUtbWluZGVkIHdheSB0byBp
Z25vcmUgdGhlIENGX0hUTUwgY2xpcGJvYXJkIGZvcm1hdCwganVzdCBza2lwcGluZyBvdmVyIHRo
ZQogICAgIC8vIGRlc2NyaXB0aW9uIHBhcnQgYW5kIHBhcnNpbmcgdGhlIGVudGlyZSBjb250ZXh0
IHBsdXMgZnJhZ21lbnQuCiAgICAgaWYgKHN0cmluZy5zdGFydHNXaXRoKCJWZXJzaW9uOiIpKSB7
Ci0gICAgICAgIHNpemVfdCBsb2NhdGlvbiA9IHN0cmluZy5maW5kSWdub3JpbmdDYXNlKCI8aHRt
bCIpOworICAgICAgICBzaXplX3QgbG9jYXRpb24gPSBzdHJpbmcuZmluZElnbm9yaW5nQ2FzZShB
U0NJSUxpdGVyYWwoIjxodG1sIikpOwogICAgICAgICBpZiAobG9jYXRpb24gIT0gbm90Rm91bmQp
CiAgICAgICAgICAgICBzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeCA9IHN0cmluZy5zdWJz
dHJpbmcobG9jYXRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBk
N2U0MmY5Li5jYzZlMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02MzUsNyAr
NjM1LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVNYXJrdXBJbnRlcm5hbChEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFJhbmdlJiByYW5nZSwgY29uc3QKICAgICAKICAgICBpZiAoYWNjdW11bGF0
b3IubmVlZFJlbGF0aXZlU3R5bGVXcmFwcGVyKCkgJiYgbmVlZHNQb3NpdGlvblN0eWxlQ29udmVy
c2lvbikgewogICAgICAgICBpZiAoYWNjdW11bGF0b3IubmVlZENsZWFyaW5nRGl2KCkpCi0gICAg
ICAgICAgICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoIjxkaXYgc3R5bGU9XCJjbGVhcjogYm90
aDtcIj48L2Rpdj4iKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yLmFwcGVuZFN0cmluZyhBU0NJ
SUxpdGVyYWwoIjxkaXYgc3R5bGU9XCJjbGVhcjogYm90aDtcIj48L2Rpdj4iKSk7CiAgICAgICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IHBvc2l0aW9uUmVsYXRpdmVTdHlsZSA9IHN0eWxlRnJvbU1h
dGNoZWRSdWxlc0FuZElubGluZURlY2woYm9keSk7CiAgICAgICAgIHBvc2l0aW9uUmVsYXRpdmVT
dHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVS
ZWxhdGl2ZSk7CiAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5bGVOb2RlKHBvc2l0aW9u
UmVsYXRpdmVTdHlsZS0+c3R5bGUoKSwgZG9jdW1lbnQsIHRydWUpOwpAQCAtNzcwLDcgKzc3MCw3
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChS
YW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxl
YXNlKCk7CiAKICAgICBTdHJpbmcgc3RyaW5nID0gdGV4dDsKLSAgICBzdHJpbmcucmVwbGFjZSgi
XHJcbiIsICJcbiIpOworICAgIHN0cmluZy5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiXHJcbiIpLCBB
U0NJSUxpdGVyYWwoIlxuIikpOwogICAgIHN0cmluZy5yZXBsYWNlKCdccicsICdcbicpOwogCiAg
ICAgaWYgKGNvbnRleHRQcmVzZXJ2ZXNOZXdsaW5lKGNvbnRleHQpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iVVJMLmNwcAppbmRleCAzZGViZjM4Li40ZDdlMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYlVSTC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgVVJMIEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VS
TChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAKIFVSTCBCbG9iVVJMOjpjcmVhdGVJ
bnRlcm5hbFVSTCgpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoImJsb2JpbnRlcm5hbDov
LyIpOworICAgIHJldHVybiBjcmVhdGVCbG9iVVJMKEFTQ0lJTGl0ZXJhbCgiYmxvYmludGVybmFs
Oi8vIikpOwogfQogCiBTdHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggNDUwNTc1
NS4uNjY3MjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvCiAKICAgICAvLyBD
b25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QobV91cmxGb3JSZWFkaW5nKTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOwor
ICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChBU0NJSUxpdGVyYWwoIkdFVCIpKTsKICAgICBpZiAo
bV9oYXNSYW5nZSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OlJhbmdlLCBTdHJpbmc6OmZvcm1hdCgiYnl0ZXM9JWQtJWQiLCBtX3JhbmdlU3RhcnQs
IG1fcmFuZ2VFbmQpKTsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRl
cjo6Y29udmVydFRvVGV4dCgpCiAgICAgLy8gcHJvdmlkZWQgZW5jb2RpbmcuICAgICAKICAgICAv
LyBGSVhNRTogY29uc2lkZXIgc3VwcG9ydGluZyBpbmNyZW1lbnRhbCBkZWNvZGluZyB0byBpbXBy
b3ZlIHRoZSBwZXJmLgogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICBtX2RlY29kZXIgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBtX2VuY29kaW5nLmlzVmFs
aWQoKSA/IG1fZW5jb2RpbmcgOiBVVEY4RW5jb2RpbmcoKSk7CisgICAgICAgIG1fZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwg
bV9lbmNvZGluZy5pc1ZhbGlkKCkgPyBtX2VuY29kaW5nIDogVVRGOEVuY29kaW5nKCkpOwogICAg
IGlmIChpc0NvbXBsZXRlZCgpKQogICAgICAgICBtX3N0cmluZ1Jlc3VsdCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgp
KSwgbV9ieXRlc0xvYWRlZCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRU
eXBlLmNwcAppbmRleCAyZTJkOWJkLi5hYTNkNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcApAQCAtODYsNyArODYsNyBAQCBib29sIENvbG9ySW5wdXRUeXBlOjpzdXBw
b3J0c1JlcXVpcmVkKCkgY29uc3QKIAogU3RyaW5nIENvbG9ySW5wdXRUeXBlOjpmYWxsYmFja1Zh
bHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nKCIjMDAwMDAwIik7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiIzAwMDAwMCIpOwogfQogCiBTdHJpbmcgQ29sb3JJbnB1dFR5cGU6OnNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcAppbmRleCBiMDEyMDlhLi42OGYzNWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFN0cmlu
ZyBFbWFpbElucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFs
dWUpIGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpcHBlZFZhbHVlOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhZGRyZXNzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkg
PiAwKQotICAgICAgICAgICAgc3RyaXBwZWRWYWx1ZS5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAg
IHN0cmlwcGVkVmFsdWUuYXBwZW5kKCcsJyk7CiAgICAgICAgIHN0cmlwcGVkVmFsdWUuYXBwZW5k
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhZGRyZXNzZXNbaV0pKTsKICAgICB9
CiAgICAgcmV0dXJuIHN0cmlwcGVkVmFsdWUudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMzVlMzJkMy4uNzQwYjkzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTM0Miw3
ICszNDIsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0Rv
Y3VtZW50KCkKIAogICAgIGJvZHlFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RhYmxlRWxlbWVudCwg
SUdOT1JFX0VYQ0VQVElPTik7CiAKLSAgICBkb2N1bWVudCgpLT5wcm9jZXNzVmlld3BvcnQoIndp
ZHRoPWRldmljZS13aWR0aCIsIFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEpOworICAg
IGRvY3VtZW50KCktPnByb2Nlc3NWaWV3cG9ydChBU0NJSUxpdGVyYWwoIndpZHRoPWRldmljZS13
aWR0aCIpLCBWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKIH0KIAogdm9pZCBGVFBE
aXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5w
dXRTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDQ1MTAw
ZDEuLmNmYmE5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0z
MTQsOSArMzE0LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZEZvcm1TdHJ1Y3R1cmUoY29u
c3QgSFRNTEZvcm1FbGVtZW50JiBmb3JtLCBTdHJpbmdCdWlsZGUKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBuYW1lZENvbnRyb2xzKys7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5h
bWUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiICIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwogICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZCgiXSIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCddJyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1TaWduYXR1cmUoY29uc3Qg
SFRNTEZvcm1FbGVtZW50JiBmb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmNwcAppbmRleCBiYmI4YTE3Li5jMWY2N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBIVE1MQXBwbGV0RWxlbWVudDo6
SFRNTEFwcGxldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvYwogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGFwcGxldFRhZykpOwogCi0gICAgbV9zZXJ2
aWNlVHlwZSA9ICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IjsKKyAgICBtX3NlcnZpY2VUeXBl
ID0gQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0Iik7CiB9CiAKIFBhc3NS
ZWZQdHI8SFRNTEFwcGxldEVsZW1lbnQ+IEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRC
eVBhcnNlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCmluZGV4IDY1
NzM3YjAuLjhmYmQ2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlv
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNw
cApAQCAtNDksNyArNDksNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRp
b0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogUGFzc1JlZlB0cjxI
VE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9y
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCiB7CiAgICAgUmVmUHRyPEhU
TUxBdWRpb0VsZW1lbnQ+IGF1ZGlvID0gYWRvcHRSZWYobmV3IEhUTUxBdWRpb0VsZW1lbnQoYXVk
aW9UYWcsIGRvY3VtZW50LCBmYWxzZSkpOwotICAgIGF1ZGlvLT5zZXRQcmVsb2FkKCJhdXRvIik7
CisgICAgYXVkaW8tPnNldFByZWxvYWQoQVNDSUlMaXRlcmFsKCJhdXRvIikpOwogICAgIGlmICgh
c3JjLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1ZGlvLT5zZXRTcmMoc3JjKTsKICAgICAgICAgYXVk
aW8tPnNjaGVkdWxlRGVsYXllZEFjdGlvbihIVE1MTWVkaWFFbGVtZW50OjpMb2FkTWVkaWFSZXNv
dXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDI0
ODdjZmQuLmE4NTc1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCkBAIC00NTAsNyArNDUwLDcgQEAgU3RyaW5nIEhUTUxDYW52YXNFbGVtZW50Ojp0b0VuY29k
aW5nTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogICAgIC8vIEZJWE1FOiBNYWtl
IGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nIHRocmVhZHNhZmUgKHRvIGFsbG93
IHRoaXMgbWV0aG9kIHRvIGJlIHVzZWQgb24gYSB3b3JrZXIgdGhyZWFkKS4KICAgICBpZiAobWlt
ZVR5cGUuaXNOdWxsKCkgfHwgIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZUZvckVuY29kaW5nKGxvd2VyY2FzZU1pbWVUeXBlKSkKLSAgICAgICAgbG93ZXJjYXNlTWlt
ZVR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgbG93ZXJjYXNlTWltZVR5cGUgPSBBU0NJSUxp
dGVyYWwoImltYWdlL3BuZyIpOwogCiAgICAgcmV0dXJuIGxvd2VyY2FzZU1pbWVUeXBlOwogfQpA
QCAtNDYzLDcgKzQ2Myw3IEBAIFN0cmluZyBIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0CiAgICAgfQogCiAgICAg
aWYgKG1fc2l6ZS5pc0VtcHR5KCkgfHwgIWJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCJkYXRhOiwiKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGF0YTosIik7CiAKICAg
ICBTdHJpbmcgZW5jb2RpbmdNaW1lVHlwZSA9IHRvRW5jb2RpbmdNaW1lVHlwZShtaW1lVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCAyOGM4NDc0Li4zZTM3ZmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAg
dm9pZCBIVE1MRG9jdW1lbnQ6OnNldERpcihjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBTdHJpbmcg
SFRNTERvY3VtZW50OjpkZXNpZ25Nb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5EZXNpZ25N
b2RlKCkgPyAib24iIDogIm9mZiI7CisgICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gQVNDSUlM
aXRlcmFsKCJvbiIpIDogQVNDSUlMaXRlcmFsKCJvZmYiKTsKIH0KIAogdm9pZCBIVE1MRG9jdW1l
bnQ6OnNldERlc2lnbk1vZGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggZjVlNTJlOS4uNGRiNDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5l
clRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBTdHJpbmcgdGV4dFdpdGhDb25zaXN0ZW50TGlu
ZUJyZWFrcyA9IHRleHQ7Ci0gICAgICAgIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MucmVw
bGFjZSgiXHJcbiIsICJcbiIpOworICAgICAgICB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtz
LnJlcGxhY2UoQVNDSUlMaXRlcmFsKCJcclxuIiksIEFTQ0lJTGl0ZXJhbCgiXG4iKSk7CiAgICAg
ICAgIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgnXHInLCAnXG4nKTsKICAg
ICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aFRleHQoKnRoaXMsIHRleHRXaXRoQ29uc2lzdGVudExp
bmVCcmVha3MsIGVjKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKaW5kZXggMDQ1MTU1ZC4uNjQ2ZjE3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIVE1MRW1i
ZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAobmFtZSA9PSB0eXBlQXR0cikgewotICAgICAgICBtX3NlcnZpY2VUeXBlID0gdmFsdWUuc3Ry
aW5nKCkubGVmdCh2YWx1ZS5maW5kKCI7IikpLmxvd2VyKCk7CisgICAgICAgIG1fc2VydmljZVR5
cGUgPSB2YWx1ZS5zdHJpbmcoKS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSkubG93ZXIoKTsKICAgICAg
ICAgLy8gRklYTUU6IFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBIVE1MT2Jq
ZWN0RWxlbWVudCdzIGNvcnJlc3BvbmRpbmcKICAgICAgICAgLy8gY29kZSBpcyB0aGF0IEhUTUxP
YmplY3RFbGVtZW50IGRvZXMgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSkuIENvbnNpZGVyIG1v
dmluZwogICAgICAgICAvLyB0aGlzIHVwIHRvIHRoZSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IHRv
IGJlIHNoYXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBi
NTdjYmJiLi5jZjgyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CkBAIC0yNTEsOCArMjUxLDggQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJh
Y3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9
IGNvbnRyb2wuYXNIVE1MRWxlbWVudCgpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQuaW5Eb2N1
bWVudCgpICYmIGVsZW1lbnQuaXNGb2N1c2FibGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlKCJBbiBpbnZhbGlkIGZvcm0gY29udHJvbCB3
aXRoIG5hbWU9JyVuYW1lJyBpcyBub3QgZm9jdXNhYmxlLiIpOwotICAgICAgICAgICAgbWVzc2Fn
ZS5yZXBsYWNlKCIlbmFtZSIsIGNvbnRyb2wubmFtZSgpKTsKKyAgICAgICAgICAgIFN0cmluZyBt
ZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQW4gaW52YWxpZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lPScl
bmFtZScgaXMgbm90IGZvY3VzYWJsZS4iKSk7CisgICAgICAgICAgICBtZXNzYWdlLnJlcGxhY2Uo
QVNDSUlMaXRlcmFsKCIlbmFtZSIpLCBjb250cm9sLm5hbWUoKSk7CiAgICAgICAgICAgICBkb2N1
bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IDViMTUxZDIuLmUxNjY4ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3Rv
cnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QKIHZvaWQgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gc3JjZG9jQXR0cikKLSAgICAg
ICAgc2V0TG9jYXRpb24oImFib3V0OnNyY2RvYyIpOworICAgICAgICBzZXRMb2NhdGlvbihBU0NJ
SUxpdGVyYWwoImFib3V0OnNyY2RvYyIpKTsKICAgICBlbHNlIGlmIChuYW1lID09IHNyY0F0dHIg
JiYgIWZhc3RIYXNBdHRyaWJ1dGUoc3JjZG9jQXR0cikpCiAgICAgICAgIHNldExvY2F0aW9uKHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gSFRNTE5hbWVzOjppZEF0dHIpIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEhUTUxG
cmFtZUVsZW1lbnRCYXNlOjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogVVJMIEhUTUxGcmFtZUVsZW1l
bnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoc3Jj
ZG9jQXR0cikpCi0gICAgICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3Jj
ZG9jIik7CisgICAgICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwo
ImFib3V0OnNyY2RvYyIpKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChnZXRB
dHRyaWJ1dGUoc3JjQXR0cikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKaW5kZXggYjg1MTE0NS4uZTdkMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpw
cm9jZXNzKCkKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1l
bnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkudHJlYXRzQW55VGV4
dENTU0xpbmtBc1N0eWxlc2hlZXQoKTsKIAotICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gRGlz
YWJsZWQgJiYgKG1fcmVsQXR0cmlidXRlLm1faXNTdHlsZVNoZWV0IHx8IChhY2NlcHRJZlR5cGVD
b250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkpCisgICAgaWYgKG1f
ZGlzYWJsZWRTdGF0ZSAhPSBEaXNhYmxlZCAmJiAobV9yZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hl
ZXQgfHwgKGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENTUyAmJiB0eXBlLmNvbnRhaW5zKEFTQ0lJ
TGl0ZXJhbCgidGV4dC9jc3MiKSkpKQogICAgICAgICAmJiBkb2N1bWVudCgpLmZyYW1lKCkgJiYg
dXJsLmlzVmFsaWQoKSkgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBnZXRB
dHRyaWJ1dGUoY2hhcnNldEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNjFhNmRhMy4uZWVmZTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0zODk2LDcgKzM4OTYsNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVu
dDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5n
KiBrZQogICAgICAgICAgICAgZ290byBjaGVja19hZ2FpbjsKICAgICAgICAgCiAgICAgICAgIGlm
IChzb3VyY2UtPmZhc3RIYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgewotICAgICAgICAgICAgTWVk
aWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLmZyYW1lKCks
IHJlbmRlcmVyKCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51bGxwdHIpOworICAgICAgICAg
ICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKEFTQ0lJTGl0ZXJhbCgic2NyZWVuIiks
IGRvY3VtZW50KCkuZnJhbWUoKSwgcmVuZGVyZXIoKSA/ICZyZW5kZXJlcigpLT5zdHlsZSgpIDog
bnVsbHB0cik7CiAgICAgICAgICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEgPSBNZWRp
YVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KHNvdXJjZS0+bWVkaWEo
KSk7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHNob3VsZExvZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYWI5MWJiYy4uOGU3YmUz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTE4MCw3
ICsxODAsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgICAgICAvLyBGSVhNRTogc2Vy
dmljZVR5cGUgY2FsY3VsYXRpb24gZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCiAg
ICAgICAgIGlmIChzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgInR5cGUiKSkgewogICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwYXJhbS52YWx1ZSgpOwot
ICAgICAgICAgICAgc2l6ZV90IHBvcyA9IHNlcnZpY2VUeXBlLmZpbmQoIjsiKTsKKyAgICAgICAg
ICAgIHNpemVfdCBwb3MgPSBzZXJ2aWNlVHlwZS5maW5kKCc7Jyk7CiAgICAgICAgICAgICBpZiAo
cG9zICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlID0gc2VydmljZVR5
cGUubGVmdChwb3MpOwogICAgICAgICB9CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgVmVjdG9yPFMKICAgICAvLyBlbHNlIG91ciBKYXZhIHBsdWdpbiB3aWxsIG1pc2ludGVycHJl
dCBpdC4gWzQwMDQ1MzFdCiAgICAgU3RyaW5nIGNvZGViYXNlOwogICAgIGlmIChNSU1FVHlwZVJl
Z2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShzZXJ2aWNlVHlwZSkpIHsKLSAgICAgICAgY29k
ZWJhc2UgPSAiY29kZWJhc2UiOworICAgICAgICBjb2RlYmFzZSA9IEFTQ0lJTGl0ZXJhbCgiY29k
ZWJhc2UiKTsKICAgICAgICAgdW5pcXVlUGFyYW1OYW1lcy5hZGQoY29kZWJhc2UuaW1wbCgpKTsg
Ly8gcHJldGVuZCB3ZSBmb3VuZCBpdCBpbiBhIFBBUkFNIGFscmVhZHkKICAgICB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA3OTIwYzJl
Li40YmU0MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVl
Q29tbW9uKGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgLy8gQ29kZSBlbHNld2hlcmUgbm9y
bWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlhIHRoZSBrZXlib2FyZCBv
ciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgY29taW5nIGZyb20g
SmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFsdWUgPSBuZXdWYWx1ZS5p
c051bGwoKSA/ICIiIDogbmV3VmFsdWU7Ci0gICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoIlxy
XG4iLCAiXG4iKTsKKyAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZShBU0NJSUxpdGVyYWwoIlxy
XG4iKSwgQVNDSUlMaXRlcmFsKCJcbiIpKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgn
XHInLCAnXG4nKTsKIAogICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQg
dG8gbW92ZSB0aGUgY2FyZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKQEAgLTQxOCw3
ICs0MTgsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25z
dCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKIAogICAgIC8vIE5vcm1hbGl6ZSBsaW5lIGVuZGluZ3Mu
CiAgICAgU3RyaW5nIHZhbHVlID0gZGVmYXVsdFZhbHVlOwotICAgIHZhbHVlLnJlcGxhY2UoIlxy
XG4iLCAiXG4iKTsKKyAgICB2YWx1ZS5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiXHJcbiIpLCBBU0NJ
SUxpdGVyYWwoIlxuIikpOwogICAgIHZhbHVlLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKICAgICBp
bnNlcnRCZWZvcmUoZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSksIGZpcnN0Q2hpbGQo
KSwgSUdOT1JFX0VYQ0VQVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDdkOTE5MWIuLjRhZTU4ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBA
IC03NDMsMTEgKzc0MywxMSBAQCBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhKCkgY29uc3QKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7CiAgICAgICAgICAgICBib29sIGlzQXV0bzsK
ICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IHN0YXRpY19jYXN0PGNv
bnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCktPmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0
cmlidXRlKGlzQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBSVEwg
PyAicnRsIiA6ICJsdHIiOworICAgICAgICAgICAgcmV0dXJuIHRleHREaXJlY3Rpb24gPT0gUlRM
ID8gQVNDSUlMaXRlcmFsKCJydGwiKSA6IEFTQ0lJTGl0ZXJhbCgibHRyIik7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICByZXR1cm4gImx0ciI7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibHRy
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYmNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCmluZGV4IDhkNjNhZjMuLmQ4Y2FjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3Jl
YXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIFJlZlB0cjxFbGVtZW50PiBib2R5ID0gRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFsc2UpOwogICAgIGJvZHktPnNldEF0dHJpYnV0
ZShzdHlsZUF0dHIsICJtYXJnaW46IDBweCIpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1BERk1JTUVUeXBlKGRvY3VtZW50KCkubG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkpCi0g
ICAgICAgIHRvSFRNTEJvZHlFbGVtZW50KGJvZHkuZ2V0KCkpLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAid2hpdGUiLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lERU5UKTsKKyAgICAgICAgdG9IVE1MQm9keUVsZW1lbnQoYm9keS5nZXQoKSktPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIEFTQ0lJTGl0
ZXJhbCgid2hpdGUiKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCk7CiAgICAgcm9vdEVs
ZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwogICAgIAogICAgIFJlZlB0cjxJbWFnZURvY3VtZW50
RWxlbWVudD4gaW1hZ2VFbGVtZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZSgqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGQwZTI1YmUuLjk0
NDliYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC01OSw4ICs1
OSw4IEBAIGJvb2wgSW1hZ2VJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYg
ZW5jb2RpbmcsIGJvb2wpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUgPSBlbGVtZW50KCkubmFtZSgpOwogICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkgewotICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKCJ4IiwgbV9jbGlja0xvY2F0aW9u
LngoKSk7Ci0gICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEoInkiLCBtX2NsaWNrTG9jYXRpb24u
eSgpKTsKKyAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShBU0NJSUxpdGVyYWwoIngiKSwgbV9j
bGlja0xvY2F0aW9uLngoKSk7CisgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEoQVNDSUlMaXRl
cmFsKCJ5IiksIG1fY2xpY2tMb2NhdGlvbi55KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBl
MTUwMTQ5Li45YjI0NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRs
ZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KgogICAgIHdo
aWxlICh0ZXh0TGVuZ3RoID4gMCAmJiBpc0FTQ0lJTGluZUJyZWFrKGV2ZW50VGV4dFt0ZXh0TGVu
Z3RoIC0gMV0pKQogICAgICAgICB0ZXh0TGVuZ3RoLS07CiAgICAgZXZlbnRUZXh0LnRydW5jYXRl
KHRleHRMZW5ndGgpOwotICAgIGV2ZW50VGV4dC5yZXBsYWNlKCJcclxuIiwgIiAiKTsKKyAgICBl
dmVudFRleHQucmVwbGFjZShBU0NJSUxpdGVyYWwoIlxyXG4iKSwgQVNDSUlMaXRlcmFsKCIgIikp
OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKCdccicsICcgJyk7CiAgICAgZXZlbnRUZXh0LnJlcGxh
Y2UoJ1xuJywgJyAnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAppbmRleCA3YTkxYzAzLi5mMThhZTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5z
aW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpnZXROYW1lKCkgY29uc3QKIGJvb2wg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOworICAgIHJldHVy
biBleHRlbnNpb25zLT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwoIkdMX0FNRF9jb21wcmVzc2VkX0FU
Q190ZXh0dXJlIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
LmNwcAppbmRleCA2MTI2YWVjLi5jYjJmMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVBWUlRDOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAg
IEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lN
R190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1
cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAppbmRleCBjNWUy
Y2VlLi5hNmZlYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCkBAIC01NSwxMCArNTUsMTAgQEAgV2Vi
R0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6Omdl
dE5hbWUoKSBjb25zdAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBFeHRlbnNpb25zM0QqIGV4
dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjIikKLSAgICAgICAgfHwgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQxIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQotICAgICAgICAgICAg
JiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0NSIpKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikpCisgICAgICAgIHx8IChleHRlbnNpb25z
LT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEi
KSkKKyAgICAgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIikpCisgICAgICAgICAgICAmJiBleHRl
bnNpb25zLT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0NSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAppbmRleCAzNzk1NTA2
Li5mNzg0ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
cHRoVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0
aFRleHR1cmUuY3BwCkBAIC01MCw5ICs1MCw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25O
YW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgV2ViR0xEZXB0aFRl
eHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBFeHRl
bnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0
dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikKLSAg
ICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKLSAg
ICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7Cisg
ICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfQ0hST01JVU1f
ZGVwdGhfdGV4dHVyZSIpKQorICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cyhBU0NJSUxp
dGVyYWwoIkdMX09FU19kZXB0aF90ZXh0dXJlIikpCisgICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1
cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
cmF3QnVmZmVycy5jcHAKaW5kZXggN2IzYzA0Ny4uZDAzYzYxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
Ym9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogICAgIEV4dGVuc2lvbnMzRCogZXh0
ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsK
LSAgICByZXR1cm4gKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikK
KyAgICByZXR1cm4gKGV4dGVuc2lvbnMtPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX2Ry
YXdfYnVmZmVycyIpKQogICAgICAgICAmJiBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhjb250
ZXh0KSk7CiB9CiAKQEAgLTEwOSwxMSArMTA5LDExIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6
c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3ZWJnbENv
CiAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAw
LCAwLCAwIH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Ig
b3RoZXIgcG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gKGNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8
fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVy
ZSIpCi0gICAgICAgIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FS
Ql9kZXB0aF90ZXh0dXJlIikpOwotICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IChj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfQ0hST01J
VU1fZGVwdGhfdGV4dHVyZSIpKQorICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSkKKyAgICAgICAg
fHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwoIkdMX0FS
Ql9kZXB0aF90ZXh0dXJlIikpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKSk7
CiAgICAgUGxhdGZvcm0zRE9iamVjdCBkZXB0aFN0ZW5jaWwgPSAwOwogICAgIGlmIChzdXBwb3J0
c0RlcHRoU3RlbmNpbCkgewogICAgICAgICBkZXB0aFN0ZW5jaWwgPSBjb250ZXh0LT5jcmVhdGVU
ZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCA5MzQ1ZTE4Li4xM2VjMWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM5
OSw3ICszOTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRQogICAgIC8vIFRoZSBGcmFtZUxv
YWRlckNsaWVudCBtaWdodCBibG9jayBjcmVhdGlvbiBvZiBhIG5ldyBXZWJHTCBjb250ZXh0IGRl
c3BpdGUgdGhlIHBhZ2Ugc2V0dGluZ3M7IGluCiAgICAgLy8gcGFydGljdWxhciwgaWYgV2ViR0wg
Y29udGV4dHMgd2VyZSBsb3N0IG9uZSBvciBtb3JlIHRpbWVzIHZpYSB0aGUgR0xfQVJCX3JvYnVz
dG5lc3MgZXh0ZW5zaW9uLgogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmFsbG93
V2ViR0woZnJhbWUtPnNldHRpbmdzKCkud2ViR0xFbmFibGVkKCkpKSB7Ci0gICAgICAgIGNhbnZh
cy0+ZGlzcGF0Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlLCAiV2ViIHBhZ2Ugd2Fz
IG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpOworICAgICAgICBjYW52
YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSwgQVNDSUlMaXRlcmFs
KCJXZWIgcGFnZSB3YXMgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ0OCwxMyArNDQ4LDEzIEBA
IHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdykp
OwogCiAgICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkg
ewotICAgICAgICBjYW52YXMtPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LCBmYWxzZSwgdHJ1
ZSwgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsKKyAgICAgICAgY2FudmFz
LT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVudCwgZmFsc2UsIHRydWUsIEFTQ0lJTGl0ZXJhbCgi
Q291bGQgbm90IGNyZWF0ZSBhIFdlYkdMIGNvbnRleHQuIikpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpOwotICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX2Rl
YnVnX21hcmtlciIpKQotICAgICAgICBleHRlbnNpb25zLT5wdXNoR3JvdXBNYXJrZXJFWFQoIldl
YkdMUmVuZGVyaW5nQ29udGV4dCIpOworICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cyhBU0NJ
SUxpdGVyYWwoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiKSkpCisgICAgICAgIGV4dGVuc2lvbnMtPnB1
c2hHcm91cE1hcmtlckVYVChBU0NJSUxpdGVyYWwoIldlYkdMUmVuZGVyaW5nQ29udGV4dCIpKTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IHJlbmRlcmluZ0Nv
bnRleHQobmV3IFdlYkdMUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIGNvbnRleHQsIGF0dHJpYnV0
ZXMpKTsKICAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTYwMiwx
NiArNjAyLDE2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzZXR1cEZsYWdzKCkKICAg
ICAgICAgbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSA9IHBhZ2UtPnNldHRpbmdzKCkud2Vi
R0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKCk7CiAKICAgICBtX2lzR0xFUzJDb21wbGlhbnQgPSBt
X2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICBtX2lzRXJyb3JHZW5lcmF0ZWRPbk91
dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVk
KCJHTF9DSFJPTUlVTV9zdHJpY3RfYXR0cmlicyIpOwotICAgIG1faXNSZXNvdXJjZVNhZmUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9DSFJPTUlVTV9yZXNvdXJj
ZV9zYWZlIik7CisgICAgbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZChBU0NJSUxpdGVyYWwoIkdMX0NI
Uk9NSVVNX3N0cmljdF9hdHRyaWJzIikpOworICAgIG1faXNSZXNvdXJjZVNhZmUgPSBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfQ0hST01JVU1f
cmVzb3VyY2Vfc2FmZSIpKTsKICAgICBpZiAobV9pc0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAg
IG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5h
YmxlZCgiR0xfT0VTX3RleHR1cmVfbnBvdCIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3Vw
cG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZChBU0NJSUxpdGVyYWwoIkdMX09FU190
ZXh0dXJlX25wb3QiKSk7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIikpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faXNHTEVTMk5Q
T1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfQVJC
X3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3Vw
cG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfRVhUX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZChBU0NJSUxpdGVyYWwoIkdMX0FSQl90
ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKSk7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBw
b3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKEFTQ0lJTGl0ZXJh
bCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOwogICAgIH0KLSAgICBtX2lzUm9idXN0
bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQo
IkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfRVhU
X3JvYnVzdG5lc3MiKSk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphbGxvd1By
aXZpbGVnZWRFeHRlbnNpb25zKCkgY29uc3QKQEAgLTIzMzAsNyArMjMzMCw3IEBAIFBhc3NSZWZQ
dHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEFjdGl2ZVVuaWZv
cm0oV2ViR0xQcm9ncmFtCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghaXNHTEVT
MkNvbXBsaWFudCgpKQogICAgICAgICBpZiAoaW5mby5zaXplID4gMSAmJiAhaW5mby5uYW1lLmVu
ZHNXaXRoKCJbMF0iKSkKLSAgICAgICAgICAgIGluZm8ubmFtZS5hcHBlbmQoIlswXSIpOworICAg
ICAgICAgICAgaW5mby5uYW1lLmFwcGVuZChBU0NJSUxpdGVyYWwoIlswXSIpKTsKIAogICAgIExP
RyhXZWJHTCwgIlJldHVybmluZyBhY3RpdmUgdW5pZm9ybSAlZDogJXMiLCBpbmRleCwgaW5mby5u
YW1lLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0yNDMxLDczICsyNDMxLDczIEBAIFdlYkdMRXh0ZW5z
aW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIikKLSAgICAgICAgJiYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0
dXJlX2xvZCIpKSkgeworICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1
cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpKSB8fCBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9BUkJfc2hh
ZGVyX3RleHR1cmVfbG9kIikpKSkgewogICAgICAgICBpZiAoIW1fZXh0U2hhZGVyVGV4dHVyZUxP
RCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpKTsKICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0
ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4odGhpcyk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fZXh0U2hhZGVyVGV4dHVyZUxPRC5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRz
KCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkgeworICAgICAgICAmJiBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkpIHsKICAgICAgICAgaWYgKCFtX2V4dFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwor
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoQVND
SUlMaXRlcmFsKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSk7CiAgICAgICAg
ICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPih0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikKLSAgICAg
ICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkp
IHsKICAgICAgICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKLSAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMiKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IikpOwogICAgICAgICAgICAgbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxPRVNTdGFuZGFyZERlcml2YXRpdmVzPih0aGlzKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIp
KSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cyhBU0NJ
SUxpdGVyYWwoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpKSB7CiAgICAgICAgIGlmICghbV9vZXNU
ZXh0dXJlRmxvYXQpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICAgICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoQVNDSUlMaXRlcmFsKCJHTF9PRVNf
dGV4dHVyZV9mbG9hdCIpKTsKICAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX29lc1RleHR1cmVGbG9hdC5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cyhBU0NJSUxpdGVyYWwoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSkgewogICAgICAg
ICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGlu
ZWFyIik7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZChBU0NJSUxpdGVyYWwoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKTsKICAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0
dXJlRmxvYXRMaW5lYXI+KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1Rl
eHR1cmVGbG9hdExpbmVhci5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsK
KyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKEFTQ0lJTGl0
ZXJhbCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSkgewogICAgICAgICBpZiAoIW1fb2Vz
VGV4dHVyZUhhbGZGbG9hdCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJh
bCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKTsKICAgICAgICAgICAgIG1fb2VzVGV4dHVy
ZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4odGhpcyk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdC5nZXQoKTsK
ICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICAm
JiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9P
RVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4
dHVyZUhhbGZGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZChB
U0NJSUxpdGVyYWwoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpOwogICAgICAg
ICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyPih0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UobmFtZSwgIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikKLSAgICAgICAgJiYg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5
X29iamVjdCIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cyhBU0NJSUxpdGVyYWwoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpKSB7CiAgICAg
ICAgIGlmICghbV9vZXNWZXJ0ZXhBcnJheU9iamVjdCkgewotICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Iik7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5h
YmxlZChBU0NJSUxpdGVyYWwoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpOwogICAgICAg
ICAgICAgbV9vZXNWZXJ0ZXhBcnJheU9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVmVydGV4
QXJyYXlPYmplY3Q+KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1ZlcnRl
eEFycmF5T2JqZWN0LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkgeworICAg
ICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFs
KCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpKSB7CiAgICAgICAgIGlmICghbV9vZXNFbGVt
ZW50SW5kZXhVaW50KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOworICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoQVNDSUlMaXRlcmFsKCJH
TF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpOwogICAgICAgICAgICAgbV9vZXNFbGVtZW50SW5k
ZXhVaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNFbGVtZW50SW5kZXhVaW50Pih0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNFbGVtZW50SW5kZXhVaW50LmdldCgpOwpAQCAt
MjUyOCwyMSArMjUyOCwyMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpCiAgICAgICAgICYmIFdlYkdMRGVwdGhU
ZXh0dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250ZXh0M0QoKSkpIHsKICAgICAgICAgaWYgKCFt
X3dlYmdsRGVwdGhUZXh0dXJlKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpOworICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoQVNDSUlMaXRl
cmFsKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikpOwogICAgICAgICAgICAgbV93ZWJnbERl
cHRoVGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KHRoaXMpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgpOwogICAg
IH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQkdMX2RyYXdfYnVmZmVycyIp
ICYmIHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEcmF3QnVm
ZmVycykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpKTsKICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViR0xEcmF3QnVmZmVycz4odGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
d2ViZ2xEcmF3QnVmZmVycy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYgQU5HTEVJbnN0YW5jZWRBcnJheXM6
OnN1cHBvcnRlZCh0aGlzKSkgewogICAgICAgICBpZiAoIW1fYW5nbGVJbnN0YW5jZWRBcnJheXMp
IHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZChBU0NJSUxpdGVyYWwoIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiKSk7CiAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gc3Rk
OjptYWtlX3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4odGhpcyk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMuZ2V0KCk7CkBAIC0yNTU0LDcgKzI1
NTQsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1Jl
bmRlcmVySW5mby5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQotICAgICAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiKSkgeworICAgICAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1
cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikp
KSB7CiAgICAgICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpCiAgICAgICAgICAgICAg
ICAgbV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRl
cnM+KHRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7
CkBAIC0yNzI5LDcgKzI3MjksNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmCiAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4obV9yZW5kZXJidWZmZXJC
aW5kaW5nKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSRVI6Ci0gICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oU3RyaW5nKCJXZWJLaXQgV2ViR0wiKSk7CisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiV2ViS2l0IFdlYkdMIikpKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTQU1QTEVfQlVGRkVSUzoKICAgICAgICAgcmV0
dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U0FNUExFX0NPVkVSQUdFX0lOVkVSVDoKQEAgLTI3OTUsNyArMjc5NSw3IEBAIFdlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQ09MT1JTUEFD
RV9DT05WRVJTSU9OX1dFQkdMOgogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKG1fdW5wYWNr
Q29sb3JzcGFjZUNvbnZlcnNpb24pOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFTkRP
UjoKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhTdHJpbmcoIldlYktpdCIpKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhTdHJpbmcoQVNDSUlMaXRlcmFsKCJXZWJLaXQiKSkpOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlNJT046CiAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oIldlYkdMIDEuMCAoIiArIG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29u
dGV4dDNEOjpWRVJTSU9OKSArICIpIik7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VklF
V1BPUlQ6CkBAIC0zMDM4LDIzICszMDM4LDIzIEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iikp
CisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cyhBU0NJSUxpdGVy
YWwoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNf
dGV4dHVyZV9mbG9hdCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKQorICAgIGlmIChtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiKSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCIpKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwot
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGlu
ZWFyIikpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMiKSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9z
aGFkZXJfdGV4dHVyZV9sb2QiKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9y
dHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJl
X2xvZCIpKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoQVNDSUlMaXRl
cmFsKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCisg
ICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cyhBU0NJSUxpdGVyYWwo
IkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwotICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlf
b2JqZWN0IikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cyhB
U0NJSUxpdGVyYWwoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwotICAgIGlmIChtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKEFTQ0lJTGl0ZXJh
bCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
T0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2xvc2Vf
Y29udGV4dCIpOwogICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQo
dGhpcykpCkBAIC0zMDcxLDcgKzMwNzEsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CiAKICAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0
ZW5zaW9ucygpKSB7Ci0gICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQorICAgICAgICBpZiAo
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfQU5H
TEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9k
ZWJ1Z19yZW5kZXJlcl9pbmZvIik7CiAgICAgfQpAQCAtNDkzMiw3ICs0OTMyLDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNoZWNrVGV4dHVyZUNvbXBsZXRlbmVzcyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGIKICAgICAgICAgICAgIFdlYkdMVGV4dHVyZSogdGV4MkQ7CiAgICAg
ICAgICAgICBXZWJHTFRleHR1cmUqIHRleEN1YmVNYXA7CiAgICAgICAgICAgICBpZiAocHJlcGFy
ZVRvRHJhdykgewotICAgICAgICAgICAgICAgIFN0cmluZyBtc2coU3RyaW5nKCJ0ZXh0dXJlIGJv
dW5kIHRvIHRleHR1cmUgdW5pdCAiKSArIFN0cmluZzo6bnVtYmVyKGlpKQorICAgICAgICAgICAg
ICAgIFN0cmluZyBtc2coU3RyaW5nKEFTQ0lJTGl0ZXJhbCgidGV4dHVyZSBib3VuZCB0byB0ZXh0
dXJlIHVuaXQgIikpICsgU3RyaW5nOjpudW1iZXIoaWkpCiAgICAgICAgICAgICAgICAgICAgICsg
IiBpcyBub3QgcmVuZGVyYWJsZS4gSXQgbWF5YmUgbm9uLXBvd2VyLW9mLTIgYW5kIGhhdmUgaW5j
b21wYXRpYmxlIHRleHR1cmUgZmlsdGVyaW5nIG9yIGlzIG5vdCAndGV4dHVyZSBjb21wbGV0ZScs
IgogICAgICAgICAgICAgICAgICAgICArICIgb3IgaXQgaXMgYSBmbG9hdC9oYWxmLWZsb2F0IHR5
cGUgd2l0aCBsaW5lYXIgZmlsdGVyaW5nIGFuZCB3aXRob3V0IHRoZSByZWxldmFudCBmbG9hdC9o
YWxmLWZsb2F0IGxpbmVhciBleHRlbnNpb24gZW5hYmxlZC4iKTsKICAgICAgICAgICAgICAgICBw
cmludEdMV2FybmluZ1RvQ29uc29sZShmdW5jdGlvbk5hbWUsIG1zZy51dGY4KCkuZGF0YSgpKTsK
QEAgLTU1NjAsNyArNTU2MCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwcmludEdM
RXJyb3JUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHByaW50V2FybmluZ1Rv
Q29uc29sZShtZXNzYWdlKTsKIAogICAgIGlmICghbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93
ZWQpCi0gICAgICAgIHByaW50V2FybmluZ1RvQ29uc29sZSgiV2ViR0w6IHRvbyBtYW55IGVycm9y
cywgbm8gbW9yZSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZCB0byB0aGUgY29uc29sZSBmb3IgdGhp
cyBjb250ZXh0LiIpOworICAgICAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoQVNDSUlMaXRlcmFs
KCJXZWJHTDogdG9vIG1hbnkgZXJyb3JzLCBubyBtb3JlIGVycm9ycyB3aWxsIGJlIHJlcG9ydGVk
IHRvIHRoZSBjb25zb2xlIGZvciB0aGlzIGNvbnRleHQuIikpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKQEAgLTU5NTksNyArNTk1OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXli
ZVJlc3RvcmVDb250ZXh0KFRpbWVyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4qKQogICAgIGNhc2Ug
RXh0ZW5zaW9uczNEOjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFRoZSBy
ZW5kZXJpbmcgY29udGV4dCBpcyBub3QgcmVzdG9yZWQgaWYgdGhpcyBjb250ZXh0IHdhcwogICAg
ICAgICAvLyBndWlsdHkgb2YgY2F1c2luZyB0aGUgZ3JhcGhpY3MgcmVzZXQuCi0gICAgICAgIHBy
aW50V2FybmluZ1RvQ29uc29sZSgiV0FSTklORzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBj
YXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQ7IG5vdCByZXN0b3JpbmcgdGhlIGNvbnRl
eHQiKTsKKyAgICAgICAgcHJpbnRXYXJuaW5nVG9Db25zb2xlKEFTQ0lJTGl0ZXJhbCgiV0FSTklO
RzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8g
cmVzZXQ7IG5vdCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEV4dGVuc2lvbnMzRDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAg
IC8vIEFsd2F5cyBhbGxvdyB0aGUgY29udGV4dCB0byBiZSByZXN0b3JlZC4KQEAgLTU5NzAsNyAr
NTk3MCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXliZVJlc3RvcmVDb250ZXh0
KFRpbWVyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4qKQogICAgICAgICAvLyByZXNldCBhbmQgYXNr
IHRoZW0gd2hldGhlciB0aGV5IHdhbnQgdG8gY29udGludWUgcnVubmluZwogICAgICAgICAvLyB0
aGUgY29udGVudC4gT25seSBpZiB0aGV5IHNheSAieWVzIiBzaG91bGQgd2Ugc3RhcnQKICAgICAg
ICAgLy8gYXR0ZW1wdGluZyB0byByZXN0b3JlIHRoZSBjb250ZXh0LgotICAgICAgICBwcmludFdh
cm5pbmdUb0NvbnNvbGUoIldBUk5JTkc6IFdlYkdMIGNvbnRlbnQgb24gdGhlIHBhZ2UgbWlnaHQg
aGF2ZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQiKTsKKyAgICAgICAgcHJpbnRX
YXJuaW5nVG9Db25zb2xlKEFTQ0lJTGl0ZXJhbCgiV0FSTklORzogV2ViR0wgY29udGVudCBvbiB0
aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldCIpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC02MDY2LDE3ICs2MDY2LDE3IEBAIG5hbWVzcGFj
ZSB7CiAgICAgewogICAgICAgICBzd2l0Y2ggKGVycm9yKSB7CiAgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTToKLSAgICAgICAgICAgIHJldHVybiAiSU5WQUxJRF9F
TlVNIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIklOVkFMSURfRU5VTSIpOwog
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOgotICAgICAgICAg
ICAgcmV0dXJuICJJTlZBTElEX1ZBTFVFIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIklOVkFMSURfVkFMVUUiKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT046Ci0gICAgICAgICAgICByZXR1cm4gIklOVkFMSURfT1BFUkFUSU9OIjsK
KyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIklOVkFMSURfT1BFUkFUSU9OIik7CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok9VVF9PRl9NRU1PUlk6Ci0gICAgICAgICAg
ICByZXR1cm4gIk9VVF9PRl9NRU1PUlkiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiT1VUX09GX01FTU9SWSIpOwogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTjoKLSAgICAgICAgICAgIHJldHVybiAiSU5WQUxJRF9G
UkFNRUJVRkZFUl9PUEVSQVRJT04iOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04iKTsKICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6Q09OVEVYVF9MT1NUX1dFQkdMOgotICAgICAgICAgICAgcmV0dXJuICJDT05URVhU
X0xPU1RfV0VCR0wiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ09OVEVYVF9M
T1NUX1dFQkdMIik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIldlYkdMIEVSUk9SKCUwNHgpIiwgZXJyb3IpOwogICAgICAgICB9CkBAIC02MDg3
LDcgKzYwODcsNyBAQCBuYW1lc3BhY2Ugewogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN5
bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBDb25zb2xlRGlzcGxheVByZWZlcmVuY2UgZGlzcGxh
eSkKIHsKICAgICBpZiAobV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSAmJiBkaXNwbGF5ID09
IERpc3BsYXlJbkNvbnNvbGUpIHsKLSAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcoIldlYkdMOiAi
KSArIEdldEVycm9yU3RyaW5nKGVycm9yKSArICAiOiAiICsgU3RyaW5nKGZ1bmN0aW9uTmFtZSkg
KyAiOiAiICsgU3RyaW5nKGRlc2NyaXB0aW9uKTsKKyAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmco
QVNDSUlMaXRlcmFsKCJXZWJHTDogIikpICsgR2V0RXJyb3JTdHJpbmcoZXJyb3IpICsgICI6ICIg
KyBTdHJpbmcoZnVuY3Rpb25OYW1lKSArICI6ICIgKyBTdHJpbmcoZGVzY3JpcHRpb24pOwogICAg
ICAgcHJpbnRHTEVycm9yVG9Db25zb2xlKHN0cik7CiAgICAgfQogICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwpAQCAtNjA5Nyw3ICs2MDk3LDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnN5bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yLCBjb25zdCBj
aGFyKiBmdW5jdGkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwcmludEdMV2FybmluZ1Rv
Q29uc29sZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
KQogewogICAgIGlmIChtX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlKSB7Ci0gICAgICAgIFN0
cmluZyBzdHIgPSBTdHJpbmcoIldlYkdMOiAiKSArIFN0cmluZyhmdW5jdGlvbk5hbWUpICsgIjog
IiArIFN0cmluZyhkZXNjcmlwdGlvbik7CisgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcoQVND
SUlMaXRlcmFsKCJXZWJHTDogIikpICsgU3RyaW5nKGZ1bmN0aW9uTmFtZSkgKyAiOiAiICsgU3Ry
aW5nKGRlc2NyaXB0aW9uKTsKICAgICAgICAgcHJpbnRHTEVycm9yVG9Db25zb2xlKHN0cik7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAppbmRleCA5MWE2NjA2Li4zMGQ0Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTdHJpbmcgc2Vy
aWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFsJiBudW1iZXIpCiB7CiAgICAgaWYgKG51
bWJlci5pc1plcm8oKSkgewogICAgICAgICAvLyBEZWNpbWFsOjp0b1N0cmluZyBhcHBlbmRzIGV4
cG9uZW50LCBlLmcuICIwZS0xOCIKLSAgICAgICAgcmV0dXJuIG51bWJlci5pc05lZ2F0aXZlKCkg
PyAiLTAiIDogIjAiOworICAgICAgICByZXR1cm4gbnVtYmVyLmlzTmVnYXRpdmUoKSA/IEFTQ0lJ
TGl0ZXJhbCgiLTAiKSA6IEFTQ0lJTGl0ZXJhbCgiMCIpOwogICAgIH0KICAgICByZXR1cm4gbnVt
YmVyLnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA1NjZlYTYyLi4xNjhhZjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTY1LDIy
ICs2NSwyMiBAQCBTdHJpbmcgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5pdGlhdG9yRm9yKFRhZ0lk
IHRhZ0lkKQogewogICAgIHN3aXRjaCAodGFnSWQpIHsKICAgICBjYXNlIFRhZ0lkOjpJbWc6Ci0g
ICAgICAgIHJldHVybiAiaW1nIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW1nIik7
CiAgICAgY2FzZSBUYWdJZDo6SW5wdXQ6Ci0gICAgICAgIHJldHVybiAiaW5wdXQiOworICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJpbnB1dCIpOwogICAgIGNhc2UgVGFnSWQ6Okxpbms6Ci0g
ICAgICAgIHJldHVybiAibGluayI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImxpbmsi
KTsKICAgICBjYXNlIFRhZ0lkOjpTY3JpcHQ6Ci0gICAgICAgIHJldHVybiAic2NyaXB0IjsKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2NyaXB0Iik7CiAgICAgY2FzZSBUYWdJZDo6VW5r
bm93bjoKICAgICBjYXNlIFRhZ0lkOjpTdHlsZToKICAgICBjYXNlIFRhZ0lkOjpCYXNlOgogICAg
IGNhc2UgVGFnSWQ6OlRlbXBsYXRlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidW5r
bm93biIpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gInVu
a25vd24iOworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInVua25vd24iKTsKIH0KIAogY2xhc3Mg
VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCmluZGV4IDE2ZWE3
NjEuLmZhN2FmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxS
ZXNvdXJjZVByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFJlc291cmNlUHJlbG9hZGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEhUTUxSZXNvdXJj
ZVByZWxvYWRlcjo6cHJlbG9hZChQcmVsb2FkUmVxdWVzdFN0cmVhbSByZXF1ZXN0cykKIHN0YXRp
YyBib29sIG1lZGlhQXR0cmlidXRlTWF0Y2hlcyhGcmFtZSogZnJhbWUsIFJlbmRlclN0eWxlKiBy
ZW5kZXJTdHlsZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICBSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbWVkaWFRdWVyaWVzID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dp
bmdEZXNjcmlwdGlvblN5bnRheChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgTWVkaWFRdWVyeUV2YWx1
YXRvciBtZWRpYVF1ZXJ5RXZhbHVhdG9yKCJzY3JlZW4iLCBmcmFtZSwgcmVuZGVyU3R5bGUpOwor
ICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgbWVkaWFRdWVyeUV2YWx1YXRvcihBU0NJSUxpdGVyYWwo
InNjcmVlbiIpLCBmcmFtZSwgcmVuZGVyU3R5bGUpOwogICAgIHJldHVybiBtZWRpYVF1ZXJ5RXZh
bHVhdG9yLmV2YWwobWVkaWFRdWVyaWVzLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCAyNWQ0YmZmLi43ZTMzYWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZv
aWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQsIFhTU0F1ZGl0b3JEZWxlZ2F0
ZSogYXVkaXRvckRlbGVnYXRlKQogICAgICAgICBpZiAoKHhzc1Byb3RlY3Rpb25IZWFkZXIgPT0g
Q29udGVudFNlY3VyaXR5UG9saWN5OjpGaWx0ZXJSZWZsZWN0ZWRYU1MgfHwgeHNzUHJvdGVjdGlv
bkhlYWRlciA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkJsb2NrUmVmbGVjdGVkWFNTKSAmJiAh
cmVwb3J0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVS
TCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChyZXBvcnRVUkwpOwogICAgICAgICAgICAgaWYgKE1p
eGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLCB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMKSkgewotICAgICAgICAgICAgICAgIGVycm9yRGV0
YWlscyA9ICJpbnNlY3VyZSByZXBvcnRpbmcgVVJMIGZvciBzZWN1cmUgcGFnZSI7CisgICAgICAg
ICAgICAgICAgZXJyb3JEZXRhaWxzID0gQVNDSUlMaXRlcmFsKCJpbnNlY3VyZSByZXBvcnRpbmcg
VVJMIGZvciBzZWN1cmUgcGFnZSIpOwogICAgICAgICAgICAgICAgIHhzc1Byb3RlY3Rpb25IZWFk
ZXIgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0ludmFsaWQ7CiAgICAgICAg
ICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVSTCA9IFVSTCgpOwogICAgICAgICAgICAgfQpA
QCAtNjE4LDcgKzYxOCw3IEBAIFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVkU25pcHBldEZvckF0
dHJpYnV0ZShjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QsCiAgICAgICAgIC8vICEt
LSBmb2xsb3dpbmcgYSBsZXNzLXRoYW4gc2lnbi4gV2Ugc3RvcCBpbnN0ZWFkIG9uIGFueSBhbXBl
cnNhbmQKICAgICAgICAgLy8gc2xhc2gsIG9yIGxlc3MtdGhhbiBzaWduLgogICAgICAgICBzaXpl
X3QgcG9zaXRpb24gPSAwOwotICAgICAgICBpZiAoKHBvc2l0aW9uID0gZGVjb2RlZFNuaXBwZXQu
ZmluZCgiPSIpKSAhPSBub3RGb3VuZAorICAgICAgICBpZiAoKHBvc2l0aW9uID0gZGVjb2RlZFNu
aXBwZXQuZmluZCgnPScpKSAhPSBub3RGb3VuZAogICAgICAgICAgICAgJiYgKHBvc2l0aW9uID0g
ZGVjb2RlZFNuaXBwZXQuZmluZChpc05vdEhUTUxTcGFjZSwgcG9zaXRpb24gKyAxKSkgIT0gbm90
Rm91bmQKICAgICAgICAgICAgICYmIChwb3NpdGlvbiA9IGRlY29kZWRTbmlwcGV0LmZpbmQoaXNU
ZXJtaW5hdGluZ0NoYXJhY3RlciwgaXNIVE1MUXVvdGUoZGVjb2RlZFNuaXBwZXRbcG9zaXRpb25d
KSA/IHBvc2l0aW9uICsgMSA6IHBvc2l0aW9uKSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAg
IGRlY29kZWRTbmlwcGV0LnRydW5jYXRlKHBvc2l0aW9uKTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBT
dHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlZFNuaXBwZXRGb3JKYXZhU2NyaXB0KGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmVxdWVzdAogICAgICAgICAgICAgd2hpbGUgKHN0YXJ0UG9zaXRpb24g
PCBlbmRQb3NpdGlvbiAmJiAhaXNKU05ld2xpbmUoc3RyaW5nW3N0YXJ0UG9zaXRpb25dKSkKICAg
ICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uKys7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRz
TXVsdGlMaW5lQ29tbWVudEF0KHN0cmluZywgc3RhcnRQb3NpdGlvbikpIHsKLSAgICAgICAgICAg
IGlmIChzdGFydFBvc2l0aW9uICsgMiA8IGVuZFBvc2l0aW9uICYmIChmb3VuZFBvc2l0aW9uID0g
c3RyaW5nLmZpbmQoIiovIiwgc3RhcnRQb3NpdGlvbiArIDIpKSAhPSBub3RGb3VuZCkKKyAgICAg
ICAgICAgIGlmIChzdGFydFBvc2l0aW9uICsgMiA8IGVuZFBvc2l0aW9uICYmIChmb3VuZFBvc2l0
aW9uID0gc3RyaW5nLmZpbmQoQVNDSUlMaXRlcmFsKCIqLyIpLCBzdGFydFBvc2l0aW9uICsgMikp
ICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBmb3VuZFBvc2l0
aW9uICsgMjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9u
ID0gZW5kUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvckRlbGVnYXRlLmNwcAppbmRleCA4MDRjMGU1Li5mY2Q5NGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTgzLDExICs4
MywxMSBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBYU1NBdWRpdG9yRGVsZWdhdGU6OmdlbmVyYXRl
VmlvbGF0aW9uUmVwb3J0KGNvbnN0IFhTU0luZm8mCiAgICAgfQogCiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcmVwb3J0RGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0g
ICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LXVybCIsIHhzc0luZm8ubV9vcmln
aW5hbFVSTCk7Ci0gICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LWJvZHkiLCBo
dHRwQm9keSk7CisgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmVx
dWVzdC11cmwiKSwgeHNzSW5mby5tX29yaWdpbmFsVVJMKTsKKyAgICByZXBvcnREZXRhaWxzLT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZXF1ZXN0LWJvZHkiKSwgaHR0cEJvZHkpOwogCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICByZXBvcnRPYmplY3QtPnNldE9iamVjdCgieHNzLXJlcG9ydCIsIHJlcG9y
dERldGFpbHMucmVsZWFzZSgpKTsKKyAgICByZXBvcnRPYmplY3QtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInhzcy1yZXBvcnQiKSwgcmVwb3J0RGV0YWlscy5yZWxlYXNlKCkpOwogCiAgICAgcmV0
dXJuIEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAppbmRleCBiMDlmMzhhLi5lZjhhNTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00MTks
NyArNDE5LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
PiBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW4KIAogICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFD
b250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICBi
dXR0b24tPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBidXR0b24tPnNldFR5cGUo
ImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+c2V0VHlwZShBU0NJSUxpdGVyYWwoImJ1dHRvbiIpKTsK
ICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIApAQCAtNDQzLDcgKzQ0Myw3IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11CiB7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIp
OworICAgIGJ1dHRvbi0+c2V0VHlwZShBU0NJSUxpdGVyYWwoImJ1dHRvbiIpKTsKICAgICByZXR1
cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIApAQCAtNDU5LDcgKzQ1OSw3IEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVt
ZW50OjpjcmVhdGUoCiB7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQoZG9j
dW1lbnQpKTsKICAgICBidXR0b24tPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBi
dXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+c2V0VHlwZShBU0NJSUxpdGVy
YWwoImJ1dHRvbiIpKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIApAQCAtNDkz
LDcgKzQ5Myw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sT3ZlcmxheVBsYXlCdXR0b25FbGVt
ZW50PiBNZWRpYUNvbnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsCiB7CiAgICAgUmVmUHRyPE1lZGlh
Q29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRv
bi0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0
dG9uIik7CisgICAgYnV0dG9uLT5zZXRUeXBlKEFTQ0lJTGl0ZXJhbCgiYnV0dG9uIikpOwogICAg
IHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCkBAIC01MjcsNyArNTI3LDcgQEAgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFNl
ZWtGb3J3YXJkQnV0dG9uRWwKIHsKICAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRC
dXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sU2Vla0Zvcndh
cmRCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5lbnN1cmVVc2VyQWdlbnRT
aGFkb3dSb290KCk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICBidXR0b24t
PnNldFR5cGUoQVNDSUlMaXRlcmFsKCJidXR0b24iKSk7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxl
YXNlKCk7CiB9CiAKQEAgLTU0Myw3ICs1NDMsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNl
ZWtCYWNrQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50Ogog
ewogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9
IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQp
KTsKICAgICBidXR0b24tPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBidXR0b24t
PnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+c2V0VHlwZShBU0NJSUxpdGVyYWwoImJ1
dHRvbiIpKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KIApAQCAtNTU5LDcgKzU1
OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlCiB7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJv
bFJld2luZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5lbnN1cmVVc2VyQWdl
bnRTaGFkb3dSb290KCk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICBidXR0
b24tPnNldFR5cGUoQVNDSUlMaXRlcmFsKCJidXR0b24iKSk7CiAgICAgcmV0dXJuIGJ1dHRvbi5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTU4NCw3ICs1ODQsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0
aQogewogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVu
dD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0
b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dS
b290KCk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICBidXR0b24tPnNldFR5
cGUoQVNDSUlMaXRlcmFsKCJidXR0b24iKSk7CiAgICAgYnV0dG9uLT5oaWRlKCk7CiAgICAgcmV0
dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC02MTgsNyArNjE4LDcgQEAgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3MKIAogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUb2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgYnV0
dG9uLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJi
dXR0b24iKTsKKyAgICBidXR0b24tPnNldFR5cGUoQVNDSUlMaXRlcmFsKCJidXR0b24iKSk7CiAg
ICAgYnV0dG9uLT5oaWRlKCk7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC04
NDYsNyArODQ2LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKERvY3UKIAogICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICB0aW1lbGluZS0+
ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIHRpbWVsaW5lLT5zZXRUeXBlKCJyYW5n
ZSIpOworICAgIHRpbWVsaW5lLT5zZXRUeXBlKEFTQ0lJTGl0ZXJhbCgicmFuZ2UiKSk7CiAgICAg
dGltZWxpbmUtPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKICAgICByZXR1
cm4gdGltZWxpbmUucmVsZWFzZSgpOwogfQpAQCAtOTEyLDcgKzkxMiw3IEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbFZv
bHVtZVNsaWRlckVsCiB7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVy
RWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xp
ZGVyRWxlbWVudChkb2N1bWVudCkpOwogICAgIHNsaWRlci0+ZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdCgpOwotICAgIHNsaWRlci0+c2V0VHlwZSgicmFuZ2UiKTsKKyAgICBzbGlkZXItPnNldFR5
cGUoQVNDSUlMaXRlcmFsKCJyYW5nZSIpKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVj
aXNpb25BdHRyLCAiZmxvYXQiKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAi
MSIpOwogICAgIHJldHVybiBzbGlkZXIucmVsZWFzZSgpOwpAQCAtOTMwLDcgKzkzMCw3IEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1CiB7CiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBzbGlkZXItPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBzbGlkZXItPnNldFR5cGUoInJhbmdlIik7
CisgICAgc2xpZGVyLT5zZXRUeXBlKEFTQ0lJTGl0ZXJhbCgicmFuZ2UiKSk7CiAgICAgc2xpZGVy
LT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CiAgICAgc2xpZGVyLT5zZXRB
dHRyaWJ1dGUobWF4QXR0ciwgIjEiKTsKICAgICByZXR1cm4gc2xpZGVyLnJlbGVhc2UoKTsKQEAg
LTk0OCw3ICs5NDgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbQogewogICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0
dG9uLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJi
dXR0b24iKTsKKyAgICBidXR0b24tPnNldFR5cGUoQVNDSUlMaXRlcmFsKCJidXR0b24iKSk7CiAg
ICAgYnV0dG9uLT5oaWRlKCk7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC05
OTIsNyArOTkyLDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWlu
QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblYKIHsKICAgICBSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChkb2N1
bWVudCkpOwogICAgIGJ1dHRvbi0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIGJ1
dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgYnV0dG9uLT5zZXRUeXBlKEFTQ0lJTGl0ZXJh
bCgiYnV0dG9uIikpOwogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQogCkBAIC0xMDE4
LDcgKzEwMTgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVgogewogICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KGRvY3Vt
ZW50KSk7CiAgICAgYnV0dG9uLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgYnV0
dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICBidXR0b24tPnNldFR5cGUoQVNDSUlMaXRlcmFs
KCJidXR0b24iKSk7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCmluZGV4IDc1
ZDFiMDQuLmY4ZjBmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmNwcApAQCAtMTExLDEwICsxMTEsMTAgQEAgdm9pZCBUZXh0VHJhY2tD
dWVHZW5lcmljQm94RWxlbWVudDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZp
ZGVvU2l6ZSkKICAgICAgICAgbWF4U2l6ZSA9IDEwMC4wIC0gdGV4dFBvc2l0aW9uOwogCiAgICAg
aWYgKGN1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkgewot
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICItd2Vi
a2l0LW1pbi1jb250ZW50Iik7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlNaW5XaWR0aCwgQVNDSUlMaXRlcmFsKCItd2Via2l0LW1pbi1jb250ZW50IikpOwogICAg
ICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIG1heFNpemUs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgIi13ZWJraXQt
bWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbkhlaWdodCwgQVNDSUlMaXRlcmFsKCItd2Via2l0LW1pbi1jb250ZW50IikpOwogICAgICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRDdWUuY3BwCmluZGV4IGIxY2M1OGEuLmU3MjE1NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTE5MSwxNCArMTkxLDE0IEBAIHZvaWQgVlRUQ3VlQm94
OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIGlmICht
X2N1ZS52ZXJ0aWNhbCgpID09IGhvcml6b250YWxLZXl3b3JkKCkpIHsKICAgICAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBuZXdDdWVTaXplLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SGVpZ2h0LCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsICItd2Via2l0LW1pbi1jb250ZW50Iik7Cisg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgQVNDSUlM
aXRlcmFsKCItd2Via2l0LW1pbi1jb250ZW50IikpOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIG1heFNpemUsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIGlmICgoYWxpZ25tZW50ID09IENTU1ZhbHVlTWlkZGxl
IHx8IGFsaWdubWVudCA9PSBDU1NWYWx1ZUNlbnRlcikgJiYgbXVsdGlwbGllciAhPSAxLjApCiAg
ICAgICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgc3RhdGlj
X2Nhc3Q8ZG91YmxlPihwb3NpdGlvbi5maXJzdCAtIChuZXdDdWVTaXplIC0gbV9jdWUuZ2V0Q1NT
U2l6ZSgpKSAvIDIpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwg
Q1NTVmFsdWVBdXRvKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUhlaWdodCwgbmV3Q3VlU2l6ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsK
LSAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgIi13
ZWJraXQtbWluLWNvbnRlbnQiKTsKKyAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1pbkhlaWdodCwgQVNDSUlMaXRlcmFsKCItd2Via2l0LW1pbi1jb250ZW50IikpOwog
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhT
aXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICBpZiAoKGFs
aWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIp
ICYmIG11bHRpcGxpZXIgIT0gMS4wKQogICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAo
bmV3Q3VlU2l6ZSAtIG1fY3VlLmdldENTU1NpemUoKSkgLyAyKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApp
bmRleCAwNzI3MGMyLi4wNDY3ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdp
b24uY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZ1Zh
bHVlKFJlZ2lvblNldHRpbmcgc2V0dGluZywgVlRUU2Nhbm5lciYgaW5wdXQpCiAgICAgc3dpdGNo
IChzZXR0aW5nKSB7CiAgICAgY2FzZSBJZDogewogICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUg
PSBpbnB1dC5leHRyYWN0U3RyaW5nKHZhbHVlUnVuKTsKLSAgICAgICAgaWYgKHN0cmluZ1ZhbHVl
LmZpbmQoIi0tPiIpID09IG5vdEZvdW5kKQorICAgICAgICBpZiAoc3RyaW5nVmFsdWUuZmluZChB
U0NJSUxpdGVyYWwoIi0tPiIpKSA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIG1faWQgPSBzdHJp
bmdWYWx1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDIwNjUyZTguLjIxYjBhMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBX
ZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWVQYWlyKFZUVFNjYW5uZXImIHZh
bHVlU2Nhbm5lciwgY2hhcgogV2ViVlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIoV2ViVlRUUGFyc2Vy
Q2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3RhdGUoSW5pdGlhbCkK
LSAgICAsIG1fZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4i
LCBVVEY4RW5jb2RpbmcoKSkpCisgICAgLCBtX2RlY29kZXIoVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCBVVEY4RW5jb2RpbmcoKSkpCiAgICAg
LCBtX2N1cnJlbnRTdGFydFRpbWUoMCkKICAgICAsIG1fY3VycmVudEVuZFRpbWUoMCkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6
cGFyc2UoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgLy8gU3RlcCAxNSAtIEJyZWFrIG91dCBvZiBoZWFkZXIgbG9vcCBpZiB0aGUgbGluZSBjb3Vs
ZCBiZSBhIHRpbWVzdGFtcCBsaW5lLgotICAgICAgICAgICAgaWYgKGxpbmUuY29udGFpbnMoIi0t
PiIpKQorICAgICAgICAgICAgaWYgKGxpbmUuY29udGFpbnMoQVNDSUlMaXRlcmFsKCItLT4iKSkp
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IHJlY292ZXJDdWUobGluZSk7CiAKICAgICAgICAg
ICAgIC8vIFN0ZXAgMTYgLSBMaW5lIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nIGFuZCBkb2VzIG5v
dCBjb250YWluICItLT4iLgpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpj
b2xsZWN0TWV0YWRhdGFIZWFkZXIoY29uc3QgU3RyaW5nJiBsaW5lKQogCiBXZWJWVFRQYXJzZXI6
OlBhcnNlU3RhdGUgV2ViVlRUUGFyc2VyOjpjb2xsZWN0Q3VlSWQoY29uc3QgU3RyaW5nJiBsaW5l
KQogewotICAgIGlmIChsaW5lLmNvbnRhaW5zKCItLT4iKSkKKyAgICBpZiAobGluZS5jb250YWlu
cyhBU0NJSUxpdGVyYWwoIi0tPiIpKSkKICAgICAgICAgcmV0dXJuIGNvbGxlY3RUaW1pbmdzQW5k
U2V0dGluZ3MobGluZSk7CiAgICAgbV9jdXJyZW50SWQgPSBsaW5lOwogICAgIHJldHVybiBUaW1p
bmdzQW5kU2V0dGluZ3M7CkBAIC0zNDEsNyArMzQxLDcgQEAgV2ViVlRUUGFyc2VyOjpQYXJzZVN0
YXRlIFdlYlZUVFBhcnNlcjo6Y29sbGVjdEN1ZVRleHQoY29uc3QgU3RyaW5nJiBsaW5lKQogICAg
ICAgICByZXR1cm4gSWQ7CiAgICAgfQogICAgIC8vIFN0ZXAgMzUuCi0gICAgaWYgKGxpbmUuY29u
dGFpbnMoIi0tPiIpKSB7CisgICAgaWYgKGxpbmUuY29udGFpbnMoQVNDSUlMaXRlcmFsKCItLT4i
KSkpIHsKICAgICAgICAgLy8gU3RlcCAzOS00MC4KICAgICAgICAgY3JlYXRlTmV3Q3VlKCk7CiAK
QEAgLTM0OSw3ICszNDksNyBAQCBXZWJWVFRQYXJzZXI6OlBhcnNlU3RhdGUgV2ViVlRUUGFyc2Vy
Ojpjb2xsZWN0Q3VlVGV4dChjb25zdCBTdHJpbmcmIGxpbmUpCiAgICAgICAgIHJldHVybiByZWNv
dmVyQ3VlKGxpbmUpOwogICAgIH0KICAgICBpZiAoIW1fY3VycmVudENvbnRlbnQuaXNFbXB0eSgp
KQotICAgICAgICBtX2N1cnJlbnRDb250ZW50LmFwcGVuZCgiXG4iKTsKKyAgICAgICAgbV9jdXJy
ZW50Q29udGVudC5hcHBlbmQoJ1xuJyk7CiAgICAgbV9jdXJyZW50Q29udGVudC5hcHBlbmQobGlu
ZSk7CiAKICAgICByZXR1cm4gQ3VlVGV4dDsKQEAgLTM2OCw3ICszNjgsNyBAQCBXZWJWVFRQYXJz
ZXI6OlBhcnNlU3RhdGUgV2ViVlRUUGFyc2VyOjppZ25vcmVCYWRDdWUoY29uc3QgU3RyaW5nJiBs
aW5lKQogewogICAgIGlmIChsaW5lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIElkOwotICAg
IGlmIChsaW5lLmNvbnRhaW5zKCItLT4iKSkKKyAgICBpZiAobGluZS5jb250YWlucyhBU0NJSUxp
dGVyYWwoIi0tPiIpKSkKICAgICAgICAgcmV0dXJuIHJlY292ZXJDdWUobGluZSk7CiAgICAgcmV0
dXJuIEJhZEN1ZTsKIH0KQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVy
Ojpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgU3Ry
aW5nIGNoYXJhY3RlcnNTdHJpbmcgPSBtX3Rva2VuLmNoYXJhY3RlcnMoKTsKICAgICAgICAgZG91
YmxlIHBhcnNlZFRpbWVTdGFtcDsKICAgICAgICAgaWYgKFdlYlZUVFBhcnNlcjo6Y29sbGVjdFRp
bWVTdGFtcChjaGFyYWN0ZXJzU3RyaW5nLCBwYXJzZWRUaW1lU3RhbXApKQotICAgICAgICAgICAg
bV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
cmVhdGUoZG9jdW1lbnQsICJ0aW1lc3RhbXAiLCBjaGFyYWN0ZXJzU3RyaW5nKSk7CisgICAgICAg
ICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OmNyZWF0ZShkb2N1bWVudCwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgY2hhcmFjdGVy
c1N0cmluZykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggNWEyMzgxOS4uMTQ0NDU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3Mg
RE9NRWRpdG9yOjpSZW1vdmVDaGlsZEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW92ZUNoaWxkQWN0aW9uKTsKIHB1
YmxpYzoKICAgICBSZW1vdmVDaGlsZEFjdGlvbihOb2RlKiBwYXJlbnROb2RlLCBOb2RlKiBub2Rl
KQotICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigiUmVtb3ZlQ2hpbGQiKQorICAg
ICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbihBU0NJSUxpdGVyYWwoIlJlbW92ZUNoaWxk
IikpCiAgICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCiAgICAgICAgICwgbV9ub2Rl
KG5vZGUpCiAgICAgewpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJl
Zm9yZUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc2VydEJlZm9yZUFjdGlvbik7CiBwdWJsaWM6CiAgICAgSW5zZXJ0
QmVmb3JlQWN0aW9uKE5vZGUqIHBhcmVudE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9k
ZSogYW5jaG9yTm9kZSkKLSAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIkluc2Vy
dEJlZm9yZSIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKEFTQ0lJTGl0ZXJh
bCgiSW5zZXJ0QmVmb3JlIikpCiAgICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCiAg
ICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9hbmNob3JOb2RlKGFuY2hvck5vZGUp
CkBAIC0xMjcsNyArMTI3LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpSZW1vdmVBdHRyaWJ1dGVBY3Rp
b24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZW1vdmVBdHRyaWJ1dGVBY3Rpb24pOwogcHVibGljOgogICAgIFJlbW92ZUF0dHJp
YnV0ZUFjdGlvbihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAg
IDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCJSZW1vdmVBdHRyaWJ1dGUiKQorICAgICAgICA6
IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbihBU0NJSUxpdGVyYWwoIlJlbW92ZUF0dHJpYnV0ZSIp
KQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fbmFtZShuYW1lKQog
ICAgIHsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBET01FZGl0b3I6OlNldEF0dHJpYnV0ZUFj
dGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNldEF0dHJpYnV0ZUFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0QXR0cmlidXRl
QWN0aW9uKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKLSAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIlNldEF0dHJpYnV0
ZSIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKEFTQ0lJTGl0ZXJhbCgiU2V0
QXR0cmlidXRlIikpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBj
bGFzcyBET01FZGl0b3I6OlNldE91dGVySFRNTEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0
b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldE91dGVySFRNTEFjdGlv
bik7CiBwdWJsaWM6CiAgICAgU2V0T3V0ZXJIVE1MQWN0aW9uKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgaHRtbCkKLSAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIlNldE91dGVy
SFRNTCIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKEFTQ0lJTGl0ZXJhbCgi
U2V0T3V0ZXJIVE1MIikpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0
U2libGluZyhub2RlLm5leHRTaWJsaW5nKCkpCiAgICAgICAgICwgbV9odG1sKGh0bWwpCkBAIC0y
NTEsNyArMjUxLDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpSZXBsYWNlV2hvbGVUZXh0QWN0aW9uIDog
cHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVwbGFjZVdob2xlVGV4dEFjdGlvbik7CiBwdWJsaWM6CiAgICAgUmVwbGFjZVdob2xlVGV4
dEFjdGlvbihUZXh0KiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQotICAgICAgICA6IElu
c3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigiUmVwbGFjZVdob2xlVGV4dCIpCisgICAgICAgIDogSW5z
cGVjdG9ySGlzdG9yeTo6QWN0aW9uKEFTQ0lJTGl0ZXJhbCgiUmVwbGFjZVdob2xlVGV4dCIpKQog
ICAgICAgICAsIG1fdGV4dE5vZGUodGV4dE5vZGUpCiAgICAgICAgICwgbV90ZXh0KHRleHQpCiAg
ICAgewpAQCAtMjg1LDcgKzI4NSw3IEBAIGNsYXNzIERPTUVkaXRvcjo6UmVwbGFjZUNoaWxkTm9k
ZUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24pOwogcHVibGljOgogICAgIFJlcGxh
Y2VDaGlsZE5vZGVBY3Rpb24oTm9kZSogcGFyZW50Tm9kZSwgUGFzc1JlZlB0cjxOb2RlPiBuZXdO
b2RlLCBOb2RlKiBvbGROb2RlKQotICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigi
UmVwbGFjZUNoaWxkTm9kZSIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKEFT
Q0lJTGl0ZXJhbCgiUmVwbGFjZUNoaWxkTm9kZSIpKQogICAgICAgICAsIG1fcGFyZW50Tm9kZShw
YXJlbnROb2RlKQogICAgICAgICAsIG1fbmV3Tm9kZShuZXdOb2RlKQogICAgICAgICAsIG1fb2xk
Tm9kZShvbGROb2RlKQpAQCAtMzE3LDcgKzMxNyw3IEBAIGNsYXNzIERPTUVkaXRvcjo6U2V0Tm9k
ZVZhbHVlQWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2V0Tm9kZVZhbHVlQWN0aW9uKTsKIHB1YmxpYzoKICAgICBTZXRO
b2RlVmFsdWVBY3Rpb24oTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICAgICAg
OiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIlNldE5vZGVWYWx1ZSIpCisgICAgICAgIDogSW5z
cGVjdG9ySGlzdG9yeTo6QWN0aW9uKEFTQ0lJTGl0ZXJhbCgiU2V0Tm9kZVZhbHVlIikpCiAgICAg
ICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDNmMmZhOWEu
LjEyYWQzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwCkBAIC0xNDMsOSArMTQzLDkgQEAgTm9kZSogRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUo
Tm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIEV4Y2VwdGlvbkNvZGUKICAgICBmb3Ig
KE5vZGUqIGNoaWxkID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZCAhPSAmbm9kZTsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgbmV3TGlzdC5hcHBlbmQoY3Jl
YXRlRGlnZXN0KGNoaWxkLCBudWxscHRyKSk7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZyYWdt
ZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShoZWFkVGFnKSAmJiAhY2hpbGQtPmZpcnN0
Q2hpbGQoKSAmJiBtYXJrdXBDb3B5LmZpbmQoIjwvaGVhZD4iKSA9PSBub3RGb3VuZCkKKyAgICAg
ICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKGhlYWRUYWcpICYmICFjaGlsZC0+Zmlyc3RDaGlsZCgp
ICYmIG1hcmt1cENvcHkuZmluZChBU0NJSUxpdGVyYWwoIjwvaGVhZD4iKSkgPT0gbm90Rm91bmQp
CiAgICAgICAgICAgICBjb250aW51ZTsgLy8gSFRNTDUgcGFyc2VyIGluc2VydHMgZW1wdHkgPGhl
YWQ+IHRhZyB3aGVuZXZlciBpdCBwYXJzZXMgPGJvZHk+Ci0gICAgICAgIGlmIChjaGlsZC0+aGFz
VGFnTmFtZShib2R5VGFnKSAmJiAhY2hpbGQtPmZpcnN0Q2hpbGQoKSAmJiBtYXJrdXBDb3B5LmZp
bmQoIjwvYm9keT4iKSA9PSBub3RGb3VuZCkKKyAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1l
KGJvZHlUYWcpICYmICFjaGlsZC0+Zmlyc3RDaGlsZCgpICYmIG1hcmt1cENvcHkuZmluZChBU0NJ
SUxpdGVyYWwoIjwvYm9keT4iKSkgPT0gbm90Rm91bmQpCiAgICAgICAgICAgICBjb250aW51ZTsg
Ly8gSFRNTDUgcGFyc2VyIGluc2VydHMgZW1wdHkgPGJvZHk+IHRhZyB3aGVuZXZlciBpdCBwYXJz
ZXMgPC9oZWFkPgogICAgICAgICBuZXdMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsICZt
X3VudXNlZE5vZGVzTWFwKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMTY5ZDM3Yy4uNzFjNGM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC03OTIsNyArNzky
LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUkKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXQq
IGluc3BlY3RvclN0eWxlU2hlZXQgPSB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KCZub2RlLT5kb2N1
bWVudCgpLCB0cnVlKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpIHsKLSAgICAgICAg
KmVycm9yU3RyaW5nID0gIk5vIHRhcmdldCBzdHlsZXNoZWV0IGZvdW5kIjsKKyAgICAgICAgKmVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyB0YXJnZXQgc3R5bGVzaGVldCBmb3VuZCIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04OTMsMTEgKzg5MywxMSBAQCBFbGVtZW50KiBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+bm9kZUZvcklkKG5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJObyBub2Rl
IHdpdGggZ2l2ZW4gaWQgZm91bmQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgKmVy
cm9yU3RyaW5nID0gIk5vdCBhbiBlbGVtZW50IG5vZGUiOworICAgICAgICAqZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIk5vdCBhbiBlbGVtZW50IG5vZGUiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CkBAIC05OTQsNyArOTk0
LDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzc2VydFN0eWxl
U2hlZXRGb3JJZChFcnJvclN0cmluZyogZXJyb3IKIHsKICAgICBJZFRvSW5zcGVjdG9yU3R5bGVT
aGVldDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQoc3R5bGVT
aGVldElkKTsKICAgICBpZiAoaXQgPT0gbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5lbmQoKSkg
ewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gc3R5bGUgc2hlZXQgd2l0aCBnaXZlbiBpZCBm
b3VuZCI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gc3R5bGUgc2hl
ZXQgd2l0aCBnaXZlbiBpZCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGIyY2I0YzYuLmU4YzRiOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTE5LDE0
ICsxMTksMTQgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGNvbG9yT2JqZWN0KQogICAgIGludCByOwogICAgIGludCBnOwogICAgIGludCBi
OwotICAgIGJvb2wgc3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoInIiLCAmcik7
Ci0gICAgc3VjY2VzcyB8PSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJnIiwgJmcpOwotICAg
IHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiYiIsICZiKTsKKyAgICBib29s
IHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiciIpLCAm
cik7CisgICAgc3VjY2VzcyB8PSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJh
bCgiZyIpLCAmZyk7CisgICAgc3VjY2VzcyB8PSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgiYiIpLCAmYik7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4g
Q29sb3I6OnRyYW5zcGFyZW50OwogCiAgICAgZG91YmxlIGE7Ci0gICAgc3VjY2VzcyA9ICgqY29s
b3JPYmplY3QpLT5nZXROdW1iZXIoImEiLCAmYSk7CisgICAgc3VjY2VzcyA9ICgqY29sb3JPYmpl
Y3QpLT5nZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJhIiksICZhKTsKICAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgIHJldHVybiBDb2xvcihyLCBnLCBiKTsKIApAQCAtMzY4LDcgKzM2OCw3IEBAIE5v
ZGUqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnROb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CiAg
ICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3QgZmluZCBu
b2RlIHdpdGggZ2l2ZW4gaWQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBnaXZlbiBpZCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG5vZGU7CkBAIC0zODAsNyArMzgwLDcgQEAgRG9jdW1l
bnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmICghbm9kZS0+aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJsZSI7CisgICAgICAgICplcnJvclN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiRG9jdW1lbnQgaXMgbm90IGF2YWlsYWJsZSIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIHRvRG9jdW1lbnQobm9kZSk7CkBAIC0zOTIs
NyArMzkyLDcgQEAgRWxlbWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgaXMgbm90IGFuIEVsZW1lbnQiOworICAgICAgICAq
ZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vZGUgaXMgbm90IGFuIEVsZW1lbnQiKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7
CkBAIC00MDQsNyArNDA0LDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRh
YmxlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChub2RlLT5pc0luU2hhZG93VHJl
ZSgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJDYW4gbm90IGVkaXQgbm9kZXMgZnJvbSBz
aGFkb3cgdHJlZXMiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNhbiBu
b3QgZWRpdCBub2RlcyBmcm9tIHNoYWRvdyB0cmVlcyIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgcmV0dXJuIG5vZGU7CkBAIC00MTYsNyArNDE2LDcgQEAgRWxlbWVudCog
SW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKGVsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkpIHsKLSAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkNhbiBub3QgZWRpdCBlbGVtZW50cyBmcm9tIHNoYWRvdyB0cmVlcyI7CisgICAgICAg
ICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuIG5vdCBlZGl0IGVsZW1lbnRzIGZyb20g
c2hhZG93IHRyZWVzIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1
cm4gZWxlbWVudDsKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpn
ZXREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6Ogog
ICAgIG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KSB7
Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJEb2N1bWVudCBpcyBub3QgYXZhaWxhYmxlIjsKKyAg
ICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJEb2N1bWVudCBpcyBub3QgYXZhaWxh
YmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBpbnQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBkb2N1bWVudAogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmICgmbm9kZVRvUHVzaC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkgewotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiTm9kZSBpcyBub3QgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBn
aXZlbiBpZCI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm9kZSBpcyBu
b3QgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBnaXZlbiBpZCIpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpy
ZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsCiAg
ICAgZWxzZSBpZiAoKmRlcHRoID4gMCkKICAgICAgICAgc2FuaXRpemVkRGVwdGggPSAqZGVwdGg7
CiAgICAgZWxzZSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJQbGVhc2UgcHJvdmlkZSBhIHBv
c2l0aXZlIGludGVnZXIgYXMgYSBkZXB0aCBvciAtMSBmb3IgZW50aXJlIHN1YnRyZWUiOworICAg
ICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlBsZWFzZSBwcm92aWRlIGEgcG9zaXRp
dmUgaW50ZWdlciBhcyBhIGRlcHRoIG9yIC0xIGZvciBlbnRpcmUgc3VidHJlZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnMKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudCA9IHRvQ29udGFpbmVyTm9kZShub2RlKS0+cXVlcnlTZWxlY3RvcihzZWxlY3RvcnMsIGVj
KTsKICAgICBpZiAoZWMpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkRPTSBFcnJvciB3aGls
ZSBxdWVyeWluZyI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRE9NIEVy
cm9yIHdoaWxlIHF1ZXJ5aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1Myw3
ICs1NTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZXMgPSB0b0NvbnRhaW5lck5vZGUobm9kZSkt
PnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzLCBlYyk7CiAgICAgaWYgKGVjKSB7Ci0gICAgICAg
ICplcnJvclN0cmluZyA9ICJET00gRXJyb3Igd2hpbGUgcXVlcnlpbmciOworICAgICAgICAqZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkRPTSBFcnJvciB3aGlsZSBxdWVyeWluZyIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6cmVsZWFzZUJhY2tlbmROb2RlSWRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3QKICAgICAgICAgbV9ub2RlR3JvdXBUb0JhY2tlbmRJZE1hcC5yZW1vdmUobm9kZUdy
b3VwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAqZXJyb3JTdHJpbmcgPSAiR3JvdXAg
bmFtZSBub3QgZm91bmQiOworICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiR3JvdXAg
bmFtZSBub3QgZm91bmQiKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmli
dXRlVmFsdWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVudElkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC02NzEsNyArNjcxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBlbGVtZW4KIAogICAgIE5vZGUqIGNoaWxkID0gcGFyc2VkRWxlbWVudC0+
Zmlyc3RDaGlsZCgpOwogICAgIGlmICghY2hpbGQpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0g
IkNvdWxkIG5vdCBwYXJzZSB2YWx1ZSBhcyBhdHRyaWJ1dGVzIjsKKyAgICAgICAgKmVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcGFyc2UgdmFsdWUgYXMgYXR0cmlidXRlcyIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cmVtb3ZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQpCiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpOwogICAgIGlmICghcGFyZW50Tm9kZSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ2Fu
IG5vdCByZW1vdmUgZGV0YWNoZWQgbm9kZSI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiQ2FuIG5vdCByZW1vdmUgZGV0YWNoZWQgbm9kZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0
T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKIAog
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1
bWVudC5pc0hUTUxEb2N1bWVudCgpICYmICFkb2N1bWVudC5pc1hIVE1MRG9jdW1lbnQoKSAmJiAh
ZG9jdW1lbnQuaXNTVkdEb2N1bWVudCgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJOb3Qg
YW4gSFRNTC9YTUwgZG9jdW1lbnQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIk5vdCBhbiBIVE1ML1hNTCBkb2N1bWVudCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6VEVYVF9OT0RFKSB7Ci0g
ICAgICAgICplcnJvclN0cmluZyA9ICJDYW4gb25seSBzZXQgdmFsdWUgb2YgdGV4dCBub2RlcyI7
CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuIG9ubHkgc2V0IHZhbHVl
IG9mIHRleHQgbm9kZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODk1LDEyICs4
OTUsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2gKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG5vZGVJZHNSZWYtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gbm9kZVZhbHVlID0gbm9kZUlkc1JlZi0+Z2V0KGkpOwogICAgICAg
ICAgICAgaWYgKCFub2RlVmFsdWUpIHsKLSAgICAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
SW52YWxpZCBub2RlSWRzIGl0ZW0uIjsKKyAgICAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIkludmFsaWQgbm9kZUlkcyBpdGVtLiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGludCBub2RlSWQgPSAwOwogICAgICAg
ICAgICAgaWYgKCFub2RlVmFsdWUtPmFzTnVtYmVyKCZub2RlSWQpKSB7Ci0gICAgICAgICAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgbm9kZUlkcyBpdGVtIHR5cGUuIEV4cGVjdGluZyBp
bnRlZ2VyIHR5cGVzLiI7CisgICAgICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIG5vZGVJZHMgaXRlbSB0eXBlLiBFeHBlY3RpbmcgaW50ZWdlciB0eXBlcy4i
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKQEAgLTkzMCwxMyAr
OTMwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiB7CiAgICAgU2VhcmNoUmVzdWx0czo6
aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmluZChzZWFyY2hJZCk7CiAgICAgaWYgKGl0
ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8g
c2VhcmNoIHNlc3Npb24gd2l0aCBnaXZlbiBpZCBmb3VuZCI7CisgICAgICAgICplcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gc2VhcmNoIHNlc3Npb24gd2l0aCBnaXZlbiBpZCBmb3VuZCIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaW50IHNpemUgPSBpdC0+dmFsdWUuc2l6
ZSgpOwogICAgIGlmIChmcm9tSW5kZXggPCAwIHx8IHRvSW5kZXggPiBzaXplIHx8IGZyb21JbmRl
eCA+PSB0b0luZGV4KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJJbnZhbGlkIHNlYXJjaCBy
ZXN1bHQgcmFuZ2UiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludmFs
aWQgc2VhcmNoIHJlc3VsdCByYW5nZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MDM5LDE5ICsxMDM5LDE5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zv
ck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBib29sIGVuYWJsCiBzdGQ6OnVuaXF1ZV9w
dHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJv
bUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVj
dCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewogICAgIGlmICghaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogaGln
aGxpZ2h0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlzIG1pc3NpbmciOworICAgICAgICAqZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9yOiBoaWdobGlnaHQgY29uZmln
dXJhdGlvbiBwYXJhbWV0ZXIgaXMgbWlzc2luZyIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGln
aGxpZ2h0Q29uZmlnPigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDog
ZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRpcCkuCi0gICAgaGlnaGxpZ2h0SW5zcGVjdG9yT2Jq
ZWN0LT5nZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5mbyk7CisgICAgaGlnaGxpZ2h0SW5z
cGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgic2hvd0luZm8iKSwgJnNob3dJ
bmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gc2hvd0luZm87Ci0gICAgaGln
aGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENvbG9yIiwg
aGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRP
dXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudE91dGxpbmVDb2xvciIsIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7Ci0gICAgaGlnaGxpZ2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VD
b25maWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAg
ICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9y
IiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPm1hcmdp
biA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2Jq
ZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKEFT
Q0lJTGl0ZXJhbCgiY29udGVudENvbG9yIiksIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Cisg
ICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29uZmlnQ29sb3IoQVND
SUlMaXRlcmFsKCJjb250ZW50T3V0bGluZUNvbG9yIiksIGhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcihBU0NJ
SUxpdGVyYWwoInBhZGRpbmdDb2xvciIpLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAg
IGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihBU0NJSUxpdGVyYWwo
ImJvcmRlckNvbG9yIiksIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0
Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKEFTQ0lJTGl0ZXJhbCgibWFyZ2luQ29s
b3IiKSwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICByZXR1cm4gaGlnaGxpZ2h0Q29u
ZmlnOwogfQogCkBAIC0xMDcwLDcgKzEwNzAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElucwog
ewogICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlm
ICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKLSAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkludmFsaWQgUXVhZCBmb3JtYXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGOjptb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGluZUNv
bG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwpAQCAtMTA5Myw5ICsxMDkzLDkgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFJlZlB0cjxJbnMKICAgICB9IGVsc2UgaWYgKG9iamVjdElkKSB7CiAgICAgICAgIG5vZGUg
PSBub2RlRm9yT2JqZWN0SWQoKm9iamVjdElkKTsKICAgICAgICAgaWYgKCFub2RlKQotICAgICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vZGUgZm9yIGdpdmVuIG9iamVjdElkIG5vdCBmb3VuZCI7
CisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vZGUgZm9yIGdpdmVu
IG9iamVjdElkIG5vdCBmb3VuZCIpOwogICAgIH0gZWxzZQotICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiRWl0aGVyIG5vZGVJZCBvciBvYmplY3RJZCBtdXN0IGJlIHNwZWNpZmllZCI7CisgICAgICAg
ICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRWl0aGVyIG5vZGVJZCBvciBvYmplY3RJZCBt
dXN0IGJlIHNwZWNpZmllZCIpOwogCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CkBA
IC0xMTQ0LDcgKzExNDQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3ZlVG8oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0RQogICAgICAgICBpZiAo
IWFuY2hvck5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChhbmNob3JOb2Rl
LT5wYXJlbnROb2RlKCkgIT0gdGFyZ2V0RWxlbWVudCkgewotICAgICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkFuY2hvciBub2RlIG11c3QgYmUgY2hpbGQgb2YgdGhlIHRhcmdldCBlbGVtZW50IjsK
KyAgICAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQW5jaG9yIG5vZGUgbXVz
dCBiZSBjaGlsZCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQiKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTExODAsNyArMTE4MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmZvY3VzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIWVsZW1lbnQtPmlzRm9jdXNh
YmxlKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkVsZW1lbnQgaXMgbm90IGZvY3VzYWJs
ZSI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRWxlbWVudCBpcyBub3Qg
Zm9jdXNhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZWxlbWVudC0+Zm9jdXMo
KTsKQEAgLTExOTEsMTIgKzExOTEsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2
ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgIFN0
cmluZyBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIiOwog
ICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKLSAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCI7CisgICAg
ICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gbm9kZSB3aXRoIGdpdmVuIGlkIGZv
dW5kIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0ID0gcmVzb2x2ZU5vZGUobm9k
ZSwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAqZXJyb3JT
dHJpbmcgPSAiTm9kZSB3aXRoIGdpdmVuIGlkIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgZG9jdW1l
bnQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vZGUgd2l0aCBnaXZl
biBpZCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGRvY3VtZW50Iik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgcmVzdWx0ID0gb2JqZWN0OwpAQCAtMTkzNiw3ICsxOTM2LDcgQEAgTm9kZSog
SW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogICAg
IE5vZGUqIG5vZGUgPSBtX2RvY3VtZW50LmdldCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhU
b2tlbnM7Ci0gICAgcGF0aC5zcGxpdCgiLCIsIGZhbHNlLCBwYXRoVG9rZW5zKTsKKyAgICBwYXRo
LnNwbGl0KEFTQ0lJTGl0ZXJhbCgiLCIpLCBmYWxzZSwgcGF0aFRva2Vucyk7CiAgICAgaWYgKCFw
YXRoVG9rZW5zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwYXRoVG9rZW5zLnNpemUoKSAtIDE7IGkgKz0gMikgewpAQCAtMTk3MSwxMyArMTk3
MSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogICAgIGlmIChOb2RlKiBub2RlID0gbm9k
ZUZvclBhdGgocGF0aCkpCiAgICAgICAgICpub2RlSWQgPSBwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KG5vZGUpOwogICAgIGVsc2UKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIG5vZGUgd2l0aCBn
aXZlbiBwYXRoIGZvdW5kIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJO
byBub2RlIHdpdGggZ2l2ZW4gcGF0aCBmb3VuZCIpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIEJhY2tlbmROb2RlSWQgYmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQpCiB7CiAgICAgaWYg
KCFtX2JhY2tlbmRJZFRvTm9kZS5jb250YWlucyhiYWNrZW5kTm9kZUlkKSkgewotICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3aXRoIGdpdmVuIGJhY2tlbmQgaWQgZm91bmQiOworICAg
ICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIG5vZGUgd2l0aCBnaXZlbiBiYWNr
ZW5kIGlkIGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCA0YTRiMzhmLi4xNjNlNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50
KEVycm9yU3RyaW5nKiBlcnJvciwKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQog
ewogICAgIGlmIChldmVudE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICplcnJvciA9ICJFdmVu
dCBuYW1lIGlzIGVtcHR5IjsKKyAgICAgICAgKmVycm9yID0gQVNDSUlMaXRlcmFsKCJFdmVudCBu
YW1lIGlzIGVtcHR5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MSw3ICsxNjEs
NyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZUluc3RydW1lbnRhdGlv
bkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycgogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBl
dmVudE5hbWUpCiB7CiAgICAgaWYgKGV2ZW50TmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgKmVy
cm9yID0gIkV2ZW50IG5hbWUgaXMgZW1wdHkiOworICAgICAgICAqZXJyb3IgPSBBU0NJSUxpdGVy
YWwoIkV2ZW50IG5hbWUgaXMgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBpbnQgZG9tVHlwZUZvck5hbWUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiBzdGF0aWMgU3RyaW5nIGRvbVR5
cGVOYW1lKGludCB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgU3VidHJl
ZU1vZGlmaWVkOiByZXR1cm4gInN1YnRyZWUtbW9kaWZpZWQiOwotICAgIGNhc2UgQXR0cmlidXRl
TW9kaWZpZWQ6IHJldHVybiAiYXR0cmlidXRlLW1vZGlmaWVkIjsKLSAgICBjYXNlIE5vZGVSZW1v
dmVkOiByZXR1cm4gIm5vZGUtcmVtb3ZlZCI7CisgICAgY2FzZSBTdWJ0cmVlTW9kaWZpZWQ6IHJl
dHVybiBBU0NJSUxpdGVyYWwoInN1YnRyZWUtbW9kaWZpZWQiKTsKKyAgICBjYXNlIEF0dHJpYnV0
ZU1vZGlmaWVkOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJhdHRyaWJ1dGUtbW9kaWZpZWQiKTsKKyAg
ICBjYXNlIE5vZGVSZW1vdmVkOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJub2RlLXJlbW92ZWQiKTsK
ICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CiAgICAgcmV0dXJuICIiOwpAQCAtMzA5LDcgKzMw
OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01F
dmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvCiAgICAgICAgIC8vIEZvciBpbmhlcml0YWJs
ZSBicmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24ndCBhbHdheXMgdGhlIHNhbWUgYXMg
dGhlIG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2ludC4KICAgICAgICAgLy8gVGFyZ2V0IG5vZGUg
bWF5IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNvIHdlIG5lZWQgdG8gcHVzaCBpdCBmaXJzdC4K
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1fZG9tQWdlbnQtPnJlc29sdmVOb2RlKHRhcmdldCwg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwotICAgICAgICBk
ZXNjcmlwdGlvbi0+c2V0VmFsdWUoInRhcmdldE5vZGUiLCB0YXJnZXROb2RlT2JqZWN0KTsKKyAg
ICAgICAgZGVzY3JpcHRpb24tPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgidGFyZ2V0Tm9kZSIpLCB0
YXJnZXROb2RlT2JqZWN0KTsKIAogICAgICAgICAvLyBGaW5kIGJyZWFrcG9pbnQgb3duZXIgbm9k
ZS4KICAgICAgICAgaWYgKCFpbnNlcnRpb24pCkBAIC0zMjMsMTMgKzMyMywxMyBAQCB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFy
Z2V0LCBpbnQgYnJlYWtwbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBl
ID09IFN1YnRyZWVNb2RpZmllZCkKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRCb29sZWFu
KCJpbnNlcnRpb24iLCBpbnNlcnRpb24pOworICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJv
b2xlYW4oQVNDSUlMaXRlcmFsKCJpbnNlcnRpb24iKSwgaW5zZXJ0aW9uKTsKICAgICB9CiAKICAg
ICBpbnQgYnJlYWtwb2ludE93bmVyTm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoYnJl
YWtwb2ludE93bmVyKTsKICAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICBk
ZXNjcmlwdGlvbi0+c2V0TnVtYmVyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOwot
ICAgIGRlc2NyaXB0aW9uLT5zZXRTdHJpbmcoInR5cGUiLCBkb21UeXBlTmFtZShicmVha3BvaW50
VHlwZSkpOworICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJub2RlSWQi
KSwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKKyAgICBkZXNjcmlwdGlvbi0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgidHlwZSIpLCBkb21UeXBlTmFtZShicmVha3BvaW50VHlwZSkpOwogfQogCiBi
b29sIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Omhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwg
aW50IHR5cGUpCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnMKICAg
ICB9CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwotICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVudE5hbWUiLCBm
dWxsRXZlbnROYW1lKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImV2
ZW50TmFtZSIpLCBmdWxsRXZlbnROYW1lKTsKICAgICBpZiAoc3luY2hyb25vdXMpCiAgICAgICAg
IG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwog
ICAgIGVsc2UKQEAgLTQxMyw4ICs0MTMsOCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRV
UkwiLCBicmVha3BvaW50VVJMKTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJs
KTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJyZWFrcG9pbnRVUkwi
KSwgYnJlYWtwb2ludFVSTCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJ1cmwiKSwgdXJsKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpYSFIsIGV2ZW50RGF0YS5yZWxl
YXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDAzOWI3NDUuLmQ4OGFlODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERP
TVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnMKICAgICBSZWZQdHI8
U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBz
dG9yYWdlSWQsIGZyYW1lKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIGlmIChl
cnJvclN0cmluZykKLSAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBTdG9yYWdlQXJlYSBm
b3IgZ2l2ZW4gc3RvcmFnZUlkIjsKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiTm8gU3RvcmFnZUFyZWEgZm9yIGdpdmVuIHN0b3JhZ2VJZCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OnNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QK
ICAgICBGcmFtZSogZnJhbWU7CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9
IGZpbmRTdG9yYWdlQXJlYShudWxscHRyLCBzdG9yYWdlSWQsIGZyYW1lKTsKICAgICBpZiAoIXN0
b3JhZ2VBcmVhKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJTdG9yYWdlIG5vdCBmb3VuZCI7
CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiU3RvcmFnZSBub3QgZm91bmQi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvCiAgICAgRnJhbWUqIGZyYW1lOwogICAgIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEobnVsbHB0ciwgc3RvcmFnZUlkLCBmcmFt
ZSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiU3Rv
cmFnZSBub3QgZm91bmQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlN0
b3JhZ2Ugbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4NiwxMiAr
MTg2LDEyIEBAIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiBlCiB7CiAgICAgU3RyaW5nIHNlY3VyaXR5
T3JpZ2luOwogICAgIGJvb2wgaXNMb2NhbFN0b3JhZ2UgPSBmYWxzZTsKLSAgICBib29sIHN1Y2Nl
c3MgPSBzdG9yYWdlSWQtPmdldFN0cmluZygic2VjdXJpdHlPcmlnaW4iLCAmc2VjdXJpdHlPcmln
aW4pOworICAgIGJvb2wgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgic2VjdXJpdHlPcmlnaW4iKSwgJnNlY3VyaXR5T3JpZ2luKTsKICAgICBpZiAoc3VjY2VzcykK
LSAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbigiaXNMb2NhbFN0b3JhZ2Ui
LCAmaXNMb2NhbFN0b3JhZ2UpOworICAgICAgICBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRCb29s
ZWFuKEFTQ0lJTGl0ZXJhbCgiaXNMb2NhbFN0b3JhZ2UiKSwgJmlzTG9jYWxTdG9yYWdlKTsKICAg
ICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKGVycm9yU3RyaW5nKQotICAgICAgICAgICAg
KmVycm9yU3RyaW5nID0gIkludmFsaWQgc3RvcmFnZUlkIGZvcm1hdCI7CisgICAgICAgICAgICAq
ZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkludmFsaWQgc3RvcmFnZUlkIGZvcm1hdCIpOwog
ICAgICAgICB0YXJnZXRGcmFtZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KQEAgLTE5OSw3ICsxOTksNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyogZQogICAgIHRh
cmdldEZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbik7CiAgICAgaWYgKCF0YXJnZXRGcmFtZSkgewogICAgICAgICBpZiAoZXJyb3JT
dHJpbmcpCi0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRnJhbWUgbm90IGZvdW5kIGZvciB0
aGUgZ2l2ZW4gc2VjdXJpdHkgb3JpZ2luIjsKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9IEFT
Q0lJTGl0ZXJhbCgiRnJhbWUgbm90IGZvdW5kIGZvciB0aGUgZ2l2ZW4gc2VjdXJpdHkgb3JpZ2lu
Iik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGQ5MzhhYjUu
LjI3ZDkyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiYgbmFtZXMpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKLSAgICAgICAgKmVycm9yID0g
IkRhdGFiYXNlIGFnZW50IGlzIG5vdCBlbmFibGVkIjsKKyAgICAgICAgKmVycm9yID0gQVNDSUlM
aXRlcmFsKCJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yNzcsMTMgKzI3NywxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6OmV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsCiAg
ICAgUmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrID0gcHJwUmVxdWVz
dENhbGxiYWNrOwogCiAgICAgaWYgKCFtX2VuYWJsZWQpIHsKLSAgICAgICAgcmVxdWVzdENhbGxi
YWNrLT5zZW5kRmFpbHVyZSgiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiKTsKKyAgICAg
ICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIGFn
ZW50IGlzIG5vdCBlbmFibGVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRGF0
YWJhc2UqIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoIWRh
dGFiYXNlKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkRhdGFiYXNl
IG5vdCBmb3VuZCIpOworICAgICAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKEFTQ0lJ
TGl0ZXJhbCgiRGF0YWJhc2Ugbm90IGZvdW5kIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKaW5kZXggNWI4OWQ4ZDU3Li5jYmQ5NDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAg
IEZyYW1lJiBtYWluRnJhbWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2Uo
KS5tYWluRnJhbWUoKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QobWFpbkZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCgpLCAiX2JsYW5rIik7
CisgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QoKSwgQVNDSUlMaXRlcmFsKCJfYmxhbmsiKSk7
CiAKICAgICBib29sIGNyZWF0ZWQ7CiAgICAgV2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXM7
CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpy
ZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKQogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjppc0RlYnVnZ2luZ0VuYWJsZWQoKQogewogICAgIGlmIChtX2Zyb250ZW5kTG9hZGVk
KQotICAgICAgICByZXR1cm4gZXZhbHVhdGVBc0Jvb2xlYW4oIltcImlzRGVidWdnaW5nRW5hYmxl
ZFwiXSIpOworICAgICAgICByZXR1cm4gZXZhbHVhdGVBc0Jvb2xlYW4oQVNDSUlMaXRlcmFsKCJb
XCJpc0RlYnVnZ2luZ0VuYWJsZWRcIl0iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0y
ODEsNyArMjgxLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZXREZWJ1
Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoKQogewogICAgIGlmIChtX2Zyb250ZW5k
TG9hZGVkKQotICAgICAgICByZXR1cm4gZXZhbHVhdGVBc0Jvb2xlYW4oIltcImlzVGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkXCJdIik7CisgICAgICAgIHJldHVybiBldmFsdWF0ZUFzQm9vbGVhbihB
U0NJSUxpdGVyYWwoIltcImlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkXCJdIikpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtMjkzLDI4ICsyOTMsMjggQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1Byb2ZpbGluZ0phdmFTY3Jp
cHQoKQogewogICAgIGlmIChtX2Zyb250ZW5kTG9hZGVkKQotICAgICAgICByZXR1cm4gZXZhbHVh
dGVBc0Jvb2xlYW4oIltcImlzUHJvZmlsaW5nSmF2YVNjcmlwdFwiXSIpOworICAgICAgICByZXR1
cm4gZXZhbHVhdGVBc0Jvb2xlYW4oQVNDSUlMaXRlcmFsKCJbXCJpc1Byb2ZpbGluZ0phdmFTY3Jp
cHRcIl0iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpCiB7Ci0gICAgZXZhbHVhdGVP
bkxvYWQoIltcInN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdFwiXSIpOworICAgIGV2YWx1YXRlT25M
b2FkKEFTQ0lJTGl0ZXJhbCgiW1wic3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0XCJdIikpOwogfQog
CiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnN0b3BQcm9maWxpbmdKYXZhU2Ny
aXB0KCkKIHsKLSAgICBldmFsdWF0ZU9uTG9hZCgiW1wic3RvcFByb2ZpbGluZ0phdmFTY3JpcHRc
Il0iKTsKKyAgICBldmFsdWF0ZU9uTG9hZChBU0NJSUxpdGVyYWwoIltcInN0b3BQcm9maWxpbmdK
YXZhU2NyaXB0XCJdIikpOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OnNob3dDb25zb2xlKCkKIHsKLSAgICBldmFsdWF0ZU9uTG9hZCgiW1wic2hvd0NvbnNvbGVcIl0i
KTsKKyAgICBldmFsdWF0ZU9uTG9hZChBU0NJSUxpdGVyYWwoIltcInNob3dDb25zb2xlXCJdIikp
OwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNob3dSZXNvdXJjZXMo
KQogewotICAgIGV2YWx1YXRlT25Mb2FkKCJbXCJzaG93UmVzb3VyY2VzXCJdIik7CisgICAgZXZh
bHVhdGVPbkxvYWQoQVNDSUlMaXRlcmFsKCJbXCJzaG93UmVzb3VyY2VzXCJdIikpOwogfQogCiB2
b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFt
ZShGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGQxYTQ2MjUuLjQ2YTIyOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgICAgICAg
ICAgaW50IGl0ZW1OdW1iZXIgPSBpdGVtLT5hY3Rpb24oKSAtIENvbnRleHRNZW51SXRlbUJhc2VD
dXN0b21UYWc7CiAKLSAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQiLCBX
ZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CisgICAgICAgICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9mcm9udGVuZEFwaU9iamVj
dCwgQVNDSUlMaXRlcmFsKCJjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCIpLCBXZWJDb3JlOjpmdW5j
dGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk7CiAgICAgICAgICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChpdGVtTnVtYmVyKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKICAg
ICAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNv
bnRleHRNZW51Q2xlYXJlZCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9mcm9udGVu
ZEhvc3QpIHsKLSAgICAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX2Zyb250ZW5kQXBpT2JqZWN0LCAiY29udGV4dE1lbnVDbGVhcmVkIiwgV2ViQ29yZTo6
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQpOworICAgICAgICAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsIEFTQ0lJ
TGl0ZXJhbCgiY29udGV4dE1lbnVDbGVhcmVkIiksIFdlYkNvcmU6OmZ1bmN0aW9uQ2FsbEhhbmRs
ZXJGcm9tQW55VGhyZWFkKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLmNhbGwoKTsKIAogICAgICAg
ICAgICAgbV9mcm9udGVuZEhvc3QtPm1fbWVudVByb3ZpZGVyID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCBlMzhkODkyLi45
ZDllN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlz
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFVuZG9hYmxlU3RhdGVN
YXJrIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiBwdWJsaWM6Ci0gICAgVW5k
b2FibGVTdGF0ZU1hcmsoKSA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigiW1VuZG9hYmxlU3Rh
dGVdIikgeyB9CisgICAgVW5kb2FibGVTdGF0ZU1hcmsoKSA6IEluc3BlY3Rvckhpc3Rvcnk6OkFj
dGlvbihBU0NJSUxpdGVyYWwoIltVbmRvYWJsZVN0YXRlXSIpKSB7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCmluZGV4IDdmZDYyOTEuLjI5N2Q1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTA4LDcgKzEwOCw3
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLnN1Y2Nlc3NFdmVudCkgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNl
bmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIGV2ZW50IHR5
cGUuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNiwxMSArMTE2
LDExIEBAIHB1YmxpYzoKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFJl
ZlB0cjxJREJBbnk+IHJlcXVlc3RSZXN1bHQgPSBpZGJSZXF1ZXN0LT5yZXN1bHQoZWMpOwogICAg
ICAgICBpZiAoZWMpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVy
ZSgiQ291bGQgbm90IGdldCByZXN1bHQgaW4gY2FsbGJhY2suIik7CisgICAgICAgICAgICBtX3Jl
cXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgZ2V0IHJl
c3VsdCBpbiBjYWxsYmFjay4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHJlcXVlc3RSZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OkRPTVN0cmluZ0xpc3RU
eXBlKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhw
ZWN0ZWQgcmVzdWx0IHR5cGUuIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZl
bnQqIGV2ZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0g
ZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCkgewotICAgICAgICAgICAgbV9leGVjdXRhYmxlV2l0
aERhdGFiYXNlLT5yZXF1ZXN0Q2FsbGJhY2soKS0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZl
bnQgdHlwZS4iKTsKKyAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVz
dENhbGxiYWNrKCktPnNlbmRGYWlsdXJlKEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBldmVudCB0
eXBlLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNzgsMTEgKzE3
OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBS
ZWZQdHI8SURCQW55PiByZXF1ZXN0UmVzdWx0ID0gaWRiT3BlbkRCUmVxdWVzdC0+cmVzdWx0KGVj
KTsKICAgICAgICAgaWYgKGVjKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJh
c2UtPnJlcXVlc3RDYWxsYmFjaygpLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQg
aW4gY2FsbGJhY2suIik7CisgICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJl
cXVlc3RDYWxsYmFjaygpLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBnZXQg
cmVzdWx0IGluIGNhbGxiYWNrLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAocmVxdWVzdFJlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCRGF0YWJhc2VU
eXBlKSB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxs
YmFjaygpLT5zZW5kRmFpbHVyZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iKTsKKyAgICAgICAg
ICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+cmVxdWVzdENhbGxiYWNrKCktPnNlbmRGYWls
dXJlKEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgRXhlY3V0YWJs
ZVdpdGhEYXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmln
aW4qLCBjb25zCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IGlkYk9wZW5EQlJlcXVlc3QgPSBpZGJGYWN0b3J5LT5vcGVuKGNvbnRleHQoKSwg
ZGF0YWJhc2VOYW1lLCBlYyk7CiAgICAgaWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFj
aygpLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0YWJhc2UuIik7CisgICAgICAgIHJl
cXVlc3RDYWxsYmFjaygpLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVu
IGRhdGFiYXNlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZGJPcGVuREJSZXF1
ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGNhbGxiYWNr
LCBmYWxzZSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBp
ZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQogICAgIFJlZlB0
cjxJREJLZXk+IGlkYktleTsKIAogICAgIFN0cmluZyB0eXBlOwotICAgIGlmICgha2V5LT5nZXRT
dHJpbmcoInR5cGUiLCAmdHlwZSkpCisgICAgaWYgKCFrZXktPmdldFN0cmluZyhBU0NJSUxpdGVy
YWwoInR5cGUiKSwgJnR5cGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG51bWJlciwgKEFTQ0lJTGl0ZXJhbCgi
bnVtYmVyIikpKTsKQEAgLTMzNiwyMiArMzM2LDIyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eT4gaWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGtleSkKIAogICAg
IGlmICh0eXBlID09IG51bWJlcikgewogICAgICAgICBkb3VibGUgbnVtYmVyOwotICAgICAgICBp
ZiAoIWtleS0+Z2V0TnVtYmVyKCJudW1iZXIiLCAmbnVtYmVyKSkKKyAgICAgICAgaWYgKCFrZXkt
PmdldE51bWJlcihBU0NJSUxpdGVyYWwoIm51bWJlciIpLCAmbnVtYmVyKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICBpZGJLZXkgPSBJREJLZXk6OmNyZWF0ZU51bWJlcihu
dW1iZXIpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBzdHJpbmcpIHsKICAgICAgICAgU3RyaW5n
IHN0cmluZzsKLSAgICAgICAgaWYgKCFrZXktPmdldFN0cmluZygic3RyaW5nIiwgJnN0cmluZykp
CisgICAgICAgIGlmICgha2V5LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzdHJpbmciKSwgJnN0
cmluZykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWRiS2V5ID0gSURC
S2V5OjpjcmVhdGVTdHJpbmcoc3RyaW5nKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gZGF0ZSkg
ewogICAgICAgICBkb3VibGUgZGF0ZTsKLSAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcigiZGF0
ZSIsICZkYXRlKSkKKyAgICAgICAgaWYgKCFrZXktPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImRh
dGUiKSwgJmRhdGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlkYktl
eSA9IElEQktleTo6Y3JlYXRlRGF0ZShkYXRlKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gYXJy
YXkpIHsKICAgICAgICAgSURCS2V5OjpLZXlBcnJheSBrZXlBcnJheTsKLSAgICAgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhcnJheSA9IGtleS0+Z2V0QXJyYXkoImFycmF5Iik7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXkgPSBrZXktPmdldEFycmF5KEFTQ0lJTGl0ZXJh
bCgiYXJyYXkiKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBh
cnJheS0+Z2V0KGkpOwogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0
OwpAQCAtMzY4LDIzICszNjgsMjMgQEAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXlG
cm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQogCiBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoSW5zcGVjdG9yT2JqZWN0
KiBrZXlSYW5nZSkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb3dlciA9IGtleVJh
bmdlLT5nZXRPYmplY3QoImxvd2VyIik7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG93
ZXIgPSBrZXlSYW5nZS0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgibG93ZXIiKSk7CiAgICAgUmVm
UHRyPElEQktleT4gaWRiTG93ZXIgPSBsb3dlciA/IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3Qo
bG93ZXIuZ2V0KCkpIDogbnVsbHB0cjsKICAgICBpZiAobG93ZXIgJiYgIWlkYkxvd2VyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHVwcGVy
ID0ga2V5UmFuZ2UtPmdldE9iamVjdCgidXBwZXIiKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiB1cHBlciA9IGtleVJhbmdlLT5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ1cHBlciIpKTsK
ICAgICBSZWZQdHI8SURCS2V5PiBpZGJVcHBlciA9IHVwcGVyID8gaWRiS2V5RnJvbUluc3BlY3Rv
ck9iamVjdCh1cHBlci5nZXQoKSkgOiBudWxscHRyOwogICAgIGlmICh1cHBlciAmJiAhaWRiVXBw
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBsb3dlck9wZW47Ci0gICAg
aWYgKCFrZXlSYW5nZS0+Z2V0Qm9vbGVhbigibG93ZXJPcGVuIiwgJmxvd2VyT3BlbikpCisgICAg
aWYgKCFrZXlSYW5nZS0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImxvd2VyT3BlbiIpLCAmbG93
ZXJPcGVuKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSURCS2V5UmFuZ2U6Okxvd2Vy
Qm91bmRUeXBlIGxvd2VyQm91bmRUeXBlID0gbG93ZXJPcGVuID8gSURCS2V5UmFuZ2U6Okxvd2Vy
Qm91bmRPcGVuIDogSURCS2V5UmFuZ2U6Okxvd2VyQm91bmRDbG9zZWQ7CiAKICAgICBib29sIHVw
cGVyT3BlbjsKLSAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKCJ1cHBlck9wZW4iLCAmdXBw
ZXJPcGVuKSkKKyAgICBpZiAoIWtleVJhbmdlLT5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgidXBw
ZXJPcGVuIiksICZ1cHBlck9wZW4pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBJREJL
ZXlSYW5nZTo6VXBwZXJCb3VuZFR5cGUgdXBwZXJCb3VuZFR5cGUgPSB1cHBlck9wZW4gPyBJREJL
ZXlSYW5nZTo6VXBwZXJCb3VuZE9wZW4gOiBJREJLZXlSYW5nZTo6VXBwZXJCb3VuZENsb3NlZDsK
IApAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQp
IHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3Rl
ZCBldmVudCB0eXBlLiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWls
dXJlKEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBldmVudCB0eXBlLiIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC00MTksNyArNDE5LDcgQEAgcHVibGljOgogICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPElEQkFueT4gcmVxdWVzdFJl
c3VsdCA9IGlkYlJlcXVlc3QtPnJlc3VsdChlYyk7CiAgICAgICAgIGlmIChlYykgewotICAgICAg
ICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHJlc3Vs
dCBpbiBjYWxsYmFjay4iKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZShBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBnZXQgcmVzdWx0IGluIGNhbGxiYWNrLiIpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocmVxdWVzdFJlc3Vs
dC0+dHlwZSgpID09IElEQkFueTo6U2NyaXB0VmFsdWVUeXBlKSB7CkBAIC00MjcsNyArNDI3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChy
ZXF1ZXN0UmVzdWx0LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKSB7
Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQg
cmVzdWx0IHR5cGUuIik7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1
cmUoQVNDSUlMaXRlcmFsKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC00MzcsNyArNDM3LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICBpZGJDdXJzb3ItPmFkdmFu
Y2UobV9za2lwQ291bnQsIGVjKTsKICAgICAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBhZHZhbmNlIGN1cnNv
ci4iKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoQVND
SUlMaXRlcmFsKCJDb3VsZCBub3QgYWR2YW5jZSBjdXJzb3IuIikpOwogICAgICAgICAgICAgbV9z
a2lwQ291bnQgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00NTAsNyAr
NDUwLDcgQEAgcHVibGljOgogICAgICAgICAvLyBDb250aW51ZSBjdXJzb3IgYmVmb3JlIG1ha2lu
ZyBpbmplY3RlZCBzY3JpcHQgY2FsbHMsIG90aGVyd2lzZSB0cmFuc2FjdGlvbiBtaWdodCBiZSBm
aW5pc2hlZC4KICAgICAgICAgaWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKG51bGxwdHIsIGVj
KTsKICAgICAgICAgaWYgKGVjKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoIkNvdWxkIG5vdCBjb250aW51ZSBjdXJzb3IuIik7CisgICAgICAgICAgICBtX3Jl
cXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgY29udGlu
dWUgY3Vyc29yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01MDIs
MTIgKzUwMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNl
KGNvbnRleHQoKSwgaWRiRGF0YWJhc2UuZ2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKICAgICAg
ICAgaWYgKCFpZGJUcmFuc2FjdGlvbikgewotICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2st
PnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgZ2V0IHRyYW5zYWN0aW9uIik7CisgICAgICAgICAgICBt
X3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgZ2V0
IHRyYW5zYWN0aW9uIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRy
YW5zYWN0aW9uKGlkYlRyYW5zYWN0aW9uLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CiAgICAg
ICAgIGlmICghaWRiT2JqZWN0U3RvcmUpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgICAg
IG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBn
ZXQgb2JqZWN0IHN0b3JlIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTUxOCw3ICs1MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9pbmRleE5hbWUuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4ID0gaW5kZXhGb3JP
YmplY3RTdG9yZShpZGJPYmplY3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAg
ICAgaWYgKCFpZGJJbmRleCkgewotICAgICAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5z
ZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBpbmRleCIpOworICAgICAgICAgICAgICAgIG1fcmVx
dWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBnZXQgaW5k
ZXgiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC01ODUs
NyArNTg1LDcgQEAgc3RhdGljIERvY3VtZW50KiBhc3NlcnREb2N1bWVudChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFtZSkKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIAogICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgICplcnJvclN0cmluZyA9ICJObyBkb2N1bWVudCBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQi
OworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGRvY3VtZW50IGZvciBn
aXZlbiBmcmFtZSBmb3VuZCIpOwogCiAgICAgcmV0dXJuIGRvY3VtZW50OwogfQpAQCAtNTk0LDEz
ICs1OTQsMTMgQEAgc3RhdGljIElEQkZhY3RvcnkqIGFzc2VydElEQkZhY3RvcnkoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQKIHsKICAgICBET01XaW5kb3cqIGRv
bVdpbmRvdyA9IGRvY3VtZW50LT5kb21XaW5kb3coKTsKICAgICBpZiAoIWRvbVdpbmRvdykgewot
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZy
YW1lIGZvdW5kIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBJbmRl
eGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIElEQkZhY3RvcnkqIGlkYkZhY3RvcnkgPSBET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U6OmluZGV4ZWREQihkb21XaW5kb3cpOwogCiAgICAgaWYgKCFpZGJGYWN0b3J5
KQotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVu
IGZyYW1lIGZvdW5kIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBJ
bmRleGVkREIgZmFjdG9yeSBmb3IgZ2l2ZW4gZnJhbWUgZm91bmQiKTsKIAogICAgIHJldHVybiBp
ZGJGYWN0b3J5OwogfQpAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGlkYlJl
cXVlc3QgPSBpZGJGYWN0b3J5LT5nZXREYXRhYmFzZU5hbWVzKGRvY3VtZW50LCBlYyk7CiAgICAg
aWYgKGVjKSB7Ci0gICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5v
dCBvYnRhaW4gZGF0YWJhc2UgbmFtZXMuIik7CisgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb2J0YWluIGRhdGFiYXNlIG5hbWVzLiIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZGJSZXF1ZXN0LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjazo6
Y3JlYXRlKHJlcXVlc3RDYWxsYmFjaywgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3
U3RyaW5nKCkpLCBmYWxzZSk7CkBAIC02NTIsNyArNjUyLDcgQEAgdm9pZCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcKIAogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/
IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKGtleVJhbmdlLT5nZXQoKSkgOiBudWxscHRyOwogICAg
IGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0g
IkNhbiBub3QgcGFyc2Uga2V5IHJhbmdlLiI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiQ2FuIG5vdCBwYXJzZSBrZXkgcmFuZ2UuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTY4MCw3ICs2ODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9yZXF1ZXN0
Q2FsbGJhY2stPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50KSB7Ci0gICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4i
KTsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVy
YWwoIlVuZXhwZWN0ZWQgZXZlbnQgdHlwZS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtNzE4LDEyICs3MTgsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNh
Y3Rpb25Gb3JEYXRhYmFzZShjb250ZXh0KCksIGlkYkRhdGFiYXNlLmdldCgpLCBtX29iamVjdFN0
b3JlTmFtZSwgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGUoKSk7CiAgICAgICAgIGlmICgh
aWRiVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFp
bHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgbV9yZXF1ZXN0
Q2FsbGJhY2stPnNlbmRGYWlsdXJlKEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGdldCB0cmFuc2Fj
dGlvbiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVGb3JUcmFuc2FjdGlv
bihpZGJUcmFuc2FjdGlvbi5nZXQoKSwgbV9vYmplY3RTdG9yZU5hbWUpOwogICAgICAgICBpZiAo
IWlkYk9iamVjdFN0b3JlKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZh
aWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgZ2V0IG9iamVj
dCBzdG9yZSIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRl
eCBhMDM3ZmE4Li4xZWNlYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTExMiwxMyArMTEyLDEzIEBAIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkCiAKICAgICBOb2RlKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JET01BZ2VudCgpLT5ub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5v
ZGUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIlByb3ZpZGVkIG5vZGUgaWQgZG9lc24ndCBt
YXRjaCBhbnkga25vd24gbm9kZSI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiUHJvdmlkZWQgbm9kZSBpZCBkb2Vzbid0IG1hdGNoIGFueSBrbm93biBub2RlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9
ICJOb2RlIGZvciBwcm92aWRlZCBub2RlIGlkIGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyIjsKKyAg
ICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJOb2RlIGZvciBwcm92aWRlZCBub2Rl
IGlkIGRvZXNuJ3QgaGF2ZSBhIHJlbmRlcmVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE4NSw5ICsxODUsOSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidQogICAgICAgICBsYXll
ck9iamVjdC0+c2V0SXNHZW5lcmF0ZWRDb250ZW50KHRydWUpOwogICAgICAgICBsYXllck9iamVj
dC0+c2V0UHNldWRvRWxlbWVudElkKGJpbmRQc2V1ZG9FbGVtZW50KHRvUHNldWRvRWxlbWVudChy
ZW5kZXJlci0+bm9kZSgpKSkpOwogICAgICAgICBpZiAocmVuZGVyZXItPmlzQmVmb3JlQ29udGVu
dCgpKQotICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImJlZm9yZSIp
OworICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoQVNDSUlMaXRlcmFs
KCJiZWZvcmUiKSk7CiAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc0FmdGVyQ29udGVudCgp
KQotICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImFmdGVyIik7Cisg
ICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudChBU0NJSUxpdGVyYWwoImFm
dGVyIikpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBSZW5kZXJWaWV3IGlzIG5vdyByZWFsbHkg
YW5vbnltb3VzIGJ1dCBkb24ndCB0ZWxsIGFib3V0IGl0IHRvIHRoZSBmcm9udGVuZCBiZWZvcmUg
bWFraW5nIHN1cmUgaXQgY2FuIGhhbmRsZSBpdC4KQEAgLTE5NSw5ICsxOTUsOSBAQCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidQogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNBbm9ueW1vdXModHJ1
ZSk7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgp
OwogICAgICAgICBpZiAoc3R5bGUuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKQotICAgICAg
ICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImZpcnN0LWxldHRlciIpOworICAg
ICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoQVNDSUlMaXRlcmFsKCJmaXJz
dC1sZXR0ZXIiKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IEZJUlNU
X0xJTkUpCi0gICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiZmlyc3Qt
bGluZSIpOworICAgICAgICAgICAgbGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoQVNDSUlM
aXRlcmFsKCJmaXJzdC1saW5lIikpOwogICAgIH0KIAogICAgIHJldHVybiBsYXllck9iamVjdDsK
QEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25z
Rm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgIGNvbnN0IFJl
bmRlckxheWVyKiByZW5kZXJMYXllciA9IG1faWRUb0xheWVyLmdldChsYXllcklkKTsKIAogICAg
IGlmICghcmVuZGVyTGF5ZXIpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBm
aW5kIGEgYm91bmQgbGF5ZXIgZm9yIHRoZSBwcm92aWRlZCBpZCI7CisgICAgICAgICplcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGZpbmQgYSBib3VuZCBsYXllciBmb3IgdGhl
IHByb3ZpZGVkIGlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCA1MTZjNjg3Li5kNzUxN2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBA
IC0zNjQsMTIgKzM2NCwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGNvbnN0IEhpZ2hsaWdodCYgaGlnaAogICAgIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYXJyYXkgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBoaWdobGlnaHQucXVhZHMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IGFycmF5LT5wdXNoQXJyYXkoYnVpbGRBcnJheUZvclF1YWQoaGlnaGxpZ2h0LnF1YWRzW2ldKSk7
Ci0gICAgb2JqZWN0LT5zZXRBcnJheSgicXVhZHMiLCBhcnJheS5yZWxlYXNlKCkpOwotICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJjb250ZW50Q29sb3IiLCBoaWdobGlnaHQuY29udGVudENvbG9yLnNl
cmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImNvbnRlbnRPdXRsaW5lQ29sb3Ii
LCBoaWdobGlnaHQuY29udGVudE91dGxpbmVDb2xvci5zZXJpYWxpemVkKCkpOwotICAgIG9iamVj
dC0+c2V0U3RyaW5nKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHQucGFkZGluZ0NvbG9yLnNlcmlh
bGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0
LmJvcmRlckNvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgb2JqZWN0LT5zZXRTdHJpbmcoIm1hcmdp
bkNvbG9yIiwgaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgb2JqZWN0
LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoInF1YWRzIiksIGFycmF5LnJlbGVhc2UoKSk7CisgICAg
b2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJjb250ZW50Q29sb3IiKSwgaGlnaGxpZ2h0
LmNvbnRlbnRDb2xvci5zZXJpYWxpemVkKCkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgiY29udGVudE91dGxpbmVDb2xvciIpLCBoaWdobGlnaHQuY29udGVudE91dGxpbmVD
b2xvci5zZXJpYWxpemVkKCkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
cGFkZGluZ0NvbG9yIiksIGhpZ2hsaWdodC5wYWRkaW5nQ29sb3Iuc2VyaWFsaXplZCgpKTsKKyAg
ICBvYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJvcmRlckNvbG9yIiksIGhpZ2hsaWdo
dC5ib3JkZXJDb2xvci5zZXJpYWxpemVkKCkpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgibWFyZ2luQ29sb3IiKSwgaGlnaGxpZ2h0Lm1hcmdpbkNvbG9yLnNlcmlhbGl6ZWQo
KSk7CiAgICAgcmV0dXJuIG9iamVjdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTQwNyw5ICs0MDcsOSBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVnaW9u
SGlnaGxpZ2h0KEZyYW1lVmlldyogbWFpbgogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVnaW9uT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKIAotICAgIHJlZ2lvbk9i
amVjdC0+c2V0QXJyYXkoImJvcmRlclF1YWQiLCBidWlsZEFycmF5Rm9yUXVhZChib3JkZXJSZWN0
UXVhZCkpOwotICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoImluY29taW5nUXVhZCIsIGJ1aWxk
QXJyYXlGb3JRdWFkKGluY29taW5nUmVjdFF1YWQpKTsKLSAgICByZWdpb25PYmplY3QtPnNldEFy
cmF5KCJvdXRnb2luZ1F1YWQiLCBidWlsZEFycmF5Rm9yUXVhZChvdXRnb2luZ1JlY3RRdWFkKSk7
CisgICAgcmVnaW9uT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImJvcmRlclF1YWQiKSwg
YnVpbGRBcnJheUZvclF1YWQoYm9yZGVyUmVjdFF1YWQpKTsKKyAgICByZWdpb25PYmplY3QtPnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiaW5jb21pbmdRdWFkIiksIGJ1aWxkQXJyYXlGb3JRdWFkKGlu
Y29taW5nUmVjdFF1YWQpKTsKKyAgICByZWdpb25PYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJh
bCgib3V0Z29pbmdRdWFkIiksIGJ1aWxkQXJyYXlGb3JRdWFkKG91dGdvaW5nUmVjdFF1YWQpKTsK
IAogICAgIHJldHVybiByZWdpb25PYmplY3QucmVsZWFzZSgpOwogfQpAQCAtNDI5LDcgKzQyOSw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvckNTU1Jl
Z2lvbnNIaWdobGlnaHQoUmVuZGVyUmVnaW9uCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKHJlZ2lvbiA9PSBpdGVyUmVnaW9uKSB7CiAgICAgICAgICAgICAvLyBMZXQgdGhlIHNj
cmlwdCBrbm93IHRoYXQgdGhpcyBpcyB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIG5vZGUuCi0g
ICAgICAgICAgICByZWdpb25IaWdobGlnaHRPYmplY3QtPnNldEJvb2xlYW4oImlzSGlnaGxpZ2h0
ZWQiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlZ2lvbkhpZ2hsaWdodE9iamVjdC0+c2V0Qm9vbGVh
bihBU0NJSUxpdGVyYWwoImlzSGlnaGxpZ2h0ZWQiKSwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICAg
ICAgYXJyYXktPnB1c2hPYmplY3QocmVnaW9uSGlnaGxpZ2h0T2JqZWN0LnJlbGVhc2UoKSk7CiAg
ICAgfQpAQCAtNDQwLDggKzQ0MCw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5
PiBidWlsZE9iamVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQoUmVuZGVyUmVnaW9uCiBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yU2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5zZXROdW1iZXIoIndpZHRoIiwgc2l6
ZS53aWR0aCgpKTsKLSAgICByZXN1bHQtPnNldE51bWJlcigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQo
KSk7CisgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJ3aWR0aCIpLCBzaXplLndp
ZHRoKCkpOworICAgIHJlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiaGVpZ2h0IiksIHNp
emUuaGVpZ2h0KCkpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC00NjYs
NyArNDY2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVj
dEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKFJlbmRlclJlZ2kKICAgICBjb250ZW50c1F1YWRUb1Bh
Z2UobWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBjbGlwUXVhZCk7CiAKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZWdpb25PYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoInF1YWQiLCBidWlsZEFycmF5Rm9yUXVhZChjbGlw
UXVhZCkpOworICAgIHJlZ2lvbk9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJxdWFkIiks
IGJ1aWxkQXJyYXlGb3JRdWFkKGNsaXBRdWFkKSk7CiAgICAgcmV0dXJuIHJlZ2lvbk9iamVjdC5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYnVpbGRPYmplY3RGb3JSZW5kZXJlckZyYWdtZW50cyhSZW5kZXJPYmplY3Qq
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZnJhZ21lbnRPYmplY3Qg
PSBidWlsZE9iamVjdEZvckhpZ2hsaWdodChoaWdobGlnaHQpOwogCiAgICAgICAgICAgICAgICAg
Ly8gQ29tcHV0ZSB0aGUgY2xpcHBpbmcgYXJlYSBvZiB0aGUgcmVnaW9uLgotICAgICAgICAgICAg
ICAgIGZyYWdtZW50T2JqZWN0LT5zZXRPYmplY3QoInJlZ2lvbiIsIGJ1aWxkT2JqZWN0Rm9yQ1NT
UmVnaW9uQ29udGVudENsaXAocmVnaW9uKSk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnRPYmpl
Y3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInJlZ2lvbiIpLCBidWlsZE9iamVjdEZvckNTU1Jl
Z2lvbkNvbnRlbnRDbGlwKHJlZ2lvbikpOwogICAgICAgICAgICAgICAgIGZyYWdtZW50c0FycmF5
LT5wdXNoT2JqZWN0KGZyYWdtZW50T2JqZWN0LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKQEAgLTY4Myw4ICs2ODMsOCBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudElu
Zm8oTm9kZSogbm9kZSkKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7
CiAgICAgYm9vbCBpc1hIVE1MID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5pc1hIVE1MRG9jdW1lbnQo
KTsKLSAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKCJ0YWdOYW1lIiwgaXNYSFRNTCA/IGVsZW1l
bnQtPm5vZGVOYW1lKCkgOiBlbGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCkpOwotICAgIGVsZW1l
bnRJbmZvLT5zZXRTdHJpbmcoImlkVmFsdWUiLCBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpKTsK
KyAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidGFnTmFtZSIpLCBpc1hI
VE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7
CisgICAgZWxlbWVudEluZm8tPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImlkVmFsdWUiKSwgZWxl
bWVudC0+Z2V0SWRBdHRyaWJ1dGUoKSk7CiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRD
bGFzc05hbWVzOwogICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYmIGVsZW1lbnQtPmlzU3R5
bGVkRWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY2xhc3NOYW1lczsKQEAgLTY5
OCw3ICs2OTgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2Jq
ZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICAgICAgICAgIGNsYXNzTmFtZXMuYXBw
ZW5kKCcuJyk7CiAgICAgICAgICAgICBjbGFzc05hbWVzLmFwcGVuZChjbGFzc05hbWUpOwogICAg
ICAgICB9Ci0gICAgICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoImNsYXNzTmFtZSIsIGNsYXNz
TmFtZXMudG9TdHJpbmcoKSk7CisgICAgICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoQVNDSUlM
aXRlcmFsKCJjbGFzc05hbWUiKSwgY2xhc3NOYW1lcy50b1N0cmluZygpKTsKICAgICB9CiAKICAg
ICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CkBAIC03MDYs
OCArNzA2LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVj
dEZvckVsZW1lbnRJbmZvKE5vZGUqIG5vZGUpCiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmll
dyA9IGNvbnRhaW5pbmdGcmFtZS0+dmlldygpOwogICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KGNvbnRhaW5pbmdWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKTsKICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogbW9kZWxPYmplY3QgPSByZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikgOiBudWxscHRyOwotICAgIGVsZW1lbnRJbmZvLT5z
ZXRTdHJpbmcoIm5vZGVXaWR0aCIsIFN0cmluZzo6bnVtYmVyKG1vZGVsT2JqZWN0ID8gYWRqdXN0
Rm9yQWJzb2x1dGVab29tKG1vZGVsT2JqZWN0LT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCAq
bW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3gud2lkdGgoKSkpOwotICAgIGVsZW1lbnRJbmZvLT5z
ZXRTdHJpbmcoIm5vZGVIZWlnaHQiLCBTdHJpbmc6Om51bWJlcihtb2RlbE9iamVjdCA/IGFkanVz
dEZvckFic29sdXRlWm9vbShtb2RlbE9iamVjdC0+cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCks
ICptb2RlbE9iamVjdCkgOiBib3VuZGluZ0JveC5oZWlnaHQoKSkpOworICAgIGVsZW1lbnRJbmZv
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub2RlV2lkdGgiKSwgU3RyaW5nOjpudW1iZXIobW9k
ZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmplY3QtPnBpeGVsU25hcHBl
ZE9mZnNldFdpZHRoKCksICptb2RlbE9iamVjdCkgOiBib3VuZGluZ0JveC53aWR0aCgpKSk7Cisg
ICAgZWxlbWVudEluZm8tPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vZGVIZWlnaHQiKSwgU3Ry
aW5nOjpudW1iZXIobW9kZWxPYmplY3QgPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20obW9kZWxPYmpl
Y3QtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpLCAqbW9kZWxPYmplY3QpIDogYm91bmRpbmdC
b3guaGVpZ2h0KCkpKTsKICAgICAKICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnRDb250YWluZXIoKSkgewogICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
cmVnaW9uID0gdG9SZW5kZXJCbG9ja0Zsb3cocmVuZGVyZXIpLT5yZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCgpOwpAQCAtNzE1LDI0ICs3MTUsMjQgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gcmVnaW9uLT5mbG93VGhyZWFkKCk7CiAg
ICAgICAgICAgICBBU1NFUlQoZmxvd1RocmVhZCAmJiBmbG93VGhyZWFkLT5pc1JlbmRlck5hbWVk
Rmxvd1RocmVhZCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlZ2lv
bkZsb3dJbmZvID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHJlZ2lv
bkZsb3dJbmZvLT5zZXRTdHJpbmcoIm5hbWUiLCB0b1JlbmRlck5hbWVkRmxvd1RocmVhZChmbG93
VGhyZWFkKS0+Zmxvd1RocmVhZE5hbWUoKSk7Ci0gICAgICAgICAgICByZWdpb25GbG93SW5mby0+
c2V0QXJyYXkoInJlZ2lvbnMiLCBidWlsZE9iamVjdEZvckNTU1JlZ2lvbnNIaWdobGlnaHQocmVn
aW9uLCBmbG93VGhyZWFkKSk7Ci0gICAgICAgICAgICBlbGVtZW50SW5mby0+c2V0T2JqZWN0KCJy
ZWdpb25GbG93SW5mbyIsIHJlZ2lvbkZsb3dJbmZvLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBy
ZWdpb25GbG93SW5mby0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibmFtZSIpLCB0b1JlbmRlck5h
bWVkRmxvd1RocmVhZChmbG93VGhyZWFkKS0+Zmxvd1RocmVhZE5hbWUoKSk7CisgICAgICAgICAg
ICByZWdpb25GbG93SW5mby0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJyZWdpb25zIiksIGJ1aWxk
T2JqZWN0Rm9yQ1NTUmVnaW9uc0hpZ2hsaWdodChyZWdpb24sIGZsb3dUaHJlYWQpKTsKKyAgICAg
ICAgICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJyZWdpb25GbG93SW5m
byIpLCByZWdpb25GbG93SW5mby5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
UmVuZGVyRmxvd1RocmVhZCogY29udGFpbmluZ0Zsb3dUaHJlYWQgPSByZW5kZXJlci0+Zmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChjb250YWluaW5nRmxvd1RocmVhZCAmJiBj
b250YWluaW5nRmxvd1RocmVhZC0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjb250ZW50Rmxvd0luZm8gPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgICAgICBjb250ZW50Rmxvd0luZm8tPnNldFN0cmluZygibmFtZSIs
IHRvUmVuZGVyTmFtZWRGbG93VGhyZWFkKGNvbnRhaW5pbmdGbG93VGhyZWFkKS0+Zmxvd1RocmVh
ZE5hbWUoKSk7Ci0gICAgICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoImNvbnRlbnRGbG93SW5m
byIsIGNvbnRlbnRGbG93SW5mby5yZWxlYXNlKCkpOworICAgICAgICBjb250ZW50Rmxvd0luZm8t
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5hbWUiKSwgdG9SZW5kZXJOYW1lZEZsb3dUaHJlYWQo
Y29udGFpbmluZ0Zsb3dUaHJlYWQpLT5mbG93VGhyZWFkTmFtZSgpKTsKKyAgICAgICAgZWxlbWVu
dEluZm8tPnNldE9iamVjdChBU0NJSUxpdGVyYWwoImNvbnRlbnRGbG93SW5mbyIpLCBjb250ZW50
Rmxvd0luZm8ucmVsZWFzZSgpKTsKICAgICB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAg
ICBpZiAocmVuZGVyZXItPmlzQm94KCkpIHsKICAgICAgICAgUmVuZGVyQm94KiByZW5kZXJCb3gg
PSB0b1JlbmRlckJveChyZW5kZXJlcik7CiAgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBzaGFwZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKGNvbnRhaW5pbmdG
cmFtZSwgcmVuZGVyQm94KSkKLSAgICAgICAgICAgIGVsZW1lbnRJbmZvLT5zZXRPYmplY3QoInNo
YXBlT3V0c2lkZUluZm8iLCBzaGFwZU9iamVjdC5yZWxlYXNlKCkpOworICAgICAgICAgICAgZWxl
bWVudEluZm8tPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNoYXBlT3V0c2lkZUluZm8iKSwgc2hh
cGVPYmplY3QucmVsZWFzZSgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzQyLDcgKzc0Miw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFbGVtZW50
SW5mbyhOb2RlKiBub2RlKQogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUg
PSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkgewogICAgICAgICBpZiAoQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShub2Rl
KSkKLSAgICAgICAgICAgIGVsZW1lbnRJbmZvLT5zZXRTdHJpbmcoInJvbGUiLCBheE9iamVjdC0+
Y29tcHV0ZWRSb2xlU3RyaW5nKCkpOworICAgICAgICAgICAgZWxlbWVudEluZm8tPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInJvbGUiKSwgYXhPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZWxlbWVudEluZm8ucmVsZWFzZSgpOwpAQCAtNzY2LDE0ICs3
NjYsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck92ZXJsYXk6OmJ1
aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY28KIAogICAgIC8vIFRoZSBtYWluIHZpZXcn
cyBzY3JvbGwgb2Zmc2V0IGlzIHNoYXJlZCBhY3Jvc3MgYWxsIHF1YWRzLgogICAgIEZyYW1lVmll
dyogbWFpblZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOwotICAgIGhpZ2hsaWdodE9i
amVjdC0+c2V0T2JqZWN0KCJzY3JvbGwiLCBidWlsZE9iamVjdEZvclBvaW50KCFtYWluVmlldy0+
ZGVsZWdhdGVzU2Nyb2xsaW5nKCkgPyBtYWluVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkubG9j
YXRpb24oKSA6IEZsb2F0UG9pbnQoKSkpOworICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgic2Nyb2xsIiksIGJ1aWxkT2JqZWN0Rm9yUG9pbnQoIW1haW5WaWV3LT5k
ZWxlZ2F0ZXNTY3JvbGxpbmcoKSA/IG1haW5WaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5sb2Nh
dGlvbigpIDogRmxvYXRQb2ludCgpKSk7CiAKLSAgICBoaWdobGlnaHRPYmplY3QtPnNldEFycmF5
KCJmcmFnbWVudHMiLCBoaWdobGlnaHRGcmFnbWVudHMucmVsZWFzZSgpKTsKKyAgICBoaWdobGln
aHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiZnJhZ21lbnRzIiksIGhpZ2hsaWdodEZy
YWdtZW50cy5yZWxlYXNlKCkpOwogCiAgICAgaWYgKG1fbm9kZUhpZ2hsaWdodENvbmZpZy5zaG93
SW5mbykgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBlbGVtZW50SW5mbyA9IGJ1
aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8obm9kZSk7CiAgICAgICAgIGlmIChlbGVtZW50SW5mbykK
LSAgICAgICAgICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0T2JqZWN0KCJlbGVtZW50SW5mbyIsIGVs
ZW1lbnRJbmZvLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBoaWdobGlnaHRPYmplY3QtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoImVsZW1lbnRJbmZvIiksIGVsZW1lbnRJbmZvLnJlbGVhc2UoKSk7
CiAgICAgfQogICAgICAgICAKICAgICByZXR1cm4gaGlnaGxpZ2h0T2JqZWN0LnJlbGVhc2UoKTsK
QEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdOb2RlSGlnaGxp
Z2h0KCkKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaWdobGlnaHRPYmplY3QgPSBidWls
ZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpOwogICAgIGlmICghaGlnaGxpZ2h0T2JqZWN0KQog
ICAgICAgICByZXR1cm47Ci0gICAgZXZhbHVhdGVJbk92ZXJsYXkoImRyYXdOb2RlSGlnaGxpZ2h0
IiwgaGlnaGxpZ2h0T2JqZWN0KTsKKyAgICBldmFsdWF0ZUluT3ZlcmxheShBU0NJSUxpdGVyYWwo
ImRyYXdOb2RlSGlnaGxpZ2h0IiksIGhpZ2hsaWdodE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yT3ZlcmxheTo6ZHJhd1F1YWRIaWdobGlnaHQoKQpAQCAtNzk0LDEzICs3OTQsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UXVhZEhpZ2hsaWdodCgpCiAKICAgICBIaWdobGlnaHQg
aGlnaGxpZ2h0OwogICAgIGJ1aWxkUXVhZEhpZ2hsaWdodCgqbV9oaWdobGlnaHRRdWFkLCBtX3F1
YWRIaWdobGlnaHRDb25maWcsICZoaWdobGlnaHQpOwotICAgIGV2YWx1YXRlSW5PdmVybGF5KCJk
cmF3UXVhZEhpZ2hsaWdodCIsIGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwor
ICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgiZHJhd1F1YWRIaWdobGlnaHQiKSwg
YnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxpZ2h0KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6ZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKCkKIHsKICAgICBpZiAoIW1fcGF1
c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCkpCi0gICAgICAgIGV2YWx1YXRlSW5PdmVybGF5
KCJkcmF3UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UiLCBtX3BhdXNlZEluRGVidWdnZXJNZXNzYWdl
KTsKKyAgICAgICAgZXZhbHVhdGVJbk92ZXJsYXkoQVNDSUlMaXRlcmFsKCJkcmF3UGF1c2VkSW5E
ZWJ1Z2dlck1lc3NhZ2UiKSwgbV9wYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZSk7CiB9CiAKIFBhZ2Uq
IEluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKQEAgLTgzNCwxNyArODM0LDE3IEBAIFBh
Z2UqIEluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKICAgICBmcmFtZS52aWV3KCktPnNl
dENhbkhhdmVTY3JvbGxiYXJzKGZhbHNlKTsKICAgICBmcmFtZS52aWV3KCktPnNldFRyYW5zcGFy
ZW50KHRydWUpOwogICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7Ci0g
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJ0
ZXh0L2h0bWwiKTsKKyAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
c2V0TUlNRVR5cGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSk7CiAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKCk7CiAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oSW5zcGVjdG9yT3ZlcmxheVBhZ2VfaHRtbCksIHNpemVvZihJbnNwZWN0b3JPdmVybGF5
UGFnZV9odG1sKSk7CiAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmVuZCgpOwogCiAjaWYgT1MoV0lORE9XUykKLSAgICBldmFsdWF0ZUluT3ZlcmxheSgic2V0UGxh
dGZvcm0iLCAid2luZG93cyIpOworICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgi
c2V0UGxhdGZvcm0iKSwgQVNDSUlMaXRlcmFsKCJ3aW5kb3dzIikpOwogI2VsaWYgT1MoTUFDX09T
X1gpCi0gICAgZXZhbHVhdGVJbk92ZXJsYXkoInNldFBsYXRmb3JtIiwgIm1hYyIpOworICAgIGV2
YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgic2V0UGxhdGZvcm0iKSwgQVNDSUlMaXRlcmFs
KCJtYWMiKSk7CiAjZWxpZiBPUyhVTklYKQotICAgIGV2YWx1YXRlSW5PdmVybGF5KCJzZXRQbGF0
Zm9ybSIsICJsaW51eCIpOworICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgic2V0
UGxhdGZvcm0iKSwgQVNDSUlMaXRlcmFsKCJsaW51eCIpKTsKICNlbmRpZgogCiAgICAgcmV0dXJu
IG1fb3ZlcmxheVBhZ2UuZ2V0KCk7CkBAIC04NTksMTcgKzg1OSwxNyBAQCB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmZvcmNlUGFpbnQoKQogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpyZXNldChjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGZyYW1lVmlld0Z1bGxTaXpl
KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc2V0RGF0YSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgcmVzZXREYXRhLT5zZXROdW1iZXIoImRldmljZVNjYWxlRmFj
dG9yIiwgbV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIHJlc2V0RGF0YS0+c2V0T2Jq
ZWN0KCJ2aWV3cG9ydFNpemUiLCBidWlsZE9iamVjdEZvclNpemUodmlld3BvcnRTaXplKSk7Ci0g
ICAgcmVzZXREYXRhLT5zZXRPYmplY3QoImZyYW1lVmlld0Z1bGxTaXplIiwgYnVpbGRPYmplY3RG
b3JTaXplKGZyYW1lVmlld0Z1bGxTaXplKSk7Ci0gICAgZXZhbHVhdGVJbk92ZXJsYXkoInJlc2V0
IiwgcmVzZXREYXRhLnJlbGVhc2UoKSk7CisgICAgcmVzZXREYXRhLT5zZXROdW1iZXIoQVNDSUlM
aXRlcmFsKCJkZXZpY2VTY2FsZUZhY3RvciIpLCBtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgcmVzZXREYXRhLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2aWV3cG9ydFNpemUiKSwg
YnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6ZSkpOworICAgIHJlc2V0RGF0YS0+c2V0T2Jq
ZWN0KEFTQ0lJTGl0ZXJhbCgiZnJhbWVWaWV3RnVsbFNpemUiKSwgYnVpbGRPYmplY3RGb3JTaXpl
KGZyYW1lVmlld0Z1bGxTaXplKSk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoQVNDSUlMaXRlcmFs
KCJyZXNldCIpLCByZXNldERhdGEucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVy
bGF5OjpldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCkKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGNvbW1hbmQgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgY29tbWFuZC0+cHVzaFN0cmluZyhtZXRob2QpOwotICAgIG92ZXJsYXlQYWdlKCktPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobWFrZVN0cmluZygiZGlz
cGF0Y2goIiwgY29tbWFuZC0+dG9KU09OU3RyaW5nKCksICIpIikpKTsKKyAgICBvdmVybGF5UGFn
ZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1ha2VT
dHJpbmcoImRpc3BhdGNoKCIsIGNvbW1hbmQtPnRvSlNPTlN0cmluZygpLCAnKScpKSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCkBAIC04NzcsNyArODc3LDcgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgU3RyaW5nJiBhcmcKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNvbW1hbmQgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgY29tbWFuZC0+cHVzaFN0cmluZyhtZXRob2Qp
OwogICAgIGNvbW1hbmQtPnB1c2hTdHJpbmcoYXJndW1lbnQpOwotICAgIG92ZXJsYXlQYWdlKCkt
Pm1haW5GcmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobWFrZVN0cmlu
ZygiZGlzcGF0Y2goIiwgY29tbWFuZC0+dG9KU09OU3RyaW5nKCksICIpIikpKTsKKyAgICBvdmVy
bGF5UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2Rl
KG1ha2VTdHJpbmcoImRpc3BhdGNoKCIsIGNvbW1hbmQtPnRvSlNPTlN0cmluZygpLCAnKScpKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3Ry
aW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFyZ3VtZW50KQpAQCAtODg1
LDcgKzg4NSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVJbk92ZXJsYXkoY29u
c3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjCiAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBjb21tYW5kID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIGNvbW1hbmQt
PnB1c2hTdHJpbmcobWV0aG9kKTsKICAgICBjb21tYW5kLT5wdXNoVmFsdWUoYXJndW1lbnQpOwot
ICAgIG92ZXJsYXlQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlKFNjcmlwdFNv
dXJjZUNvZGUobWFrZVN0cmluZygiZGlzcGF0Y2goIiwgY29tbWFuZC0+dG9KU09OU3RyaW5nKCks
ICIpIikpKTsKKyAgICBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5ldmFsdWF0
ZShTY3JpcHRTb3VyY2VDb2RlKG1ha2VTdHJpbmcoImRpc3BhdGNoKCIsIGNvbW1hbmQtPnRvSlNP
TlN0cmluZygpLCAnKScpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZnJlZVBhZ2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCA0YjM5ZThkLi4wZjgyOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTI1LDE0ICsxMjUsMTQgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlWEhSVGV4dERlY29kZXIoY29uc3QgU3Ry
aW5nJiBtaW1lVHkKIHsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcjsK
ICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQotICAgICAgICBkZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4dEVuY29kaW5nTmFt
ZSk7CisgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlM
aXRlcmFsKCJ0ZXh0L3BsYWluIiksIHRleHRFbmNvZGluZ05hbWUpOwogICAgIGVsc2UgaWYgKERP
TUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlLmxvd2VyKCkpKSB7Ci0gICAg
ICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3ht
bCIpOworICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJ
TGl0ZXJhbCgiYXBwbGljYXRpb24veG1sIikpOwogICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50
WE1MRGVjb2RpbmcoKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBl
LCAidGV4dC9odG1sIikpCi0gICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQvaHRtbCIsICJVVEYtOCIpOworICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiksICJVVEYtOCIpOwog
ICAgIGVsc2UKLSAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgi
dGV4dC9wbGFpbiIsICJVVEYtOCIpOworICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCAiVVRGLTgiKTsKICAgICBy
ZXR1cm4gZGVjb2RlcjsKIH0KIApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFtZSog
ZnJhbWUsCiAgICAgICAgIHN1Y2Nlc3MgPSBjYWNoZWRSZXNvdXJjZUNvbnRlbnQoY2FjaGVkUmVz
b3VyY2UoZnJhbWUsIHVybCksIHJlc3VsdCwgYmFzZTY0RW5jb2RlZCk7CiAKICAgICBpZiAoIXN1
Y2Nlc3MpCi0gICAgICAgICplcnJvclN0cmluZyA9ICJObyByZXNvdXJjZSB3aXRoIGdpdmVuIFVS
TCBmb3VuZCI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gcmVzb3Vy
Y2Ugd2l0aCBnaXZlbiBVUkwgZm91bmQiKTsKIH0KIAogLy9zdGF0aWMKQEAgLTQwMSw3ICs0MDEs
NyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcwogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJl
bW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX3NjcmlwdHNUb0V2YWx1YXRlT25Mb2FkIHx8
IG1fc2NyaXB0c1RvRXZhbHVhdGVPbkxvYWQtPmZpbmQoaWRlbnRpZmllcikgPT0gbV9zY3JpcHRz
VG9FdmFsdWF0ZU9uTG9hZC0+ZW5kKCkpIHsKLSAgICAgICAgKmVycm9yID0gIlNjcmlwdCBub3Qg
Zm91bmQiOworICAgICAgICAqZXJyb3IgPSBBU0NJSUxpdGVyYWwoIlNjcmlwdCBub3QgZm91bmQi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJObyBE
b2N1bWVudCBpbnN0YW5jZSB0byBzZXQgSFRNTCBmb3IiOworICAgICAgICAqZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIk5vIERvY3VtZW50IGluc3RhbmNlIHRvIHNldCBIVE1MIGZvciIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVu
dChkb2N1bWVudCwgaHRtbCk7CkBAIC04MzMsNyArODMzLDcgQEAgRnJhbWUqIEluc3BlY3RvclBh
Z2VBZ2VudDo6YXNzZXJ0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGYKIHsKICAgICBGcmFtZSogZnJhbWUgPSBmcmFtZUZvcklkKGZyYW1lSWQpOwogICAgIGlm
ICghZnJhbWUpCi0gICAgICAgICplcnJvclN0cmluZyA9ICJObyBmcmFtZSBmb3IgZ2l2ZW4gaWQg
Zm91bmQiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGZyYW1lIGZv
ciBnaXZlbiBpZCBmb3VuZCIpOwogICAgIHJldHVybiBmcmFtZTsKIH0KIApAQCAtODQzLDcgKzg0
Myw3IEBAIERvY3VtZW50TG9hZGVyKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50
TG9hZGVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluCiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRl
cikKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIGRvY3VtZW50TG9hZGVyIGZvciBnaXZlbiBm
cmFtZSBmb3VuZCI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gZG9j
dW1lbnRMb2FkZXIgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIik7CiAgICAgcmV0dXJuIGRvY3VtZW50
TG9hZGVyOwogfQogCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2V0VG91Y2hFbXVsYXRpb25FbmFibGVkKEVycm9yU3RyaW5nKiBlcnJvciwgYm9vbCBlbmFi
bAogICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgdXBkYXRlVG91Y2hFdmVudEVtdWxhdGlv
bkluUGFnZShlbmFibGVkKTsKICNlbHNlCi0gICAgKmVycm9yID0gIlRvdWNoIGV2ZW50cyBlbXVs
YXRpb24gbm90IHN1cHBvcnRlZCI7CisgICAgKmVycm9yID0gQVNDSUlMaXRlcmFsKCJUb3VjaCBl
dmVudHMgZW11bGF0aW9uIG5vdCBzdXBwb3J0ZWQiKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxl
ZCk7CiAjZW5kaWYKIH0KQEAgLTEwODIsMjEgKzEwODIsMjEgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNuYXBzaG90UmVjdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCB4LCBpbnQg
eSwgaW4KIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpoYW5kbGVKYXZhU2NyaXB0RGlhbG9nKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9vbCBhY2NlcHQsIGNvbnN0IFN0cmluZyogcHJvbXB0
VGV4dCkKIHsKICAgICBpZiAoIW1fY2xpZW50LT5oYW5kbGVKYXZhU2NyaXB0RGlhbG9nKGFjY2Vw
dCwgcHJvbXB0VGV4dCkpCi0gICAgICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3QgaGFuZGxl
IEphdmFTY3JpcHQgZGlhbG9nIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJDb3VsZCBub3QgaGFuZGxlIEphdmFTY3JpcHQgZGlhbG9nIik7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjphcmNoaXZlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgU3RyaW5nKiBk
YXRhKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUp
IHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIG1haW4gZnJhbWUiOworICAgICAgICAqZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIG1haW4gZnJhbWUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgJiYgVVNFKENGKQogICAgIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGZy
YW1lKTsKICAgICBpZiAoIWFyY2hpdmUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxk
IG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1haW4gZnJhbWUiOworICAgICAgICAqZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBjcmVhdGUgd2ViIGFyY2hpdmUgZm9yIG1h
aW4gZnJhbWUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGI0NjhmMzUu
LjEwZTY4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTMxMiw5ICszMTIsOSBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TAogICAgIHJlcXVlc3Quc2V0UmVwb3J0UmF3SGVhZGVycyh0cnVlKTsKIAogICAgIGlmICht
X2NhY2hlRGlzYWJsZWQpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OlByYWdtYSwgIm5vLWNhY2hlIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEFTQ0lJTGl0ZXJhbCgibm8tY2Fj
aGUiKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNo
ZURhdGEpOwotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q2FjaGVDb250cm9sLCAibm8tY2FjaGUiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgQVNDSUlMaXRlcmFsKCJuby1j
YWNoZSIpKTsKICAgICB9CiAKICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNv
dXJjZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVK
c29uKHR5cGUpOwpAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyCiB7
CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VE
YXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJj
ZURhdGEpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHJlc291cmNlIHdpdGggZ2l2ZW4g
aWRlbnRpZmllciBmb3VuZCI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
Tm8gcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIGZvdW5kIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgog
ICAgIH0KIAogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkgewotICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiUmVxdWVzdCBjb250ZW50IHdhcyBldmljdGVkIGZyb20gaW5z
cGVjdG9yIGNhY2hlIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJSZXF1
ZXN0IGNvbnRlbnQgd2FzIGV2aWN0ZWQgZnJvbSBpbnNwZWN0b3IgY2FjaGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKmVycm9yU3RyaW5nID0gIk5v
IGRhdGEgZm91bmQgZm9yIHJlc291cmNlIHdpdGggZ2l2ZW4gaWRlbnRpZmllciI7CisgICAgKmVy
cm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJjZSB3aXRo
IGdpdmVuIGlkZW50aWZpZXIiKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpy
ZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA4ZjJi
ODJiLi41YzZjZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0zMTIsOCArMzEyLDggQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RG
b3IKICAgICBpZiAoIW1fc3R5bGVJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdC0+c2V0U3R5
bGVJZChtX3N0eWxlSWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGVJZD4oKSk7CiAKLSAgICByZXN1bHQtPnNldFdpZHRoKG1fc3R5bGUtPmdldFBy
b3BlcnR5VmFsdWUoIndpZHRoIikpOwotICAgIHJlc3VsdC0+c2V0SGVpZ2h0KG1fc3R5bGUtPmdl
dFByb3BlcnR5VmFsdWUoImhlaWdodCIpKTsKKyAgICByZXN1bHQtPnNldFdpZHRoKG1fc3R5bGUt
PmdldFByb3BlcnR5VmFsdWUoQVNDSUlMaXRlcmFsKCJ3aWR0aCIpKSk7CisgICAgcmVzdWx0LT5z
ZXRIZWlnaHQobV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShBU0NJSUxpdGVyYWwoImhlaWdodCIp
KSk7CiAKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGEgPSBleHRyYWN0
U291cmNlRGF0YSgpOwogICAgIGlmIChzb3VyY2VEYXRhKQpAQCAtNTUwLDcgKzU1MCw3IEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9y
U3R5bGU6OnN0eWxlV2l0aFByb3BlCiAKICAgICAgICAgLy8gRGVmYXVsdCAicHJpb3JpdHkiID09
ICIiLgogICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5pbXBvcnRhbnQpCi0gICAgICAgICAgICBw
cm9wZXJ0eS0+c2V0UHJpb3JpdHkoImltcG9ydGFudCIpOworICAgICAgICAgICAgcHJvcGVydHkt
PnNldFByaW9yaXR5KEFTQ0lJTGl0ZXJhbCgiaW1wb3J0YW50IikpOwogICAgICAgICBpZiAoIWl0
LT5kaXNhYmxlZCkgewogICAgICAgICAgICAgaWYgKGl0LT5oYXNTb3VyY2UpIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoc291cmNlRGF0YSk7CkBAIC03MDEsNyArNzAxLDcgQEAgTmV3TGluZUFu
ZFdoaXRlc3BhY2UmIEluc3BlY3RvclN0eWxlOjpuZXdMaW5lQW5kV2hpdGVzcGFjZURlbGltaXRl
cnMoKSBjb25zdAogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+KiBzb3VyY2VQcm9w
ZXJ0eURhdGEgPSBzb3VyY2VEYXRhID8gJihzb3VyY2VEYXRhLT5zdHlsZVNvdXJjZURhdGEtPnBy
b3BlcnR5RGF0YSkgOiBudWxscHRyOwogICAgIGludCBwcm9wZXJ0eUNvdW50OwogICAgIGlmICgh
c291cmNlUHJvcGVydHlEYXRhIHx8ICEocHJvcGVydHlDb3VudCA9IHNvdXJjZVByb3BlcnR5RGF0
YS0+c2l6ZSgpKSkgewotICAgICAgICBtX2Zvcm1hdC5maXJzdCA9ICJcbiI7CisgICAgICAgIG1f
Zm9ybWF0LmZpcnN0ID0gQVNDSUlMaXRlcmFsKCJcbiIpOwogICAgICAgICBtX2Zvcm1hdC5zZWNv
bmQgPSBkZWZhdWx0UHJlZml4OwogICAgICAgICByZXR1cm4gbV9mb3JtYXQ7IC8vIERvIG5vdCBy
ZW1lbWJlciB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nIGFuZCBhdHRlbXB0IHRvIGFjcXVpcmUgaXQg
bGF0ZXIuCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGFjZTU2M2YuLjQwMjY3NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTM1
Niw3ICszNTYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCh1
bnNpZ25lZCBlbmRMaW5lKQogewogICAgIGlmICghbV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpIHsK
ICAgICAgICAgY29uc3QgVGltZWxpbmVSZWNvcmRFbnRyeSYgZW50cnkgPSBtX3JlY29yZFN0YWNr
Lmxhc3QoKTsKLSAgICAgICAgZW50cnkuZGF0YS0+c2V0TnVtYmVyKCJlbmRMaW5lIiwgZW5kTGlu
ZSk7CisgICAgICAgIGVudHJ5LmRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImVuZExpbmUi
KSwgZW5kTGluZSk7CiAgICAgICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJl
Y29yZFR5cGU6OlBhcnNlSFRNTCk7CiAgICAgfQogfQpAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRp
YyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2wo
VGltZWxpbmVSZWNvcmRUeXBlCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVj
b3JkVG9UaW1lbGluZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcHJwUmVjb3JkLCBUaW1l
bGluZVJlY29yZFR5cGUgdHlwZSkKIHsKLSAgICBwcnBSZWNvcmQtPnNldFN0cmluZygidHlwZSIs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldFdlYkVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9j
b2wodHlwZSkpKTsKKyAgICBwcnBSZWNvcmQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInR5cGUi
KSwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUodG9Qcm90
b2NvbCh0eXBlKSkpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVudGltZUNhc3QocHJwUmVjb3Jk
KTsKIApAQCAtNjYzLDcgKzY2Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0
RnJhbWVJZGVudGlmaWVyKEluc3BlY3Rvck9iamVjdCogcmVjb3JkLCBGcmFtZSoKICAgICBTdHJp
bmcgZnJhbWVJZDsKICAgICBpZiAoZnJhbWUgJiYgbV9wYWdlQWdlbnQpCiAgICAgICAgIGZyYW1l
SWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7Ci0gICAgcmVjb3JkLT5zZXRTdHJpbmco
ImZyYW1lSWQiLCBmcmFtZUlkKTsKKyAgICByZWNvcmQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwo
ImZyYW1lSWQiKSwgZnJhbWVJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ29tcGxldGVSZWNvcmRFbnRyeShjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBlbnRyeSkK
QEAgLTcwMyw3ICs3MDMsNyBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjphcHBlbmRSZWNvcmQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZy
YW1lKiBmcmFtZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQodGltZXN0YW1wKCksIGNhcHR1
cmVDYWxsU3RhY2sgPyBtX21heENhbGxTdGFja0RlcHRoIDogMCk7Ci0gICAgcmVjb3JkLT5zZXRP
YmplY3QoImRhdGEiLCBkYXRhKTsKKyAgICByZWNvcmQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
ImRhdGEiKSwgZGF0YSk7CiAgICAgc2V0RnJhbWVJZGVudGlmaWVyKHJlY29yZC5nZXQoKSwgZnJh
bWUpOwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgdHlwZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNw
cAppbmRleCA4NTczZDg2Li5jZmRkZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIElu
c3BlY3RvcldvcmtlckFnZW50Ojpjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBp
bnQgd29ya2VySWQpCiAgICAgaWYgKGNoYW5uZWwpCiAgICAgICAgIGNoYW5uZWwtPmNvbm5lY3RU
b1dvcmtlckdsb2JhbFNjb3BlKCk7CiAgICAgZWxzZQotICAgICAgICAqZXJyb3IgPSAiV29ya2Vy
IGlzIGdvbmUiOworICAgICAgICAqZXJyb3IgPSBBU0NJSUxpdGVyYWwoIldvcmtlciBpcyBnb25l
Iik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2Vy
KEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtlcklkKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZv
aWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5n
KiBlcnJvciwgaW50IHdvcmtlcklkCiAgICAgaWYgKGNoYW5uZWwpCiAgICAgICAgIGNoYW5uZWwt
PmRpc2Nvbm5lY3RGcm9tV29ya2VyR2xvYmFsU2NvcGUoKTsKICAgICBlbHNlCi0gICAgICAgICpl
cnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CisgICAgICAgICplcnJvciA9IEFTQ0lJTGl0ZXJhbCgi
V29ya2VyIGlzIGdvbmUiKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1l
c3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3JrZXJJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJy
b3IsIGludCB3b3JrZXJJZCwKICAgICBpZiAoY2hhbm5lbCkKICAgICAgICAgY2hhbm5lbC0+cHJv
eHkoKS0+c2VuZE1lc3NhZ2VUb0luc3BlY3RvcihtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiAg
ICAgZWxzZQotICAgICAgICAqZXJyb3IgPSAiV29ya2VyIGlzIGdvbmUiOworICAgICAgICAqZXJy
b3IgPSBBU0NJSUxpdGVyYWwoIldvcmtlciBpcyBnb25lIik7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
V29ya2VyQWdlbnQ6OnNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IDViODM0OWQuLmZlMTRhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTYwLDE0ICsxNjAsMTQgQEAg
c3RhdGljIFBhc3NSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlT3RoZXJSZXNvdXJj
ZVRleHREZWNvZGVyKGNvbnN0IFN0cmkKIHsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQotICAgICAg
ICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4
dEVuY29kaW5nTmFtZSk7CisgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksIHRleHRFbmNvZGluZ05hbWUpOwogICAg
IGVsc2UgaWYgKERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlLmxvd2Vy
KCkpKSB7Ci0gICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFw
cGxpY2F0aW9uL3htbCIpOworICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veG1sIikpOwogICAgICAgICBkZWNvZGVy
LT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCi0gICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCIsICJVVEYtOCIpOworICAgICAgICBkZWNvZGVy
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIiks
ICJVVEYtOCIpOwogICAgIGVsc2UgaWYgKG1pbWVUeXBlID09ICJ0ZXh0L3BsYWluIikKLSAgICAg
ICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJJ
U08tODg1OS0xIik7CisgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICJJU08tODg1OS0xIik7CiAgICAgcmV0dXJu
IGRlY29kZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggMmM0MzI4MC4uYjA3ZmJkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTU3LDEy
ICs1NywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKGRvdWJsZSBzdGFy
dFRpbWUsIGludCBtYXhDYWxsU3RhY2tEZXB0aCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZWNvcmQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlY29yZC0+c2V0
TnVtYmVyKCJzdGFydFRpbWUiLCBzdGFydFRpbWUpOworICAgIHJlY29yZC0+c2V0TnVtYmVyKEFT
Q0lJTGl0ZXJhbCgic3RhcnRUaW1lIiksIHN0YXJ0VGltZSk7CiAKICAgICBpZiAobWF4Q2FsbFN0
YWNrRGVwdGgpIHsKICAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9
IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0
ZSgpLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgICAgIGlmIChzdGFja1RyYWNlICYmIHN0YWNr
VHJhY2UtPnNpemUoKSkKLSAgICAgICAgICAgIHJlY29yZC0+c2V0VmFsdWUoInN0YWNrVHJhY2Ui
LCBzdGFja1RyYWNlLT5idWlsZEluc3BlY3RvckFycmF5KCkpOworICAgICAgICAgICAgcmVjb3Jk
LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInN0YWNrVHJhY2UiKSwgc3RhY2tUcmFjZS0+YnVpbGRJ
bnNwZWN0b3JBcnJheSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9
CkBAIC03MCwzMCArNzAsMzAgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChkb3VibGUgc3QKIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUJhY2tncm91bmRS
ZWNvcmQoZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgU3RyaW5nJiB0aHJlYWROYW1lKQogewogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgcmVjb3JkLT5zZXROdW1iZXIoInN0YXJ0VGltZSIsIHN0YXJ0VGltZSk7Ci0gICAg
cmVjb3JkLT5zZXRTdHJpbmcoInRocmVhZCIsIHRocmVhZE5hbWUpOworICAgIHJlY29yZC0+c2V0
TnVtYmVyKEFTQ0lJTGl0ZXJhbCgic3RhcnRUaW1lIiksIHN0YXJ0VGltZSk7CisgICAgcmVjb3Jk
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0aHJlYWQiKSwgdGhyZWFkTmFtZSk7CiAgICAgcmV0
dXJuIHJlY29yZC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdDRXZlbnREYXRhKGNvbnN0IHNpemVfdCB1c2Vk
SGVhcFNpemVEZWx0YSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoInVzZWRIZWFwU2l6
ZURlbHRhIiwgdXNlZEhlYXBTaXplRGVsdGEpOworICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxp
dGVyYWwoInVzZWRIZWFwU2l6ZURlbHRhIiksIHVzZWRIZWFwU2l6ZURlbHRhKTsKICAgICByZXR1
cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3QgU3RyaW5nJiBz
Y3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXRTdHJpbmco
InNjcmlwdE5hbWUiLCBzY3JpcHROYW1lKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoInNjcmlwdExp
bmUiLCBzY3JpcHRMaW5lKTsKKyAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3Jp
cHROYW1lIiksIHNjcmlwdE5hbWUpOworICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwo
InNjcmlwdExpbmUiKSwgc2NyaXB0TGluZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwog
fQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICBkYXRhLT5zZXRTdHJpbmcoInRpdGxlIiwgdGl0bGUpOworICAgIGRhdGEtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoInRpdGxlIiksIHRpdGxlKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7
CiB9CiAKQEAgLTEwOCwxNDAgKzEwOCwxNDAgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGNvbnN0IFMKIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2
ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50JiBldmVudCkKIHsKICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5z
ZXRTdHJpbmcoInR5cGUiLCBldmVudC50eXBlKCkuc3RyaW5nKCkpOworICAgIGRhdGEtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInR5cGUiKSwgZXZlbnQudHlwZSgpLnN0cmluZygpKTsKICAgICBy
ZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lckRhdGEoaW50IHRpbWVySWQp
CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ0aW1lcklkIiwgdGltZXJJZCk7CisgICAg
ZGF0YS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgidGltZXJJZCIpLCB0aW1lcklkKTsKICAgICBy
ZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQs
IGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVt
YmVyKCJ0aW1lcklkIiwgdGltZXJJZCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJ0aW1lb3V0Iiwg
dGltZW91dCk7Ci0gICAgZGF0YS0+c2V0Qm9vbGVhbigic2luZ2xlU2hvdCIsIHNpbmdsZVNob3Qp
OworICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoInRpbWVySWQiKSwgdGltZXJJZCk7
CisgICAgZGF0YS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgidGltZW91dCIpLCB0aW1lb3V0KTsK
KyAgICBkYXRhLT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgic2luZ2xlU2hvdCIpLCBzaW5nbGVT
aG90KTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVhIUlJlYWR5U3RhdGVDaGFu
Z2VEYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgcmVhZHlTdGF0ZSkKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBk
YXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJyZWFkeVN0
YXRlIiwgcmVhZHlTdGF0ZSk7CisgICAgZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidXJs
IiksIHVybCk7CisgICAgZGF0YS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgicmVhZHlTdGF0ZSIp
LCByZWFkeVN0YXRlKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVhIUkxvYWRE
YXRhKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldFN0cmluZygidXJs
IiwgdXJsKTsKKyAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ1cmwiKSwgdXJsKTsK
ICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YShjb25z
dCBTdHJpbmcmIHVybCwgZG91YmxlIGxpbmVOdW1iZXIpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0
U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAgIGRhdGEtPnNldE51bWJlcigibGluZU51bWJlciIsIGxp
bmVOdW1iZXIpOworICAgIGRhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInVybCIpLCB1cmwp
OworICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImxpbmVOdW1iZXIiKSwgbGluZU51
bWJlcik7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lU3RhbXBEYXRhKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRh
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXRTdHJpbmcoIm1lc3Nh
Z2UiLCBtZXNzYWdlKTsKKyAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXNzYWdl
IiksIG1lc3NhZ2UpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlU2NoZWR1bGVS
ZXNvdXJjZVJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEt
PnNldFN0cmluZygidXJsIiwgdXJsKTsKKyAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJ1cmwiKSwgdXJsKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNl
U2VuZFJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0SWQi
LCByZXF1ZXN0SWQpOwotICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKSk7Ci0gICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0TWV0aG9kIiwgcmVxdWVzdC5o
dHRwTWV0aG9kKCkpOworICAgIGRhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlcXVlc3RJ
ZCIpLCByZXF1ZXN0SWQpOworICAgIGRhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInVybCIp
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKKyAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJyZXF1ZXN0TWV0aG9kIiksIHJlcXVlc3QuaHR0cE1ldGhvZCgpKTsKICAgICByZXR1cm4g
ZGF0YS5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlUmVjZWl2ZVJlc3BvbnNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0SWQiLCByZXF1ZXN0SWQpOwotICAgIGRh
dGEtPnNldE51bWJlcigic3RhdHVzQ29kZSIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwot
ICAgIGRhdGEtPnNldFN0cmluZygibWltZVR5cGUiLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAg
ICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZXF1ZXN0SWQiKSwgcmVxdWVzdElkKTsK
KyAgICBkYXRhLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJzdGF0dXNDb2RlIiksIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOworICAgIGRhdGEtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1p
bWVUeXBlIiksIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2Uo
KTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBib29s
IGRpZEZhaWwsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldFN0cmlu
ZygicmVxdWVzdElkIiwgcmVxdWVzdElkKTsKLSAgICBkYXRhLT5zZXRCb29sZWFuKCJkaWRGYWls
IiwgZGlkRmFpbCk7CisgICAgZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmVxdWVzdElk
IiksIHJlcXVlc3RJZCk7CisgICAgZGF0YS0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImRpZEZh
aWwiKSwgZGlkRmFpbCk7CiAgICAgaWYgKGZpbmlzaFRpbWUpCi0gICAgICAgIGRhdGEtPnNldE51
bWJlcigibmV0d29ya1RpbWUiLCBmaW5pc2hUaW1lKTsKKyAgICAgICAgZGF0YS0+c2V0TnVtYmVy
KEFTQ0lJTGl0ZXJhbCgibmV0d29ya1RpbWUiKSwgZmluaXNoVGltZSk7CiAgICAgcmV0dXJuIGRh
dGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldFN0cmluZygicmVxdWVz
dElkIiwgcmVxdWVzdElkKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoImVuY29kZWREYXRhTGVuZ3Ro
IiwgbGVuZ3RoKTsKKyAgICBkYXRhLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZXF1ZXN0SWQi
KSwgcmVxdWVzdElkKTsKKyAgICBkYXRhLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJlbmNvZGVk
RGF0YUxlbmd0aCIpLCBsZW5ndGgpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIAog
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
TGF5b3V0RGF0YSh1bnNpZ25lZCBkaXJ0eU9iamVjdHMsIHVuc2lnbmVkIHRvdGFsT2JqZWN0cywg
Ym9vbCBwYXJ0aWFsTGF5b3V0KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldE51bWJlcigiZGlydHlP
YmplY3RzIiwgZGlydHlPYmplY3RzKTsKLSAgICBkYXRhLT5zZXROdW1iZXIoInRvdGFsT2JqZWN0
cyIsIHRvdGFsT2JqZWN0cyk7Ci0gICAgZGF0YS0+c2V0Qm9vbGVhbigicGFydGlhbExheW91dCIs
IHBhcnRpYWxMYXlvdXQpOworICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRpcnR5
T2JqZWN0cyIpLCBkaXJ0eU9iamVjdHMpOworICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVy
YWwoInRvdGFsT2JqZWN0cyIpLCB0b3RhbE9iamVjdHMpOworICAgIGRhdGEtPnNldEJvb2xlYW4o
QVNDSUlMaXRlcmFsKCJwYXJ0aWFsTGF5b3V0IiksIHBhcnRpYWxMYXlvdXQpOwogICAgIHJldHVy
biBkYXRhLnJlbGVhc2UoKTsKIH0KICAgICAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZURlY29kZUltYWdlRGF0YShjb25zdCBTdHJpbmcm
IGltYWdlVHlwZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXRTdHJpbmcoImltYWdlVHlwZSIsIGlt
YWdlVHlwZSk7CisgICAgZGF0YS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiaW1hZ2VUeXBlIiks
IGltYWdlVHlwZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNpemVJbWFn
ZURhdGEoYm9vbCBzaG91bGRDYWNoZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBk
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXRCb29sZWFuKCJj
YWNoZWQiLCBzaG91bGRDYWNoZSk7CisgICAgZGF0YS0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwo
ImNhY2hlZCIpLCBzaG91bGRDYWNoZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQog
CiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVNYXJrRGF0YShib29sIGlzTWFpbkZyYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldEJvb2xl
YW4oImlzTWFpbkZyYW1lIiwgaXNNYWluRnJhbWUpOworICAgIGRhdGEtPnNldEJvb2xlYW4oQVND
SUlMaXRlcmFsKCJpc01haW5GcmFtZSIpLCBpc01haW5GcmFtZSk7CiAgICAgcmV0dXJuIGRhdGEu
cmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKHVuc2lnbmVkIHN0YXJ0TGluZSkKIHsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICBkYXRhLT5zZXROdW1iZXIoInN0YXJ0TGluZSIsIHN0YXJ0TGluZSk7CisgICAgZGF0
YS0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgic3RhcnRMaW5lIiksIHN0YXJ0TGluZSk7CiAgICAg
cmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxi
YWNrSWQpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0TnVtYmVyKCJpZCIsIGNhbGxiYWNrSWQpOwor
ICAgIGRhdGEtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImlkIiksIGNhbGxiYWNrSWQpOwogICAg
IHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIApAQCAtMjYyLDEzICsyNjIsMTMgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNyZWF0ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBx
dWFkKQogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlUGFpbnREYXRhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKIHsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRh
LT5zZXRBcnJheSgiY2xpcCIsIGNyZWF0ZVF1YWQocXVhZCkpOworICAgIGRhdGEtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgiY2xpcCIpLCBjcmVhdGVRdWFkKHF1YWQpKTsKICAgICByZXR1cm4gZGF0
YS5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjphcHBlbmRMYXlv
dXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewot
ICAgIGRhdGEtPnNldEFycmF5KCJyb290IiwgY3JlYXRlUXVhZChxdWFkKSk7CisgICAgZGF0YS0+
c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJyb290IiksIGNyZWF0ZVF1YWQocXVhZCkpOwogfQogCiB2
b2lkIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6YXBwZW5kUHJvZmlsZShJbnNwZWN0b3JPYmplY3Qq
IGRhdGEsIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCA3ZTU3OTlk
Li5kOGM3MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFJlc291cmNlUmVxdWVzdCBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QocmVxdWVzdC51cmwo
KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocHJlZmxpZ2h0UmVxdWVzdCwg
c2VjdXJpdHlPcmlnaW4sIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscyk7Ci0gICAgcHJlZmxp
Z2h0UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJPUFRJT05TIik7CisgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQTWV0aG9kKEFTQ0lJTGl0ZXJhbCgiT1BUSU9OUyIpKTsKICAgICBwcmVmbGlnaHRS
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbFJl
cXVlc3RNZXRob2QsIHJlcXVlc3QuaHR0cE1ldGhvZCgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0
LnNldFByaW9yaXR5KHJlcXVlc3QucHJpb3JpdHkoKSk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBi
b29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgU3RvcmVkQ3JlZGVudGlhbAogICAgIC8vIEZJWE1FOiBBY2Nlc3MtQ29udHJvbC1BbGxv
dy1PcmlnaW4gY2FuIGNvbnRhaW4gYSBsaXN0IG9mIG9yaWdpbnMuCiAgICAgaWYgKGFjY2Vzc0Nv
bnRyb2xPcmlnaW5TdHJpbmcgIT0gc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpIHsKICAgICAg
ICAgaWYgKGFjY2Vzc0NvbnRyb2xPcmlnaW5TdHJpbmcgPT0gIioiKQotICAgICAgICAgICAgZXJy
b3JEZXNjcmlwdGlvbiA9ICJDYW5ub3QgdXNlIHdpbGRjYXJkIGluIEFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbiB3aGVuIGNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZS4iOworICAgICAgICAgICAg
ZXJyb3JEZXNjcmlwdGlvbiA9IEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVzZSB3aWxkY2FyZCBpbiBB
Y2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gd2hlbiBjcmVkZW50aWFscyBmbGFnIGlzIHRydWUu
Iik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAgIk9yaWdp
biAiICsgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkgKyAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFj
Y2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi4iOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
NTcsNyArMTU3LDcgQEAgYm9vbCBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0b3JlZENyZWRlbnRpYWwKICAgICBpZiAoaW5jbHVkZUNy
ZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpIHsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiBhY2Nlc3NDb250cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd0NyZWRlbnRpYWxzKTsKICAg
ICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xDcmVkZW50aWFsc1N0cmluZyAhPSAidHJ1ZSIpIHsKLSAg
ICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ3JlZGVudGlhbHMgZmxhZyBpcyB0cnVlLCBi
dXQgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgaXMgbm90IFwidHJ1ZVwiLiI7Cisg
ICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gQVNDSUlMaXRlcmFsKCJDcmVkZW50aWFscyBm
bGFnIGlzIHRydWUsIGJ1dCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyBpcyBub3Qg
XCJ0cnVlXCIuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggNTE2ZjExZi4uYmYzNmZkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
LmNwcApAQCAtOTQsMTMgKzk0LDEzIEBAIGJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZUl0ZW06OnBhcnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlCiB7CiAgICAg
bV9tZXRob2RzLmNsZWFyKCk7CiAgICAgaWYgKCFwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Qo
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sQWxs
b3dNZXRob2RzKSwgbV9tZXRob2RzKSkgewotICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gIkNh
bm5vdCBwYXJzZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIHJlc3BvbnNlIGhlYWRlciBm
aWVsZC4iOworICAgICAgICBlcnJvckRlc2NyaXB0aW9uID0gQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
cGFyc2UgQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyByZXNwb25zZSBoZWFkZXIgZmllbGQu
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBtX2hlYWRlcnMuY2xlYXIo
KTsKICAgICBpZiAoIXBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdChyZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xBbGxvd0hlYWRlcnMpLCBtX2hl
YWRlcnMpKSB7Ci0gICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ2Fubm90IHBhcnNlIEFjY2Vz
cy1Db250cm9sLUFsbG93LUhlYWRlcnMgcmVzcG9uc2UgaGVhZGVyIGZpZWxkLiI7CisgICAgICAg
IGVycm9yRGVzY3JpcHRpb24gPSBBU0NJSUxpdGVyYWwoIkNhbm5vdCBwYXJzZSBBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1IZWFkZXJzIHJlc3BvbnNlIGhlYWRlciBmaWVsZC4iKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKaW5kZXggYWMxMjRhYi4uYjQ5NGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjpt
YXliZUxvYWRFbXB0eSgpCiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAh
ZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpKQogICAgICAgICBtX3JlcXVlc3Quc2V0VVJMKGJsYW5rVVJMKCkpOwotICAgIFN0cmluZyBt
aW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/ICJ0ZXh0L2h0bWwiIDogZnJhbWVMb2FkZXIoKS0+
Y2xpZW50KCkuZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUobV9yZXF1ZXN0LnVybCgpLnBy
b3RvY29sKCkpOworICAgIFN0cmluZyBtaW1lVHlwZSA9IHNob3VsZExvYWRFbXB0eSA/IEFTQ0lJ
TGl0ZXJhbCgidGV4dC9odG1sIikgOiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5nZW5lcmF0ZWRN
SU1FVHlwZUZvclVSTFNjaGVtZShtX3JlcXVlc3QudXJsKCkucHJvdG9jb2woKSk7CiAgICAgbV9y
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9yZXF1ZXN0LnVybCgpLCBtaW1lVHlwZSwgMCwg
U3RyaW5nKCksIFN0cmluZygpKTsKICAgICBmaW5pc2hlZExvYWRpbmcobW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1OGM1YjlmLi4xOWQ3
MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtODcsNyArODcsNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogICAg
IH0KIAogICAgIGlmIChtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IERlbnlD
cm9zc09yaWdpblJlcXVlc3RzKSB7Ci0gICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgIkNyb3NzIG9yaWdpbiByZXF1ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4iKSk7CisgICAgICAg
IG1fY2xpZW50LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJDcm9zcyBvcmlnaW4g
cmVxdWVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQuIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtl
U2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlCiAKICAgICAvLyBD
cm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0
ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2Ug
aGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0
aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHJlcXVlc3QudXJsKCkucHJvdG9jb2wo
KSkpIHsKLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLCAiQ3Jvc3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4i
KSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgQVNDSUlMaXRlcmFsKCJDcm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgc3VwcG9ydGVk
IGZvciBIVFRQLiIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKICAgICAvLyBDYW5j
ZWwgY2FuIHJlLWVudGVyIGFuZCBtX3Jlc291cmNlIG1pZ2h0IGJlIG51bGwgaGVyZSBhcyBhIHJl
c3VsdC4KICAgICBpZiAobV9jbGllbnQgJiYgbV9yZXNvdXJjZSkgewogICAgICAgICAvLyBGSVhN
RTogVGhpcyBlcnJvciBpcyBzZW50IHRvIHRoZSBjbGllbnQgaW4gZGlkRmFpbCgpLCBzbyBpdCBz
aG91bGQgbm90IGJlIGFuIGludGVybmFsIG9uZS4gVXNlIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5j
ZWxsZWRFcnJvcigpIGluc3RlYWQuCi0gICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9yZXNvdXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxl
ZCIpOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCBBU0NJSUxpdGVyYWwoIkxvYWQgY2FuY2VsbGVkIikp
OwogICAgICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKICAgICAgICAgZGlkRmFp
bChtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIGVycm9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCA5MzE4ODM2Li4xMWZiZWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2
b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJpbmcm
IGFjdGlvbikKIFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGlu
Z1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0
eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQotICAgICAgICByZXR1cm4gIm11bHRpcGFydC9m
b3JtLWRhdGEiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJtdWx0aXBhcnQvZm9ybS1k
YXRhIik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0ZXh0L3BsYWluIikpCi0g
ICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7Ci0gICAgcmV0dXJuICJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L3Bs
YWluIik7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veC13d3ctZm9ybS11
cmxlbmNvZGVkIik7CiB9CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnVwZGF0
ZUVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0xNzQsNyArMTc0LDcgQEAgUGFz
c1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0sIGNvbnN0IEEKICAgICBpZiAoY29waWVkQXR0cmlidXRlcy5tZXRob2QoKSA9
PSBQb3N0TWV0aG9kKSB7CiAgICAgICAgIGlzTXVsdGlQYXJ0Rm9ybSA9IGNvcGllZEF0dHJpYnV0
ZXMuaXNNdWx0aVBhcnRGb3JtKCk7CiAgICAgICAgIGlmIChpc011bHRpUGFydEZvcm0gJiYgaXNN
YWlsdG9Gb3JtKSB7Ci0gICAgICAgICAgICBlbmNvZGluZ1R5cGUgPSAiYXBwbGljYXRpb24veC13
d3ctZm9ybS11cmxlbmNvZGVkIjsKKyAgICAgICAgICAgIGVuY29kaW5nVHlwZSA9IEFTQ0lJTGl0
ZXJhbCgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICBp
c011bHRpUGFydEZvcm0gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MSw3ICsyNDEs
NyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVM
b2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0KQogICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fcmVmZXJyZXIpOwogCiAgICAgaWYgKG1fbWV0aG9k
ID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kKSB7Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CisgICAgICAgIGZyYW1lUmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKEFTQ0lJTGl0ZXJhbCgiUE9TVCIp
KTsKICAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KG1f
Zm9ybURhdGEpOwogCiAgICAgICAgIC8vIGNvbnN0cnVjdCBzb21lIHVzZXIgaGVhZGVycyBpZiBu
ZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDMyNThiY2Uu
LmNiNGM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzIyLDcg
KzMyMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tI
aXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExp
c3QsIGJvb2wgcmVmcmVzaCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCkKIHsKLSAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KHNl
Y3VyaXR5T3JpZ2luLCBSZXNvdXJjZVJlcXVlc3QodXJsLCByZWZlcnJlciwgcmVmcmVzaCA/IFJl
bG9hZElnbm9yaW5nQ2FjaGVEYXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeSksICJfc2VsZiIp
LAorICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4sIFJlc291
cmNlUmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8gUmVsb2FkSWdub3JpbmdDYWNoZURh
dGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KSwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpKSwKICAg
ICAgICAgMCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIE1heWJlU2VuZFJlZmVy
cmVyLCBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIGFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTCk7CiB9CiAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
VVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwg
RgogICAgICAgICB9CiAgICAgfQogCi0gICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTCh1
cmwsIHJlZmVyZXIsICJfc2VsZiIsIExvY2tIaXN0b3J5OjpObywgRnJhbWVMb2FkVHlwZTo6UmVk
aXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCAwLCAwLCBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Olllcyk7CisgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTCh1cmwsIHJl
ZmVyZXIsIEFTQ0lJTGl0ZXJhbCgiX3NlbGYiKSwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRU
eXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QsIDAsIDAsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzKTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwg
RU5BQkxFKE1IVE1MKQpAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFVSTChjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3Ry
aW4KICAgICAvLyBUaGUgc2VhcmNoIGZvciBhIHRhcmdldCBmcmFtZSBpcyBkb25lIGVhcmxpZXIg
aW4gdGhlIGNhc2Ugb2YgZm9ybSBzdWJtaXNzaW9uLgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IGlzRm9ybVN1Ym1pc3Npb24gPyAwIDogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihmcmFtZU5hbWUp
OwogICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZSAhPSAmbV9mcmFtZSkgewotICAg
ICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChuZXdVUkwsIHJlZmVycmVyLCAiX3Nl
bGYiLCBsb2NrSGlzdG9yeSwgbmV3TG9hZFR5cGUsIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgp
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgICAgICB0YXJnZXRGcmFtZS0+bG9h
ZGVyKCkubG9hZFVSTChuZXdVUkwsIHJlZmVycmVyLCBBU0NJSUxpdGVyYWwoIl9zZWxmIiksIGxv
Y2tIaXN0b3J5LCBuZXdMb2FkVHlwZSwgZXZlbnQsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
MzUsNyArMTMzNSw3IEBAIFN1YnN0aXR1dGVEYXRhIEZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3Rp
dHV0ZURhdGFGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgU3RyaW5nIHNyY2RvYyA9IG1fZnJh
bWUub3duZXJFbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3JjZG9jQXR0cik7CiAgICAgQVNT
RVJUKCFzcmNkb2MuaXNOdWxsKCkpOwogICAgIENTdHJpbmcgZW5jb2RlZFNyY2RvYyA9IHNyY2Rv
Yy51dGY4KCk7Ci0gICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpKSwgInRleHQvaHRt
bCIsICJVVEYtOCIsIFVSTCgpKTsKKyAgICByZXR1cm4gU3Vic3RpdHV0ZURhdGEoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZW5jb2RlZFNyY2RvYy5kYXRhKCksIGVuY29kZWRTcmNkb2MubGVuZ3RoKCkp
LCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBBU0NJSUxpdGVyYWwoIlVURi04IiksIFVSTCgp
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBw
YXNzZWRSZXF1ZXN0KQpAQCAtMjA3NCw3ICsyMDc0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3Bl
bihDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogCiAgICAgLy8gRklYTUU6IEkgc3VzcGVj
dCB0aGlzIGJsb2NrIG9mIGNvZGUgZG9lc24ndCBkbyBhbnl0aGluZy4KICAgICBpZiAodXJsLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhdXJsLmhvc3QoKS5pc0VtcHR5KCkgJiYgdXJsLnBh
dGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIik7CisgICAgICAgIHVybC5z
ZXRQYXRoKEFTQ0lJTGl0ZXJhbCgiLyIpKTsKIAogICAgIHN0YXJ0ZWQoKTsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBjYWNoZWRGcmFtZS5kb2N1bWVudCgpOwpAQCAtMjM1OCw3ICsyMzU4LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICAvLyBGSVhNRTogVXNpbmcgaG9zdC1vbmx5
IFVSTCBpcyBhIHZlcnkgaGVhdnktaGFuZGVkIGFwcHJvYWNoLiBXZSBzaG91bGQgYXR0ZW1wdCB0
byBwcm92aWRlIHRoZSBhY3R1YWwgcGFnZSB3aGVyZSB0aGUgZG93bmxvYWQgd2FzIGluaXRpYXRl
ZCBmcm9tLCBhcyBhIHJlbWluZGVyIHRvIHRoZSB1c2VyLgogICAgICAgICBTdHJpbmcgaG9zdE9u
bHlVUkxTdHJpbmc7CiAgICAgICAgIGlmIChwb3J0KQotICAgICAgICAgICAgaG9zdE9ubHlVUkxT
dHJpbmcgPSBtYWtlU3RyaW5nKG9yaWdpbmFsVVJMLnByb3RvY29sKCksICI6Ly8iLCBvcmlnaW5h
bFVSTC5ob3N0KCksICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydCkpOworICAgICAgICAgICAgaG9z
dE9ubHlVUkxTdHJpbmcgPSBtYWtlU3RyaW5nKG9yaWdpbmFsVVJMLnByb3RvY29sKCksICI6Ly8i
LCBvcmlnaW5hbFVSTC5ob3N0KCksICc6JywgU3RyaW5nOjpudW1iZXIocG9ydCkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBob3N0T25seVVSTFN0cmluZyA9IG1ha2VTdHJpbmcob3JpZ2lu
YWxVUkwucHJvdG9jb2woKSwgIjovLyIsIG9yaWdpbmFsVVJMLmhvc3QoKSk7CiAKQEAgLTI1Njks
MTAgKzI1NjksMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZUxvYWRUeXAKIAogICAgIGlmIChyZXF1ZXN0
LmNhY2hlUG9saWN5KCkgPT0gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpIHsKICAgICAgICAgaWYg
KGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCkKLSAgICAgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsICJtYXgtYWdl
PTAiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpDYWNoZUNvbnRyb2wsIEFTQ0lJTGl0ZXJhbCgibWF4LWFnZT0wIikpOwogICAgICAgICBl
bHNlIGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKSB7Ci0g
ICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q2Fj
aGVDb250cm9sLCAibm8tY2FjaGUiKTsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsICJuby1jYWNoZSIpOworICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwg
QVNDSUlMaXRlcmFsKCJuby1jYWNoZSIpKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEFTQ0lJTGl0ZXJhbCgibm8tY2FjaGUi
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0yNTg1LDcgKzI1ODUsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIEZyYW1lTG9hZFR5cAogICAgIC8vIE9ubHkgc2V0IGZhbGxiYWNrIGFycmF5IGlmIGl0J3Mg
c3RpbGwgZW1wdHkgKGxhdGVyIGF0dGVtcHRzIG1heSBiZSBpbmNvcnJlY3QsIHNlZSBidWcgMTE3
ODE4KS4KICAgICBpZiAocmVxdWVzdC5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheSgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBBbHdheXMgdHJ5IFVURi04
LiBJZiB0aGF0IGZhaWxzLCB0cnkgZnJhbWUgZW5jb2RpbmcgKGlmIGFueSkgYW5kIHRoZW4gdGhl
IGRlZmF1bHQuCi0gICAgICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgpLT5lbmNvZGlu
ZygpLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSk7CisgICAg
ICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkoQVNDSUlMaXRlcmFsKCJVVEYtOCIpLCBtX2ZyYW1lLmRvY3VtZW50KCktPmVuY29kaW5n
KCksIG1fZnJhbWUuc2V0dGluZ3MoKS5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICB9
CiB9CiAKQEAgLTI2MzQsNyArMjYzNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAg
aWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Qu
c2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNl
dEhUVFBPcmlnaW4ob3JpZ2luKTsKLSAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBN
ZXRob2QoIlBPU1QiKTsKKyAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBNZXRob2Qo
QVNDSUlMaXRlcmFsKCJQT1NUIikpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRU
UEJvZHkoZm9ybURhdGEpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUENvbnRl
bnRUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCh3b3JraW5n
UmVzb3VyY2VSZXF1ZXN0LCBsb2FkVHlwZSwgdHJ1ZSk7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtKiBp
dGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogICAgIGlmIChmb3JtRGF0YSkgewogICAgICAgICBmb3Jt
RGF0YS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLmRvY3VtZW50KCkpOwogCi0gICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
QVNDSUlMaXRlcmFsKCJQT1NUIikpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1E
YXRhKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS0+Zm9ybUNvbnRl
bnRUeXBlKCkpOwogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS0+cmVmZXJyZXIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggNTYz
ZjVmNy4uNmIyMmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmNh
bkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgYWxsb3dlZCA9IG1fZnJhbWUuc2V0dGluZ3Mo
KS5hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCgpOwotICAgIGxvZ1dhcm5pbmcoYWxsb3dl
ZCwgImRpc3BsYXllZCIsIHVybCk7CisgICAgbG9nV2FybmluZyhhbGxvd2VkLCBBU0NJSUxpdGVy
YWwoImRpc3BsYXllZCIpLCB1cmwpOwogCiAgICAgaWYgKGFsbG93ZWQpCiAgICAgICAgIGNsaWVu
dCgpLmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBN
aXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luLAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgYWxsb3dl
ZCA9IG1fZnJhbWUuc2V0dGluZ3MoKS5hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCgpOwot
ICAgIGxvZ1dhcm5pbmcoYWxsb3dlZCwgInJhbiIsIHVybCk7CisgICAgbG9nV2FybmluZyhhbGxv
d2VkLCBBU0NJSUxpdGVyYWwoInJhbiIpLCB1cmwpOwogCiAgICAgaWYgKGFsbG93ZWQpCiAgICAg
ICAgIGNsaWVudCgpLmRpZFJ1bkluc2VjdXJlQ29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKTsK
QEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogCiB2b2lkIE1peGVkQ29u
dGVudENoZWNrZXI6OmxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlv
biwgY29uc3QgVVJMJiB0YXJnZXQpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgbV9m
cmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwg
IiAiLCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOworICAgIFN0cmluZyBtZXNzYWdlID0gbWFr
ZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIG1f
ZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCks
ICcgJywgYWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIuXG4iKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1lc3NhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKaW5kZXggMjFjMzgwNC4uY2RjYjkwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2hpc3RvcnlTdGVwcykgewogICAgICAgICAgICAgLy8g
U3BlY2lhbCBjYXNlIGZvciBnbygwKSBmcm9tIGEgZnJhbWUgLT4gcmVsb2FkIG9ubHkgdGhlIGZy
YW1lCiAgICAgICAgICAgICAvLyBUbyBmb2xsb3cgRmlyZWZveCBhbmQgSUUncyBiZWhhdmlvciwg
aGlzdG9yeSByZWxvYWQgY2FuIG9ubHkgbmF2aWdhdGUgdGhlIHNlbGYgZnJhbWUuCi0gICAgICAg
ICAgICBmcmFtZS5sb2FkZXIoKS51cmxTZWxlY3RlZChmcmFtZS5kb2N1bWVudCgpLT51cmwoKSwg
Il9zZWxmIiwgMCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNl
bmRSZWZlcnJlcik7CisgICAgICAgICAgICBmcmFtZS5sb2FkZXIoKS51cmxTZWxlY3RlZChmcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSwgQVNDSUlMaXRlcmFsKCJfc2VsZiIpLCAwLCBsb2NrSGlzdG9y
eSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmNwcAppbmRleCBmYjY5YTc1Li4xZTNiZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZy
YW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QodXJsKTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q2FjaGVDb250cm9sLCAibWF4LWFnZT0wIik7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgQVNDSUlMaXRlcmFsKCJtYXgt
YWdlPTAiKSk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVz
dC51cmwoKSwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICBpZiAoIXJl
ZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOwpAQCAtNzEsMTAgKzcxLDEwIEBAIHZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZyYW1l
JiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1l
JiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQog
ewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHBpbmdVUkwpOwotICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiUE9TVCIpOwotICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJ0ZXh0
L3BpbmciKTsKKyAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoQVNDSUlMaXRlcmFsKCJQT1NUIikp
OworICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKEFTQ0lJTGl0ZXJhbCgidGV4dC9waW5n
IikpOwogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZSgiUElORyIpKTsK
LSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250
cm9sLCAibWF4LWFnZT0wIik7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNhY2hlQ29udHJvbCwgQVNDSUlMaXRlcmFsKCJtYXgtYWdlPTAiKSk7CiAgICAg
ZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KTsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBzb3VyY2VPcmlnaW4gPSBmcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpOwpAQCAtOTYsOCArOTYsOCBAQCB2b2lkIFBpbmdMb2FkZXI6OnNl
bmRQaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3Rp
bmF0aQogdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFtZSwg
Y29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCkKIHsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyZXBvcnRVUkwpOwotICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiUE9TVCIpOwotICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNh
dGlvbi9qc29uIik7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKEFTQ0lJTGl0ZXJhbCgiUE9T
VCIpKTsKKyAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShBU0NJSUxpdGVyYWwoImFwcGxp
Y2F0aW9uL2pzb24iKSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShyZXBvcnQpOwogICAgIGZy
YW1lLmxvYWRlcigpLmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QocmVxdWVzdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IGY5YWRmNmMu
LjZlNWY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAt
MzY2LDcgKzM2Niw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbihjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vCiAgICAgLy8gY2FuIGhhbmRs
ZSBUSUZGICh3aGljaCBRdWlja1RpbWUgY2FuIGFsc28gaGFuZGxlKSB0aGV5IHByb2JhYmx5IGlu
dGVuZGVkIHRvIG92ZXJyaWRlIFFULgogICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSAmJiAobWltZVR5
cGUgPT0gImltYWdlL3RpZmYiIHx8IG1pbWVUeXBlID09ICJpbWFnZS90aWYiIHx8IG1pbWVUeXBl
ID09ICJpbWFnZS94LXRpZmYiKSkgewogICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IG1fZnJh
bWUucGFnZSgpLT5wbHVnaW5EYXRhKCkucGx1Z2luTmFtZUZvck1pbWVUeXBlKG1pbWVUeXBlKTsK
LSAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzRW1wdHkoKSAmJiAhcGx1Z2luTmFtZS5jb250YWlu
cygiUXVpY2tUaW1lIiwgZmFsc2UpKSAKKyAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzRW1wdHko
KSAmJiAhcGx1Z2luTmFtZS5jb250YWlucyhBU0NJSUxpdGVyYWwoIlF1aWNrVGltZSIpLCBmYWxz
ZSkpIAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKaW5kZXggYzZhMjNmMi4uNTk2MDYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFVSTAogewogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KHVybCk7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuYXBwbHlVc2VyQWdlbnQocmVx
dWVzdCk7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNh
Y2hlQ29udHJvbCwgIm1heC1hZ2U9MCIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEFTQ0lJTGl0ZXJhbCgibWF4LWFnZT0wIikp
OwogCiAgICAgaWYgKG5ld2VzdENhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbGFzdE1vZGlmaWVkID0gbmV3ZXN0Q2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggMmM2MTQ0Zi4u
MTY3OTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBV
UkwmIG1hbmlmZXN0VVJMLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzCiAK
ICAgICBNb2RlIG1vZGUgPSBFeHBsaWNpdDsKIAotICAgIFN0cmluZyBzID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NhY2hlLW1hbmlmZXN0IiwgIlVURi04IiktPmRlY29kZUFu
ZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisgICAgU3RyaW5nIHMgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L2NhY2hlLW1hbmlmZXN0IiksICJVVEYtOCIpLT5k
ZWNvZGVBbmRGbHVzaChkYXRhLCBsZW5ndGgpOwogICAgIAogICAgIC8vIExvb2sgZm9yIHRoZSBt
YWdpYyBzaWduYXR1cmU6ICJeXHhGRUZGP0NBQ0hFIE1BTklGRVNUWyBcdF0/IiAodGhlIEJPTSBp
cyByZW1vdmVkIGJ5IFRleHRSZXNvdXJjZURlY29kZXIpLgogICAgIC8vIEV4YW1wbGU6ICJDQUNI
RSBNQU5JRkVTVCAjY29tbWVudCIgaXMgYSB2YWxpZCBzaWduYXR1cmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNTQ4MTUwYy4u
OWI3NmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgQXJjaGl2ZU1JTUVUeXBlc01hcCYg
YXJjaGl2ZU1JTUVUeXBlcygpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB1bm5lY2Vzc2FyeSAnc3Rh
dGljX2Nhc3Q8UmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qPicgZnJvbSB0aGUgZm9sbG93aW5nICdt
aW1lVHlwZXMuc2V0JyBvcGVyYXRpb25zCiAgICAgLy8gb25jZSB3ZSBzd2l0Y2ggdG8gYSBub24t
YnJva2VuIFZpc3VhbCBTdHVkaW8gY29tcGlsZXIuICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIxMjM1CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSAmJiBVU0UoQ0Yp
Ci0gICAgbWltZVR5cGVzLmdldCgpLnNldCgiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiwgc3Rh
dGljX2Nhc3Q8UmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qPigmYXJjaGl2ZUZhY3RvcnlDcmVhdGU8
TGVnYWN5V2ViQXJjaGl2ZT4pKTsKKyAgICBtaW1lVHlwZXMuZ2V0KCkuc2V0KEFTQ0lJTGl0ZXJh
bCgiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiksIHN0YXRpY19jYXN0PFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKj4oJmFyY2hpdmVGYWN0b3J5Q3JlYXRlPExlZ2FjeVdlYkFyY2hpdmU+KSk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgbWltZVR5cGVzLmdldCgpLnNldCgibXVsdGlw
YXJ0L3JlbGF0ZWQiLCBzdGF0aWNfY2FzdDxSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbio+KCZhcmNo
aXZlRmFjdG9yeUNyZWF0ZTxNSFRNTEFyY2hpdmU+KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGU4NDhlM2Iu
LmFhMGU5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcKICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJlc3BvbnNl
VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIAotICAg
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKHV0ZjhCdWZmZXIobWFya3VwU3RyaW5nKSwgcmVzcG9uc2VVUkwsIHJlc3BvbnNlLm1p
bWVUeXBlKCksICJVVEYtOCIsIGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKKyAgICBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZSh1dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5taW1lVHlw
ZSgpLCBBU0NJSUxpdGVyYWwoIlVURi04IiksIGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7
CiAgICAgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXM7CkBAIC01
NjgsNyArNTY4LDcgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgY29uc3QgU3Ry
aW5nJiBpY29uVVJMID0gaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVS
TChyZXNwb25zZVVSTCk7CiAgICAgICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkgJiYgaWNvbkRh
dGFiYXNlKCkuc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkgewog
ICAgICAgICAgICAgaWYgKEltYWdlKiBpY29uSW1hZ2UgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJv
bm91c0ljb25Gb3JQYWdlVVJMKHJlc3BvbnNlVVJMLCBJbnRTaXplKDE2LCAxNikpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoaWNvbkltYWdlLT5kYXRhKCksIFVSTChQYXJzZWRVUkxTdHJpbmcs
IGljb25VUkwpLCAiaW1hZ2UveC1pY29uIiwgIiIsICIiKSkKKyAgICAgICAgICAgICAgICBpZiAo
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShpY29uSW1hZ2UtPmRhdGEoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksIEFTQ0lJ
TGl0ZXJhbCgiaW1hZ2UveC1pY29uIiksICIiLCAiIikpCiAgICAgICAgICAgICAgICAgICAgIHN1
YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtNjAzLDcgKzYwMyw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAg
Ly8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBw
YXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJv
ZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAi
PGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0
PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+
PC9pZnJhbWU+IjsKLSAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtV
UkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKKyAgICBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhC
dWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwi
KSwgQVNDSUlMaXRlcmFsKCJVVEYtOCIpLCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gY3JlYXRl
KGlmcmFtZVJlc291cmNlLnJlbGVhc2UoKSwgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
PigpLCBWZWN0b3I8UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiB7IGFyY2hpdmUgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKaW5kZXggYTIwODFiZS4uYjkxYTA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtNDMsMTEgKzQzLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Q2FjaGVkQ1NTU3R5bGVT
aGVldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogQ2FjaGVkUmVzb3VyY2UocmVz
b3VyY2VSZXF1ZXN0LCBDU1NTdHlsZVNoZWV0LCBzZXNzaW9uSUQpCi0gICAgLCBtX2RlY29kZXIo
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2NzcyIsIGNoYXJzZXQpKQorICAgICwg
bV9kZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQv
Y3NzIiksIGNoYXJzZXQpKQogewogICAgIC8vIFByZWZlciB0ZXh0L2NzcyBidXQgYWNjZXB0IGFu
eSB0eXBlIChkZWxsLmNvbSBzZXJ2ZXMgYSBzdHlsZXNoZWV0CiAgICAgLy8gYXMgdGV4dC9odG1s
OyBzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDUxPikuCi0g
ICAgc2V0QWNjZXB0KCJ0ZXh0L2NzcywqLyo7cT0wLjEiKTsKKyAgICBzZXRBY2NlcHQoQVNDSUlM
aXRlcmFsKCJ0ZXh0L2NzcywqLyo7cT0wLjEiKSk7CiB9CiAKIENhY2hlZENTU1N0eWxlU2hlZXQ6
On5DYWNoZWRDU1NTdHlsZVNoZWV0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAppbmRleCAxMzY4MmZhLi5jMTMwYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBDYWNoZWRG
b250OjplbnN1cmVTVkdGb250RGF0YSgpCiB7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1l
bnQgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7CiAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwg
VVJMKCkpOwotICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veG1sIikpOwogICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgIGlmIChkZWNvZGVyLT5zYXdFcnJv
cigpKQogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDg5OThm
NDUuLmZlODdmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvCiAg
ICAgICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChjYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQb2xpY3kodHlw
ZSgpKSAhPSBDYWNoZVBvbGljeVJlbG9hZCk7CiAgICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPmNhY2hlUG9saWN5KHR5cGUoKSkgPT0gQ2FjaGVQb2xpY3lSZXZhbGlkYXRlKQot
ICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCAibWF4LWFnZT0wIik7CisgICAgICAgICAgICAgICAg
bV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDYWNo
ZUNvbnRyb2wsIEFTQ0lJTGl0ZXJhbCgibWF4LWFnZT0wIikpOwogICAgICAgICAgICAgaWYgKCFs
YXN0TW9kaWZpZWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNlLCBsYXN0
TW9kaWZpZWQpOwogICAgICAgICAgICAgaWYgKCFlVGFnLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDMyYTYx
YjMuLmYxMGJlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IENhY2hlZFNWR0RvY3VtZW50OjpDYWNoZWRTVkdEb2N1bWVudChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShy
ZXF1ZXN0LCBTVkdEb2N1bWVudFJlc291cmNlLCBzZXNzaW9uSUQpCi0gICAgLCBtX2RlY29kZXIo
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSkKKyAgICAsIG1f
ZGVjb2RlcihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJhcHBsaWNh
dGlvbi94bWwiKSkpCiB7Ci0gICAgc2V0QWNjZXB0KCJpbWFnZS9zdmcreG1sIik7CisgICAgc2V0
QWNjZXB0KEFTQ0lJTGl0ZXJhbCgiaW1hZ2Uvc3ZnK3htbCIpKTsKIH0KIAogQ2FjaGVkU1ZHRG9j
dW1lbnQ6On5DYWNoZWRTVkdEb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IGY3MWE1ZTguLmViNzM1MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENh
Y2hlZFNjcmlwdDo6Q2FjaGVkU2NyaXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgLy8gSXQncyBqYXZhc2NyaXB0IHdlIHdhbnQuCiAg
ICAgLy8gQnV0IHNvbWUgd2Vic2l0ZXMgdGhpbmsgdGhlaXIgc2NyaXB0cyBhcmUgPHNvbWUgd3Jv
bmcgbWltZXR5cGUgaGVyZT4KICAgICAvLyBhbmQgcmVmdXNlIHRvIHNlcnZlIHRoZW0gaWYgd2Ug
b25seSBhY2NlcHQgYXBwbGljYXRpb24veC1qYXZhc2NyaXB0LgotICAgIHNldEFjY2VwdCgiKi8q
Iik7CisgICAgc2V0QWNjZXB0KEFTQ0lJTGl0ZXJhbCgiKi8qIikpOwogfQogCiBDYWNoZWRTY3Jp
cHQ6On5DYWNoZWRTY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDY2ZjFlYzUuLmZhMTgxZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAK
QEAgLTM5LDExICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZFhTTFN0eWxl
U2hlZXQ6OkNhY2hlZFhTTFN0eWxlU2hlZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNv
dXJjZVJlcXVlc3QsIFhTTFN0eWxlU2hlZXQsIHNlc3Npb25JRCkKLSAgICAsIG1fZGVjb2RlcihU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQveHNsIikpCisgICAgLCBtX2RlY29kZXIo
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC94c2wiKSkpCiB7
CiAgICAgLy8gSXQncyBYTUwgd2Ugd2FudC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWNj
ZXB0IG1vcmUgZ2VuZXJhbCB4bWwgZm9ybWF0cyAqLyoreG1sLCBpbWFnZS9zdmcreG1sIGZvciBl
eGFtcGxlLgotICAgIHNldEFjY2VwdCgidGV4dC94bWwsIGFwcGxpY2F0aW9uL3htbCwgYXBwbGlj
YXRpb24veGh0bWwreG1sLCB0ZXh0L3hzbCwgYXBwbGljYXRpb24vcnNzK3htbCwgYXBwbGljYXRp
b24vYXRvbSt4bWwiKTsKKyAgICBzZXRBY2NlcHQoQVNDSUlMaXRlcmFsKCJ0ZXh0L3htbCwgYXBw
bGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi94aHRtbCt4bWwsIHRleHQveHNsLCBhcHBsaWNhdGlv
bi9yc3MreG1sLCBhcHBsaWNhdGlvbi9hdG9tK3htbCIpKTsKIH0KIAogdm9pZCBDYWNoZWRYU0xT
dHlsZVNoZWV0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggNTE1MTJiNC4u
OGY3OTMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVy
LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIEljb25VUkwgSWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRV
UkwoSWNvblR5cGUgaWNvblR5cGUpCiAgICAgICAgIHVybC5zZXRQb3J0KGRvY3VtZW50VVJMLnBv
cnQoKSk7CiAKICAgICBpZiAoaWNvblR5cGUgPT0gRmF2aWNvbikgewotICAgICAgICB1cmwuc2V0
UGF0aCgiL2Zhdmljb24uaWNvIik7CisgICAgICAgIHVybC5zZXRQYXRoKEFTQ0lJTGl0ZXJhbCgi
L2Zhdmljb24uaWNvIikpOwogICAgICAgICByZXR1cm4gSWNvblVSTDo6ZGVmYXVsdEljb25VUkwo
dXJsLCBGYXZpY29uKTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0lDT05fTE9BRElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDY3ZGMwZDku
LmJjZmIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNw
cApAQCAtNDAyLDcgKzQwMiw3IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OmRlZmF1bHRJY29uKGNv
bnN0IEludFNpemUmIHNpemUpCiAKICAgICAKICAgICBpZiAoIW1fZGVmYXVsdEljb25SZWNvcmQp
IHsKLSAgICAgICAgbV9kZWZhdWx0SWNvblJlY29yZCA9IEljb25SZWNvcmQ6OmNyZWF0ZSgidXJs
SWNvbiIpOworICAgICAgICBtX2RlZmF1bHRJY29uUmVjb3JkID0gSWNvblJlY29yZDo6Y3JlYXRl
KEFTQ0lJTGl0ZXJhbCgidXJsSWNvbiIpKTsKICAgICAgICAgbG9hZERlZmF1bHRJY29uUmVjb3Jk
KG1fZGVmYXVsdEljb25SZWNvcmQuZ2V0KCkpOwogICAgIH0KICAgICAKQEAgLTEwMzcsMTMgKzEw
MzcsMTMgQEAgdm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQogCiBz
dGF0aWMgaW50IGRhdGFiYXNlVmVyc2lvbk51bWJlcihTUUxpdGVEYXRhYmFzZSYgZGIpCiB7Ci0g
ICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudChkYiwgIlNFTEVDVCB2YWx1ZSBGUk9NIEljb25EYXRh
YmFzZUluZm8gV0hFUkUga2V5ID0gJ1ZlcnNpb24nOyIpLmdldENvbHVtbkludCgwKTsKKyAgICBy
ZXR1cm4gU1FMaXRlU3RhdGVtZW50KGRiLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCB2YWx1ZSBGUk9N
IEljb25EYXRhYmFzZUluZm8gV0hFUkUga2V5ID0gJ1ZlcnNpb24nOyIpKS5nZXRDb2x1bW5JbnQo
MCk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIp
CiB7CiAgICAgLy8gVGhlc2UgZm91ciB0YWJsZXMgc2hvdWxkIGFsd2F5cyBleGlzdCBpbiBhIHZh
bGlkIGRiCi0gICAgaWYgKCFkYi50YWJsZUV4aXN0cygiSWNvbkluZm8iKSB8fCAhZGIudGFibGVF
eGlzdHMoIkljb25EYXRhIikgfHwgIWRiLnRhYmxlRXhpc3RzKCJQYWdlVVJMIikgfHwgIWRiLnRh
YmxlRXhpc3RzKCJJY29uRGF0YWJhc2VJbmZvIikpCisgICAgaWYgKCFkYi50YWJsZUV4aXN0cyhB
U0NJSUxpdGVyYWwoIkljb25JbmZvIikpIHx8ICFkYi50YWJsZUV4aXN0cyhBU0NJSUxpdGVyYWwo
Ikljb25EYXRhIikpIHx8ICFkYi50YWJsZUV4aXN0cyhBU0NJSUxpdGVyYWwoIlBhZ2VVUkwiKSkg
fHwgIWRiLnRhYmxlRXhpc3RzKEFTQ0lJTGl0ZXJhbCgiSWNvbkRhdGFiYXNlSW5mbyIpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChkYXRhYmFzZVZlcnNpb25OdW1iZXIo
ZGIpIDwgY3VycmVudERhdGFiYXNlVmVyc2lvbikgewpAQCAtMTA1Niw0MiArMTA1Niw0MiBAQCBz
dGF0aWMgYm9vbCBpc1ZhbGlkRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiKQogCiBzdGF0aWMg
dm9pZCBjcmVhdGVEYXRhYmFzZVRhYmxlcyhTUUxpdGVEYXRhYmFzZSYgZGIpCiB7Ci0gICAgaWYg
KCFkYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIFBhZ2VVUkwgKHVybCBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsaWNvbklEIElO
VEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIWRiLmV4ZWN1
dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQ1JFQVRFIFRBQkxFIFBhZ2VVUkwgKHVybCBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsaWNvbklE
IElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAl
cyIsIGRiLmxhc3RFcnJvcigpLCBkYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGRiLmNsb3Nl
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFkYi5leGVjdXRlQ29tbWFuZCgi
Q1JFQVRFIElOREVYIFBhZ2VVUkxJbmRleCBPTiBQYWdlVVJMICh1cmwpOyIpKSB7CisgICAgaWYg
KCFkYi5leGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkNSRUFURSBJTkRFWCBQYWdlVVJMSW5k
ZXggT04gUGFnZVVSTCAodXJsKTsiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgZGIubGFzdEVycm9y
KCksIGRiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgZGIuY2xvc2UoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIWRiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNv
bkluZm8gKGljb25JRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UsIHVybCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5J
UVVFIE9OIENPTkZMSUNUIEZBSUwsIHN0YW1wIElOVEVHRVIpOyIpKSB7CisgICAgaWYgKCFkYi5l
eGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkNSRUFURSBUQUJMRSBJY29uSW5mbyAoaWNvbklE
IElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSwgdXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJ
Q1QgRkFJTCwgc3RhbXAgSU5URUdFUik7IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBJY29uSW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBkYi5sYXN0
RXJyb3IoKSwgZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBkYi5jbG9zZSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICghZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRF
WCBJY29uSW5mb0luZGV4IE9OIEljb25JbmZvICh1cmwsIGljb25JRCk7IikpIHsKKyAgICBpZiAo
IWRiLmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQ1JFQVRFIElOREVYIEljb25JbmZvSW5k
ZXggT04gSWNvbkluZm8gKHVybCwgaWNvbklEKTsiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgZGIu
bGFzdEVycm9yKCksIGRiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgZGIuY2xvc2UoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWRiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSWNvbkRhdGEgKGljb25JRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQg
VU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIGRhdGEgQkxPQik7IikpIHsKKyAgICBpZiAoIWRi
LmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhIChpY29u
SUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIFVOSVFVRSBPTiBDT05GTElDVCBS
RVBMQUNFLCBkYXRhIEJMT0IpOyIpKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
cmVhdGUgSWNvbkRhdGEgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgZGIubGFzdEVycm9y
KCksIGRiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgZGIuY2xvc2UoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIWRiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggSWNv
bkRhdGFJbmRleCBPTiBJY29uRGF0YSAoaWNvbklEKTsiKSkgeworICAgIGlmICghZGIuZXhlY3V0
ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKCJDUkVBVEUgSU5ERVggSWNvbkRhdGFJbmRleCBPTiBJY29u
RGF0YSAoaWNvbklEKTsiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IFBhZ2VVUkwgaW5kZXggaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgZGIubGFzdEVycm9yKCksIGRi
Lmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAoIWRiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkRhdGFi
YXNlSW5mbyAoa2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09O
RkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7
CisgICAgaWYgKCFkYi5leGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkNSRUFURSBUQUJMRSBJ
Y29uRGF0YWJhc2VJbmZvIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCk7IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBJY29uRGF0YWJh
c2VJbmZvIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRiLmxhc3RFcnJvcigpLCBkYi5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGRiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKCFkYi5leGVjdXRlQ29tbWFuZChTdHJpbmcoIklOU0VSVCBJTlRPIEljb25E
YXRhYmFzZUluZm8gVkFMVUVTICgnVmVyc2lvbicsICIpICsgU3RyaW5nOjpudW1iZXIoY3VycmVu
dERhdGFiYXNlVmVyc2lvbikgKyAiKTsiKSkgeworICAgIGlmICghZGIuZXhlY3V0ZUNvbW1hbmQo
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSU5TRVJUIElOVE8gSWNvbkRhdGFiYXNlSW5mbyBWQUxVRVMg
KCdWZXJzaW9uJywgIikpICsgU3RyaW5nOjpudW1iZXIoY3VycmVudERhdGFiYXNlVmVyc2lvbikg
KyAiKTsiKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBpbnNlcnQgaWNvbiBkYXRh
YmFzZSB2ZXJzaW9uIGludG8gSWNvbkRhdGFiYXNlSW5mbyB0YWJsZSAoJWkpIC0gJXMiLCBkYi5s
YXN0RXJyb3IoKSwgZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBkYi5jbG9zZSgpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVy
Zm9ybU9wZW5Jbml0aWFsaXphdGlvbigpCiAgICAgfQogCiAgICAgLy8gUmVkdWNlIHNxbGl0ZSBS
QU0gY2FjaGUgc2l6ZSBmcm9tIGRlZmF1bHQgMjAwMCBwYWdlcyAofjEuNWtCIHBlciBwYWdlKS4g
M01CIG9mIGNhY2hlIGZvciBpY29uIGRhdGFiYXNlIGlzIG92ZXJraWxsCi0gICAgaWYgKCFTUUxp
dGVTdGF0ZW1lbnQobV9zeW5jREIsICJQUkFHTUEgY2FjaGVfc2l6ZSA9IDIwMDsiKS5leGVjdXRl
Q29tbWFuZCgpKSAgICAgICAgIAorICAgIGlmICghU1FMaXRlU3RhdGVtZW50KG1fc3luY0RCLCBB
U0NJSUxpdGVyYWwoIlBSQUdNQSBjYWNoZV9zaXplID0gMjAwOyIpKS5leGVjdXRlQ29tbWFuZCgp
KSAgICAgICAgIAogICAgICAgICBMT0dfRVJST1IoIlNRTGl0ZSBkYXRhYmFzZSBjb3VsZCBub3Qg
c2V0IGNhY2hlX3NpemUiKTsKIAogICAgIC8vIFRlbGwgYmFja3VwIHNvZnR3YXJlIChpLmUuLCBU
aW1lIE1hY2hpbmUpIHRvIG5ldmVyIGJhY2sgdXAgdGhlIGljb24gZGF0YWJhc2UsIGJlY2F1c2Ug
IApAQCAtMTE1OCw3ICsxMTU4LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5
KCkKIHsKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogICAgIAotICAgIFNRTGl0ZVN0
YXRlbWVudCBpbnRlZ3JpdHkobV9zeW5jREIsICJQUkFHTUEgaW50ZWdyaXR5X2NoZWNrOyIpOwor
ICAgIFNRTGl0ZVN0YXRlbWVudCBpbnRlZ3JpdHkobV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiUFJB
R01BIGludGVncml0eV9jaGVjazsiKSk7CiAgICAgaWYgKGludGVncml0eS5wcmVwYXJlKCkgIT0g
U1FMUmVzdWx0T2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJjaGVja0ludGVncml0eSBmYWlsZWQg
dG8gZXhlY3V0ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTk4LDcgKzExOTgsNyBA
QCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCgpCiAgICAgLy8gc28gaWYgdGhl
IHRpbWVzdGFtcCBnb2VzIGJhY2sgaW4gdGltZSBtb3JlIHRoYW4gdGhvc2UgMzAgZGF5cyB3ZSBj
YW4gYmUgc3VyZSB0aGF0IHRoZSBpY29uIHdhcyBub3QgdXNlZCBhdCBhbGwuCiAgICAgU3RyaW5n
IGltcG9ydFF1ZXJ5ID0gU3RyaW5nOjpmb3JtYXQoIlNFTEVDVCBQYWdlVVJMLnVybCwgSWNvbklu
Zm8udXJsLCBJY29uSW5mby5zdGFtcCBGUk9NIFBhZ2VVUkwgSU5ORVIgSk9JTiBJY29uSW5mbyBP
TiBQYWdlVVJMLmljb25JRD1JY29uSW5mby5pY29uSUQgV0hFUkUgSWNvbkluZm8uc3RhbXAgPiAl
LjBmOyIsIGZsb29yKGN1cnJlbnRUaW1lKCkgLSBub3RVc2VkSWNvbkV4cGlyYXRpb25UaW1lKSk7
CiAjZWxzZQotICAgIFN0cmluZyBpbXBvcnRRdWVyeSgiU0VMRUNUIFBhZ2VVUkwudXJsLCBJY29u
SW5mby51cmwsIEljb25JbmZvLnN0YW1wIEZST00gUGFnZVVSTCBJTk5FUiBKT0lOIEljb25JbmZv
IE9OIFBhZ2VVUkwuaWNvbklEPUljb25JbmZvLmljb25JRDsiKTsKKyAgICBTdHJpbmcgaW1wb3J0
UXVlcnkoQVNDSUlMaXRlcmFsKCJTRUxFQ1QgUGFnZVVSTC51cmwsIEljb25JbmZvLnVybCwgSWNv
bkluZm8uc3RhbXAgRlJPTSBQYWdlVVJMIElOTkVSIEpPSU4gSWNvbkluZm8gT04gUGFnZVVSTC5p
Y29uSUQ9SWNvbkluZm8uaWNvbklEOyIpKTsKICNlbmRpZgogCiAgICAgU1FMaXRlU3RhdGVtZW50
IHF1ZXJ5KG1fc3luY0RCLCBpbXBvcnRRdWVyeSk7CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6cHJ1bmVVbnJldGFpbmVkSWNvbnMoKQogICAgIC8vIEdldCB0aGUga25v
d24gUGFnZVVSTHMgZnJvbSB0aGUgZGIsIGFuZCByZWNvcmQgdGhlIElEIG9mIGFueSB0aGF0IGFy
ZSBub3QgaW4gdGhlIHJldGFpbiBjb3VudCBzZXQuCiAgICAgVmVjdG9yPGludDY0X3Q+IHBhZ2VJ
RHNUb0RlbGV0ZTsgCiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgcGFnZVNRTChtX3N5bmNEQiwgIlNF
TEVDVCByb3dpZCwgdXJsIEZST00gUGFnZVVSTDsiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcGFn
ZVNRTChtX3N5bmNEQiwgQVNDSUlMaXRlcmFsKCJTRUxFQ1Qgcm93aWQsIHVybCBGUk9NIFBhZ2VV
Ukw7IikpOwogICAgIHBhZ2VTUUwucHJlcGFyZSgpOwogICAgIAogICAgIGludCByZXN1bHQ7CkBA
IC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cHJ1bmVVbnJldGFpbmVkSWNv
bnMoKQogICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbiBwcnVuaW5nVHJhbnNhY3Rpb24obV9zeW5j
REIpOwogICAgICAgICBwcnVuaW5nVHJhbnNhY3Rpb24uYmVnaW4oKTsKICAgICAgICAgCi0gICAg
ICAgIFNRTGl0ZVN0YXRlbWVudCBwYWdlRGVsZXRlU1FMKG1fc3luY0RCLCAiREVMRVRFIEZST00g
UGFnZVVSTCBXSEVSRSByb3dpZCA9ICg/KTsiKTsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IHBh
Z2VEZWxldGVTUUwobV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gUGFnZVVSTCBX
SEVSRSByb3dpZCA9ICg/KTsiKSk7CiAgICAgICAgIHBhZ2VEZWxldGVTUUwucHJlcGFyZSgpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVRvRGVsZXRlOyArK2kpIHsKICAgICAg
ICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJQcnVuaW5nIHBhZ2Ugd2l0aCByb3dpZCAlbGxpIGZy
b20gZGlzayIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocGFnZUlEc1RvRGVsZXRlW2ldKSk7CkBA
IC0xNzAyLDkgKzE3MDIsOSBAQCB2b2lkIEljb25EYXRhYmFzZTo6cHJ1bmVVbnJldGFpbmVkSWNv
bnMoKQogICAgIHBydW5pbmdUcmFuc2FjdGlvbi5iZWdpbigpOwogICAgIAogICAgIC8vIFdpcGUg
SWNvbnMgdGhhdCBhcmVuJ3QgcmV0YWluZWQKLSAgICBpZiAoIW1fc3luY0RCLmV4ZWN1dGVDb21t
YW5kKCJERUxFVEUgRlJPTSBJY29uRGF0YSBXSEVSRSBpY29uSUQgTk9UIElOIChTRUxFQ1QgaWNv
bklEIEZST00gUGFnZVVSTCk7IikpCisgICAgaWYgKCFtX3N5bmNEQi5leGVjdXRlQ29tbWFuZChB
U0NJSUxpdGVyYWwoIkRFTEVURSBGUk9NIEljb25EYXRhIFdIRVJFIGljb25JRCBOT1QgSU4gKFNF
TEVDVCBpY29uSUQgRlJPTSBQYWdlVVJMKTsiKSkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGV4ZWN1dGUgU1FMIHRvIHBydW5lIHVucmV0YWluZWQgaWNvbnMgZnJvbSB0aGUgb24tZGlz
ayBJY29uRGF0YSB0YWJsZSIpOyAgICAKLSAgICBpZiAoIW1fc3luY0RCLmV4ZWN1dGVDb21tYW5k
KCJERUxFVEUgRlJPTSBJY29uSW5mbyBXSEVSRSBpY29uSUQgTk9UIElOIChTRUxFQ1QgaWNvbklE
IEZST00gUGFnZVVSTCk7IikpCisgICAgaWYgKCFtX3N5bmNEQi5leGVjdXRlQ29tbWFuZChBU0NJ
SUxpdGVyYWwoIkRFTEVURSBGUk9NIEljb25JbmZvIFdIRVJFIGljb25JRCBOT1QgSU4gKFNFTEVD
VCBpY29uSUQgRlJPTSBQYWdlVVJMKTsiKSkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGV4ZWN1dGUgU1FMIHRvIHBydW5lIHVucmV0YWluZWQgaWNvbnMgZnJvbSB0aGUgb24tZGlzayBJ
Y29uSW5mbyB0YWJsZSIpOyAgICAKICAgICAKICAgICBwcnVuaW5nVHJhbnNhY3Rpb24uY29tbWl0
KCk7CkBAIC0xNzI3LDEwICsxNzI3LDEwIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ZvckRh
bmdsaW5nUGFnZVVSTHMoYm9vbCBwcnVuZUlmRm91bmQpCiAgICAgc3RhdGljIGJvb2wgZGFuZ2xl
cnNGb3VuZCA9IGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoKHBydW5lSWZGb3VuZCB8fCAhZGFu
Z2xlcnNGb3VuZCkgJiYgU1FMaXRlU3RhdGVtZW50KG1fc3luY0RCLCAiU0VMRUNUIHVybCBGUk9N
IFBhZ2VVUkwgV0hFUkUgUGFnZVVSTC5pY29uSUQgTk9UIElOIChTRUxFQ1QgaWNvbklEIEZST00g
SWNvbkluZm8pIExJTUlUIDE7IikucmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQoKSkgeworICAgIGlm
ICgocHJ1bmVJZkZvdW5kIHx8ICFkYW5nbGVyc0ZvdW5kKSAmJiBTUUxpdGVTdGF0ZW1lbnQobV9z
eW5jREIsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIHVybCBGUk9NIFBhZ2VVUkwgV0hFUkUgUGFnZVVS
TC5pY29uSUQgTk9UIElOIChTRUxFQ1QgaWNvbklEIEZST00gSWNvbkluZm8pIExJTUlUIDE7Iikp
LnJldHVybnNBdExlYXN0T25lUmVzdWx0KCkpIHsKICAgICAgICAgZGFuZ2xlcnNGb3VuZCA9IHRy
dWU7CiAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJEYW5nbGluZyBQYWdlVVJMIGVudHJpZXMg
Zm91bmQiKTsKLSAgICAgICAgaWYgKHBydW5lSWZGb3VuZCAmJiAhbV9zeW5jREIuZXhlY3V0ZUNv
bW1hbmQoIkRFTEVURSBGUk9NIFBhZ2VVUkwgV0hFUkUgaWNvbklEIE5PVCBJTiAoU0VMRUNUIGlj
b25JRCBGUk9NIEljb25JbmZvKTsiKSkKKyAgICAgICAgaWYgKHBydW5lSWZGb3VuZCAmJiAhbV9z
eW5jREIuZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKCJERUxFVEUgRlJPTSBQYWdlVVJMIFdI
RVJFIGljb25JRCBOT1QgSU4gKFNFTEVDVCBpY29uSUQgRlJPTSBJY29uSW5mbyk7IikpKQogICAg
ICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIlVuYWJsZSB0byBwcnVuZSBkYW5nbGluZyBQYWdl
VVJMcyIpOwogICAgIH0KIH0KQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZvaWQgSWNvbkRhdGFiYXNl
OjpzZXRJY29uSURGb3JQYWdlVVJMSW5TUUxEYXRhYmFzZShpbnQ2NF90IGljb25JRCwgY29uc3Qg
U3RyaW5nCiB7CiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsKICAgICAKLSAgICByZWFk
eVNRTGl0ZVN0YXRlbWVudChtX3NldEljb25JREZvclBhZ2VVUkxTdGF0ZW1lbnQsIG1fc3luY0RC
LCAiSU5TRVJUIElOVE8gUGFnZVVSTCAodXJsLCBpY29uSUQpIFZBTFVFUyAoKD8pLCA/KTsiKTsK
KyAgICByZWFkeVNRTGl0ZVN0YXRlbWVudChtX3NldEljb25JREZvclBhZ2VVUkxTdGF0ZW1lbnQs
IG1fc3luY0RCLCBBU0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIFBhZ2VVUkwgKHVybCwgaWNvbklE
KSBWQUxVRVMgKCg/KSwgPyk7IikpOwogICAgIG1fc2V0SWNvbklERm9yUGFnZVVSTFN0YXRlbWVu
dC0+YmluZFRleHQoMSwgcGFnZVVSTCk7CiAgICAgbV9zZXRJY29uSURGb3JQYWdlVVJMU3RhdGVt
ZW50LT5iaW5kSW50NjQoMiwgaWNvbklEKTsKIApAQCAtMTg2Myw3ICsxODYzLDcgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OnJlbW92ZVBhZ2VVUkxGcm9tU1FMRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBw
YWdlVVJMKQogewogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAgICAgCi0gICAgcmVh
ZHlTUUxpdGVTdGF0ZW1lbnQobV9yZW1vdmVQYWdlVVJMU3RhdGVtZW50LCBtX3N5bmNEQiwgIkRF
TEVURSBGUk9NIFBhZ2VVUkwgV0hFUkUgdXJsID0gKD8pOyIpOworICAgIHJlYWR5U1FMaXRlU3Rh
dGVtZW50KG1fcmVtb3ZlUGFnZVVSTFN0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgi
REVMRVRFIEZST00gUGFnZVVSTCBXSEVSRSB1cmwgPSAoPyk7IikpOwogICAgIG1fcmVtb3ZlUGFn
ZVVSTFN0YXRlbWVudC0+YmluZFRleHQoMSwgcGFnZVVSTCk7CiAKICAgICBpZiAobV9yZW1vdmVQ
YWdlVVJMU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkKQEAgLTE4NzcsNyArMTg3
Nyw3IEBAIGludDY0X3QgSWNvbkRhdGFiYXNlOjpnZXRJY29uSURGb3JJY29uVVJMRnJvbVNRTERh
dGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKIHsKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RI
UkVBRCgpOwogICAgIAotICAgIHJlYWR5U1FMaXRlU3RhdGVtZW50KG1fZ2V0SWNvbklERm9ySWNv
blVSTFN0YXRlbWVudCwgbV9zeW5jREIsICJTRUxFQ1QgSWNvbkluZm8uaWNvbklEIEZST00gSWNv
bkluZm8gV0hFUkUgSWNvbkluZm8udXJsID0gKD8pOyIpOworICAgIHJlYWR5U1FMaXRlU3RhdGVt
ZW50KG1fZ2V0SWNvbklERm9ySWNvblVSTFN0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJh
bCgiU0VMRUNUIEljb25JbmZvLmljb25JRCBGUk9NIEljb25JbmZvIFdIRVJFIEljb25JbmZvLnVy
bCA9ICg/KTsiKSk7CiAgICAgbV9nZXRJY29uSURGb3JJY29uVVJMU3RhdGVtZW50LT5iaW5kVGV4
dCgxLCBpY29uVVJMKTsKICAgICAKICAgICBpbnQ2NF90IHJlc3VsdCA9IG1fZ2V0SWNvbklERm9y
SWNvblVSTFN0YXRlbWVudC0+c3RlcCgpOwpAQCAtMTkwMSw3ICsxOTAxLDcgQEAgaW50NjRfdCBJ
Y29uRGF0YWJhc2U6OmFkZEljb25VUkxUb1NRTERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVS
TCkKICAgICAvLyBJbiBwcmFjdGljZSB0aGUgb25seSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgaXMg
YWx3YXlzIHdyYXBwZWQgaW4gYSB0cmFuc2FjdGlvbiBpdHNlbGYgc28gcGxhY2luZyBhbm90aGVy
CiAgICAgLy8gaGVyZSBpcyB1bm5lY2Vzc2FyeQogICAgIAotICAgIHJlYWR5U1FMaXRlU3RhdGVt
ZW50KG1fYWRkSWNvblRvSWNvbkluZm9TdGF0ZW1lbnQsIG1fc3luY0RCLCAiSU5TRVJUIElOVE8g
SWNvbkluZm8gKHVybCwgc3RhbXApIFZBTFVFUyAoPywgMCk7Iik7CisgICAgcmVhZHlTUUxpdGVT
dGF0ZW1lbnQobV9hZGRJY29uVG9JY29uSW5mb1N0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0
ZXJhbCgiSU5TRVJUIElOVE8gSWNvbkluZm8gKHVybCwgc3RhbXApIFZBTFVFUyAoPywgMCk7Iikp
OwogICAgIG1fYWRkSWNvblRvSWNvbkluZm9TdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGljb25VUkwp
OwogICAgIAogICAgIGludCByZXN1bHQgPSBtX2FkZEljb25Ub0ljb25JbmZvU3RhdGVtZW50LT5z
dGVwKCk7CkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBpbnQ2NF90IEljb25EYXRhYmFzZTo6YWRkSWNv
blVSTFRvU1FMRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBpY29uVVJMKQogICAgIH0KICAgICBpbnQ2
NF90IGljb25JRCA9IG1fc3luY0RCLmxhc3RJbnNlcnRSb3dJRCgpOwogICAgIAotICAgIHJlYWR5
U1FMaXRlU3RhdGVtZW50KG1fYWRkSWNvblRvSWNvbkRhdGFTdGF0ZW1lbnQsIG1fc3luY0RCLCAi
SU5TRVJUIElOVE8gSWNvbkRhdGEgKGljb25JRCwgZGF0YSkgVkFMVUVTICg/LCA/KTsiKTsKKyAg
ICByZWFkeVNRTGl0ZVN0YXRlbWVudChtX2FkZEljb25Ub0ljb25EYXRhU3RhdGVtZW50LCBtX3N5
bmNEQiwgQVNDSUlMaXRlcmFsKCJJTlNFUlQgSU5UTyBJY29uRGF0YSAoaWNvbklELCBkYXRhKSBW
QUxVRVMgKD8sID8pOyIpKTsKICAgICBtX2FkZEljb25Ub0ljb25EYXRhU3RhdGVtZW50LT5iaW5k
SW50NjQoMSwgaWNvbklEKTsKICAgICAKICAgICByZXN1bHQgPSBtX2FkZEljb25Ub0ljb25EYXRh
U3RhdGVtZW50LT5zdGVwKCk7CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSWNvbkRhdGFiYXNlOjpnZXRJbWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERhdGFi
YXNlKGNvbgogICAgIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICAK
LSAgICByZWFkeVNRTGl0ZVN0YXRlbWVudChtX2dldEltYWdlRGF0YUZvckljb25VUkxTdGF0ZW1l
bnQsIG1fc3luY0RCLCAiU0VMRUNUIEljb25EYXRhLmRhdGEgRlJPTSBJY29uRGF0YSBXSEVSRSBJ
Y29uRGF0YS5pY29uSUQgSU4gKFNFTEVDVCBpY29uSUQgRlJPTSBJY29uSW5mbyBXSEVSRSBJY29u
SW5mby51cmwgPSAoPykpOyIpOworICAgIHJlYWR5U1FMaXRlU3RhdGVtZW50KG1fZ2V0SW1hZ2VE
YXRhRm9ySWNvblVSTFN0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIElj
b25EYXRhLmRhdGEgRlJPTSBJY29uRGF0YSBXSEVSRSBJY29uRGF0YS5pY29uSUQgSU4gKFNFTEVD
VCBpY29uSUQgRlJPTSBJY29uSW5mbyBXSEVSRSBJY29uSW5mby51cmwgPSAoPykpOyIpKTsKICAg
ICBtX2dldEltYWdlRGF0YUZvckljb25VUkxTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGljb25VUkwp
OwogICAgIAogICAgIGludCByZXN1bHQgPSBtX2dldEltYWdlRGF0YUZvckljb25VUkxTdGF0ZW1l
bnQtPnN0ZXAoKTsKQEAgLTE5NjMsMTkgKzE5NjMsMTkgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnJl
bW92ZUljb25Gcm9tU1FMRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBpY29uVVJMKQogICAgIGlmICgh
aWNvbklEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcmVhZHlTUUxpdGVTdGF0ZW1lbnQo
bV9kZWxldGVQYWdlVVJMc0Zvckljb25VUkxTdGF0ZW1lbnQsIG1fc3luY0RCLCAiREVMRVRFIEZS
T00gUGFnZVVSTCBXSEVSRSBQYWdlVVJMLmljb25JRCA9ICg/KTsiKTsKKyAgICByZWFkeVNRTGl0
ZVN0YXRlbWVudChtX2RlbGV0ZVBhZ2VVUkxzRm9ySWNvblVSTFN0YXRlbWVudCwgbV9zeW5jREIs
IEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gUGFnZVVSTCBXSEVSRSBQYWdlVVJMLmljb25JRCA9
ICg/KTsiKSk7CiAgICAgbV9kZWxldGVQYWdlVVJMc0Zvckljb25VUkxTdGF0ZW1lbnQtPmJpbmRJ
bnQ2NCgxLCBpY29uSUQpOwogICAgIAogICAgIGlmIChtX2RlbGV0ZVBhZ2VVUkxzRm9ySWNvblVS
TFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTFJlc3VsdERvbmUpCiAgICAgICAgIExPR19FUlJPUigi
bV9kZWxldGVQYWdlVVJMc0Zvckljb25VUkxTdGF0ZW1lbnQgZmFpbGVkIGZvciB1cmwgJXMiLCB1
cmxGb3JMb2dnaW5nKGljb25VUkwpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAKLSAgICByZWFkeVNR
TGl0ZVN0YXRlbWVudChtX2RlbGV0ZUljb25Gcm9tSWNvbkluZm9TdGF0ZW1lbnQsIG1fc3luY0RC
LCAiREVMRVRFIEZST00gSWNvbkluZm8gV0hFUkUgSWNvbkluZm8uaWNvbklEID0gKD8pOyIpOwor
ICAgIHJlYWR5U1FMaXRlU3RhdGVtZW50KG1fZGVsZXRlSWNvbkZyb21JY29uSW5mb1N0YXRlbWVu
dCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gSWNvbkluZm8gV0hFUkUgSWNv
bkluZm8uaWNvbklEID0gKD8pOyIpKTsKICAgICBtX2RlbGV0ZUljb25Gcm9tSWNvbkluZm9TdGF0
ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpY29uSUQpOwogICAgIAogICAgIGlmIChtX2RlbGV0ZUljb25G
cm9tSWNvbkluZm9TdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKQogICAgICAgICBM
T0dfRVJST1IoIm1fZGVsZXRlSWNvbkZyb21JY29uSW5mb1N0YXRlbWVudCBmYWlsZWQgZm9yIHVy
bCAlcyIsIHVybEZvckxvZ2dpbmcoaWNvblVSTCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAK
LSAgICByZWFkeVNRTGl0ZVN0YXRlbWVudChtX2RlbGV0ZUljb25Gcm9tSWNvbkRhdGFTdGF0ZW1l
bnQsIG1fc3luY0RCLCAiREVMRVRFIEZST00gSWNvbkRhdGEgV0hFUkUgSWNvbkRhdGEuaWNvbklE
ID0gKD8pOyIpOworICAgIHJlYWR5U1FMaXRlU3RhdGVtZW50KG1fZGVsZXRlSWNvbkZyb21JY29u
RGF0YVN0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gSWNvbkRh
dGEgV0hFUkUgSWNvbkRhdGEuaWNvbklEID0gKD8pOyIpKTsKICAgICBtX2RlbGV0ZUljb25Gcm9t
SWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpY29uSUQpOwogICAgIAogICAgIGlmICht
X2RlbGV0ZUljb25Gcm9tSWNvbkRhdGFTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxSZXN1bHREb25l
KQpAQCAtMjAwOSw3ICsyMDA5LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OndyaXRlSWNvblNuYXBz
aG90VG9TUUxEYXRhYmFzZShjb25zdCBJY29uU25hcHNob3QmIHNuYXBzaG90KQogICAgIC8vIElm
IHRoZXJlIGlzIGFscmVhZHkgYW4gaWNvbklEIGluIHBsYWNlLCB1cGRhdGUgdGhlIGRhdGFiYXNl
LiAgCiAgICAgLy8gT3RoZXJ3aXNlLCBpbnNlcnQgbmV3IHJlY29yZHMKICAgICBpZiAoaWNvbklE
KSB7ICAgIAotICAgICAgICByZWFkeVNRTGl0ZVN0YXRlbWVudChtX3VwZGF0ZUljb25JbmZvU3Rh
dGVtZW50LCBtX3N5bmNEQiwgIlVQREFURSBJY29uSW5mbyBTRVQgc3RhbXAgPSA/LCB1cmwgPSA/
IFdIRVJFIGljb25JRCA9ID87Iik7CisgICAgICAgIHJlYWR5U1FMaXRlU3RhdGVtZW50KG1fdXBk
YXRlSWNvbkluZm9TdGF0ZW1lbnQsIG1fc3luY0RCLCBBU0NJSUxpdGVyYWwoIlVQREFURSBJY29u
SW5mbyBTRVQgc3RhbXAgPSA/LCB1cmwgPSA/IFdIRVJFIGljb25JRCA9ID87IikpOwogICAgICAg
ICBtX3VwZGF0ZUljb25JbmZvU3RhdGVtZW50LT5iaW5kSW50NjQoMSwgc25hcHNob3QudGltZXN0
YW1wKCkpOwogICAgICAgICBtX3VwZGF0ZUljb25JbmZvU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBz
bmFwc2hvdC5pY29uVVJMKCkpOwogICAgICAgICBtX3VwZGF0ZUljb25JbmZvU3RhdGVtZW50LT5i
aW5kSW50NjQoMywgaWNvbklEKTsKQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjp3cml0ZUljb25TbmFwc2hvdFRvU1FMRGF0YWJhc2UoY29uc3QgSWNvblNuYXBzaG90JiBz
bmFwc2hvdCkKICAgICAgICAgCiAgICAgICAgIG1fdXBkYXRlSWNvbkluZm9TdGF0ZW1lbnQtPnJl
c2V0KCk7CiAgICAgICAgIAotICAgICAgICByZWFkeVNRTGl0ZVN0YXRlbWVudChtX3VwZGF0ZUlj
b25EYXRhU3RhdGVtZW50LCBtX3N5bmNEQiwgIlVQREFURSBJY29uRGF0YSBTRVQgZGF0YSA9ID8g
V0hFUkUgaWNvbklEID0gPzsiKTsKKyAgICAgICAgcmVhZHlTUUxpdGVTdGF0ZW1lbnQobV91cGRh
dGVJY29uRGF0YVN0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiVVBEQVRFIEljb25E
YXRhIFNFVCBkYXRhID0gPyBXSEVSRSBpY29uSUQgPSA/OyIpKTsKICAgICAgICAgbV91cGRhdGVJ
Y29uRGF0YVN0YXRlbWVudC0+YmluZEludDY0KDIsIGljb25JRCk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgIC8vIElmIHdlICpoYXZlKiBpbWFnZSBkYXRhLCBiaW5kIGl0IHRvIHRoaXMgc3Rh
dGVtZW50IC0gT3RoZXJ3aXNlIGJpbmQgIm51bGwiIGZvciB0aGUgYmxvYiBkYXRhLCAKQEAgLTIw
MzQsNyArMjAzNCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjp3cml0ZUljb25TbmFwc2hvdFRvU1FM
RGF0YWJhc2UoY29uc3QgSWNvblNuYXBzaG90JiBzbmFwc2hvdCkKIAogICAgICAgICBtX3VwZGF0
ZUljb25EYXRhU3RhdGVtZW50LT5yZXNldCgpOwogICAgIH0gZWxzZSB7ICAgIAotICAgICAgICBy
ZWFkeVNRTGl0ZVN0YXRlbWVudChtX3NldEljb25JbmZvU3RhdGVtZW50LCBtX3N5bmNEQiwgIklO
U0VSVCBJTlRPIEljb25JbmZvICh1cmwsc3RhbXApIFZBTFVFUyAoPywgPyk7Iik7CisgICAgICAg
IHJlYWR5U1FMaXRlU3RhdGVtZW50KG1fc2V0SWNvbkluZm9TdGF0ZW1lbnQsIG1fc3luY0RCLCBB
U0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIEljb25JbmZvICh1cmwsc3RhbXApIFZBTFVFUyAoPywg
Pyk7IikpOwogICAgICAgICBtX3NldEljb25JbmZvU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBzbmFw
c2hvdC5pY29uVVJMKCkpOwogICAgICAgICBtX3NldEljb25JbmZvU3RhdGVtZW50LT5iaW5kSW50
NjQoMiwgc25hcHNob3QudGltZXN0YW1wKCkpOwogCkBAIC0yMDQ1LDcgKzIwNDUsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6d3JpdGVJY29uU25hcHNob3RUb1NRTERhdGFiYXNlKGNvbnN0IEljb25T
bmFwc2hvdCYgc25hcHNob3QpCiAgICAgICAgIAogICAgICAgICBpbnQ2NF90IGljb25JRCA9IG1f
c3luY0RCLmxhc3RJbnNlcnRSb3dJRCgpOwogCi0gICAgICAgIHJlYWR5U1FMaXRlU3RhdGVtZW50
KG1fc2V0SWNvbkRhdGFTdGF0ZW1lbnQsIG1fc3luY0RCLCAiSU5TRVJUIElOVE8gSWNvbkRhdGEg
KGljb25JRCwgZGF0YSkgVkFMVUVTICg/LCA/KTsiKTsKKyAgICAgICAgcmVhZHlTUUxpdGVTdGF0
ZW1lbnQobV9zZXRJY29uRGF0YVN0YXRlbWVudCwgbV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiSU5T
RVJUIElOVE8gSWNvbkRhdGEgKGljb25JRCwgZGF0YSkgVkFMVUVTICg/LCA/KTsiKSk7CiAgICAg
ICAgIG1fc2V0SWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpY29uSUQpOwogCiAgICAg
ICAgIC8vIElmIHdlICpoYXZlKiBpbWFnZSBkYXRhLCBiaW5kIGl0IHRvIHRoaXMgc3RhdGVtZW50
IC0gT3RoZXJ3aXNlIGJpbmQgIm51bGwiIGZvciB0aGUgYmxvYiBkYXRhLCAKQEAgLTIwNjYsMTQg
KzIwNjYsMTQgQEAgYm9vbCBJY29uRGF0YWJhc2U6Ondhc0V4Y2x1ZGVkRnJvbUJhY2t1cCgpCiB7
CiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsKIAotICAgIHJldHVybiBTUUxpdGVTdGF0
ZW1lbnQobV9zeW5jREIsICJTRUxFQ1QgdmFsdWUgRlJPTSBJY29uRGF0YWJhc2VJbmZvIFdIRVJF
IGtleSA9ICdFeGNsdWRlZEZyb21CYWNrdXAnOyIpLmdldENvbHVtbkludCgwKTsKKyAgICByZXR1
cm4gU1FMaXRlU3RhdGVtZW50KG1fc3luY0RCLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCB2YWx1ZSBG
Uk9NIEljb25EYXRhYmFzZUluZm8gV0hFUkUga2V5ID0gJ0V4Y2x1ZGVkRnJvbUJhY2t1cCc7Iikp
LmdldENvbHVtbkludCgwKTsKIH0KIAogdm9pZCBJY29uRGF0YWJhc2U6OnNldFdhc0V4Y2x1ZGVk
RnJvbUJhY2t1cCgpCiB7CiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsKIAotICAgIFNR
TGl0ZVN0YXRlbWVudChtX3N5bmNEQiwgIklOU0VSVCBJTlRPIEljb25EYXRhYmFzZUluZm8gKGtl
eSwgdmFsdWUpIFZBTFVFUyAoJ0V4Y2x1ZGVkRnJvbUJhY2t1cCcsIDEpIikuZXhlY3V0ZUNvbW1h
bmQoKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQobV9zeW5jREIsIEFTQ0lJTGl0ZXJhbCgiSU5TRVJU
IElOVE8gSWNvbkRhdGFiYXNlSW5mbyAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnRXhjbHVkZWRGcm9t
QmFja3VwJywgMSkiKSkuZXhlY3V0ZUNvbW1hbmQoKTsKIH0KIAogdm9pZCBJY29uRGF0YWJhc2U6
OmNoZWNrQ2xvc2VkQWZ0ZXJNYWluVGhyZWFkQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApvbGQgbW9kZSAxMDA3NTUKbmV3IG1v
ZGUgMTAwNjQ0CmluZGV4IGQyZjllNGEuLmY1Y2NmOTkKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKQEAgLTc4LDQ1ICs3OCw0NSBAQCB2b2lkIE1hdGhN
TE1lbmNsb3NlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZAogICAgIGlmICh2YWwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKG5hbWUgPT0gTWF0aE1MTmFtZXM6Om5vdGF0aW9uQXR0cikgewotICAgICAgICB2YWwu
c3BsaXQoIiAiLCBtX25vdGF0aW9uVmFsdWVzKTsKKyAgICAgICAgdmFsLnNwbGl0KCcgJywgbV9u
b3RhdGlvblZhbHVlcyk7CiAgICAgICAgIHNpemVfdCBub3RhdGlvblZhbHVlU2l6ZSA9IG1fbm90
YXRpb25WYWx1ZXMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vdGF0
aW9uVmFsdWVTaXplOyBpKyspIHsKICAgICAgICAgICAgIGlmIChtX25vdGF0aW9uVmFsdWVzW2ld
ID09ICJ0b3AiIHx8IG1fbm90YXRpb25WYWx1ZXNbaV0gPT0gImxvbmdkaXYiKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fbm90YXRpb25WYWx1ZXNbaV0gPT0gImxvbmdkaXYiKQogICAgICAgICAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5UGFkZGluZ0xlZnQsIGxvbmdEaXZMZWZ0UGFkZGluZygpKTsKLSAgICAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsICJzb2xpZCIpOwotICAgICAgICAgICAgICAgIGFkZFBy
b3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BXaWR0aCwgInRoaW4iKTsKLSAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgIi4zZXgi
KTsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIEFTQ0lJTGl0ZXJhbCgic29saWQi
KSk7CisgICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBBU0NJSUxpdGVyYWwoInRoaW4i
KSk7CisgICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIEFTQ0lJTGl0ZXJhbCgiLjNleCIpKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9ub3RhdGlvblZhbHVlc1tpXSA9PSAiYm90dG9tIikg
ewotICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgInNvbGlkIik7Ci0gICAgICAg
ICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAidGhpbiIpOwotICAgICAgICAgICAgICAgIGFk
ZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlQ
YWRkaW5nQm90dG9tLCAiLjNleCIpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHls
ZSwgQVNDSUlMaXRlcmFsKCJzb2xpZCIpKTsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRv
UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
V2lkdGgsIEFTQ0lJTGl0ZXJhbCgidGhpbiIpKTsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0
eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5UGFkZGluZ0Jv
dHRvbSwgQVNDSUlMaXRlcmFsKCIuM2V4IikpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX25v
dGF0aW9uVmFsdWVzW2ldID09ICJsZWZ0IikgewotICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5
VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
U3R5bGUsICJzb2xpZCIpOwotICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsICJ0aGlu
Iik7Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCAiLjNleCIpOworICAgICAgICAgICAg
ICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGUsIEFTQ0lJTGl0ZXJhbCgic29saWQiKSk7CisgICAgICAgICAg
ICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQVNDSUlMaXRlcmFsKCJ0aGluIikpOworICAgICAgICAg
ICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlQYWRkaW5nTGVmdCwgQVNDSUlMaXRlcmFsKCIuM2V4IikpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChtX25vdGF0aW9uVmFsdWVzW2ldID09ICJyaWdodCIpIHsKLSAgICAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgInNvbGlkIik7Ci0gICAgICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0V2lkdGgsICJ0aGluIik7Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgIi4z
ZXgiKTsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQVNDSUlMaXRlcmFsKCJz
b2xpZCIpKTsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQVNDSUlMaXRlcmFs
KCJ0aGluIikpOworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRy
aWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIEFTQ0lJTGl0ZXJhbCgi
LjNleCIpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9ub3RhdGlvblZhbHVlc1tpXSA9PSAi
Ym94IiB8fCBtX25vdGF0aW9uVmFsdWVzW2ldID09ICJyb3VuZGVkYm94IikgewotICAgICAgICAg
ICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJTdHlsZSwgInNvbGlkIik7Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVy
dHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldp
ZHRoLCAidGhpbiIpOwotICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlQYWRkaW5nLCAiLjNleCIpOworICAgICAg
ICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQVNDSUlMaXRlcmFsKCJzb2xpZCIpKTsKKyAgICAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIEFTQ0lJTGl0ZXJhbCgidGhpbiIpKTsKKyAgICAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5UGFkZGluZywgQVNDSUlMaXRlcmFsKCIuM2V4IikpOwogICAgICAgICAgICAgICAgIGlm
IChtX25vdGF0aW9uVmFsdWVzW2ldID09ICJyb3VuZGVkYm94IikKICAgICAgICAgICAgICAgICAg
ICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJhZGl1cywgQVNDSUlMaXRlcmFsKCI1cHgiKSk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKG1fbm90YXRpb25WYWx1ZXNbaV0gPT0gImFjdHVhcmlhbCIgfHwgbV9ub3RhdGlvblZh
bHVlc1tpXSA9PSAibWFkcnV3YiIpIHsKLSAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSwgInNvbGlkIik7Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsICJ0aGluIik7
Ci0gICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgIi4zZXgiKTsKKyAgICAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgQVNDSUlMaXRlcmFsKCJzb2xpZCIpKTsKKyAgICAgICAgICAg
ICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQVNDSUlMaXRlcmFsKCJ0aGluIikpOworICAgICAgICAg
ICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlQYWRkaW5nUmlnaHQsIEFTQ0lJTGl0ZXJhbCgiLjNleCIpKTsKICAgICAgICAgICAg
ICAgICBpZiAobV9ub3RhdGlvblZhbHVlc1tpXSA9PSAiYWN0dWFyaWFsIikgewotICAgICAgICAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsICJzb2xpZCIpOwotICAgICAgICAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsICJ0aGluIik7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFByb3Bl
cnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlQYWRkaW5n
VG9wLCAiLjNleCIpOworICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIEFTQ0lJ
TGl0ZXJhbCgic29saWQiKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwg
QVNDSUlMaXRlcmFsKCJ0aGluIikpOworICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRv
UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5UGFkZGluZ1RvcCwg
QVNDSUlMaXRlcmFsKCIuM2V4IikpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9ub3Rh
dGlvblZhbHVlc1tpXSA9PSAibWFkcnV3YiIpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlLCAic29saWQiKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHlU
b1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCAidGhpbiIpOwotICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgIi4z
ZXgiKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBBU0NJSUxpdGVy
YWwoInNvbGlkIikpOworICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIEFT
Q0lJTGl0ZXJhbCgidGhpbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20s
IEFTQ0lJTGl0ZXJhbCgiLjNleCIpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKG1fbm90YXRpb25WYWx1ZXNbaV0gPT0gInJhZGljYWwiKQogICAgICAgICAgICAg
ICAgIG1faXNSYWRpY2FsVmFsdWUgPSB0cnVlOwpAQCAtMTMwLDcgKzEzMCw3IEBAIFN0cmluZyBN
YXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmxvbmdEaXZMZWZ0UGFkZGluZygpIGNvbnN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciBwYWRkaW5nOwogICAgIGZsb2F0IGZvbnRTaXplID0gMDsKLSAgICBTdHJp
bmcgY2xvc2luZ0JyYWNlID0gIikiOworICAgIFN0cmluZyBjbG9zaW5nQnJhY2UgPSBBU0NJSUxp
dGVyYWwoIikiKTsKICAgICBUZXh0UnVuIHJ1bihjbG9zaW5nQnJhY2UuaW1wbCgpLCBjbG9zaW5n
QnJhY2UubGVuZ3RoKCkpOwogICAgIE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCA3ZWY1N2I0Li4wZGVi
MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0RWRnZUNTUygpIGNvbnN0CiAgICAgYm9vbCB1
bnVzZWQ7CiAgICAgQ29sb3IgY29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcih1bnVzZWQpOwogICAg
IGlmICghY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBjb2xvci5zZXROYW1lZENvbG9yKCJibGFj
ayIpOworICAgICAgICBjb2xvci5zZXROYW1lZENvbG9yKEFTQ0lJTGl0ZXJhbCgiYmxhY2siKSk7
CiAgICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb2xvcik7CiAKICAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTQ2ZjZkMi4uYjk3ZDI1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAt
OTE0LDcgKzkxNCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVwb3J0
VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2CiAKICAgICBTdHJpbmcgc3Vm
Zml4ID0gU3RyaW5nKCk7CiAgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCkp
Ci0gICAgICAgIHN1ZmZpeCA9ICIgTm90ZSB0aGF0ICdzY3JpcHQtc3JjJyB3YXMgbm90IGV4cGxp
Y2l0bHkgc2V0LCBzbyAnZGVmYXVsdC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iOworICAg
ICAgICBzdWZmaXggPSBBU0NJSUxpdGVyYWwoIiBOb3RlIHRoYXQgJ3NjcmlwdC1zcmMnIHdhcyBu
b3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNlZCBhcyBhIGZhbGxiYWNr
LiIpOwogCiAgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMs
IGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBzdWZm
aXggKyAiXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHN0YXRlKTsKICAgICBp
ZiAoIW1fcmVwb3J0T25seSkgewpAQCAtOTI5LDcgKzkyOSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6Y2hlY2tNZWRpYVR5cGVBbmRSZXBvcnRWaW9sYXRpb24oTWVkaWFMaXN0RGlyZWN0aXZl
KiBkaXJlCiAgICAgaWYgKGNoZWNrTWVkaWFUeXBlKGRpcmVjdGl2ZSwgdHlwZSwgdHlwZUF0dHJp
YnV0ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKGNvbnNvbGVNZXNzYWdlLCAiXCciLCBkaXJlY3RpdmUtPnRleHQoKSwgIlwnLiIpOwor
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhjb25zb2xlTWVzc2FnZSwgJ1wnJywgZGly
ZWN0aXZlLT50ZXh0KCksICJcJy4iKTsKICAgICBpZiAodHlwZUF0dHJpYnV0ZS5pc0VtcHR5KCkp
CiAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgIiBXaGVuIGVuZm9yY2luZyB0aGUgJ3BsdWdp
bi10eXBlcycgZGlyZWN0aXZlLCB0aGUgcGx1Z2luJ3MgbWVkaWEgdHlwZSBtdXN0IGJlIGV4cGxp
Y2l0bHkgZGVjbGFyZWQgd2l0aCBhICd0eXBlJyBhdHRyaWJ1dGUgb24gdGhlIGNvbnRhaW5pbmcg
ZWxlbWVudCAoZS5nLiAnPG9iamVjdCB0eXBlPVwiW1RZUEUgR09FUyBIRVJFXVwiIC4uLj4nKS4i
OwogCkBAIC05NjMsMjUgKzk2MywyNSBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291
cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogCiAgICAg
U3RyaW5nIHByZWZpeDsKICAgICBpZiAoYmFzZVVSSSA9PSBlZmZlY3RpdmVEaXJlY3RpdmUpCi0g
ICAgICAgIHByZWZpeCA9ICJSZWZ1c2VkIHRvIHNldCB0aGUgZG9jdW1lbnQncyBiYXNlIFVSSSB0
byAnIjsKKyAgICAgICAgcHJlZml4ID0gQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIHNldCB0aGUg
ZG9jdW1lbnQncyBiYXNlIFVSSSB0byAnIik7CiAgICAgZWxzZSBpZiAoY29ubmVjdFNyYyA9PSBl
ZmZlY3RpdmVEaXJlY3RpdmUpCi0gICAgICAgIHByZWZpeCA9ICJSZWZ1c2VkIHRvIGNvbm5lY3Qg
dG8gJyI7CisgICAgICAgIHByZWZpeCA9IEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBjb25uZWN0
IHRvICciKTsKICAgICBlbHNlIGlmIChmb250U3JjID09IGVmZmVjdGl2ZURpcmVjdGl2ZSkKLSAg
ICAgICAgcHJlZml4ID0gIlJlZnVzZWQgdG8gbG9hZCB0aGUgZm9udCAnIjsKKyAgICAgICAgcHJl
Zml4ID0gQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGxvYWQgdGhlIGZvbnQgJyIpOwogICAgIGVs
c2UgaWYgKGZvcm1BY3Rpb24gPT0gZWZmZWN0aXZlRGlyZWN0aXZlKQotICAgICAgICBwcmVmaXgg
PSAiUmVmdXNlZCB0byBzZW5kIGZvcm0gZGF0YSB0byAnIjsKKyAgICAgICAgcHJlZml4ID0gQVND
SUlMaXRlcmFsKCJSZWZ1c2VkIHRvIHNlbmQgZm9ybSBkYXRhIHRvICciKTsKICAgICBlbHNlIGlm
IChmcmFtZVNyYyA9PSBlZmZlY3RpdmVEaXJlY3RpdmUpCi0gICAgICAgIHByZWZpeCA9ICJSZWZ1
c2VkIHRvIGZyYW1lICciOworICAgICAgICBwcmVmaXggPSBBU0NJSUxpdGVyYWwoIlJlZnVzZWQg
dG8gZnJhbWUgJyIpOwogICAgIGVsc2UgaWYgKGltZ1NyYyA9PSBlZmZlY3RpdmVEaXJlY3RpdmUp
Ci0gICAgICAgIHByZWZpeCA9ICJSZWZ1c2VkIHRvIGxvYWQgdGhlIGltYWdlICciOworICAgICAg
ICBwcmVmaXggPSBBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gbG9hZCB0aGUgaW1hZ2UgJyIpOwog
ICAgIGVsc2UgaWYgKG1lZGlhU3JjID09IGVmZmVjdGl2ZURpcmVjdGl2ZSkKLSAgICAgICAgcHJl
Zml4ID0gIlJlZnVzZWQgdG8gbG9hZCBtZWRpYSBmcm9tICciOworICAgICAgICBwcmVmaXggPSBB
U0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gbG9hZCBtZWRpYSBmcm9tICciKTsKICAgICBlbHNlIGlm
IChvYmplY3RTcmMgPT0gZWZmZWN0aXZlRGlyZWN0aXZlKQotICAgICAgICBwcmVmaXggPSAiUmVm
dXNlZCB0byBsb2FkIHBsdWdpbiBkYXRhIGZyb20gJyI7CisgICAgICAgIHByZWZpeCA9IEFTQ0lJ
TGl0ZXJhbCgiUmVmdXNlZCB0byBsb2FkIHBsdWdpbiBkYXRhIGZyb20gJyIpOwogICAgIGVsc2Ug
aWYgKHNjcmlwdFNyYyA9PSBlZmZlY3RpdmVEaXJlY3RpdmUpCi0gICAgICAgIHByZWZpeCA9ICJS
ZWZ1c2VkIHRvIGxvYWQgdGhlIHNjcmlwdCAnIjsKKyAgICAgICAgcHJlZml4ID0gQVNDSUlMaXRl
cmFsKCJSZWZ1c2VkIHRvIGxvYWQgdGhlIHNjcmlwdCAnIik7CiAgICAgZWxzZSBpZiAoc3R5bGVT
cmMgPT0gZWZmZWN0aXZlRGlyZWN0aXZlKQotICAgICAgICBwcmVmaXggPSAiUmVmdXNlZCB0byBs
b2FkIHRoZSBzdHlsZXNoZWV0ICciOworICAgICAgICBwcmVmaXggPSBBU0NJSUxpdGVyYWwoIlJl
ZnVzZWQgdG8gbG9hZCB0aGUgc3R5bGVzaGVldCAnIik7CiAKICAgICBTdHJpbmcgc3VmZml4ID0g
U3RyaW5nKCk7CiAgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCkpCkBAIC0x
NzA5LDcgKzE3MDksNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0SW52YWxp
ZFBsdWdpblR5cGVzKGNvbnN0IFN0cmluZyYgcGx1Z2luVHlwZSkgYwogewogICAgIFN0cmluZyBt
ZXNzYWdlOwogICAgIGlmIChwbHVnaW5UeXBlLmlzTnVsbCgpKQotICAgICAgICBtZXNzYWdlID0g
IidwbHVnaW4tdHlwZXMnIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZSBpcyBlbXB0
eTsgYWxsIHBsdWdpbnMgd2lsbCBiZSBibG9ja2VkLlxuIjsKKyAgICAgICAgbWVzc2FnZSA9IEFT
Q0lJTGl0ZXJhbCgiJ3BsdWdpbi10eXBlcycgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0
aXZlIGlzIGVtcHR5OyBhbGwgcGx1Z2lucyB3aWxsIGJlIGJsb2NrZWQuXG4iKTsKICAgICBlbHNl
CiAgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJJbnZhbGlkIHBsdWdpbiB0eXBlIGluICdw
bHVnaW4tdHlwZXMnIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogJyIsIHBsdWdp
blR5cGUsICInLlxuIik7CiAgICAgbG9nVG9Db25zb2xlKG1lc3NhZ2UpOwpAQCAtMTczNSw5ICsx
NzM1LDkgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEludmFsaWRQYXRoQ2hh
cmFjdGVyKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlTmEKIHsKICAgICBBU1NFUlQoaW52YWxpZENo
YXIgPT0gJyMnIHx8IGludmFsaWRDaGFyID09ICc/Jyk7CiAKLSAgICBTdHJpbmcgaWdub3Jpbmcg
PSAiVGhlIGZyYWdtZW50IGlkZW50aWZpZXIsIGluY2x1ZGluZyB0aGUgJyMnLCB3aWxsIGJlIGln
bm9yZWQuIjsKKyAgICBTdHJpbmcgaWdub3JpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBmcmFnbWVu
dCBpZGVudGlmaWVyLCBpbmNsdWRpbmcgdGhlICcjJywgd2lsbCBiZSBpZ25vcmVkLiIpOwogICAg
IGlmIChpbnZhbGlkQ2hhciA9PSAnPycpCi0gICAgICAgIGlnbm9yaW5nID0gIlRoZSBxdWVyeSBj
b21wb25lbnQsIGluY2x1ZGluZyB0aGUgJz8nLCB3aWxsIGJlIGlnbm9yZWQuIjsKKyAgICAgICAg
aWdub3JpbmcgPSBBU0NJSUxpdGVyYWwoIlRoZSBxdWVyeSBjb21wb25lbnQsIGluY2x1ZGluZyB0
aGUgJz8nLCB3aWxsIGJlIGlnbm9yZWQuIik7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJUaGUgc291cmNlIGxpc3QgZm9yIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZSAnIiwgZGlyZWN0aXZlTmFtZSwgIicgY29udGFpbnMgYSBzb3VyY2Ugd2l0aCBhbiBpbnZhbGlk
IHBhdGg6ICciLCB2YWx1ZSwgIicuICIsIGlnbm9yaW5nKTsKICAgICBsb2dUb0NvbnNvbGUobWVz
c2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKaW5kZXggZTliYzFiNi4uOWMwMDRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDEwICszMjIsMTAgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSog
aXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoQVNDSUlMaXRlcmFsKCJDdXQiKSkuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5k
KEFTQ0lJTGl0ZXJhbCgiUGFzdGUiKSkuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEZWxldGU6CkBAIC00MTMs
MTAgKzQxMywxMCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+bG9hZGVyKCku
bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5h
YnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBM
b2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXliZVNlbmRS
ZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKCJUb2dnbGVCb2xkIikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZChBU0NJSUxpdGVyYWwoIlRvZ2dsZUJvbGQiKSkuZXhlY3V0ZSgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJUb2dnbGVJdGFsaWMiKSku
ZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Vu
ZGVybGluZToKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZVVuZGVybGluZSgpOwpAQCAt
NDQ4LDEzICs0NDgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlv
bkRlZmF1bHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRp
bmdEaXJlY3Rpb25OYXR1cmFsIikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZChBU0NJSUxpdGVyYWwoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKSku
ZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Rl
eHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
Ik1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOworICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChBU0NJSUxpdGVyYWwoIk1ha2VUZXh0V3JpdGluZ0Rp
cmVjdGlvbkxlZnRUb1JpZ2h0IikpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6Ci0gICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVm
dCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRl
cmFsKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpKS5leGVjdXRlKCk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6CkBAIC0xMTY3LDI1ICsxMTY3LDI1IEBAIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVt
JiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnTGVmdFRvUmlnaHQ6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmln
aHRUb0xlZnQ6IHsKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAg
ICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRl
bVRhZ0xlZnRUb1JpZ2h0ID8gQVNDSUlMaXRlcmFsKCJsdHIiKSA6IEFTQ0lJTGl0ZXJhbCgicnRs
Iik7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25I
YXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKSAhPSBGYWxzZVRyaVN0YXRl
OwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRl
ZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKTsKKyAgICAg
ICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
QVNDSUlMaXRlcmFsKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIikpOwogICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERp
cmVjdGlvbkxlZnRUb1JpZ2h0OiB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0
VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZChBU0NJSUxpdGVyYWwoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxl
ZnRUb1JpZ2h0IikpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkg
PT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0Vu
YWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7Ci0gICAgICAgICAgICBF
ZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21t
YW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChBU0NJSUxpdGVyYWwoIk1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikpOwogICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxk
RW5hYmxlID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIy
OCw3ICsxMjI4LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJ
Zk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZTogewotICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpICE9
IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3Io
KS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LCBBU0NJSUxpdGVyYWwoInVuZGVybGluZSIpKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAg
ICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMjQxLDEyICsxMjQxLDEyIEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJ
dGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzogewot
ICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5
bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSAhPSBGYWxzZVRyaVN0YXRlOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250U3R5bGUsIEFTQ0lJTGl0ZXJhbCgiaXRhbGljIikpICE9IEZhbHNlVHJp
U3RhdGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRp
dFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdCb2xkOiB7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xk
IikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQVNDSUlMaXRl
cmFsKCJib2xkIikpICE9IEZhbHNlVHJpU3RhdGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAxOGNiYTg4Li45
MTk0ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0xNzcsMTAgKzE3
NywxMCBAQCBTdHJpbmcgRE9NU2VsZWN0aW9uOjp0eXBlKCkgY29uc3QKICAgICAvLyBJRSBoYXMg
dGhpcyBzYW1lIGF0dHJpYnV0ZSwgYnV0IHJldHVybnMgIm5vbmUiLCAidGV4dCIgYW5kICJjb250
cm9sIgogICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUz
NDY5MihWUy44NSkuYXNweAogICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJl
dHVybiAiTm9uZSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk5vbmUiKTsKICAgICBp
ZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkKLSAgICAgICAgcmV0dXJuICJDYXJldCI7Ci0gICAgcmV0
dXJuICJSYW5nZSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNhcmV0Iik7CisgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUmFuZ2UiKTsKIH0KIAogaW50IERPTVNlbGVjdGlvbjo6cmFu
Z2VDb3VudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZmYzOWI5NC4u
ODg2ZDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTA1Nyw3ICsxMDU3LDcg
QEAgdm9pZCBET01XaW5kb3c6OnByaW50KCkKIAogICAgIC8vIFBhZ2VzIGFyZSBub3QgYWxsb3dl
ZCB0byBicmluZyB1cCBhIG1vZGFsIHByaW50IGRpYWxvZyBkdXJpbmcgQmVmb3JlVW5sb2FkIGRp
c3BhdGNoLgogICAgIGlmIChwYWdlLT5pc0FueUZyYW1lSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVu
dCgpKSB7Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKCJVc2Ugb2Ygd2luZG93LnByaW50IGlz
IG5vdCBhbGxvd2VkIGR1cmluZyBiZWZvcmV1bmxvYWQgZXZlbnQgZGlzcGF0Y2guIik7CisgICAg
ICAgIHByaW50RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVXNlIG9mIHdpbmRvdy5wcmludCBp
cyBub3QgYWxsb3dlZCBkdXJpbmcgYmVmb3JldW5sb2FkIGV2ZW50IGRpc3BhdGNoLiIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBET01XaW5k
b3c6OmFsZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIC8vIFBhZ2VzIGFyZSBub3Qg
YWxsb3dlZCB0byBjYXVzZSBtb2RhbCBhbGVydHMgZHVyaW5nIEJlZm9yZVVubG9hZCBkaXNwYXRj
aC4KICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+aXNBbnlGcmFtZUhhbmRsaW5nQmVmb3JlVW5s
b2FkRXZlbnQoKSkgewotICAgICAgICBwcmludEVycm9yTWVzc2FnZSgiVXNlIG9mIHdpbmRvdy5h
bGVydCBpcyBub3QgYWxsb3dlZCBkdXJpbmcgYmVmb3JldW5sb2FkIGV2ZW50IGRpc3BhdGNoLiIp
OworICAgICAgICBwcmludEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwoIlVzZSBvZiB3aW5kb3cu
YWxlcnQgaXMgbm90IGFsbG93ZWQgZHVyaW5nIGJlZm9yZXVubG9hZCBldmVudCBkaXNwYXRjaC4i
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMDYsNyArMTEwNiw3IEBAIGJvb2wg
RE9NV2luZG93Ojpjb25maXJtKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAKICAgICAvLyBQ
YWdlcyBhcmUgbm90IGFsbG93ZWQgdG8gY2F1c2UgbW9kYWwgYWxlcnRzIGR1cmluZyBCZWZvcmVV
bmxvYWQgZGlzcGF0Y2guCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPmlzQW55RnJhbWVIYW5k
bGluZ0JlZm9yZVVubG9hZEV2ZW50KCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVz
ZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCBkdXJpbmcgYmVmb3JldW5sb2FkIGV2
ZW50IGRpc3BhdGNoLiIpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwo
IlVzZSBvZiB3aW5kb3cuY29uZmlybSBpcyBub3QgYWxsb3dlZCBkdXJpbmcgYmVmb3JldW5sb2Fk
IGV2ZW50IGRpc3BhdGNoLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTEyNiw3ICsxMTI2LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6cHJvbXB0KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCiAKICAgICAvLyBQYWdlcyBhcmUg
bm90IGFsbG93ZWQgdG8gY2F1c2UgbW9kYWwgYWxlcnRzIGR1cmluZyBCZWZvcmVVbmxvYWQgZGlz
cGF0Y2guCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPmlzQW55RnJhbWVIYW5kbGluZ0JlZm9y
ZVVubG9hZEV2ZW50KCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5k
b3cucHJvbXB0IGlzIG5vdCBhbGxvd2VkIGR1cmluZyBiZWZvcmV1bmxvYWQgZXZlbnQgZGlzcGF0
Y2guIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVXNlIG9mIHdp
bmRvdy5wcm9tcHQgaXMgbm90IGFsbG93ZWQgZHVyaW5nIGJlZm9yZXVubG9hZCBldmVudCBkaXNw
YXRjaC4iKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAgLTIxOTIsNyAr
MjE5Miw3IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhCiAKICAgICAvLyBQYWdlcyBhcmUgbm90
IGFsbG93ZWQgdG8gY2F1c2UgbW9kYWwgYWxlcnRzIGR1cmluZyBCZWZvcmVVbmxvYWQgZGlzcGF0
Y2guCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPmlzQW55RnJhbWVIYW5kbGluZ0JlZm9yZVVu
bG9hZEV2ZW50KCkpIHsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UoIlVzZSBvZiB3aW5kb3cu
c2hvd01vZGFsRGlhbG9nIGlzIG5vdCBhbGxvd2VkIGR1cmluZyBiZWZvcmV1bmxvYWQgZXZlbnQg
ZGlzcGF0Y2guIik7CisgICAgICAgIHByaW50RXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiVXNl
IG9mIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaXMgbm90IGFsbG93ZWQgZHVyaW5nIGJlZm9yZXVu
bG9hZCBldmVudCBkaXNwYXRjaC4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAxYzc1ZjE2Li44MGFmNTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zMjIwLDExICszMjIwLDExIEBAIHN0YXRp
YyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJhbWUmIGZyYW1lLCBLZXli
b2FyZEV2ZW50KiBldmVudCkKIAogICAgIEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFt
ZS5zZWxlY3Rpb24oKTsKIAotICAgIGJvb2wgaXNDb21tYW5kZWQgPSBldmVudC0+Z2V0TW9kaWZp
ZXJTdGF0ZSgiTWV0YSIpOwotICAgIGJvb2wgaXNPcHRpb25lZCA9IGV2ZW50LT5nZXRNb2RpZmll
clN0YXRlKCJBbHQiKTsKKyAgICBib29sIGlzQ29tbWFuZGVkID0gZXZlbnQtPmdldE1vZGlmaWVy
U3RhdGUoQVNDSUlMaXRlcmFsKCJNZXRhIikpOworICAgIGJvb2wgaXNPcHRpb25lZCA9IGV2ZW50
LT5nZXRNb2RpZmllclN0YXRlKEFTQ0lJTGl0ZXJhbCgiQWx0IikpOwogICAgIGJvb2wgaXNTZWxl
Y3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9uZSgpOwogCi0gICAgRnJhbWVTZWxlY3Rpb246OkVBbHRl
cmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQtPmdldE1vZGlmaWVyU3RhdGUoIlNoaWZ0IikgPyBG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZTsKKyAgICBGcmFtZVNlbGVjdGlvbjo6RUFsdGVyYXRpb24gYWx0ZXJuYXRpb24gPSBl
dmVudC0+Z2V0TW9kaWZpZXJTdGF0ZShBU0NJSUxpdGVyYWwoIlNoaWZ0IikpID8gRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25FeHRlbmQgOiBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmU7
CiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IERpcmVjdGlvbkZvcndhcmQ7CiAg
ICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggMDcyZGZhYS4uZmE0ZWM0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgaW5saW5lIEV2
ZW50U291cmNlOjpFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBVUkwmIHVybCwKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fd2l0aENyZWRlbnRpYWxz
KGZhbHNlKQogICAgICwgbV9zdGF0ZShDT05ORUNUSU5HKQotICAgICwgbV9kZWNvZGVyKFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpKQorICAgICwgbV9k
ZWNvZGVyKFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxh
aW4iKSwgIlVURi04IikpCiAgICAgLCBtX2Nvbm5lY3RUaW1lcih0aGlzLCAmRXZlbnRTb3VyY2U6
OmNvbm5lY3RUaW1lckZpcmVkKQogICAgICwgbV9kaXNjYXJkVHJhaWxpbmdOZXdsaW5lKGZhbHNl
KQogICAgICwgbV9yZXF1ZXN0SW5GbGlnaHQoZmFsc2UpCkBAIC0xMTksOSArMTE5LDkgQEAgdm9p
ZCBFdmVudFNvdXJjZTo6Y29ubmVjdCgpCiAgICAgQVNTRVJUKCFtX3JlcXVlc3RJbkZsaWdodCk7
CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybCk7Ci0gICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKCJHRVQiKTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6QWNjZXB0LCAidGV4dC9ldmVudC1zdHJlYW0iKTsKLSAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCAibm8tY2FjaGUiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoQVNDSUlMaXRlcmFsKCJHRVQiKSk7CisgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2VwdCwgQVNDSUlMaXRl
cmFsKCJ0ZXh0L2V2ZW50LXN0cmVhbSIpKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBBU0NJSUxpdGVyYWwoIm5vLWNhY2hlIikp
OwogICAgIGlmICghbV9sYXN0RXZlbnRJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0RXZlbnRJRCwgbV9sYXN0RXZlbnRJ
ZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZmUyNmRkMS4uODUyYmUxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgU3RyaW5nIG1hdGNoTGFiZWxz
QWdhaW5zdFN0cmluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBjb25zdCBTdHJpbgog
ICAgIFN0cmluZyBtdXRhYmxlU3RyaW5nVG9NYXRjaCA9IHN0cmluZ1RvTWF0Y2g7CiAKICAgICAv
LyBNYWtlIG51bWJlcnMgYW5kIF8ncyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJv
dW5kYXJpZXMsIGUuZy4sICJhZGRyZXNzMiIKLSAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01h
dGNoLCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKCJcXGQiLCBUZXh0Q2FzZVNlbnNpdGl2
ZSksICIgIik7CisgICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgSlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbihBU0NJSUxpdGVyYWwoIlxcZCIpLCBUZXh0Q2FzZVNlbnNpdGl2ZSks
IEFTQ0lJTGl0ZXJhbCgiICIpKTsKICAgICBtdXRhYmxlU3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdf
JywgJyAnKTsKICAgICAKICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCA9
IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDNjZjBjYjEuLjJiODMwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTE2OSw3ICsxNjksNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAg
LCBtX3VwZGF0ZUVtYmVkZGVkT2JqZWN0c1RpbWVyKHRoaXMsICZGcmFtZVZpZXc6OnVwZGF0ZUVt
YmVkZGVkT2JqZWN0c1RpbWVyRmlyZWQpCiAgICAgLCBtX2lzVHJhbnNwYXJlbnQoZmFsc2UpCiAg
ICAgLCBtX2Jhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQotICAgICwgbV9tZWRpYVR5
cGUoInNjcmVlbiIpCisgICAgLCBtX21lZGlhVHlwZShBU0NJSUxpdGVyYWwoInNjcmVlbiIpKQog
ICAgICwgbV9vdmVyZmxvd1N0YXR1c0RpcnR5KHRydWUpCiAgICAgLCBtX3ZpZXdwb3J0UmVuZGVy
ZXIoMCkKICAgICAsIG1fd2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpCkBAIC0xNDUyLDcgKzE0NTIs
NyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0TWVkaWFUeXBlRm9yUHJpbnRpbmcoYm9vbCBwcmlu
dGluZykKICAgICBpZiAocHJpbnRpbmcpIHsKICAgICAgICAgaWYgKG1fbWVkaWFUeXBlV2hlbk5v
dFByaW50aW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRp
bmcgPSBtZWRpYVR5cGUoKTsKLSAgICAgICAgICAgIHNldE1lZGlhVHlwZSgicHJpbnQiKTsKKyAg
ICAgICAgICAgIHNldE1lZGlhVHlwZShBU0NJSUxpdGVyYWwoInByaW50IikpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghbV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcuaXNOdWxsKCkpCiAg
ICAgICAgICAgICBzZXRNZWRpYVR5cGUobV9tZWRpYVR5cGVXaGVuTm90UHJpbnRpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCA0NGY1MjIwLi43OGVhMThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFN0cmluZyBMb2NhdGlvbjo6cGF0aG5h
bWUoKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBjb25zdCBVUkwmIHVy
bCA9IHRoaXMtPnVybCgpOwotICAgIHJldHVybiB1cmwucGF0aCgpLmlzRW1wdHkoKSA/ICIvIiA6
IHVybC5wYXRoKCk7CisgICAgcmV0dXJuIHVybC5wYXRoKCkuaXNFbXB0eSgpID8gQVNDSUlMaXRl
cmFsKCIvIikgOiB1cmwucGF0aCgpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnNlYXJjaCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYmIyYTI1NC4uOTg2MDI5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcgTmF2aWdh
dG9yOjphcHBWZXJzaW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFN0
cmluZyBhcHBWZXJzaW9uID0gTmF2aWdhdG9yQmFzZTo6YXBwVmVyc2lvbigpOwogICAgIGlmIChz
aG91bGRIaWRlRm91ckRvdChtX2ZyYW1lKSkKLSAgICAgICAgYXBwVmVyc2lvbi5yZXBsYWNlKCI0
LiIsICI0XyIpOworICAgICAgICBhcHBWZXJzaW9uLnJlcGxhY2UoQVNDSUlMaXRlcmFsKCI0LiIp
LCBBU0NJSUxpdGVyYWwoIjRfIikpOwogICAgIHJldHVybiBhcHBWZXJzaW9uOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCBlZDk5Y2ZmLi42MWJlNTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgTmF2aWdh
dG9yQmFzZTo6fk5hdmlnYXRvckJhc2UoKQogCiBTdHJpbmcgTmF2aWdhdG9yQmFzZTo6YXBwTmFt
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICJOZXRzY2FwZSI7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiTmV0c2NhcGUiKTsKIH0KIAogU3RyaW5nIE5hdmlnYXRvckJhc2U6OmFwcFZlcnNpb24o
KSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIFN0cmluZyBOYXZpZ2F0b3JCYXNlOjpwbGF0Zm9y
bSgpIGNvbnN0CiAKIFN0cmluZyBOYXZpZ2F0b3JCYXNlOjphcHBDb2RlTmFtZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICJNb3ppbGxhIjsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJNb3ppbGxh
Iik7CiB9CiAKIFN0cmluZyBOYXZpZ2F0b3JCYXNlOjpwcm9kdWN0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IGFkMGFhM2QuLjZhNjA2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTAy
MSw3ICsxMDIxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIAotICAg
IG1fdXNlclN0eWxlU2hlZXQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvY3Nz
IiktPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3Vz
ZXJTdHlsZVNoZWV0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgi
dGV4dC9jc3MiKSktPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAppbmRleCBjODAyNTljLi41NzBiZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29u
c3QgVVJMCiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKICAgICAgICAg
U3RyaW5nIHRleHRTdHJpbmcgPSBjc3NUZXh0LnRvU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcg
dGV4dCA9IHRleHRFbmNvZGluZy5lbmNvZGUodGV4dFN0cmluZywgRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOwotICAgICAgICBtX3Jlc291cmNlcy0+YXBwZW5kKFJlc291cmNlKHVybCwgU3RyaW5n
KCJ0ZXh0L2NzcyIpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0LmRhdGEoKSwgdGV4dC5sZW5n
dGgoKSkpKTsKKyAgICAgICAgbV9yZXNvdXJjZXMtPmFwcGVuZChSZXNvdXJjZSh1cmwsIFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInRleHQvY3NzIikpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0LmRh
dGEoKSwgdGV4dC5sZW5ndGgoKSkpKTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IGUzZmRkYjAu
LjkxZmU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTI3Miw3ICsy
NzIsNyBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYQogICAgIC8vIEltcGxlbWVudCBmb3JtYXR0
ZXJzIGZvciBwcm9wZXJ0aWVzIHdlIGNhcmUgYWJvdXQuCiAgICAgaWYgKCFzdHJjbXAocHJvcGVy
dHlOYW1lLCAibWFyZ2luLWxlZnQiKSkgewogICAgICAgICBpZiAoc3R5bGUtPm1hcmdpbkxlZnQo
KS5pc0F1dG8oKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoImF1dG8iKTsKKyAgICAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImF1dG8iKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKHN0eWxlLT5tYXJnaW5MZWZ0KCkudmFsdWUoKSk7CiAgICAgfQogICAgIGlmICghc3Ry
Y21wKHByb3BlcnR5TmFtZSwgImxpbmUtaGVpZ2h0IikpCkBAIC0yODQsNyArMjg0LDcgQEAgU3Ry
aW5nIFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBpbnQgcGEKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJzaXpl
IikpCiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFnZVNpemUoKS53aWR0
aCgpLnZhbHVlKCkpICsgJyAnICsgU3RyaW5nOjpudW1iZXIoc3R5bGUtPnBhZ2VTaXplKCkuaGVp
Z2h0KCkudmFsdWUoKSk7CiAKLSAgICByZXR1cm4gU3RyaW5nKCJwYWdlUHJvcGVydHkoKSB1bmlt
cGxlbWVudGVkIGZvcjogIikgKyBwcm9wZXJ0eU5hbWU7CisgICAgcmV0dXJuIFN0cmluZyhBU0NJ
SUxpdGVyYWwoInBhZ2VQcm9wZXJ0eSgpIHVuaW1wbGVtZW50ZWQgZm9yOiAiKSkgKyBwcm9wZXJ0
eU5hbWU7CiB9CiAKIGJvb2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBm
cmFtZSwgaW50IHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CmluZGV4IGYzYTliZjIuLmViNmM3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCkBAIC00NjMsMTYgKzQ2MywxNiBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjppc0xvY2Fs
KCkgY29uc3QKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAogewogICAg
IGlmIChpc1VuaXF1ZSgpKQotICAgICAgICByZXR1cm4gIm51bGwiOworICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJudWxsIik7CiAgICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIG1f
ZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikKLSAgICAgICAgcmV0dXJuICJudWxsIjsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibnVsbCIpOwogICAgIHJldHVybiB0b1Jhd1N0cmluZygp
OwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvUmF3U3RyaW5nKCkgY29uc3QKIHsKICAg
ICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAgIHJldHVybiAiZmlsZTovLyI7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5ndGgo
KSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKQEAgLTU1NCw3ICs1NTQsNyBAQCBTdHJpbmcgU2Vj
dXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgLy8gTm93IHRoYXQg
d2UndmUgZml4ZWQgdGhhdCBidWcsIHdlIHN0aWxsIG5lZWQgdG8gcHJvZHVjZSB0aGlzIHN0cmlu
ZwogICAgIC8vIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIHBlcnNpc3RlbnQgc3RhdGUuCiAg
ICAgaWYgKG1fbmVlZHNEYXRhYmFzZUlkZW50aWZpZXJRdWlya0ZvckZpbGVzKQotICAgICAgICBy
ZXR1cm4gImZpbGVfXzAiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmaWxlX18wIik7
CiAKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobV9wcm90b2NvbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGQ3MTM0MTIu
LjM0NjI2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAg
c3RhdGljIGNvbnN0IGF1dG8gbGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSBzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzKDI1MCk7CiAKIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAg
IDogbV9wYWdlKDApCi0gICAgLCBtX21lZGlhVHlwZU92ZXJyaWRlKCJzY3JlZW4iKQorICAgICwg
bV9tZWRpYVR5cGVPdmVycmlkZShBU0NJSUxpdGVyYWwoInNjcmVlbiIpKQogICAgICwgbV9mb250
R2VuZXJpY0ZhbWlsaWVzKHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkK
ICAgICAsIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpBbGxvd0FsbFN0
b3JhZ2UpCiAgICAgLCBtX2xheW91dEludGVydmFsKGxheW91dFNjaGVkdWxlVGhyZXNob2xkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDFk
Njc0YjkuLmRmNzcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJM
UGF0dGVybi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46
OnBhcnNlKGNvbnN0IFN0cmluZyYgcGF0dGVybikKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
bV9zY2hlbWUsICJmaWxlIikpCiAgICAgICAgIHBhdGhTdGFydFBvcyA9IGhvc3RTdGFydFBvczsK
ICAgICBlbHNlIHsKLSAgICAgICAgc2l6ZV90IGhvc3RFbmRQb3MgPSBwYXR0ZXJuLmZpbmQoIi8i
LCBob3N0U3RhcnRQb3MpOworICAgICAgICBzaXplX3QgaG9zdEVuZFBvcyA9IHBhdHRlcm4uZmlu
ZCgnLycsIGhvc3RTdGFydFBvcyk7CiAgICAgICAgIGlmIChob3N0RW5kUG9zID09IG5vdEZvdW5k
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBObyBvdGhlciAnKicgY2FuIG9jY3VyIGluIHRoZSBob3N0LgotICAg
ICAgICBpZiAobV9ob3N0LmZpbmQoIioiKSAhPSBub3RGb3VuZCkKKyAgICAgICAgaWYgKG1faG9z
dC5maW5kKCcqJykgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAgICAgcGF0aFN0YXJ0UG9zID0gaG9zdEVuZFBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAppbmRleCBhOTM0MDA2Li5jNThmODA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCkBAIC00MTksOSAr
NDE5LDkgQEAgVmlld3BvcnRDb25maWd1cmF0aW9uVGV4dFN0cmVhbSYgVmlld3BvcnRDb25maWd1
cmF0aW9uVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb24KICAgICB0cyA8PCAiKGluaXRpYWxTY2Fs
ZSAiIDw8IHBhcmFtZXRlcnMud2lkdGggPDwgIiwgc2V0OiAiIDw8IChwYXJhbWV0ZXJzLmluaXRp
YWxTY2FsZUlzU2V0ID8gInRydWUiIDogImZhbHNlIikgPDwgIikiOwogICAgIHRzLmRlY3JlYXNl
SW5kZW50KCk7CiAKLSAgICBkdW1wUHJvcGVydHkodHMsICJtaW5pbXVtU2NhbGUiLCBwYXJhbWV0
ZXJzLm1pbmltdW1TY2FsZSk7Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAibWF4aW11bVNjYWxlIiwg
cGFyYW1ldGVycy5tYXhpbXVtU2NhbGUpOwotICAgIGR1bXBQcm9wZXJ0eSh0cywgImFsbG93c1Vz
ZXJTY2FsaW5nIiwgcGFyYW1ldGVycy5hbGxvd3NVc2VyU2NhbGluZyk7CisgICAgZHVtcFByb3Bl
cnR5KHRzLCBBU0NJSUxpdGVyYWwoIm1pbmltdW1TY2FsZSIpLCBwYXJhbWV0ZXJzLm1pbmltdW1T
Y2FsZSk7CisgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoIm1heGltdW1TY2FsZSIp
LCBwYXJhbWV0ZXJzLm1heGltdW1TY2FsZSk7CisgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxp
dGVyYWwoImFsbG93c1VzZXJTY2FsaW5nIiksIHBhcmFtZXRlcnMuYWxsb3dzVXNlclNjYWxpbmcp
OwogCiAgICAgcmV0dXJuIHRzOwogfQpAQCAtNDgwLDkgKzQ4MCw5IEBAIENTdHJpbmcgVmlld3Bv
cnRDb25maWd1cmF0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgdHMgPDwgIikiOwogICAg
IHRzLmRlY3JlYXNlSW5kZW50KCk7CiAKLSAgICBkdW1wUHJvcGVydHkodHMsICJjb250ZW50U2l6
ZSIsIG1fY29udGVudFNpemUpOwotICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmltdW1MYXlvdXRT
aXplIiwgbV9taW5pbXVtTGF5b3V0U2l6ZSk7Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAibWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkiLCBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJ
KTsKKyAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiY29udGVudFNpemUiKSwgbV9j
b250ZW50U2l6ZSk7CisgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoIm1pbmltdW1M
YXlvdXRTaXplIiksIG1fbWluaW11bUxheW91dFNpemUpOworICAgIGR1bXBQcm9wZXJ0eSh0cywg
QVNDSUlMaXRlcmFsKCJtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSIpLCBtX21pbmltdW1M
YXlvdXRTaXplRm9yTWluaW1hbFVJKTsKICAgICB0cyA8PCAiKHVzZXMgbWluaW1hbCBVSSAiIDw8
IG1fdXNlc01pbmltYWxVSSA8PCAiKSI7CiAKICAgICB0cyA8PCAiXG4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCmluZGV4IGRiNzA3ODguLmRmZTJjNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKQEAgLTcwOCw3ICs3
MDgsNyBAQCBTdHJpbmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nKFNlY29uZEZvcm1hdCBmb3Jt
YXQpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJTA0ZC0lMDJkLSUwMmQi
LCBtX3llYXIsIG1fbW9udGggKyAxLCBtX21vbnRoRGF5KTsKICAgICBjYXNlIERhdGVUaW1lOgog
ICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwNGQtJTAyZC0lMDJkVCIsIG1feWVhciwg
bV9tb250aCArIDEsIG1fbW9udGhEYXkpCi0gICAgICAgICAgICArIHRvU3RyaW5nRm9yVGltZShm
b3JtYXQpICsgU3RyaW5nKCJaIik7CisgICAgICAgICAgICArIHRvU3RyaW5nRm9yVGltZShmb3Jt
YXQpICsgJ1onOwogICAgIGNhc2UgRGF0ZVRpbWVMb2NhbDoKICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlMDRkLSUwMmQtJTAyZFQiLCBtX3llYXIsIG1fbW9udGggKyAxLCBtX21vbnRo
RGF5KQogICAgICAgICAgICAgKyB0b1N0cmluZ0ZvclRpbWUoZm9ybWF0KTsKQEAgLTcyMiw3ICs3
MjIsNyBAQCBTdHJpbmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nKFNlY29uZEZvcm1hdCBmb3Jt
YXQpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gU3RyaW5nKCIoSW52YWxpZCBEYXRlQ29tcG9uZW50cykiKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCIoSW52YWxpZCBEYXRlQ29tcG9uZW50cykiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGFuZ3VhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCmluZGV4
IGMyODkyZTQuLmRjM2JkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xh
bmd1YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGxhbmd1YWdlQ29kZSkKICAgICBTdHJpbmcgbG93ZXJjYXNlTGFuZ3Vh
Z2VDb2RlID0gbGFuZ3VhZ2VDb2RlLmxvd2VyKCk7CiAgICAgCiAgICAgaWYgKGxvd2VyY2FzZUxh
bmd1YWdlQ29kZS5sZW5ndGgoKSA+PSAzICYmIGxvd2VyY2FzZUxhbmd1YWdlQ29kZVsyXSA9PSAn
XycpCi0gICAgICAgIGxvd2VyY2FzZUxhbmd1YWdlQ29kZS5yZXBsYWNlKDIsIDEsICItIik7Cisg
ICAgICAgIGxvd2VyY2FzZUxhbmd1YWdlQ29kZS5yZXBsYWNlKDIsIDEsIEFTQ0lJTGl0ZXJhbCgi
LSIpKTsKIAogICAgIHJldHVybiBsb3dlcmNhc2VMYW5ndWFnZUNvZGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IGUwY2E1MzYuLmRhNmVh
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBA
IC02MzcsMTkgKzYzNywxOSBAQCBTdHJpbmcgQVhMaW5rQWN0aW9uVmVyYigpCiBTdHJpbmcgQVhN
ZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gInNlbGVjdCI7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2VsZWN0Iik7CiB9CiAK
IFN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gInNlbGVjdCI7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2VsZWN0Iik7
CiB9CiAKIFN0cmluZyBBWExpc3RJdGVtQWN0aW9uVmVyYigpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gInNlbGVjdCI7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2Vs
ZWN0Iik7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCBhNDAwZGYzLi5iOTkyNjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTY2LDI2
ICsxNjYsMjYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
KCkKICAgICB9CiAKICAgICAvLyBPbiBUaWdlciBhbmQgTGVvcGFyZCwgY29tLm1pY3Jvc29mdC5i
bXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeS4KLSAgICBzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS9ibXAiKTsKLSAgICBzdXBwb3J0ZWRJbWFnZVJl
c291cmNlTUlNRVR5cGVzLT5hZGQoImltYWdlL2JtcCIpOworICAgIHN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzLT5hZGQoQVNDSUlMaXRlcmFsKCJpbWFnZS9ibXAiKSk7CisgICAgc3VwcG9ydGVkSW1h
Z2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvYm1wIikpOwogCiAg
ICAgLy8gRmF2aWNvbnMgZG9uJ3QgaGF2ZSBhIE1JTUUgdHlwZSBpbiB0aGUgcmVnaXN0cnkgZWl0
aGVyLgotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3ZuZC5taWNyb3Nv
ZnQuaWNvbiIpOwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3gtaWNv
biIpOwotICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2Uvdm5k
Lm1pY3Jvc29mdC5pY29uIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+
YWRkKCJpbWFnZS94LWljb24iKTsKKyAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKEFT
Q0lJTGl0ZXJhbCgiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIikpOworICAgIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzLT5hZGQoQVNDSUlMaXRlcmFsKCJpbWFnZS94LWljb24iKSk7CisgICAgc3Vw
cG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKEFTQ0lJTGl0ZXJhbCgiaW1hZ2Uvdm5k
Lm1pY3Jvc29mdC5pY29uIikpOworICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMt
PmFkZChBU0NJSUxpdGVyYWwoImltYWdlL3gtaWNvbiIpKTsKIAogICAgIC8vICBXZSBvbmx5IGdl
dCBvbmUgTUlNRSB0eXBlIHBlciBVVEksIGhlbmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51
YWxseQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7Ci0g
ICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOwor
ICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoQVNDSUlMaXRlcmFsKCJpbWFnZS9wanBl
ZyIpKTsKKyAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQoQVNDSUlMaXRl
cmFsKCJpbWFnZS9wanBlZyIpKTsKIAogICAgIC8vICBXZSBkb24ndCB3YW50IHRvIHRyeSB0byB0
cmVhdCBhbGwgYmluYXJ5IGRhdGEgYXMgYW4gaW1hZ2UKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcy0+cmVtb3ZlKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKLSAgICBzdXBwb3J0ZWRJ
bWFnZVJlc291cmNlTUlNRVR5cGVzLT5yZW1vdmUoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIp
OworICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5yZW1vdmUoQVNDSUlMaXRlcmFsKCJhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0iKSk7CisgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVU
eXBlcy0+cmVtb3ZlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOwog
CiAgICAgLy8gIERvbid0IHRyZWF0IHBkZi9wb3N0c2NyaXB0IGFzIGltYWdlcyBkaXJlY3RseQot
ICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5yZW1vdmUoImFwcGxpY2F0aW9uL3BkZiIpOwot
ICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5yZW1vdmUoImFwcGxpY2F0aW9uL3Bvc3RzY3Jp
cHQiKTsKKyAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+cmVtb3ZlKEFTQ0lJTGl0ZXJhbCgi
YXBwbGljYXRpb24vcGRmIikpOworICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5yZW1vdmUo
QVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IikpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIC8vIEFkZCBtYWxmb3JtZWQgaW1hZ2UgbWltZXR5cGUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBNYWlsIGFuZCB0byBoYW5kbGUgbWFsZm9ybWVkIG1pbWV0eXBlcyBmcm9tIHRoZSBu
ZXQKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUERGTUlNRVR5cGVz
KCkKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvc3RTY3JpcHRNSU1FVHlwZXMoKQogewotICAg
IHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMtPmFkZCgiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIp
OworICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMtPmFkZChBU0NJSUxpdGVyYWwoImFwcGxp
Y2F0aW9uL3Bvc3RzY3JpcHQiKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0
ZWROb25JbWFnZU1pbWVUeXBlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCA5MWUzMzIyLi40OGNlNjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHAKQEAgLTU4LDc5ICs1OCw3OSBAQCBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNFcXVhbFRv
KGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllclN0cmluZykKIGJvb2wgYXBwbGljYXRpb25J
c1NhZmFyaSgpCiB7CiAgICAgLy8gRklYTUU6IEZvciB0aGUgV2ViUHJvY2VzcyBjYXNlLCBlbnN1
cmUgdGhhdCB0aGlzIGlzIFNhZmFyaSdzIFdlYlByb2Nlc3MuCi0gICAgc3RhdGljIGJvb2wgaXNT
YWZhcmkgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uYXBwbGUuU2FmYXJpIikgfHwgbWFpbkJ1
bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLldlYlByb2Nlc3MiKTsKKyAgICBzdGF0aWMgYm9vbCBp
c1NhZmFyaSA9IG1haW5CdW5kbGVJc0VxdWFsVG8oQVNDSUlMaXRlcmFsKCJjb20uYXBwbGUuU2Fm
YXJpIikpIHx8IG1haW5CdW5kbGVJc0VxdWFsVG8oQVNDSUlMaXRlcmFsKCJjb20uYXBwbGUuV2Vi
UHJvY2VzcyIpKTsKICAgICByZXR1cm4gaXNTYWZhcmk7CiB9CiAKIGJvb2wgYXBwbGljYXRpb25J
c0FwcGxlTWFpbCgpCiB7Ci0gICAgc3RhdGljIGJvb2wgaXNBcHBsZU1haWwgPSBtYWluQnVuZGxl
SXNFcXVhbFRvKCJjb20uYXBwbGUubWFpbCIpOworICAgIHN0YXRpYyBib29sIGlzQXBwbGVNYWls
ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbyhBU0NJSUxpdGVyYWwoImNvbS5hcHBsZS5tYWlsIikpOwog
ICAgIHJldHVybiBpc0FwcGxlTWFpbDsKIH0KIAogYm9vbCBhcHBsaWNhdGlvbklzSVR1bmVzKCkK
IHsKLSAgICBzdGF0aWMgYm9vbCBpc0lUdW5lcyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5h
cHBsZS5pVHVuZXMiKTsKKyAgICBzdGF0aWMgYm9vbCBpc0lUdW5lcyA9IG1haW5CdW5kbGVJc0Vx
dWFsVG8oQVNDSUlMaXRlcmFsKCJjb20uYXBwbGUuaVR1bmVzIikpOwogICAgIHJldHVybiBpc0lU
dW5lczsKIH0KIAogYm9vbCBhcHBsaWNhdGlvbklzTWljcm9zb2Z0TWVzc2VuZ2VyKCkKIHsKLSAg
ICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE1lc3NlbmdlciA9IG1haW5CdW5kbGVJc0VxdWFsVG8o
ImNvbS5taWNyb3NvZnQuTWVzc2VuZ2VyIik7CisgICAgc3RhdGljIGJvb2wgaXNNaWNyb3NvZnRN
ZXNzZW5nZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRvKEFTQ0lJTGl0ZXJhbCgiY29tLm1pY3Jvc29m
dC5NZXNzZW5nZXIiKSk7CiAgICAgcmV0dXJuIGlzTWljcm9zb2Z0TWVzc2VuZ2VyOwogfQogCiBi
b29sIGFwcGxpY2F0aW9uSXNBZG9iZUluc3RhbGxlcigpCiB7Ci0gICAgc3RhdGljIGJvb2wgaXNB
ZG9iZUluc3RhbGxlciA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNvbS5hZG9iZS5JbnN0YWxsZXJz
LlNldHVwIik7CisgICAgc3RhdGljIGJvb2wgaXNBZG9iZUluc3RhbGxlciA9IG1haW5CdW5kbGVJ
c0VxdWFsVG8oQVNDSUlMaXRlcmFsKCJjb20uYWRvYmUuSW5zdGFsbGVycy5TZXR1cCIpKTsKICAg
ICByZXR1cm4gaXNBZG9iZUluc3RhbGxlcjsKIH0KIAogYm9vbCBhcHBsaWNhdGlvbklzQU9MSW5z
dGFudE1lc3NlbmdlcigpCiB7Ci0gICAgc3RhdGljIGJvb2wgaXNBT0xJbnN0YW50TWVzc2VuZ2Vy
ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFvbC5haW0uZGVza3RvcCIpOworICAgIHN0YXRp
YyBib29sIGlzQU9MSW5zdGFudE1lc3NlbmdlciA9IG1haW5CdW5kbGVJc0VxdWFsVG8oQVNDSUlM
aXRlcmFsKCJjb20uYW9sLmFpbS5kZXNrdG9wIikpOwogICAgIHJldHVybiBpc0FPTEluc3RhbnRN
ZXNzZW5nZXI7CiB9CiAKIGJvb2wgYXBwbGljYXRpb25Jc01pY3Jvc29mdE15RGF5KCkKIHsKLSAg
ICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdE15RGF5ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29t
Lm1pY3Jvc29mdC5teWRheSIpOworICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0TXlEYXkgPSBt
YWluQnVuZGxlSXNFcXVhbFRvKEFTQ0lJTGl0ZXJhbCgiY29tLm1pY3Jvc29mdC5teWRheSIpKTsK
ICAgICByZXR1cm4gaXNNaWNyb3NvZnRNeURheTsKIH0KIAogYm9vbCBhcHBsaWNhdGlvbklzTWlj
cm9zb2Z0T3V0bG9vaygpCiB7Ci0gICAgc3RhdGljIGJvb2wgaXNNaWNyb3NvZnRPdXRsb29rID0g
bWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLm1pY3Jvc29mdC5PdXRsb29rIik7CisgICAgc3RhdGlj
IGJvb2wgaXNNaWNyb3NvZnRPdXRsb29rID0gbWFpbkJ1bmRsZUlzRXF1YWxUbyhBU0NJSUxpdGVy
YWwoImNvbS5taWNyb3NvZnQuT3V0bG9vayIpKTsKICAgICByZXR1cm4gaXNNaWNyb3NvZnRPdXRs
b29rOwogfQogCiBib29sIGFwcGxpY2F0aW9uSXNRdWlja2VuRXNzZW50aWFscygpCiB7Ci0gICAg
c3RhdGljIGJvb2wgaXNRdWlja2VuRXNzZW50aWFscyA9IG1haW5CdW5kbGVJc0VxdWFsVG8oImNv
bS5pbnR1aXQuUXVpY2tlbkVzc2VudGlhbHMiKTsKKyAgICBzdGF0aWMgYm9vbCBpc1F1aWNrZW5F
c3NlbnRpYWxzID0gbWFpbkJ1bmRsZUlzRXF1YWxUbyhBU0NJSUxpdGVyYWwoImNvbS5pbnR1aXQu
UXVpY2tlbkVzc2VudGlhbHMiKSk7CiAgICAgcmV0dXJuIGlzUXVpY2tlbkVzc2VudGlhbHM7CiB9
CiAKIGJvb2wgYXBwbGljYXRpb25Jc0FwZXJ0dXJlKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBpc0Fw
ZXJ0dXJlID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmFwcGxlLkFwZXJ0dXJlIik7CisgICAg
c3RhdGljIGJvb2wgaXNBcGVydHVyZSA9IG1haW5CdW5kbGVJc0VxdWFsVG8oQVNDSUlMaXRlcmFs
KCJjb20uYXBwbGUuQXBlcnR1cmUiKSk7CiAgICAgcmV0dXJuIGlzQXBlcnR1cmU7CiB9CiAKIGJv
b2wgYXBwbGljYXRpb25Jc1ZlcnNpb25zKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBpc1ZlcnNpb25z
ID0gbWFpbkJ1bmRsZUlzRXF1YWxUbygiY29tLmJsYWNrcGl4ZWwudmVyc2lvbnMiKTsKKyAgICBz
dGF0aWMgYm9vbCBpc1ZlcnNpb25zID0gbWFpbkJ1bmRsZUlzRXF1YWxUbyhBU0NJSUxpdGVyYWwo
ImNvbS5ibGFja3BpeGVsLnZlcnNpb25zIikpOwogICAgIHJldHVybiBpc1ZlcnNpb25zOwogfQog
CiBib29sIGFwcGxpY2F0aW9uSXNIUkJsb2NrKCkKIHsKLSAgICBzdGF0aWMgYm9vbCBpc0hSQmxv
Y2sgPSBtYWluQnVuZGxlSXNFcXVhbFRvKCJjb20uaHJibG9jay50YXguMjAxMCIpOworICAgIHN0
YXRpYyBib29sIGlzSFJCbG9jayA9IG1haW5CdW5kbGVJc0VxdWFsVG8oQVNDSUlMaXRlcmFsKCJj
b20uaHJibG9jay50YXguMjAxMCIpKTsKICAgICByZXR1cm4gaXNIUkJsb2NrOwogfQogCiBib29s
IGFwcGxpY2F0aW9uSXNTb2xpZFN0YXRlTmV0d29ya3NEb3dubG9hZGVyKCkKIHsKLSAgICBzdGF0
aWMgYm9vbCBpc1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIgPSBtYWluQnVuZGxlSXNFcXVh
bFRvKCJjb20uc29saWRzdGF0ZW5ldHdvcmtzLmF3a2hvc3QiKTsKKyAgICBzdGF0aWMgYm9vbCBp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXIgPSBtYWluQnVuZGxlSXNFcXVhbFRvKEFTQ0lJ
TGl0ZXJhbCgiY29tLnNvbGlkc3RhdGVuZXR3b3Jrcy5hd2tob3N0IikpOwogICAgIHJldHVybiBp
c1NvbGlkU3RhdGVOZXR3b3Jrc0Rvd25sb2FkZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA3ZGMzYjJiLi4zMzJiNjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0zNSw5ICszNSw5IEBAIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKQogICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBsb2NhbFNjaGVtZXMsICgpKTsKIAogICAg
IGlmIChsb2NhbFNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQo
ImZpbGUiKTsKKyAgICAgICAgbG9jYWxTY2hlbWVzLmFkZChBU0NJSUxpdGVyYWwoImZpbGUiKSk7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImFwcGxld2Vi
ZGF0YSIpOworICAgICAgICBsb2NhbFNjaGVtZXMuYWRkKEFTQ0lJTGl0ZXJhbCgiYXBwbGV3ZWJk
YXRhIikpOwogI2VuZGlmCiAgICAgfQogCkBAIC01NSw5ICs1NSw5IEBAIHN0YXRpYyBVUkxTY2hl
bWVzTWFwJiBzZWN1cmVTY2hlbWVzKCkKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoVVJMU2NoZW1lc01hcCwgc2VjdXJlU2NoZW1lcywgKCkpOwogCiAgICAgaWYgKHNlY3VyZVNj
aGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNlY3VyZVNjaGVtZXMuYWRkKCJodHRwcyIpOwot
ICAgICAgICBzZWN1cmVTY2hlbWVzLmFkZCgiYWJvdXQiKTsKLSAgICAgICAgc2VjdXJlU2NoZW1l
cy5hZGQoImRhdGEiKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoQVNDSUlMaXRlcmFsKCJo
dHRwcyIpKTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoQVNDSUlMaXRlcmFsKCJhYm91dCIp
KTsKKyAgICAgICAgc2VjdXJlU2NoZW1lcy5hZGQoQVNDSUlMaXRlcmFsKCJkYXRhIikpOwogICAg
IH0KIAogICAgIHJldHVybiBzZWN1cmVTY2hlbWVzOwpAQCAtNjgsMTEgKzY4LDExIEBAIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQogICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzV2l0aFVuaXF1ZU9y
aWdpbnMsICgpKTsKIAogICAgIGlmIChzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5hZGQoImFib3V0Iik7Ci0gICAg
ICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5hZGQoImphdmFzY3JpcHQiKTsKKyAgICAgICAg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZChBU0NJSUxpdGVyYWwoImFib3V0IikpOworICAg
ICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuYWRkKEFTQ0lJTGl0ZXJhbCgiamF2YXNjcmlw
dCIpKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIHdpbGxmdWwgdmlvbGF0aW9uIG9mIEhUTUw1Lgog
ICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
ODg1Ci0gICAgICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5hZGQoImRhdGEiKTsKKyAgICAg
ICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZChBU0NJSUxpdGVyYWwoImRhdGEiKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKQEAgLTgzLDcgKzgz
LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgZW1wdHlEb2N1bWVu
dFNjaGVtZXMsICgpKTsKIAogICAgIGlmIChlbXB0eURvY3VtZW50U2NoZW1lcy5pc0VtcHR5KCkp
Ci0gICAgICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzLmFkZCgiYWJvdXQiKTsKKyAgICAgICAgZW1w
dHlEb2N1bWVudFNjaGVtZXMuYWRkKEFTQ0lJTGl0ZXJhbCgiYWJvdXQiKSk7CiAKICAgICByZXR1
cm4gZW1wdHlEb2N1bWVudFNjaGVtZXM7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBVUkxT
Y2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQogICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBjYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdFNjaGVtZXMsICgpKTsKIAogICAgIGlmIChjYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdFNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lcy5hZGQoImJsb2IiKTsKKyAgICAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3RTY2hlbWVzLmFkZChBU0NJSUxpdGVyYWwoImJsb2IiKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lczsKQEAgLTE1MCw4ICsxNTAsOCBAQCBz
dGF0aWMgVVJMU2NoZW1lc01hcCYgQ09SU0VuYWJsZWRTY2hlbWVzKCkKICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgQ09SU0VuYWJsZWRTY2hlbWVzLCAo
KSk7CiAKICAgICBpZiAoQ09SU0VuYWJsZWRTY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBD
T1JTRW5hYmxlZFNjaGVtZXMuYWRkKCJodHRwIik7Ci0gICAgICAgIENPUlNFbmFibGVkU2NoZW1l
cy5hZGQoImh0dHBzIik7CisgICAgICAgIENPUlNFbmFibGVkU2NoZW1lcy5hZGQoQVNDSUlMaXRl
cmFsKCJodHRwIikpOworICAgICAgICBDT1JTRW5hYmxlZFNjaGVtZXMuYWRkKEFTQ0lJTGl0ZXJh
bCgiaHR0cHMiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIENPUlNFbmFibGVkU2NoZW1lczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IDI2M2U0ZDQuLmQ5ZjAzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcApAQCAtMTgyMywxMCArMTgyMywxMCBAQCBib29sIGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkLCBDYXNlRm9sZGluZ0hhc2g+IERlZmF1
bHRQb3J0c01hcDsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdFBv
cnRzTWFwLCBkZWZhdWx0UG9ydHMsICgpKTsKICAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHko
KSkgewotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwotICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0
cCIsIDIxKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7CisgICAgICAg
IGRlZmF1bHRQb3J0cy5zZXQoQVNDSUlMaXRlcmFsKCJodHRwIiksIDgwKTsKKyAgICAgICAgZGVm
YXVsdFBvcnRzLnNldChBU0NJSUxpdGVyYWwoImh0dHBzIiksIDQ0Myk7CisgICAgICAgIGRlZmF1
bHRQb3J0cy5zZXQoQVNDSUlMaXRlcmFsKCJmdHAiKSwgMjEpOworICAgICAgICBkZWZhdWx0UG9y
dHMuc2V0KEFTQ0lJTGl0ZXJhbCgiZnRwcyIpLCA5OTApOwogICAgIH0KICAgICByZXR1cm4gZGVm
YXVsdFBvcnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsKIH0KQEAgLTE5NDQsNyArMTk0NCw3IEBA
IFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmIChp
bmRleCAhPSBub3RGb3VuZCkgewogICAgICAgICBpZiAoaW5kZXggPiA1KQogICAgICAgICAgICAg
cmV0dXJuIHVybC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5sb3dlcigpOwotICAgICAgICByZXR1
cm4gInRleHQvcGxhaW4iOyAvLyBEYXRhIFVSTHMgd2l0aCBubyBNSU1FIHR5cGUgYXJlIGNvbnNp
ZGVyZWQgdGV4dC9wbGFpbi4KKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFp
biIpOyAvLyBEYXRhIFVSTHMgd2l0aCBubyBNSU1FIHR5cGUgYXJlIGNvbnNpZGVyZWQgdGV4dC9w
bGFpbi4KICAgICB9CiAgICAgcmV0dXJuICIiOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVVJRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcApp
bmRleCA0YTk1M2RjLi4yMWE5OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VVUlELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcApAQCAtNDYs
MTQgKzQ2LDE0IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoMzYpOwogICAg
IGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUocmFuZG9tRGF0YVswXSwgYnVpbGRlciwgOCwg
TG93ZXJjYXNlKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiLSIpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCctJyk7CiAgICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShyYW5kb21EYXRhWzFdID4+
IDE2LCBidWlsZGVyLCA0LCBMb3dlcmNhc2UpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCItNCIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCItNCIsIDIpOwogICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhl
ZFNpemUocmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIGJ1aWxkZXIsIDMsIExvd2VyY2FzZSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnLScpOwogICAg
IGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4
LCBidWlsZGVyLCAxLCBMb3dlcmNhc2UpOwogICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNp
emUoKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAwMGZmZiwgYnVpbGRlciwgMywgTG93ZXJj
YXNlKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiLSIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7
CiAgICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShyYW5kb21EYXRhWzJdICYgMHgwMDAw
ZmZmZiwgYnVpbGRlciwgNCwgTG93ZXJjYXNlKTsKICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4
ZWRTaXplKHJhbmRvbURhdGFbM10sIGJ1aWxkZXIsIDgsIExvd2VyY2FzZSk7CiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuY3BwCmluZGV4IDkzNDAyNGEuLjE0MjUyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcApAQCAtNDksNyArNDksNyBAQCBI
UlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZShmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHVuc2ln
bmVkIGVsZXZhdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKGludCBlbGV2YXRpb24gPSBNaW5FbGV2
YXRpb247IGVsZXZhdGlvbiA8PSBNYXhFbGV2YXRpb247IGVsZXZhdGlvbiArPSBSYXdFbGV2YXRp
b25BbmdsZVNwYWNpbmcpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+
IGhydGZFbGV2YXRpb24gPSBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KCJDb21wb3Np
dGUiLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFJU
RkVsZXZhdGlvbj4gaHJ0ZkVsZXZhdGlvbiA9IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1Ympl
Y3QoQVNDSUlMaXRlcmFsKCJDb21wb3NpdGUiKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKICAg
ICAgICAgQVNTRVJUKGhydGZFbGV2YXRpb24uZ2V0KCkpOwogICAgICAgICBpZiAoIWhydGZFbGV2
YXRpb24uZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbQppbmRleCBkY2JmZmE1Li43YmU1Mzc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EubW0KQEAgLTUx
LDcgKzUxLDcgQEAgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZSh1bmljaGFyIGNoYXJD
b2RlKQogCiAgICAgICAgIC8vICJBbHQiCiAgICAgICAgIGNhc2UgTlNNZW51RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJBbHQiKTsKIAogICAgICAgICAvLyAiQXBwcyIKICAgICAgICAgLy8gIkJyb3dzZXJCYWNr
IgpAQCAtNjQsNyArNjQsNyBAQCBTdHJpbmcga2V5SWRlbnRpZmllckZvckNoYXJDb2RlKHVuaWNo
YXIgY2hhckNvZGUpCiAKICAgICAgICAgLy8gIkNsZWFyIgogICAgICAgICBjYXNlIE5TQ2xlYXJM
aW5lRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIkNsZWFyIik7CiAKICAgICAgICAgLy8gIkNvZGVJbnB1dCIK
ICAgICAgICAgLy8gIkNvbXBvc2UiCkBAIC03NiwxMDAgKzc2LDEwMCBAQCBTdHJpbmcga2V5SWRl
bnRpZmllckZvckNoYXJDb2RlKHVuaWNoYXIgY2hhckNvZGUpCiAKICAgICAgICAgLy8gIkRvd24i
CiAgICAgICAgIGNhc2UgTlNEb3duQXJyb3dGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVy
biAiRG93biI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJEb3duIik7CiAgICAg
ICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgTlNFbmRGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkVuZCIpOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgMHgzOiBjYXNlIDB4QTogY2FzZSAweEQ6
IC8vIE1hY2ludG9zaCBjYWxscyB0aGUgb25lIG9uIHRoZSBtYWluIGtleWJvYXJkIFJldHVybiwg
YnV0IFdpbmRvd3MgY2FsbHMgaXQgRW50ZXIsIHNvIHdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0aGUg
RE9NCi0gICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIkVudGVyIik7CiAKICAgICAgICAgLy8gIkVyYXNlRW9mIgogCiAgICAgICAgIC8v
ICJFeGVjdXRlIgogICAgICAgICBjYXNlIE5TRXhlY3V0ZUZ1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkV4
ZWN1dGUiKTsKIAogICAgICAgICAvLyAiRXhzZWwiCiAKICAgICAgICAgLy8gIkYxIgogICAgICAg
ICBjYXNlIE5TRjFGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjEiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjEiKTsKICAgICAgICAgLy8gIkYyIgogICAgICAg
ICBjYXNlIE5TRjJGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjIiKTsKICAgICAgICAgLy8gIkYzIgogICAgICAg
ICBjYXNlIE5TRjNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjMiKTsKICAgICAgICAgLy8gIkY0IgogICAgICAg
ICBjYXNlIE5TRjRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjQiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjQiKTsKICAgICAgICAgLy8gIkY1IgogICAgICAg
ICBjYXNlIE5TRjVGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjUiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjUiKTsKICAgICAgICAgLy8gIkY2IgogICAgICAg
ICBjYXNlIE5TRjZGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjYiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjYiKTsKICAgICAgICAgLy8gIkY3IgogICAgICAg
ICBjYXNlIE5TRjdGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjciOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjciKTsKICAgICAgICAgLy8gIkY4IgogICAgICAg
ICBjYXNlIE5TRjhGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjgiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjgiKTsKICAgICAgICAgLy8gIkY5IgogICAgICAg
ICBjYXNlIE5TRjlGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjkiOworICAgICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjkiKTsKICAgICAgICAgLy8gIkYxMCIKICAgICAg
ICAgY2FzZSBOU0YxMEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTAiOworICAg
ICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjEwIik7CiAgICAgICAgIC8vICJGMTEiCiAg
ICAgICAgIGNhc2UgTlNGMTFGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsK
KyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkYxMSIpOwogICAgICAgICAvLyAiRjEy
IgogICAgICAgICBjYXNlIE5TRjEyRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
MiI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGMTIiKTsKICAgICAgICAgLy8g
IkYxMyIKICAgICAgICAgY2FzZSBOU0YxM0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjEzIik7CiAgICAgICAg
IC8vICJGMTQiCiAgICAgICAgIGNhc2UgTlNGMTRGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkYxNCIpOwogICAg
ICAgICAvLyAiRjE1IgogICAgICAgICBjYXNlIE5TRjE1RnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYxNSI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGMTUiKTsK
ICAgICAgICAgLy8gIkYxNiIKICAgICAgICAgY2FzZSBOU0YxNkZ1bmN0aW9uS2V5OgotICAgICAg
ICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjE2
Iik7CiAgICAgICAgIC8vICJGMTciCiAgICAgICAgIGNhc2UgTlNGMTdGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
IkYxNyIpOwogICAgICAgICAvLyAiRjE4IgogICAgICAgICBjYXNlIE5TRjE4RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICByZXR1cm4gIkYxOCI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJGMTgiKTsKICAgICAgICAgLy8gIkYxOSIKICAgICAgICAgY2FzZSBOU0YxOUZ1bmN0aW9u
S2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiRjE5Iik7CiAgICAgICAgIC8vICJGMjAiCiAgICAgICAgIGNhc2UgTlNGMjBGdW5j
dGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIkYyMCIpOwogICAgICAgICAvLyAiRjIxIgogICAgICAgICBjYXNlIE5TRjIx
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJGMjEiKTsKICAgICAgICAgLy8gIkYyMiIKICAgICAgICAgY2FzZSBO
U0YyMkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjIyIik7CiAgICAgICAgIC8vICJGMjMiCiAgICAgICAgIGNh
c2UgTlNGMjNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkYyMyIpOwogICAgICAgICAvLyAiRjI0IgogICAgICAg
ICBjYXNlIE5TRjI0RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyNCI7CisgICAg
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGMjQiKTsKIAogICAgICAgICAvLyAiRmluYWxN
b2RlIgogCiAgICAgICAgIC8vICJGaW5kIgogICAgICAgICBjYXNlIE5TRmluZEZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJGaW5kIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIkZpbmQiKTsKIAogICAgICAgICAvLyAiRnVsbFdpZHRoIgogICAgICAgICAvLyAiSGFs
ZldpZHRoIgpAQCAtMTc4LDE2ICsxNzgsMTYgQEAgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JDaGFy
Q29kZSh1bmljaGFyIGNoYXJDb2RlKQogCiAgICAgICAgIC8vICJIZWxwIgogICAgICAgICBjYXNl
IE5TSGVscEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJIZWxwIjsKKyAgICAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkhlbHAiKTsKIAogICAgICAgICAvLyAiSGlyYWdhbmEi
CiAKICAgICAgICAgLy8gIkhvbWUiCiAgICAgICAgIGNhc2UgTlNIb21lRnVuY3Rpb25LZXk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiSG9tZSIpOwogICAgICAgICAvLyAiSW5zZXJ0IgogICAgICAgICBjYXNlIE5TSW5zZXJ0RnVu
Y3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJJbnNlcnQiKTsKIAogICAgICAgICAvLyAiSmFwYW5lc2VIaXJhZ2Fu
YSIKICAgICAgICAgLy8gIkphcGFuZXNlS2F0YWthbmEiCkBAIC0yMDIsNyArMjAyLDcgQEAgU3Ry
aW5nIGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZSh1bmljaGFyIGNoYXJDb2RlKQogCiAgICAgICAg
IC8vICJMZWZ0IgogICAgICAgICBjYXNlIE5TTGVmdEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTGVm
dCIpOwogCiAgICAgICAgIC8vICJNZXRhIgogICAgICAgICAvLyAiTWVkaWFOZXh0VHJhY2siCkBA
IC0yMTIsNTkgKzIxMiw1OSBAQCBTdHJpbmcga2V5SWRlbnRpZmllckZvckNoYXJDb2RlKHVuaWNo
YXIgY2hhckNvZGUpCiAKICAgICAgICAgLy8gIk1vZGVDaGFuZ2UiCiAgICAgICAgIGNhc2UgTlNN
b2RlU3dpdGNoRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIk1vZGVDaGFuZ2UiOwor
ICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTW9kZUNoYW5nZSIpOwogCiAgICAgICAg
IC8vICJOb25jb252ZXJ0IgogICAgICAgICAvLyAiTnVtTG9jayIKIAogICAgICAgICAvLyAiUGFn
ZURvd24iCiAgICAgICAgIGNhc2UgTlNQYWdlRG93bkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAg
cmV0dXJuICJQYWdlRG93biI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQYWdl
RG93biIpOwogICAgICAgICAvLyAiUGFnZVVwIgogICAgICAgICBjYXNlIE5TUGFnZVVwRnVuY3Rp
b25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJQYWdlVXAiKTsKIAogICAgICAgICAvLyAiUGFzdGUiCiAKICAgICAgICAg
Ly8gIlBhdXNlIgogICAgICAgICBjYXNlIE5TUGF1c2VGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGF1c2Ui
KTsKIAogICAgICAgICAvLyAiUGxheSIKICAgICAgICAgLy8gIlByZXZpb3VzQ2FuZGlkYXRlIgog
CiAgICAgICAgIC8vICJQcmludFNjcmVlbiIKICAgICAgICAgY2FzZSBOU1ByaW50U2NyZWVuRnVu
Y3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIlByaW50U2NyZWVuIik7CiAKICAgICAgICAgLy8gIlByb2Nl
c3MiCiAgICAgICAgIC8vICJQcm9wcyIKIAogICAgICAgICAvLyAiUmlnaHQiCiAgICAgICAgIGNh
c2UgTlNSaWdodEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlJpZ2h0IjsK
KyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlJpZ2h0Iik7CiAKICAgICAgICAgLy8g
IlJvbWFuQ2hhcmFjdGVycyIKIAogICAgICAgICAvLyAiU2Nyb2xsIgogICAgICAgICBjYXNlIE5T
U2Nyb2xsTG9ja0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJTY3JvbGwiOworICAg
ICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiU2Nyb2xsIik7CiAgICAgICAgIC8vICJTZWxl
Y3QiCiAgICAgICAgIGNhc2UgTlNTZWxlY3RGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVy
biAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlNlbGVjdCIpOwog
CiAgICAgICAgIC8vICJTZWxlY3RNZWRpYSIKICAgICAgICAgLy8gIlNoaWZ0IgogCiAgICAgICAg
IC8vICJTdG9wIgogICAgICAgICBjYXNlIE5TU3RvcEZ1bmN0aW9uS2V5OgotICAgICAgICAgICAg
cmV0dXJuICJTdG9wIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlN0b3AiKTsK
ICAgICAgICAgLy8gIlVwIgogICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJV
cCIpOwogICAgICAgICAvLyAiVW5kbyIKICAgICAgICAgY2FzZSBOU1VuZG9GdW5jdGlvbktleToK
LSAgICAgICAgICAgIHJldHVybiAiVW5kbyI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJVbmRvIik7CiAKICAgICAgICAgLy8gIlZvbHVtZURvd24iCiAgICAgICAgIC8vICJWb2x1
bWVNdXRlIgpAQCAtMjc0LDM4ICsyNzQsMzggQEAgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JDaGFy
Q29kZSh1bmljaGFyIGNoYXJDb2RlKQogCiAgICAgICAgIC8vIE1vcmUgZnVuY3Rpb24ga2V5cywg
bm90IGluIHRoZSBrZXkgaWRlbnRpZmllciBzcGVjaWZpY2F0aW9uLgogICAgICAgICBjYXNlIE5T
RjI1RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyNSI7CisgICAgICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJGMjUiKTsKICAgICAgICAgY2FzZSBOU0YyNkZ1bmN0aW9uS2V5
OgotICAgICAgICAgICAgcmV0dXJuICJGMjYiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRjI2Iik7CiAgICAgICAgIGNhc2UgTlNGMjdGdW5jdGlvbktleToKLSAgICAgICAgICAg
IHJldHVybiAiRjI3IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkYyNyIpOwog
ICAgICAgICBjYXNlIE5TRjI4RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYyOCI7
CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGMjgiKTsKICAgICAgICAgY2FzZSBO
U0YyOUZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMjkiOworICAgICAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjI5Iik7CiAgICAgICAgIGNhc2UgTlNGMzBGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIHJldHVybiAiRjMwIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIkYzMCIpOwogICAgICAgICBjYXNlIE5TRjMxRnVuY3Rpb25LZXk6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYzMSI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGMzEiKTsK
ICAgICAgICAgY2FzZSBOU0YzMkZ1bmN0aW9uS2V5OgotICAgICAgICAgICAgcmV0dXJuICJGMzIi
OworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjMyIik7CiAgICAgICAgIGNhc2Ug
TlNGMzNGdW5jdGlvbktleToKLSAgICAgICAgICAgIHJldHVybiAiRjMzIjsKKyAgICAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIkYzMyIpOwogICAgICAgICBjYXNlIE5TRjM0RnVuY3Rpb25L
ZXk6Ci0gICAgICAgICAgICByZXR1cm4gIkYzNCI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJGMzQiKTsKICAgICAgICAgY2FzZSBOU0YzNUZ1bmN0aW9uS2V5OgotICAgICAgICAg
ICAgcmV0dXJuICJGMzUiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjM1Iik7
CiAKICAgICAgICAgLy8gVHVybiAweDdGIGludG8gMHgwOCwgYmVjYXVzZSBiYWNrc3BhY2UgbmVl
ZHMgdG8gYWx3YXlzIGJlIDB4MDguCiAgICAgICAgIGNhc2UgMHg3RjoKLSAgICAgICAgICAgIHJl
dHVybiAiVSswMDA4IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlUrMDAwOCIp
OwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAg
ICAgICBjYXNlIE5TRGVsZXRlRnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3
RiI7CisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJVKzAwN0YiKTsKIAogICAgICAg
ICAvLyBBbHdheXMgdXNlIDB4MDkgZm9yIHRhYiBpbnN0ZWFkIG9mIEFwcEtpdCdzIGJhY2t0YWIg
Y2hhcmFjdGVyLgogICAgICAgICBjYXNlIE5TQmFja1RhYkNoYXJhY3RlcjoKLSAgICAgICAgICAg
IHJldHVybiAiVSswMDA5IjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlUrMDAw
OSIpOwogCiAgICAgICAgIGNhc2UgTlNCZWdpbkZ1bmN0aW9uS2V5OgogICAgICAgICBjYXNlIE5T
QnJlYWtGdW5jdGlvbktleToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcAppbmRleCBkMWI5MmI3Li43MDVmOGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9u
dERhdGEuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgU2VnbWVudGVkRm9udERhdGE6OmlzU2Vn
bWVudGVkKCkgY29uc3QKICNpZm5kZWYgTkRFQlVHCiBTdHJpbmcgU2VnbWVudGVkRm9udERhdGE6
OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIltzZWdtZW50ZWQgZm9udF0iOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIltzZWdtZW50ZWQgZm9udF0iKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0
YS5jcHAKaW5kZXggOTQxNzQxNC4uMWFjODlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtMjUxLDkgKzI1MSw5IEBA
IFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IFNpbXBsZUZvbnREYXRhOjpub25TeW50aGV0aWNJ
dGFsaWNGb250RGF0YSgpIGNvbnN0CiBTdHJpbmcgU2ltcGxlRm9udERhdGE6OmRlc2NyaXB0aW9u
KCkgY29uc3QKIHsKICAgICBpZiAoaXNTVkdGb250KCkpCi0gICAgICAgIHJldHVybiAiW1NWRyBm
b250XSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIltTVkcgZm9udF0iKTsKICAgICBp
ZiAoaXNDdXN0b21Gb250KCkpCi0gICAgICAgIHJldHVybiAiW2N1c3RvbSBmb250XSI7CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIltjdXN0b20gZm9udF0iKTsKIAogICAgIHJldHVybiBw
bGF0Zm9ybURhdGEoKS5kZXNjcmlwdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMmM4ODg3
YS4uYjY3ZWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yMzcsMTQgKzIzNywxNCBAQCBzdGF0aWMg
U3RyaW5nIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7
CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybToKLSAgICAgICAgcmV0dXJuICJ0cmFuc2Zvcm0iOworICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJ0cmFuc2Zvcm0iKTsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFj
aXR5OgotICAgICAgICByZXR1cm4gIm9wYWNpdHkiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJvcGFjaXR5Iik7CiAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9y
OgotICAgICAgICByZXR1cm4gImJhY2tncm91bmRDb2xvciI7CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImJhY2tncm91bmRDb2xvciIpOwogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdEZpbHRlcjoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgICAgIHJldHVybiAiZmls
dGVycyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZpbHRlcnMiKTsKICNlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCkBAIC04NjcsNyArODY3LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKICAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xh
eWVyRm9yQmFja2dyb3VuZENvbG9yOwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3Jl
YXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMp
OwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmFtZSgi
QmFja2dyb3VuZCBDb2xvciBMYXllciIpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5z
ZXROYW1lKEFTQ0lJTGl0ZXJhbCgiQmFja2dyb3VuZCBDb2xvciBMYXllciIpKTsKICNlbmRpZgog
ICAgICAgICAgICAgY29udGVudHNMYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0x
OTE1LDcgKzE5MTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFn
ZSgpCiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmdldCgpKSB7CiAgICAgICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMYXllciwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgbV9jb250
ZW50c0xheWVyLT5zZXROYW1lKCJJbWFnZSBMYXllciIpOworICAgICAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXROYW1lKEFTQ0lJTGl0ZXJhbCgiSW1hZ2UgTGF5ZXIiKSk7CiAjZW5kaWYKICAg
ICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAg
ICAgICAgICAgLy8gbV9jb250ZW50c0xheWVyIHdpbGwgYmUgcGFyZW50ZWQgYnkgdXBkYXRlU3Vi
bGF5ZXJMaXN0CkBAIC0xOTk4LDcgKzE5OTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBk
YXRlQ29udGVudHNSZWN0cygpCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xh
eWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KCkpOwogI2lmbmRlZiBOREVCVUcKLSAgICAg
ICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5zZXROYW1lKCJDb250ZW50cyBDbGlwcGlu
ZyIpOworICAgICAgICAgICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnNldE5hbWUoQVNDSUlM
aXRlcmFsKCJDb250ZW50cyBDbGlwcGluZyIpKTsKICNlbmRpZgogICAgICAgICAgICAgbV9jb250
ZW50c0xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwogICAgICAgICAgICAgbV9jb250ZW50
c0NsaXBwaW5nTGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAKaW5kZXggOTFkMzk0MC4uMDhkNTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNDk4LDcg
KzQ5OCw3IEBAIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFRpbGVDb250cm9sbGVyOjpjcmVhdGVU
aWxlTGF5ZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsCiAgICAgbGF5ZXItPnNldEVkZ2VBbnRp
YWxpYXNpbmdNYXNrKDApOwogICAgIGxheWVyLT5zZXRPcGFxdWUobV90aWxlc0FyZU9wYXF1ZSk7
CiAjaWZuZGVmIE5ERUJVRwotICAgIGxheWVyLT5zZXROYW1lKCJUaWxlIik7CisgICAgbGF5ZXIt
PnNldE5hbWUoQVNDSUlMaXRlcmFsKCJUaWxlIikpOwogI2VuZGlmCiAKICAgICBmbG9hdCB0ZW1w
b3JhcnlTY2FsZUZhY3RvciA9IG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVy
Q29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhtX3RpbGVDYWNoZUxheWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAppbmRl
eCA1ZmNkNTVhLi45N2JlYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUdyaWQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFRpbGVHcmlkOjpUaWxlR3Jp
ZChUaWxlQ29udHJvbGxlciYgY29udHJvbGxlcikKICAgICAsIG1fY29ob3J0UmVtb3ZhbFRpbWVy
KHRoaXMsICZUaWxlR3JpZDo6Y29ob3J0UmVtb3ZhbFRpbWVyRmlyZWQpCiB7CiAjaWZuZGVmIE5E
RUJVRwotICAgIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuc2V0TmFtZSgiVGlsZUdyaWQgQ29udGFp
bmVyIExheWVyIik7CisgICAgbV9jb250YWluZXJMYXllci5nZXQoKS5zZXROYW1lKEFTQ0lJTGl0
ZXJhbCgiVGlsZUdyaWQgQ29udGFpbmVyIExheWVyIikpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
aW5kZXggYzc2MTM4Ny4uZjExZWQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBz
dGF0aWMgU3RyaW5nIENHSW1hZ2VUb0RhdGFVUkwoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgZAogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+
IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCkpOwogICAgIGlmICghQ0dJbWFnZUVuY29kZVRvRGF0YShpbWFnZSwgdXRpLmdldCgpLCBxdWFs
aXR5LCBkYXRhLmdldCgpKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwiOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJkYXRhOiwiKTsKIAogICAgIFZlY3RvcjxjaGFyPiBiYXNlNjREYXRh
OwogICAgIGJhc2U2NEVuY29kZShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFH
ZXRMZW5ndGgoZGF0YS5nZXQoKSksIGJhc2U2NERhdGEpOwpAQCAtNDk3LDEyICs0OTcsMTIgQEAg
U3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgZG91YmxlKiBxdWFsaXR5LCBDb28KICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBh
bHBoYSBjaGFubmVsLCBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2Yg
YmxhY2suCiAgICAgICAgIHByZW11bHRpcGxpZWREYXRhID0gZ2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YShJbnRSZWN0KEludFBvaW50KDAsIDApLCBsb2dpY2FsU2l6ZSgpKSk7CiAgICAgICAgIGlm
ICghcHJlbXVsdGlwbGllZERhdGEpCi0gICAgICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAg
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkYXRhOiwiKTsKIAogICAgICAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKICAgICAgICAgZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIHByZW11bHRpcGxpZWRE
YXRhLT5kYXRhKCksIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCkgKiBsb2dpY2FsU2l6ZSgpLmhl
aWdodCgpLCAwKSk7CiAgICAgICAgIGlmICghZGF0YVByb3ZpZGVyKQotICAgICAgICAgICAgcmV0
dXJuICJkYXRhOiwiOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGF0YTosIik7
CiAKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobG9naWNhbFNpemUoKS53
aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgNCAqIGxvZ2ljYWxTaXplKCku
d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVJHQkNv
bG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcExhc3QsCkBAIC01MzgsNyArNTM4LDcgQEAgU3RyaW5nIEltYWdlRGF0YVRvRGF0YVVS
TChjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QK
ICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsLCBzbyB3ZSBoYXZl
IHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2YgYmxhY2suCiAgICAgICAgIHNpemVfdCBz
aXplID0gNCAqIHNvdXJjZS53aWR0aCgpICogc291cmNlLmhlaWdodCgpOwogICAgICAgICBpZiAo
IXByZW11bHRpcGxpZWREYXRhLnRyeVJlc2VydmVDYXBhY2l0eShzaXplKSkKLSAgICAgICAgICAg
IHJldHVybiAiZGF0YTosIjsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRhdGE6
LCIpOwogCiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciA9IHByZW11bHRpcGxpZWREYXRh
LmRhdGEoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpICs9IDQpIHsK
QEAgLTU2MSw3ICs1NjEsNyBAQCBTdHJpbmcgSW1hZ2VEYXRhVG9EYXRhVVJMKGNvbnN0IEltYWdl
RGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdAogICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyOwogICAgIGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLCA0ICogc291cmNlLndp
ZHRoKCkgKiBzb3VyY2UuaGVpZ2h0KCksIDApKTsKICAgICBpZiAoIWRhdGFQcm92aWRlcikKLSAg
ICAgICAgcmV0dXJuICJkYXRhOiwiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkYXRh
OiwiKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICBpbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZShzb3VyY2Uud2lkdGgoKSwgc291cmNlLmhlaWdodCgpLCA4LCAz
MiwgNCAqIHNvdXJjZS53aWR0aCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCA0MDIyZmFkLi5lZjhm
YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBQREZEb2N1bWVudEltYWdl
Ojp+UERGRG9jdW1lbnRJbWFnZSgpCiAKIFN0cmluZyBQREZEb2N1bWVudEltYWdlOjpmaWxlbmFt
ZUV4dGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICJwZGYiOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoInBkZiIpOwogfQogCiBGbG9hdFNpemUgUERGRG9jdW1lbnRJbWFnZTo6c2l6ZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcAppbmRleCA1ZTAyYzQyLi43M2ZmZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTkxLDcg
KzkxLDcgQEAgVGV4dFN0cmVhbSYgRkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50
KTsKICAgICB0cyA8PCAiW2ZlQmxlbmQiOwogICAgIEZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbih0cyk7Ci0gICAgdHMgPDwgIiBtb2RlPVwiIiA8PCAobV9tb2RlID09IEJsZW5k
TW9kZU5vcm1hbCA/ICJub3JtYWwiIDogY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZVNv
dXJjZU92ZXIsIG1fbW9kZSkpIDw8ICJcIl1cbiI7CisgICAgdHMgPDwgIiBtb2RlPVwiIiA8PCAo
bV9tb2RlID09IEJsZW5kTW9kZU5vcm1hbCA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBjb21w
b3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSkgPDwgIlwiXVxu
IjsKICAgICBpbnB1dEVmZmVjdCgwKS0+ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cywgaW5kZW50
ICsgMSk7CiAgICAgaW5wdXRFZmZlY3QoMSktPmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMsIGlu
ZGVudCArIDEpOwogICAgIHJldHVybiB0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAppbmRleCAyYjk2Y2I1Li5mZWFk
MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJh
d2luZ0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuY3BwCkBAIC05NywxNyArOTcsMTcgQEAgUGFzc1JlZlB0cjxEcmF3aW5n
QnVmZmVyPiBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnMKIHsKICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCk7CiAgICAgYm9vbCBtdWx0aXNhbXBsZVN1cHBvcnRlZCA9IGV4dGVuc2lvbnMtPm1h
eVN1cHBvcnRNdWx0aXNhbXBsaW5nKCkKLSAgICAgICAgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBw
b3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICAmJiBleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX3JnYjhfcmdiYTgiKTsKKyAgICAgICAgJiYgZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iikp
CisgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKEFTQ0lJTGl0ZXJhbCgiR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKKyAgICAgICAgJiYgZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoQVNDSUlMaXRlcmFsKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKTsKICAgICBpZiAobXVsdGlzYW1w
bGVTdXBwb3J0ZWQpIHsKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5H
TEVfZnJhbWVidWZmZXJfYmxpdCIpOwotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwotICAgICAgICBleHRlbnNpb25z
LT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOworICAgICAgICBleHRlbnNpb25z
LT5lbnN1cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
KTsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZChBU0NJSUxpdGVyYWwoIkdMX0FO
R0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpOworICAgICAgICBleHRlbnNpb25zLT5lbnN1
cmVFbmFibGVkKEFTQ0lJTGl0ZXJhbCgiR0xfT0VTX3JnYjhfcmdiYTgiKSk7CiAgICAgfQotICAg
IGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMo
IkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgcGFja2VkRGVwdGhTdGVu
Y2lsU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiKSk7CiAgICAgaWYgKHBhY2tlZERlcHRoU3RlbmNpbFN1cHBv
cnRlZCkKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIik7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoQVNDSUlM
aXRlcmFsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSk7CiAgICAgUmVmUHRyPERyYXdp
bmdCdWZmZXI+IGRyYXdpbmdCdWZmZXIgPSBhZG9wdFJlZihuZXcgRHJhd2luZ0J1ZmZlcihjb250
ZXh0LCBzaXplLCBtdWx0aXNhbXBsZVN1cHBvcnRlZCwgcGFja2VkRGVwdGhTdGVuY2lsU3VwcG9y
dGVkLCBwcmVzZXJ2ZSwgYWxwaGEpKTsKICAgICByZXR1cm4gKGRyYXdpbmdCdWZmZXItPm1fY29u
dGV4dCkgPyBkcmF3aW5nQnVmZmVyLnJlbGVhc2UoKSA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQppbmRleCA2OTAy
MWE1Li4yZDkzZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q2FjaGVNYWMubW0KQEAgLTE2NSw3ICsxNjUsNyBAQCBQYXNzUmVmUHRyPFNp
bXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OnNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdAogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IGRlc2NyaXB0
aW9uLmZhbWlseUF0KGkpOwogICAgICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBzdGF0aWMgU3RyaW5nKiBtYXRjaFdvcmRzWzNdID0geyBu
ZXcgU3RyaW5nKCJBcmFiaWMiKSwgbmV3IFN0cmluZygiUGFzaHRvIiksIG5ldyBTdHJpbmcoIlVy
ZHUiKSB9OworICAgICAgICBzdGF0aWMgU3RyaW5nKiBtYXRjaFdvcmRzWzNdID0geyBuZXcgU3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiQXJhYmljIikpLCBuZXcgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiUGFz
aHRvIikpLCBuZXcgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVXJkdSIpKSB9OwogICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBnZWV6YVN0ciwgKCJHZWV6
YSBQcm8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgMyAmJiAhc2ltcGxlRm9udERhdGE7ICsraikKICAgICAgICAgICAg
IGlmIChmYW1pbHkuY29udGFpbnMoKm1hdGNoV29yZHNbal0sIGZhbHNlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnMzRE9wZW5HTC5jcHAKaW5kZXggNDY2MjI4Ni4uOWIzZDUxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTC5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIGJvb2wgRXh0ZW5zaW9uczNET3BlbkdM
OjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJl
ICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNp
b25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIp
KTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucyhBU0NJSUxpdGVyYWwoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSIpKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewot
ICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2lu
c3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJu
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoQVNDSUlM
aXRlcmFsKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKSkKKyAgICAgICAgICAgICYmIChtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9BUkJfZHJhd19pbnN0
YW5jZWQiKSkgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKEFTQ0lJTGl0ZXJhbCgi
R0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpKTsKICAgICB9CiAKICAgICAvLyBEZXNrdG9wIEdMIGFs
d2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KQEAgLTE3Niw3ICsxNzYsNyBAQCBib29s
IEV4dGVuc2lvbnMzRE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0
IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4
dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4
dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKEFTQ0lJTGl0ZXJhbCgiR0xfQVJCX3RleHR1
cmVfZmxvYXQiKSkgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKEFTQ0lJTGl0ZXJh
bCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5
X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsK
QEAgLTE4NSw3ICsxODUsNyBAQCBib29sIEV4dGVuc2lvbnMzRE9wZW5HTDo6c3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2VsaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdmVydGV4X2FycmF5
X29iamVjdCIpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKEFTQ0lJTGl0ZXJhbCgiR0xfQVBQTEVfdmVy
dGV4X2FycmF5X29iamVjdCIpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTk4LDE0ICsxOTgsMTQg
QEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdM
X0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9FWFRf
c2hhZGVyX3RleHR1cmVfbG9kIikpOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhBU0NJSUxpdGVyYWwo
IkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKTsKIAogICAgIGlmIChuYW1lID09
ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
R1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoQVNDSUlMaXRlcmFsKCJHTF9BUkJfZHJhd19idWZmZXJzIikpOwogI2Vsc2UKICAg
ICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggZmQ1MzU0NS4uMDc1MGU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TENvbW1vbi5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbjo6aW5pdGlhbGl6ZUF2YWlsYWJsZUV4dGVuc2lvbnMoKQogewogICAgIFN0cmluZyBleHRl
bnNpb25zU3RyaW5nID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIFZlY3RvcjxTdHJpbmc+IGF2YWls
YWJsZUV4dGVuc2lvbnM7Ci0gICAgZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgiICIsIGF2YWlsYWJs
ZUV4dGVuc2lvbnMpOworICAgIGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnLCBhdmFpbGFibGVF
eHRlbnNpb25zKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF2YWlsYWJsZUV4dGVuc2lv
bnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQoYXZhaWxh
YmxlRXh0ZW5zaW9uc1tpXSk7CiAgICAgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggNTZmOWNl
Yy4uOGZhYmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKGNvbnN0IElu
dFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdl
IGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9F
WFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBv
cnRzKEFTQ0lJTGl0ZXJhbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpKQogICAgICAg
ICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VY
VDsKICAgICAgICAgZWxzZQogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDYwODcwNmUuLjVjYTk2NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtMTMwLDEw
ICsxMzAsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwo
Y29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW4KICAgICAgICAgICAgIG1fYXR0cnMu
c3RlbmNpbCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAg
ICAgICAgaWYgKCFleHRlbnNpb25zLT5tYXlTdXBwb3J0TXVsdGlzYW1wbGluZygpIHx8ICFleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSB8fCBp
c0dMRVMyQ29tcGxpYW50KCkpCisgICAgICAgIGlmICghZXh0ZW5zaW9ucy0+bWF5U3VwcG9ydE11
bHRpc2FtcGxpbmcoKSB8fCAhZXh0ZW5zaW9ucy0+c3VwcG9ydHMoQVNDSUlMaXRlcmFsKCJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKSB8fCBpc0dMRVMyQ29tcGxpYW50KCkpCiAg
ICAgICAgICAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZChBU0NJ
SUxpdGVyYWwoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpOwogICAgIH0KIH0K
IApAQCAtMTM4MCw3ICsxMzgwLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbm1h
bmdsZWRJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXSwgR0MzRHMKIHsKICAgICBM
T0coV2ViR0wsICJXYXM6ICVzIiwgbG9nLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAoIndlYmdsX1swMTIzNDU2Nzg5YWJjZGVmQUJDREVG
XSsiLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CisgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biByZWdFeHAoQVNDSUlMaXRlcmFsKCJ3ZWJnbF9bMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRl0rIiks
IFRleHRDYXNlU2Vuc2l0aXZlKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcHJvY2Vzc2VkTG9nOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLm1tCmluZGV4IDE1ODI4MDcuLmFhMjUyODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KQEAg
LTIxNSwyMiArMjE1LDIyIEBAIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVu
dCogZXZlbnQpCiAgICAgICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7CiAgICAgICAgICAg
ICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCiAgICAgICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0
IENvbW1hbmQKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJNZXRhIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTWV0YSIpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCJDYXBzTG9jayIpOworICAgICAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
IkNhcHNMb2NrIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIDU2OiAvLyBM
ZWZ0IFNoaWZ0CiAgICAgICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAotICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoIlNoaWZ0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiU2hpZnQiKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2Ug
NTg6IC8vIExlZnQgQWx0CiAgICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJBbHQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJBbHQiKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2Ug
NTk6IC8vIExlZnQgQ3RybAogICAgICAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAg
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkNvbnRyb2wiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJDb250cm9sIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjQwLDcgKzI0MCw3IEBAIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVudCog
ZXZlbnQpCiAgICAgTlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzXTsKICAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKSB7CiAgICAgICAgIExPRyhFdmVudHMsICJy
ZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDog
JXUiLCBbcyBsZW5ndGhdKTsKLSAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOworICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJVbmlkZW50aWZpZWQiKTsKICAgICB9CiAgICAgcmV0dXJu
IGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKIH0KQEAg
LTQ4NSwyMCArNDg1LDIwIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBBbHdheXMgdXNlIDEzIGZv
ciBFbnRlci9SZXR1cm4gLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50
IGNoYXJhY3RlciBmb3IgRW50ZXIuCiAgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29k
ZSA9PSBWS19SRVRVUk4pIHsKLSAgICAgICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAgICAgICAg
ICBtX3VubW9kaWZpZWRUZXh0ID0gIlxyIjsKKyAgICAgICAgICAgIG1fdGV4dCA9IEFTQ0lJTGl0
ZXJhbCgiXHIiKTsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBBU0NJSUxpdGVyYWwo
IlxyIik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBcHBLaXQgc2V0cyB0ZXh0IHRvICJceDdG
IiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVudCBjaGFyYWN0ZXIg
Y29kZSBpcyA4LgogICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfQkFD
SykgewotICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCI7Ci0gICAgICAgICAgICBtX3VubW9kaWZp
ZWRUZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBtX3RleHQgPSBBU0NJSUxpdGVyYWwoIlx4OCIp
OworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IEFTQ0lJTGl0ZXJhbCgiXHg4Iik7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBBbHdheXMgdXNlIDkgZm9yIFRhYiAtLSB3ZSBkb24ndCB3
YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCiAg
ICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19UQUIpIHsKLSAgICAgICAg
ICAgIG1fdGV4dCA9ICJceDkiOwotICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDki
OworICAgICAgICAgICAgbV90ZXh0ID0gQVNDSUlMaXRlcmFsKCJceDkiKTsKKyAgICAgICAgICAg
IG1fdW5tb2RpZmllZFRleHQgPSBBU0NJSUxpdGVyYWwoIlx4OSIpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gTWFjIHNwZWNpZmljLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCA0
MzA4NjhlLi5hNjRlYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAtNTIsOSAr
NTIsOSBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0Zpbmlz
aGVkKFRpbWVyPFBsYXRmb3JtU3BlZWNoU3ludGhlcwogICAgIAogdm9pZCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiB7Ci0gICAgbV92b2ljZUxp
c3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1v
Y2sudm9pY2UuYnJ1Y2UiKSwgU3RyaW5nKCJicnVjZSIpLCBTdHJpbmcoImVuLVVTIiksIHRydWUs
IHRydWUpKTsKLSAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5jbGFyayIpLCBTdHJpbmcoImNsYXJrIiks
IFN0cmluZygiZW4tVVMiKSwgdHJ1ZSwgZmFsc2UpKTsKLSAgICBtX3ZvaWNlTGlzdC5hcHBlbmQo
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5s
b2dhbiIpLCBTdHJpbmcoImxvZ2FuIiksIFN0cmluZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOwor
ICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVh
dGUoQVNDSUlMaXRlcmFsKCJtb2NrLnZvaWNlLmJydWNlIiksIEFTQ0lJTGl0ZXJhbCgiYnJ1Y2Ui
KSwgQVNDSUlMaXRlcmFsKCJlbi1VUyIpLCB0cnVlLCB0cnVlKSk7CisgICAgbV92b2ljZUxpc3Qu
YXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShBU0NJSUxpdGVyYWwo
Im1vY2sudm9pY2UuY2xhcmsiKSwgQVNDSUlMaXRlcmFsKCJjbGFyayIpLCBBU0NJSUxpdGVyYWwo
ImVuLVVTIiksIHRydWUsIGZhbHNlKSk7CisgICAgbV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShBU0NJSUxpdGVyYWwoIm1vY2sudm9pY2UubG9n
YW4iKSwgQVNDSUlMaXRlcmFsKCJsb2dhbiIpLCBBU0NJSUxpdGVyYWwoImZyLUNBIiksIHRydWUs
IHRydWUpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWso
UGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCmluZGV4IDQzMDVlOWUuLjUzMmQ2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYwogewogICAgIC8vIFdlIGNhbm5vdCBo
YW5kbGUgdGhlIHNpemUgdGhhdCBpcyBtb3JlIHRoYW4gbWF4aW11bSBpbnRlZ2VyLgogICAgIGlm
IChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IElOVF9NQVgpIHsKLSAgICAgICAg
bV9lcnJvciA9IFJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBub3RSZWFk
YWJsZUVycm9yLCByZXNwb25zZS51cmwoKSwgIkZpbGUgaXMgdG9vIGxhcmdlIik7CisgICAgICAg
IG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgbm90UmVh
ZGFibGVFcnJvciwgcmVzcG9uc2UudXJsKCksIEFTQ0lJTGl0ZXJhbCgiRmlsZSBpcyB0b28gbGFy
Z2UiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBQYXNz
UmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gQmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGVBc3lu
YyhCbG9iRGF0YSogYmxvYkRhdAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UocmVx
dWVzdC5odHRwTWV0aG9kKCksICJHRVQiKSkgewotICAgICAgICBlcnJvciA9IFJlc291cmNlRXJy
b3Iod2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBtZXRob2ROb3RBbGxvd2VkLCByZXNwb25zZS51
cmwoKSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7CisgICAgICAgIGVycm9yID0gUmVz
b3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIG1ldGhvZE5vdEFsbG93ZWQsIHJl
c3BvbnNlLnVybCgpLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBCbG9i
UmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcigpCiB7CiAgICAgQVNTRVJUKG1f
ZXJyb3JDb2RlKTsKIAotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0
KCkudXJsKCksICJ0ZXh0L3BsYWluIiwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwo
InRleHQvcGxhaW4iKSwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKICAgICBzd2l0Y2ggKG1fZXJy
b3JDb2RlKSB7CiAgICAgY2FzZSByYW5nZUVycm9yOgogICAgICAgICByZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZShodHRwUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDI2M2FiMmEuLmU1MjEy
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBA
IC0yMDIsNyArMjAyLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMo
Y29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2QKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCF2YWx1ZS5maWxlbmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9IHZhbHVlLmZpbGVuYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiYmxvYiI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lID0gQVNDSUlMaXRlcmFsKCJibG9iIik7CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBpbmNsdWRlIHRoZSBmaWxlbmFtZT0iLi4i
IHBhcnQgaW4gdGhlIGhlYWRlciwgZXZlbiBpZiB0aGUgZmlsZW5hbWUgaXMgZW1wdHkKQEAgLTIx
MSw3ICsyMTEsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZAogICAgICAgICAgICAgICAgIC8v
IEFkZCB0aGUgY29udGVudCB0eXBlIGlmIGF2YWlsYWJsZSwgb3IgImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIgb3RoZXJ3aXNlIChSRkMgMTg2NykuCiAgICAgICAgICAgICAgICAgU3RyaW5nIGNv
bnRlbnRUeXBlID0gdmFsdWUuYmxvYigpLT50eXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNv
bnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGUgPSAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjsKKyAgICAgICAgICAgICAgICAgICAgY29udGVudFR5
cGUgPSBBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICAgICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YWRkQ29udGVudFR5cGVUb011bHRp
UGFydEhlYWRlcihoZWFkZXIsIGNvbnRlbnRUeXBlLmFzY2lpKCkpOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRl
eCA2ZDFhYWIyLi5iNjhiNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgcGFyc2VIVFRQUmVm
cmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gsIGJvb2wgZnJvbUh0dHBFcXVpdk1ldGEsIGRvdWJs
ZSYgZGVsCiAgICAgICAgICsrcG9zOwogICAgICAgICBza2lwV2hpdGVTcGFjZShyZWZyZXNoLCBw
b3MsIGZyb21IdHRwRXF1aXZNZXRhKTsKICAgICAgICAgdW5zaWduZWQgdXJsU3RhcnRQb3MgPSBw
b3M7Ci0gICAgICAgIGlmIChyZWZyZXNoLmZpbmQoInVybCIsIHVybFN0YXJ0UG9zLCBmYWxzZSkg
PT0gdXJsU3RhcnRQb3MpIHsKKyAgICAgICAgaWYgKHJlZnJlc2guZmluZChBU0NJSUxpdGVyYWwo
InVybCIpLCB1cmxTdGFydFBvcywgZmFsc2UpID09IHVybFN0YXJ0UG9zKSB7CiAgICAgICAgICAg
ICB1cmxTdGFydFBvcyArPSAzOwogICAgICAgICAgICAgc2tpcFdoaXRlU3BhY2UocmVmcmVzaCwg
dXJsU3RhcnRQb3MsIGZyb21IdHRwRXF1aXZNZXRhKTsKICAgICAgICAgICAgIGlmIChyZWZyZXNo
W3VybFN0YXJ0UG9zXSA9PSAnPScpIHsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIGZpbmRDaGFy
c2V0SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGludCYgY2hh
cnNldFBvcywgdQogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1lZGlhVHlwZS5sZW5ndGgoKTsKICAg
ICAKICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7Ci0gICAgICAgIHBvcyA9IG1lZGlhVHlwZS5m
aW5kKCJjaGFyc2V0IiwgcG9zLCBmYWxzZSk7CisgICAgICAgIHBvcyA9IG1lZGlhVHlwZS5maW5k
KEFTQ0lJTGl0ZXJhbCgiY2hhcnNldCIpLCBwb3MsIGZhbHNlKTsKICAgICAgICAgaWYgKHBvcyA9
PSBub3RGb3VuZCB8fCBwb3MgPT0gMCkgewogICAgICAgICAgICAgY2hhcnNldExlbiA9IDA7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC01NjgsMjAgKzU2OCwyMCBAQCBzaXplX3QgcGFyc2VIVFRQ
UmVxdWVzdExpbmUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWls
dXJlUmVhcwogCiAgICAgLy8gSGF2ZW4ndCBmaW5pc2hlZCBoZWFkZXIgbGluZS4KICAgICBpZiAo
Y29uc3VtZWRMZW5ndGggPT0gbGVuZ3RoKSB7Ci0gICAgICAgIGZhaWx1cmVSZWFzb24gPSAiSW5j
b21wbGV0ZSBSZXF1ZXN0IExpbmUiOworICAgICAgICBmYWlsdXJlUmVhc29uID0gQVNDSUlMaXRl
cmFsKCJJbmNvbXBsZXRlIFJlcXVlc3QgTGluZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKICAgICAvLyBSZXF1ZXN0TGluZSBkb2VzIG5vdCBjb250YWluIDMgcGFydHMuCiAgICAgaWYg
KCFzcGFjZTEgfHwgIXNwYWNlMikgewotICAgICAgICBmYWlsdXJlUmVhc29uID0gIlJlcXVlc3Qg
TGluZSBkb2VzIG5vdCBhcHBlYXIgdG8gY29udGFpbjogPE1ldGhvZD4gPFVybD4gPEhUVFBWZXJz
aW9uPi4iOworICAgICAgICBmYWlsdXJlUmVhc29uID0gQVNDSUlMaXRlcmFsKCJSZXF1ZXN0IExp
bmUgZG9lcyBub3QgYXBwZWFyIHRvIGNvbnRhaW46IDxNZXRob2Q+IDxVcmw+IDxIVFRQVmVyc2lv
bj4uIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIFRoZSBsaW5lIG11c3Qg
ZW5kIHdpdGggIlxyXG4iLgogICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAgKyAxOwogICAgIGlmICgq
KGVuZCAtIDIpICE9ICdccicpIHsKLSAgICAgICAgZmFpbHVyZVJlYXNvbiA9ICJSZXF1ZXN0IGxp
bmUgZG9lcyBub3QgZW5kIHdpdGggQ1JMRiI7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBBU0NJ
SUxpdGVyYWwoIlJlcXVlc3QgbGluZSBkb2VzIG5vdCBlbmQgd2l0aCBDUkxGIik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApAQCAtNjY4LDExICs2NjgsMTEgQEAgc2l6ZV90IHBhcnNlSFRU
UEhlYWRlcihjb25zdCBjaGFyKiBzdGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJl
UmVhc29uLAogICAgIG5hbWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1l
LnNpemUoKSk7CiAgICAgdmFsdWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwg
dmFsdWUuc2l6ZSgpKTsKICAgICBpZiAobmFtZVN0ci5pc051bGwoKSkgewotICAgICAgICBmYWls
dXJlUmVhc29uID0gIkludmFsaWQgVVRGLTggc2VxdWVuY2UgaW4gaGVhZGVyIG5hbWUiOworICAg
ICAgICBmYWlsdXJlUmVhc29uID0gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIFVURi04IHNlcXVlbmNl
IGluIGhlYWRlciBuYW1lIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAodmFs
dWVTdHIuaXNOdWxsKCkpIHsKLSAgICAgICAgZmFpbHVyZVJlYXNvbiA9ICJJbnZhbGlkIFVURi04
IHNlcXVlbmNlIGluIGhlYWRlciB2YWx1ZSI7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBBU0NJ
SUxpdGVyYWwoIkludmFsaWQgVVRGLTggc2VxdWVuY2UgaW4gaGVhZGVyIHZhbHVlIik7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gcCAtIHN0YXJ0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggNTBlZWZiZC4uMTky
MWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVh
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIu
Y3BwCkBAIC04MywxNSArODMsMTUgQEAgUGFzc1JlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVy
OjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciogYnVmZmVyKQogewogICAgIFJl
ZlB0cjxNSU1FSGVhZGVyPiBtaW1lSGVhZGVyID0gYWRvcHRSZWYobmV3IE1JTUVIZWFkZXIpOwog
ICAgIEtleVZhbHVlTWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVm
ZmVyKTsKLSAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9
IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0
ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoQVNDSUlM
aXRlcmFsKCJjb250ZW50LXR5cGUiKSk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3Ig
IT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewogICAgICAgICBQYXJzZWRDb250ZW50VHlwZSBwYXJz
ZWRDb250ZW50VHlwZShtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIG1p
bWVIZWFkZXItPm1fY29udGVudFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS5taW1lVHlwZSgpOwog
ICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCiAgICAgICAgICAgICBtaW1l
SGVhZGVyLT5tX2NoYXJzZXQgPSBwYXJzZWRDb250ZW50VHlwZS5jaGFyc2V0KCkuc3RyaXBXaGl0
ZVNwYWNlKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWltZUhlYWRlci0+bV9tdWx0
aXBhcnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUucGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBl
Iik7Ci0gICAgICAgICAgICBtaW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5kYXJ5ID0gcGFyc2Vk
Q29udGVudFR5cGUucGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSIpOworICAgICAgICAg
ICAgbWltZUhlYWRlci0+bV9tdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUucGFyYW1l
dGVyVmFsdWVGb3JOYW1lKEFTQ0lJTGl0ZXJhbCgidHlwZSIpKTsKKyAgICAgICAgICAgIG1pbWVI
ZWFkZXItPm1fZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS5wYXJhbWV0ZXJW
YWx1ZUZvck5hbWUoQVNDSUlMaXRlcmFsKCJib3VuZGFyeSIpKTsKICAgICAgICAgICAgIGlmICht
aW1lSGVhZGVyLT5tX2VuZE9mUGFydEJvdW5kYXJ5LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJObyBib3VuZGFyeSBmb3VuZCBpbiBtdWx0aXBhcnQgTUlNRSBoZWFkZXIu
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDEsMTEgKzEwMSwxMSBAQCBQYXNz
UmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKiBidWZmZXIpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtaW1lUGFyYW1ldGVy
c0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5n
Iik7CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZChBU0NJ
SUxpdGVyYWwoImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciKSk7CiAgICAgaWYgKG1pbWVQYXJh
bWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRl
ci0+bV9jb250ZW50VHJhbnNmZXJFbmNvZGluZyA9IHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2Rp
bmcobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpOwogCi0gICAgbWltZVBhcmFtZXRlcnNJ
dGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC1sb2NhdGlvbiIpOworICAgIG1p
bWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoQVNDSUlMaXRlcmFsKCJj
b250ZW50LWxvY2F0aW9uIikpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtl
eVZhbHVlUGFpcnMuZW5kKCkpCiAgICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudExvY2F0aW9u
ID0gbWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKaW5kZXggMzA5NWU5
Ni4uNDI0ZGNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
YXJzZWRDb250ZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBQYXJzZWRDb250ZW50
VHlwZTo6UGFyc2VkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIAogU3Ry
aW5nIFBhcnNlZENvbnRlbnRUeXBlOjpjaGFyc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFy
YW1ldGVyVmFsdWVGb3JOYW1lKCJjaGFyc2V0Iik7CisgICAgcmV0dXJuIHBhcmFtZXRlclZhbHVl
Rm9yTmFtZShBU0NJSUxpdGVyYWwoImNoYXJzZXQiKSk7CiB9CiAKIFN0cmluZyBQYXJzZWRDb250
ZW50VHlwZTo6cGFyYW1ldGVyVmFsdWVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKaW5k
ZXggMDdjOTBjYi4uMmFmZWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm94eVNlcnZlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5k
UHJveHlTZXJ2ZXJTdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUHJveHlTZXJ2
ZXImIHAKIFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNl
cnZlcnMpCiB7CiAgICAgaWYgKHByb3h5U2VydmVycy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biAiRElSRUNUIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRElSRUNUIik7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm94eVNlcnZlcnMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggNzlkNGQ3
Ni4uOTRiYTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdAog
ICAgICAgICAvLyBEb24ndCBib3RoZXIgdG9rZW5pemluZyB0aGUgdmFsdWUsIGl0IGlzIG5vdCBp
bXBvcnRhbnQKICAgICAgICAgU3RyaW5nIHByYWdtYVZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRz
LmdldChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hKTsKIAotICAgICAgICBtX2NhY2hlQ29udHJvbENv
bnRhaW5zTm9DYWNoZSA9IHByYWdtYVZhbHVlLmNvbnRhaW5zKCJuby1jYWNoZSIsIGZhbHNlKTsK
KyAgICAgICAgbV9jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUgPSBwcmFnbWFWYWx1ZS5jb250
YWlucyhBU0NJSUxpdGVyYWwoIm5vLWNhY2hlIiksIGZhbHNlKTsKICAgICB9CiB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4
IGJkNDA1NzIuLmQzMzMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC01OSw4ICs1OSw4IEBAIGJvb2wgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVByb3h5SXNFbmFibGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpCiAgICAgaWYgKCFw
cm94eVNldHRpbmdzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5j
b20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwg
PSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVS
TCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgQVNDSUlMaXRlcmFsKCJodHRwOi8vZXhhbXBsZS5jb20vIikpLmNyZWF0ZUNGVVJMKCk7
CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmlu
ZywgQVNDSUlMaXRlcmFsKCJodHRwczovL2V4YW1wbGUuY29tLyIpKS5jcmVhdGVDRlVSTCgpOwog
CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0
KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRD
RihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRp
bmdzLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDhiZWM5MjcuLjhj
NDcxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAg
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNz
YWdlUmVmIHByb3h5UmVzcG9uc2UpCiAKICAgICBpZiAoIUNGSFRUUEF1dGhlbnRpY2F0aW9uUmVx
dWlyZXNVc2VyTmFtZUFuZFBhc3N3b3JkKGF1dGhlbnRpY2F0aW9uLmdldCgpKSkgewogICAgICAg
ICAvLyBUaGF0J3MgYWxsIHdlIGNhbiBvZmZlci4uLgotICAgICAgICBtX2NsaWVudC0+ZGlkRmFp
bFNvY2tldFN0cmVhbSh0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwg
IlByb3h5IGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBXZWJTb2Nr
ZXRzIikpOworICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0cmVhbSh0aGlzLCBTb2Nr
ZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJQcm94eSBhdXRo
ZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViU29ja2V0cyIpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlS
ZXNwb25zZSkKIAogICAgIGlmICghbWV0aG9kQ0YgfHwgIXJlYWxtQ0YpIHsKICAgICAgICAgLy8g
VGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgb24gc29tZSBPUyB2ZXJzaW9ucyB3ZSBnZXQgaW5j
b21wbGV0ZSBhdXRoZW50aWNhdGlvbiBkYXRhLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzEwNDE2MzE2
Pi4KLSAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0odGhpcywgU29ja2V0U3Ry
ZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksICJXZWJTb2NrZXQgcHJveHkgYXV0aGVudGljYXRp
b24gY291bGRuJ3QgYmUgaGFuZGxlZCIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxTb2Nr
ZXRTdHJlYW0odGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91cmwuc3RyaW5nKCksIEFTQ0lJ
TGl0ZXJhbCgiV2ViU29ja2V0IHByb3h5IGF1dGhlbnRpY2F0aW9uIGNvdWxkbid0IGJlIGhhbmRs
ZWQiKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTksNyArMzk5LDcgQEAgdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdl
UmVmIHByb3h5UmVzcG9uc2UpCiAKICAgICAgICAgaWYgKCFwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpIHsKICAgICAgICAgICAgIC8vIEZhaWxzIGUuZy4gZm9yIE5UTE0gYXV0aC4KLSAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFtKHRoaXMsIFNvY2tldFN0cmVhbUVycm9y
KDAsIG1fdXJsLnN0cmluZygpLCAiUHJveHkgYXV0aGVudGljYXRpb24gc2NoZW1lIGlzIG5vdCBz
dXBwb3J0ZWQgZm9yIFdlYlNvY2tldHMiKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmFp
bFNvY2tldFN0cmVhbSh0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigwLCBtX3VybC5zdHJpbmcoKSwg
QVNDSUlMaXRlcmFsKCJQcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgaXMgbm90IHN1cHBvcnRl
ZCBmb3IgV2ViU29ja2V0cyIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3Jl
ZGVudGlhbHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogCiAgICAgLy8gRklYTUU6
IE9uIHBsYXRmb3JtcyB3aGVyZSBBdXRoQnJva2VyQWdlbnQgaXMgbm90IGF2YWlsYWJsZSwgYXNr
IHRoZSBjbGllbnQgaWYgY3JlZGVudGlhbHMgY291bGQgbm90IGJlIGZvdW5kLgogCi0gICAgbV9j
bGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0odGhpcywgU29ja2V0U3RyZWFtRXJyb3IoMCwgbV91
cmwuc3RyaW5nKCksICJQcm94eSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZSIpKTsKKyAg
ICBtX2NsaWVudC0+ZGlkRmFpbFNvY2tldFN0cmVhbSh0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcigw
LCBtX3VybC5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJQcm94eSBjcmVkZW50aWFscyBhcmUgbm90
IGF2YWlsYWJsZSIpKSk7CiB9CiAKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhhbmRsZTo6Y29w
eUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBl
IHR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGFkZENPTk5FQ1RDcmVkZW50aWFscyhwcm94eVJl
c3BvbnNlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsU29ja2V0
U3RyZWFtKHRoaXMsIFNvY2tldFN0cmVhbUVycm9yKHN0YXRpY19jYXN0PGludD4ocHJveHlSZXNw
b25zZUNvZGUpLCBtX3VybC5zdHJpbmcoKSwgIlByb3h5IGNvbm5lY3Rpb24gY291bGQgbm90IGJl
IGVzdGFibGlzaGVkLCB1bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUiKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRGYWlsU29ja2V0U3RyZWFtKHRoaXMsIFNvY2tldFN0cmVhbUVy
cm9yKHN0YXRpY19jYXN0PGludD4ocHJveHlSZXNwb25zZUNvZGUpLCBtX3VybC5zdHJpbmcoKSwg
QVNDSUlMaXRlcmFsKCJQcm94eSBjb25uZWN0aW9uIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwg
dW5leHBlY3RlZCByZXNwb25zZSBjb2RlIikpKTsKICAgICAgICAgICAgICAgICAgICAgcGxhdGZv
cm1DbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0
ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3Bw
CmluZGV4IGU4Y2ZiMGUuLjYzMzhkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIFNRTGl0
ZUZpbGVTeXN0ZW06OmdldEZpbGVOYW1lRm9yTmV3RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBkYkRp
ciwgY29uc3QgU3QKIHsKICAgICAvLyB0cnkgdG8gZ2V0IHRoZSBuZXh0IHNlcXVlbmNlIG51bWJl
ciBmcm9tIHRoZSBnaXZlbiBkYXRhYmFzZQogICAgIC8vIGlmIHdlIGNhbid0IGdldCBhIG51bWJl
ciwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZwotICAgIFNRTGl0ZVN0YXRlbWVudCBzZXF1ZW5jZVN0
YXRlbWVudCgqZGIsICJTRUxFQ1Qgc2VxIEZST00gc3FsaXRlX3NlcXVlbmNlIFdIRVJFIG5hbWU9
J0RhdGFiYXNlcyc7Iik7CisgICAgU1FMaXRlU3RhdGVtZW50IHNlcXVlbmNlU3RhdGVtZW50KCpk
YiwgQVNDSUlMaXRlcmFsKCJTRUxFQ1Qgc2VxIEZST00gc3FsaXRlX3NlcXVlbmNlIFdIRVJFIG5h
bWU9J0RhdGFiYXNlcyc7IikpOwogICAgIGlmIChzZXF1ZW5jZVN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMUmVzdWx0T2spCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpbnQgcmVzdWx0
ID0gc2VxdWVuY2VTdGF0ZW1lbnQuc3RlcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCAzZmY2MTY3Li4wZjViNmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjk0
LDcgKzI5NCw3IEBAIGJvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNCbG9i
KGludCBjb2wpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZygiQkxPQiIpLCBTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfY29sdW1uX2RlY2x0eXBlMTYobV9zdGF0ZW1lbnQsIGNv
bCkpKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZyhBU0NJSUxpdGVyYWwo
IkJMT0IiKSksIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19j
b2x1bW5fZGVjbHR5cGUxNihtX3N0YXRlbWVudCwgY29sKSkpKTsKIH0KIAogU3RyaW5nIFNRTGl0
ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKaW5kZXggNTRlMGExOC4uODkzOTA5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rp
b24uY3BwCkBAIC02Miw5ICs2Miw5IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkK
ICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NDb3VudCgpOwogI2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAgICAgICAg
ICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4iKTsKKyAgICAgICAg
ICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKCJCRUdJ
TiIpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVj
dXRlQ29tbWFuZCgiQkVHSU4gSU1NRURJQVRFIik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3Mg
PSBtX2RiLmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQkVHSU4gSU1NRURJQVRFIikpOwog
ICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNzOwogI2lm
IFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CiAgICAgaWYgKG1faW5Qcm9n
cmVzcykgewogICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0g
ICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDT01NSVQiKTsKKyAg
ICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKCJD
T01NSVQiKSk7CiAgICAgICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJv
Z3Jlc3M7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogICAgIC8v
IGEgbm9uLXplcm8vdHJ1ZSByZXN1bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9sYW5nX3RyYW5z
YWN0aW9uLmh0bWwpLgogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAgICAgICAgQVNTRVJUKG1f
ZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5k
KCJST0xMQkFDSyIpOworICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgi
Uk9MTEJBQ0siKSk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICBtX2Ri
Lm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAppbmRleCA1
Yjc1OTgxLi5hNzZlYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1BsYXRmb3JtTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Bs
YXRmb3JtTG9jYWxlLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIFN0cmluZyBMb2NhbGU6OmNvbnZl
cnRGcm9tTG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5n
dGgoKSk7CiAgICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Rh
cnRJbmRleDsgaSA8IGVuZEluZGV4OykgewogICAgICAgICB1bnNpZ25lZCBzeW1ib2xJbmRleCA9
IG1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgoaW5wdXQsIGkpOwogICAgICAgICBpZiAoc3ltYm9s
SW5kZXggPj0gRGVjaW1hbFN5bWJvbHNTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRleCA4NmQ1ZDJlLi43YjA3
NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Z1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIFN0cmluZyBkZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZUZvclN5c3RlbUxhbmd1YWdlKCkKICAgICAvLyBJbiBhZGRpdGlvbiwgdGhpcyB2
YWx1ZSBtdXN0IG1hdGNoIHdoYXQgaXMgdXNlZCBpbiBTYWZhcmksIHNlZSA8cmRhcjovL3Byb2Js
ZW0vNTU3OTI5Mj4uCiAgICAgLy8gT24gc29tZSBPUyB2ZXJzaW9ucywgdGhlIHJlc3VsdCBpcyBD
UDk0OSAodXBwZXJjYXNlKS4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc3lzdGVtRW5jb2Rp
bmdOYW1lLCAiY3A5NDkiKSkKLSAgICAgICAgc3lzdGVtRW5jb2RpbmdOYW1lID0gImtzX2NfNTYw
MS0xOTg3IjsKKyAgICAgICAgc3lzdGVtRW5jb2RpbmdOYW1lID0gQVNDSUlMaXRlcmFsKCJrc19j
XzU2MDEtMTk4NyIpOwogICAgIHJldHVybiBzeXN0ZW1FbmNvZGluZ05hbWU7CiAjZWxzZQogICAg
IHJldHVybiBTdHJpbmcoIklTTy04ODU5LTEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYzk4YzczZi4uZDhjZTUxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTI5
MSw3ICsyOTEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlUHJpbWFyeUdyYXBo
aWNzTGF5ZXIoKQogICAgIG1fY3JlYXRpbmdQcmltYXJ5R3JhcGhpY3NMYXllciA9IGZhbHNlOwog
CiAgICAgaWYgKG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpIHsKLSAgICAgICAgbV9jaGlsZENvbnRh
aW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJUaWxlZEJhY2tpbmcgRmxhdHRlbmlu
ZyBMYXllciIpOworICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllciA9IGNyZWF0ZUdyYXBo
aWNzTGF5ZXIoQVNDSUlMaXRlcmFsKCJUaWxlZEJhY2tpbmcgRmxhdHRlbmluZyBMYXllciIpKTsK
ICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5hZGRDaGlsZChtX2NoaWxkQ29udGFpbm1lbnRMYXll
ci5nZXQoKSk7CiAgICAgfQogCkBAIC0xMTM1LDcgKzExMzUsNyBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGluZ0xheWVyKGJvb2wgbmVlZHNBbmNlc3RvckNs
aXApCiAKICAgICBpZiAobmVlZHNBbmNlc3RvckNsaXApIHsKICAgICAgICAgaWYgKCFtX2FuY2Vz
dG9yQ2xpcHBpbmdMYXllcikgewotICAgICAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXIg
PSBjcmVhdGVHcmFwaGljc0xheWVyKCJBbmNlc3RvciBjbGlwcGluZyBMYXllciIpOworICAgICAg
ICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKEFTQ0lJ
TGl0ZXJhbCgiQW5jZXN0b3IgY2xpcHBpbmcgTGF5ZXIiKSk7CiAgICAgICAgICAgICBtX2FuY2Vz
dG9yQ2xpcHBpbmdMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGxh
eWVyc0NoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTU2LDcgKzExNTYsNyBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlRGVzY2VuZGFudENsaXBwaW5nTGF5ZXIoYm9vbCBu
ZWVkc0Rlc2NlbmRhbnRDbGlwKQogCiAgICAgaWYgKG5lZWRzRGVzY2VuZGFudENsaXApIHsKICAg
ICAgICAgaWYgKCFtX2NoaWxkQ29udGFpbm1lbnRMYXllciAmJiAhbV91c2luZ1RpbGVkQ2FjaGVM
YXllcikgewotICAgICAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFw
aGljc0xheWVyKCJDaGlsZCBjbGlwcGluZyBMYXllciIpOworICAgICAgICAgICAgbV9jaGlsZENv
bnRhaW5tZW50TGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKEFTQ0lJTGl0ZXJhbCgiQ2hpbGQg
Y2xpcHBpbmcgTGF5ZXIiKSk7CiAgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0cnVl
OwogICAgICAgICB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyhib29sIG5lZWRzSG9yaXpvbnRhbFNjcm9s
bAogICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCA9IGZhbHNlOwogICAg
IGlmIChuZWVkc0hvcml6b250YWxTY3JvbGxiYXJMYXllcikgewogICAgICAgICBpZiAoIW1fbGF5
ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0gICAgICAgICAgICBtX2xheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoImhvcml6b250YWwgc2Nyb2xsYmFy
Iik7CisgICAgICAgICAgICBtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhciA9IGNyZWF0ZUdy
YXBoaWNzTGF5ZXIoQVNDSUlMaXRlcmFsKCJob3Jpem9udGFsIHNjcm9sbGJhciIpKTsKICAgICAg
ICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJMYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMTIx
Myw3ICsxMjEzLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29u
dHJvbHNMYXllcnMoYm9vbCBuZWVkc0hvcml6b250YWxTY3JvbGwKICAgICBib29sIHZlcnRpY2Fs
U2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKG5lZWRzVmVydGljYWxTY3Jv
bGxiYXJMYXllcikgewogICAgICAgICBpZiAoIW1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcikg
ewotICAgICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyID0gY3JlYXRlR3JhcGhp
Y3NMYXllcigidmVydGljYWwgc2Nyb2xsYmFyIik7CisgICAgICAgICAgICBtX2xheWVyRm9yVmVy
dGljYWxTY3JvbGxiYXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKEFTQ0lJTGl0ZXJhbCgidmVydGlj
YWwgc2Nyb2xsYmFyIikpOwogICAgICAgICAgICAgdmVydGljYWxTY3JvbGxiYXJMYXllckNoYW5n
ZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xheWVyRm9yVmVydGljYWxT
Y3JvbGxiYXIpIHsKQEAgLTEyMjUsNyArMTIyNSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFsU2Nyb2xs
CiAgICAgYm9vbCBzY3JvbGxDb3JuZXJMYXllckNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAobmVl
ZHNTY3JvbGxDb3JuZXJMYXllcikgewogICAgICAgICBpZiAoIW1fbGF5ZXJGb3JTY3JvbGxDb3Ju
ZXIpIHsKLSAgICAgICAgICAgIG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIgPSBjcmVhdGVHcmFwaGlj
c0xheWVyKCJzY3JvbGwgY29ybmVyIik7CisgICAgICAgICAgICBtX2xheWVyRm9yU2Nyb2xsQ29y
bmVyID0gY3JlYXRlR3JhcGhpY3NMYXllcihBU0NJSUxpdGVyYWwoInNjcm9sbCBjb3JuZXIiKSk7
CiAgICAgICAgICAgICBzY3JvbGxDb3JuZXJMYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChtX2xheWVyRm9yU2Nyb2xsQ29ybmVyKSB7CkBAIC0xMzg2LDcgKzEz
ODYsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlTWFza0xheWVyKGJvb2wgbmVl
ZHNNYXNrTGF5ZXIpCiAgICAgYm9vbCBsYXllckNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAobmVl
ZHNNYXNrTGF5ZXIpIHsKICAgICAgICAgaWYgKCFtX21hc2tMYXllcikgewotICAgICAgICAgICAg
bV9tYXNrTGF5ZXIgPSBjcmVhdGVHcmFwaGljc0xheWVyKCJNYXNrIik7CisgICAgICAgICAgICBt
X21hc2tMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoQVNDSUlMaXRlcmFsKCJNYXNrIikpOwog
ICAgICAgICAgICAgbV9tYXNrTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICAgICAg
ICAgIG1fbWFza0xheWVyLT5zZXRQYWludGluZ1BoYXNlKEdyYXBoaWNzTGF5ZXJQYWludE1hc2sp
OwogICAgICAgICAgICAgbGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKQEAgLTE0MTAsMTQgKzE0MTAsMTQg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbGluZ0xheWVycyhib29sIG5l
ZWRzU2Nyb2xsaW5nTGF5ZXJzKQogCiAgICAgaWYgKCFtX3Njcm9sbGluZ0xheWVyKSB7CiAgICAg
ICAgIC8vIE91dGVyIGxheWVyIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIHNjcm9sbCB2aWV3
LgotICAgICAgICBtX3Njcm9sbGluZ0xheWVyID0gY3JlYXRlR3JhcGhpY3NMYXllcigiU2Nyb2xs
aW5nIGNvbnRhaW5lciIpOworICAgICAgICBtX3Njcm9sbGluZ0xheWVyID0gY3JlYXRlR3JhcGhp
Y3NMYXllcihBU0NJSUxpdGVyYWwoIlNjcm9sbGluZyBjb250YWluZXIiKSk7CiAgICAgICAgIG1f
c2Nyb2xsaW5nTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgICAgIG1fc2Nyb2xs
aW5nTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
ICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRDdXN0b21CZWhhdmlvcihHcmFwaGljc0xheWVyOjpD
dXN0b21TY3JvbGxpbmdCZWhhdmlvcik7CiAjZW5kaWYKICAgICAgICAgLy8gSW5uZXIgbGF5ZXIg
d2hpY2ggcmVuZGVycyB0aGUgY29udGVudCB0aGF0IHNjcm9sbHMuCi0gICAgICAgIG1fc2Nyb2xs
aW5nQ29udGVudHNMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlNjcm9sbGVkIENvbnRlbnRz
Iik7CisgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5
ZXIoQVNDSUlMaXRlcmFsKCJTY3JvbGxlZCBDb250ZW50cyIpKTsKICAgICAgICAgbV9zY3JvbGxp
bmdDb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldEN1c3RvbUJlaGF2aW9yKEdy
YXBoaWNzTGF5ZXI6OkN1c3RvbVNjcm9sbGVkQ29udGVudHNCZWhhdmlvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDQ0
ZWI1MTkuLmU0Nzk5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUwLDcgKzI5NTAsNyBAQCBHcmFwaGljc0xheWVy
KiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9yVG9wT3ZlcmhhbmdBcmVhKGJv
b2wgd2FudHNMYQogICAgIGlmICghbV9sYXllckZvclRvcE92ZXJoYW5nQXJlYSkgewogICAgICAg
ICBtX2xheWVyRm9yVG9wT3ZlcmhhbmdBcmVhID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fbGF5
ZXJGb3JUb3BPdmVyaGFuZ0FyZWEtPnNldE5hbWUoInRvcCBvdmVyaGFuZyBhcmVhIik7CisgICAg
ICAgIG1fbGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEtPnNldE5hbWUoQVNDSUlMaXRlcmFsKCJ0b3Ag
b3ZlcmhhbmcgYXJlYSIpKTsKICNlbmRpZgogICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGls
ZEJlbG93KG1fbGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEuZ2V0KCksIG1fcm9vdENvbnRlbnRMYXll
ci5nZXQoKSk7CiAgICAgfQpAQCAtMjk3NCw3ICsyOTc0LDcgQEAgR3JhcGhpY3NMYXllciogUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYShib29s
IHdhbnQKICAgICBpZiAoIW1fbGF5ZXJGb3JCb3R0b21PdmVyaGFuZ0FyZWEpIHsKICAgICAgICAg
bV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYSA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFw
aGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2xh
eWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLT5zZXROYW1lKCJib3R0b20gb3ZlcmhhbmcgYXJlYSIp
OworICAgICAgICBtX2xheWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLT5zZXROYW1lKEFTQ0lJTGl0
ZXJhbCgiYm90dG9tIG92ZXJoYW5nIGFyZWEiKSk7CiAjZW5kaWYKICAgICAgICAgbV9zY3JvbGxM
YXllci0+YWRkQ2hpbGRCZWxvdyhtX2xheWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLmdldCgpLCBt
X3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIH0KQEAgLTMwMDUsNyArMzAwNSw3IEBAIEdy
YXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIo
Ym9vbCB3YW50c0xheWVyKQogICAgIGlmICghbV9sYXllckZvckhlYWRlcikgewogICAgICAgICBt
X2xheWVyRm9ySGVhZGVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0
b3J5KCksICp0aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fbGF5ZXJGb3JIZWFkZXIt
PnNldE5hbWUoImhlYWRlciIpOworICAgICAgICBtX2xheWVyRm9ySGVhZGVyLT5zZXROYW1lKEFT
Q0lJTGl0ZXJhbCgiaGVhZGVyIikpOwogI2VuZGlmCiAgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFk
ZENoaWxkQWJvdmUobV9sYXllckZvckhlYWRlci5nZXQoKSwgbV9yb290Q29udGVudExheWVyLmdl
dCgpKTsKICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmFkZFBhaW50UGVuZGluZ01p
bGVzdG9uZXMoRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKTsKQEAgLTMwNDYsNyArMzA0Niw3
IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JG
b290ZXIoYm9vbCB3YW50c0xheWVyKQogICAgIGlmICghbV9sYXllckZvckZvb3RlcikgewogICAg
ICAgICBtX2xheWVyRm9yRm9vdGVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCksICp0aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fbGF5ZXJGb3JG
b290ZXItPnNldE5hbWUoImZvb3RlciIpOworICAgICAgICBtX2xheWVyRm9yRm9vdGVyLT5zZXRO
YW1lKEFTQ0lJTGl0ZXJhbCgiZm9vdGVyIikpOwogI2VuZGlmCiAgICAgICAgIG1fc2Nyb2xsTGF5
ZXItPmFkZENoaWxkQWJvdmUobV9sYXllckZvckZvb3Rlci5nZXQoKSwgbV9yb290Q29udGVudExh
eWVyLmdldCgpKTsKICAgICB9CkBAIC0zMTE0LDcgKzMxMTQsNyBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycygpCiAgICAgICAgIGlmICgh
bV9sYXllckZvck92ZXJoYW5nQXJlYXMpIHsKICAgICAgICAgICAgIG1fbGF5ZXJGb3JPdmVyaGFu
Z0FyZWFzID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0
aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX2xheWVyRm9yT3ZlcmhhbmdBcmVh
cy0+c2V0TmFtZSgib3ZlcmhhbmcgYXJlYXMiKTsKKyAgICAgICAgICAgIG1fbGF5ZXJGb3JPdmVy
aGFuZ0FyZWFzLT5zZXROYW1lKEFTQ0lJTGl0ZXJhbCgib3ZlcmhhbmcgYXJlYXMiKSk7CiAjZW5k
aWYKICAgICAgICAgICAgIG1fbGF5ZXJGb3JPdmVyaGFuZ0FyZWFzLT5zZXREcmF3c0NvbnRlbnQo
ZmFsc2UpOwogCkBAIC0zMTQzLDcgKzMxNDMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycygpCiAgICAgICAgIGlmICghbV9jb250ZW50
U2hhZG93TGF5ZXIpIHsKICAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICNpZm5kZWYg
TkRFQlVHCi0gICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0TmFtZSgiY29udGVu
dCBzaGFkb3ciKTsKKyAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXROYW1lKEFT
Q0lJTGl0ZXJhbCgiY29udGVudCBzaGFkb3ciKSk7CiAjZW5kaWYKICAgICAgICAgICAgIG1fY29u
dGVudFNoYWRvd0xheWVyLT5zZXRTaXplKG1fcm9vdENvbnRlbnRMYXllci0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXRQb3NpdGlvbihtX3Jvb3RDb250ZW50
TGF5ZXItPnBvc2l0aW9uKCkpOwpAQCAtMzE2Myw3ICszMTYzLDcgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAg
bV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwogICAgICAgICAgICAgbV9sYXllckZvckhvcml6
b250YWxTY3JvbGxiYXItPnNldFNob3dEZWJ1Z0JvcmRlcihtX3Nob3dEZWJ1Z0JvcmRlcnMpOwog
I2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFy
LT5zZXROYW1lKCJob3Jpem9udGFsIHNjcm9sbGJhciBjb250YWluZXIiKTsKKyAgICAgICAgICAg
IG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLT5zZXROYW1lKEFTQ0lJTGl0ZXJhbCgiaG9y
aXpvbnRhbCBzY3JvbGxiYXIgY29udGFpbmVyIikpOwogCiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgVVNFKENBKQpAQCAtMzE4Nyw3ICszMTg3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9s
YXllckZvclZlcnRpY2FsU2Nyb2xsYmFyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNj
cm9sbGJhci0+c2V0U2hvd0RlYnVnQm9yZGVyKG1fc2hvd0RlYnVnQm9yZGVycyk7CiAjaWZuZGVm
IE5ERUJVRwotICAgICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLT5zZXROYW1l
KCJ2ZXJ0aWNhbCBzY3JvbGxiYXIgY29udGFpbmVyIik7CisgICAgICAgICAgICBtX2xheWVyRm9y
VmVydGljYWxTY3JvbGxiYXItPnNldE5hbWUoQVNDSUlMaXRlcmFsKCJ2ZXJ0aWNhbCBzY3JvbGxi
YXIgY29udGFpbmVyIikpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDQSkK
ICAgICAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhci0+c2V0QWNjZWxlcmF0ZXNE
cmF3aW5nKGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSk7CkBAIC0zMjEwLDcgKzMyMTAsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVy
cygpCiAgICAgICAgICAgICBtX2xheWVyRm9yU2Nyb2xsQ29ybmVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAgICAgIG1fbGF5
ZXJGb3JTY3JvbGxDb3JuZXItPnNldFNob3dEZWJ1Z0JvcmRlcihtX3Nob3dEZWJ1Z0JvcmRlcnMp
OwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXItPnNl
dE5hbWUoInNjcm9sbCBjb3JuZXIiKTsKKyAgICAgICAgICAgIG1fbGF5ZXJGb3JTY3JvbGxDb3Ju
ZXItPnNldE5hbWUoQVNDSUlMaXRlcmFsKCJzY3JvbGwgY29ybmVyIikpOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIFVTRShDQSkKICAgICAgICAgICAgIG1fbGF5ZXJGb3JTY3JvbGxD
b3JuZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkp
OwpAQCAtMzIzNCw3ICszMjM0LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3Vy
ZVJvb3RMYXllcigpCiAgICAgaWYgKCFtX3Jvb3RDb250ZW50TGF5ZXIpIHsKICAgICAgICAgbV9y
b290Q29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0
b3J5KCksICp0aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fcm9vdENvbnRlbnRMYXll
ci0+c2V0TmFtZSgiY29udGVudCByb290Iik7CisgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+
c2V0TmFtZShBU0NJSUxpdGVyYWwoImNvbnRlbnQgcm9vdCIpKTsKICNlbmRpZgogICAgICAgICBJ
bnRSZWN0IG92ZXJmbG93UmVjdCA9IG1fcmVuZGVyVmlldy5waXhlbFNuYXBwZWRMYXlvdXRPdmVy
Zmxvd1JlY3QoKTsKICAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRTaXplKEZsb2F0U2l6
ZShvdmVyZmxvd1JlY3QubWF4WCgpLCBvdmVyZmxvd1JlY3QubWF4WSgpKSk7CkBAIC0zMjU5LDE5
ICszMjU5LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGF5ZXIo
KQogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbGF5ZXIgdG8gaG9zdCB0aGUgY2xpcHBpbmcgbGF5
ZXIgYW5kIHRoZSBvdmVyZmxvdyBjb250cm9scyBsYXllcnMuCiAgICAgICAgICAgICBtX292ZXJm
bG93Q29udHJvbHNIb3N0TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXll
ckZhY3RvcnkoKSwgKnRoaXMpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1fb3ZlcmZs
b3dDb250cm9sc0hvc3RMYXllci0+c2V0TmFtZSgib3ZlcmZsb3cgY29udHJvbHMgaG9zdCIpOwor
ICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyLT5zZXROYW1lKEFTQ0lJTGl0
ZXJhbCgib3ZlcmZsb3cgY29udHJvbHMgaG9zdCIpKTsKICNlbmRpZgogCiAgICAgICAgICAgICAv
LyBDcmVhdGUgYSBjbGlwcGluZyBsYXllciBpZiB0aGlzIGlzIGFuIGlmcmFtZQogICAgICAgICAg
ICAgbV9jbGlwTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3Rv
cnkoKSwgKnRoaXMpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1fY2xpcExheWVyLT5z
ZXROYW1lKCJmcmFtZSBjbGlwcGluZyIpOworICAgICAgICAgICAgbV9jbGlwTGF5ZXItPnNldE5h
bWUoQVNDSUlMaXRlcmFsKCJmcmFtZSBjbGlwcGluZyIpKTsKICNlbmRpZgogICAgICAgICAgICAg
bV9jbGlwTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXll
ckZhY3RvcnkoKSwgKnRoaXMpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1fc2Nyb2xs
TGF5ZXItPnNldE5hbWUoImZyYW1lIHNjcm9sbGluZyIpOworICAgICAgICAgICAgbV9zY3JvbGxM
YXllci0+c2V0TmFtZShBU0NJSUxpdGVyYWwoImZyYW1lIHNjcm9sbGluZyIpKTsKICNlbmRpZgog
ICAgICAgICAgICAgLy8gSG9vayB0aGVtIHVwCiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJv
bHNIb3N0TGF5ZXItPmFkZENoaWxkKG1fY2xpcExheWVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCAyOGEwNThlLi42YmFmYzU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBA
IC0xNzI2LDcgKzE3MjYsNyBAQCBTdHJpbmcgUmVuZGVyTGlzdE1hcmtlcjo6c3VmZml4KCkgY29u
c3QKICAgICBjb25zdCBVQ2hhciBzdWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlz
dEl0ZW0udmFsdWUoKSk7CiAKICAgICBpZiAoc3VmZml4ID09ICcgJykKLSAgICAgICAgcmV0dXJu
IFN0cmluZygiICIpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIgIik7CiAKICAgICAv
LyBJZiB0aGUgc3VmZml4IGlzIG5vdCAnICcsIGFuIGV4dHJhIHNwYWNlIGlzIG5lZWRlZAogICAg
IFVDaGFyIGRhdGFbMl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggNmU5NTE5ZS4uNmEyYmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBT
dHJpbmcgZ2V0VGFnTmFtZShOb2RlKiBuKQogICAgIGlmIChuLT5pc0RvY3VtZW50Tm9kZSgpKQog
ICAgICAgICByZXR1cm4gIiI7CiAgICAgaWYgKG4tPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVO
VF9OT0RFKQotICAgICAgICByZXR1cm4gIkNPTU1FTlQiOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJDT01NRU5UIik7CiAgICAgcmV0dXJuIG4tPm5vZGVOYW1lKCk7CiB9CiAKQEAgLTM3
NSwxMyArMzc1LDEzIEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3Qo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4dFswXSkgewogICAgICAgICAgICAgICAgICAg
ICBjYXNlIGJ1bGxldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSAiYnVsbGV0IjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBBU0NJSUxpdGVyYWwoImJ1bGxldCIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
YmxhY2tTcXVhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gImJsYWNrIHNxdWFy
ZSI7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gQVNDSUlMaXRlcmFsKCJibGFjayBz
cXVhcmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIHdoaXRlQnVsbGV0OgotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJ3
aGl0ZSBidWxsZXQiOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IEFTQ0lJTGl0ZXJh
bCgid2hpdGUgYnVsbGV0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBx
dW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXModGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCAzNGYxYmExLi4y
OTBmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
Y2hlY2tTaGFwZUltYWdlT3JpZ2luKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3R5bGVJbWFn
ZSYgcwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gY2FjaGVk
SW1hZ2UudXJsKCk7Ci0gICAgU3RyaW5nIHVybFN0cmluZyA9IHVybC5pc051bGwoKSA/ICInJyIg
OiB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCk7CisgICAgU3RyaW5nIHVybFN0
cmluZyA9IHVybC5pc051bGwoKSA/IEFTQ0lJTGl0ZXJhbCgiJyciKSA6IHVybC5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKTsKICAgICBkb2N1bWVudC5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIlVuc2FmZSBhdHRl
bXB0IHRvIGxvYWQgVVJMICIgKyB1cmxTdHJpbmcgKyAiLiIpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IGVlYTVl
YmUuLmE0YTY3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5j
cHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNl
KE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAKICAgICBtaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQoKTsKIAotICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRhYmxlIChrZXkgVEVYVCBVTklRVUUgT04g
Q09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIp
KSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQ1JF
QVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRhYmxlIChrZXkgVEVYVCBVTklRVUUgT04gQ09O
RkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdGFibGUgSXRlbVRhYmxlIGZv
ciBsb2NhbCBzdG9yYWdlIik7CiAgICAgICAgIG1hcmtJbXBvcnRlZCgpOwogICAgICAgICBtX2Rh
dGFiYXNlT3BlbkZhaWxlZCA9IHRydWU7CkBAIC0yNzIsMTEgKzI3MiwxMSBAQCB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3Ry
YXRlZ3kpCiAKIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQo
KQogewotICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiSXRlbVRhYmxlIikpCisgICAg
aWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKEFTQ0lJTGl0ZXJhbCgiSXRlbVRhYmxlIikpKQog
ICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeSht
X2RhdGFiYXNlLCAiU0VMRUNUIHZhbHVlIEZST00gSXRlbVRhYmxlIExJTUlUIDEiKTsKKyAgICAg
ICAgU1FMaXRlU3RhdGVtZW50IHF1ZXJ5KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNU
IHZhbHVlIEZST00gSXRlbVRhYmxlIExJTUlUIDEiKSk7CiAgICAgICAgIC8vIHRoaXMgcXVlcnkg
aXNuJ3QgZXZlciBleGVjdXRlZC4KICAgICAgICAgaWYgKHF1ZXJ5LmlzQ29sdW1uRGVjbGFyZWRB
c0Jsb2IoMCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBT
dG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiAgICAgICAgICAgICAv
LyB0aGFuIGNvbnRpbnVhbGx5IGhpdHRpbmcgdGhpcyBjYXNlIGFuZCBuZXZlciBiZWluZyBhYmxl
IHRvIHVzZSB0aGUgbG9jYWwgc3RvcmFnZS4KICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgZXZl
ciBoaXQsIGl0J3MgZGVmaW5pdGVseSBhIGJ1Zy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRF
UiBUQUJMRSBJdGVtVGFibGUgUkVOQU1FIFRPIEJhY2t1cF9JdGVtVGFibGUiKSkKKyAgICAgICAg
ICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkFMVEVSIFRB
QkxFIEl0ZW1UYWJsZSBSRU5BTUUgVE8gQmFja3VwX0l0ZW1UYWJsZSIpKSkKICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzYXZlIEl0ZW1UYWJsZSBhZnRlciBtaWdyYXRpb24g
am9iIGZhaWxlZC4iKTsKIAogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI0LDcgKzMyNCw3IEBA
IHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFiYXNlLCAiU0VMRUNUIGtl
eSwgdmFsdWUgRlJPTSBJdGVtVGFibGUiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkobV9k
YXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1Qga2V5LCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSIp
KTsKICAgICBpZiAocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlbGVjdCBpdGVtcyBmcm9tIEl0ZW1UYWJsZSBmb3IgbG9jYWwg
c3RvcmFnZSIpOwogICAgICAgICBtYXJrSW1wb3J0ZWQoKTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luYyhib29sIGNsZWFySXRlbXMsIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiBpdGVtcwogCiAgICAgLy8gSWYgdGhlIGNsZWFyIGZsYWcgaXMgc2V0
LCB0aGVuIHdlIGNsZWFyIGFsbCBpdGVtcyBvdXQgYmVmb3JlIHdlIHdyaXRlIGFueSBuZXcgb25l
cyBpbi4KICAgICBpZiAoY2xlYXJJdGVtcykgewotICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgY2xl
YXIobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIEl0ZW1UYWJsZSIpOworICAgICAgICBTUUxpdGVT
dGF0ZW1lbnQgY2xlYXIobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJERUxFVEUgRlJPTSBJdGVt
VGFibGUiKSk7CiAgICAgICAgIGlmIChjbGVhci5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgY2xlYXIgc3RhdGVtZW50
IC0gY2Fubm90IHdyaXRlIHRvIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UiKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQyMywxMyArNDIzLDEzIEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5j
KGJvb2wgY2xlYXJJdGVtcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgaW5zZXJ0KG1fZGF0YWJhc2Us
ICJJTlNFUlQgSU5UTyBJdGVtVGFibGUgVkFMVUVTICg/LCA/KSIpOworICAgIFNRTGl0ZVN0YXRl
bWVudCBpbnNlcnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJJTlNFUlQgSU5UTyBJdGVtVGFi
bGUgVkFMVUVTICg/LCA/KSIpKTsKICAgICBpZiAoaW5zZXJ0LnByZXBhcmUoKSAhPSBTUUxSZXN1
bHRPaykgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGluc2VydCBzdGF0
ZW1lbnQgLSBjYW5ub3Qgd3JpdGUgdG8gbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgU1FMaXRlU3RhdGVtZW50IHJlbW92ZShtX2RhdGFiYXNl
LCAiREVMRVRFIEZST00gSXRlbVRhYmxlIFdIRVJFIGtleT0/Iik7CisgICAgU1FMaXRlU3RhdGVt
ZW50IHJlbW92ZShtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIkRFTEVURSBGUk9NIEl0ZW1UYWJs
ZSBXSEVSRSBrZXk9PyIpKTsKICAgICBpZiAocmVtb3ZlLnByZXBhcmUoKSAhPSBTUUxSZXN1bHRP
aykgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGRlbGV0ZSBzdGF0ZW1l
bnQgLSBjYW5ub3Qgd3JpdGUgdG8gbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm47CkBAIC00OTcsNyArNDk3LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVt
cHR5RGF0YWJhc2UoKQogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU1FMaXRlU3RhdGVtZW50IHF1ZXJ5KG1fZGF0YWJhc2UsICJTRUxFQ1QgQ09V
TlQoKikgRlJPTSBJdGVtVGFibGUiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkobV9kYXRh
YmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBJdGVtVGFibGUiKSk7CiAg
ICAgaWYgKHF1ZXJ5LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjb3VudCBudW1iZXIgb2Ygcm93cyBpbiBJdGVtVGFibGUgZm9yIGxvY2Fs
IHN0b3JhZ2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcAppbmRleCBkYzIzNmMzLi40NjBkNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFN0cmluZyBTdG9y
YWdlVHJhY2tlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKIFN0cmluZyBTdG9yYWdl
VHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNl
TXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0
YWJhc2VGaWxlTmFtZVRvUGF0aChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiU3RvcmFnZVRyYWNr
ZXIuZGIiKTsKKyAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxl
TmFtZVRvUGF0aChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCBBU0NJSUxpdGVyYWwoIlN0b3JhZ2VU
cmFja2VyLmRiIikpOwogfQogCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFi
YXNlKGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCkBAIC0xNTYsOCArMTU2LDggQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogICAgIAogICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogICAg
IAotICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIpKSB7Ci0gICAgICAg
IGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9y
aWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBwYXRoIFRFWFQpOyIpKQorICAg
IGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cyhBU0NJSUxpdGVyYWwoIk9yaWdpbnMiKSkpIHsK
KyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQ1JF
QVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCBwYXRoIFRFWFQpOyIpKSkKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0
ZSBPcmlnaW5zIHRhYmxlLiIpOwogICAgIH0KIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogICAgICAgICBpZiAo
bV9kYXRhYmFzZS5pc09wZW4oKSkgewogICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgICAgICAgICBTUUxp
dGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1Qgb3JpZ2luIEZST00gT3Jp
Z2lucyIpOworICAgICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNl
LCBBU0NJSUxpdGVyYWwoIlNFTEVDVCBvcmlnaW4gRlJPTSBPcmlnaW5zIikpOwogICAgICAgICAg
ICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudC4iKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6
c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgIFZlY3RvcjxTdHJpbmc+IHBh
dGhzOwogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7
Ci0gICAgICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAi
Ki5sb2NhbHN0b3JhZ2UiKTsKKyAgICAgICAgcGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fc3RvcmFn
ZURpcmVjdG9yeVBhdGgsIEFTQ0lJTGl0ZXJhbCgiKi5sb2NhbHN0b3JhZ2UiKSk7CiAgICAgfQog
CiAgICAgLy8gVXNlIGEgY29weSBvZiBtX29yaWdpblNldCB0byBmaW5kIGV4cGlyZWQgZW50cmll
cyBhbmQgdG8gc2NoZWR1bGUgdGhlaXIKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFN0b3JhZ2VU
cmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIGNvbnN0CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5U
TyBPcmlnaW5zIFZBTFVFUyAoPywgPykiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiSU5TRVJUIElOVE8gT3JpZ2lucyBWQUxVRVMgKD8s
ID8pIikpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJyVzJyBpbiB0aGUg
dHJhY2tlciIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm47CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFs
bE9yaWdpbnMoKQogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVD
VCBvcmlnaW4sIHBhdGggRlJPTSBPcmlnaW5zIik7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRl
bWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCBvcmlnaW4sIHBhdGggRlJPTSBP
cmlnaW5zIikpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7
CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50LiIpOwogICAg
ICAgICByZXR1cm47CkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y0RlbGV0ZUFsbE9yaWdpbnMoKQogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsK
ICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgZGVsZXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxF
VEUgRlJPTSBPcmlnaW5zIik7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBkZWxldGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJERUxFVEUgRlJPTSBPcmlnaW5zIikpOwogICAg
ICAgICBpZiAoZGVsZXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBhbGwgb3Jp
Z2lucyIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFNRTGl0ZVN0YXRlbWVudCBk
ZWxldGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIE9yaWdpbnMgd2hlcmUgb3Jp
Z2luPT8iKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgZGVsZXRlU3RhdGVtZW50KG1fZGF0YWJhc2Us
IEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gT3JpZ2lucyB3aGVyZSBvcmlnaW49PyIpKTsKICAg
ICBpZiAoZGVsZXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIG9yaWdpbiAnJXMnIiwg
b3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU5
Niw3ICs1OTYsNyBAQCBTdHJpbmcgU3RvcmFnZVRyYWNrZXI6OmRhdGFiYXNlUGF0aEZvck9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAKICAgICBTUUxpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICBTUUxpdGVT
dGF0ZW1lbnQgcGF0aFN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHBhdGggRlJPTSBPcmln
aW5zIFdIRVJFIG9yaWdpbj0/Iik7CisgICAgU1FMaXRlU3RhdGVtZW50IHBhdGhTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1QgcGF0aCBGUk9NIE9yaWdpbnMgV0hFUkUg
b3JpZ2luPT8iKSk7CiAgICAgaWYgKHBhdGhTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3Vs
dE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgc2VsZWN0aW9uIG9m
IHBhdGggZm9yIG9yaWdpbiAnJXMnIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmlu
ZGV4IGUxMWZhM2UuLmZiMGQ3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAt
MTcyLDcgKzE3Miw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogCiAgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7
CiAgICAgICAgICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSAmJiBmYXN0R2V0QXR0cmlidXRlKFhM
aW5rTmFtZXM6OnNob3dBdHRyKSA9PSAibmV3IikKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSAi
X2JsYW5rIjsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBBU0NJSUxpdGVyYWwoIl9ibGFuayIp
OwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAKICAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3Bw
CmluZGV4IDFkNGFmMTYuLjI1NGJkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcApAQCAtODMs
NyArODMsNyBAQCBTdHJpbmcgU1ZHQ29sb3I6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIGNh
c2UgU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1I6CiAgICAgICAgIGlmIChtX2NvbG9yLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHJldHVybiBtX2NvbG9yLnNlcmlhbGl6ZWQoKTsKLSAgICAgICAg
cmV0dXJuICJjdXJyZW50Q29sb3IiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjdXJy
ZW50Q29sb3IiKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKaW5kZXggZTMwZTI3MC4uOGVmZTQ3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKQEAgLTYxLDExICs2MSwxMSBAQCBib29s
IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KERvY3VtZW50KiBkb2MsIGNvbnN0IFVDaGFy
KiYgYywgY29uc3QgVUNoYXIqCiAgICAgfQogCiAgICAgaWYgKHdpZHRoIDwgMC4wKSB7IC8vIGNo
ZWNrIHRoYXQgd2lkdGggaXMgcG9zaXRpdmUKLSAgICAgICAgZG9jLT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IHdpZHRoIGlz
IG5vdCBhbGxvd2VkIik7CisgICAgICAgIGRvYy0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBv
cnRFcnJvcihBU0NJSUxpdGVyYWwoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIFZpZXdCb3ggd2lkdGgg
aXMgbm90IGFsbG93ZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYg
KGhlaWdodCA8IDAuMCkgeyAvLyBjaGVjayB0aGF0IGhlaWdodCBpcyBwb3NpdGl2ZQotICAgICAg
ICBkb2MtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFs
dWUgZm9yIFZpZXdCb3ggaGVpZ2h0IGlzIG5vdCBhbGxvd2VkIik7CisgICAgICAgIGRvYy0+YWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcihBU0NJSUxpdGVyYWwoIkEgbmVnYXRpdmUg
dmFsdWUgZm9yIFZpZXdCb3ggaGVpZ2h0IGlzIG5vdCBhbGxvd2VkIikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjLCBlbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYWludC5jcHAKaW5kZXggYjk1M2FhYS4uZWYzZjA5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGFpbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBTVkdQYWludDo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0CiAgICAgY2FzZSBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUjoKICAgICAgICAg
cmV0dXJuIFNWR0NvbG9yOjpjdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBTVkdfUEFJTlRUWVBF
X05PTkU6Ci0gICAgICAgIHJldHVybiAibm9uZSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIm5vbmUiKTsKICAgICBjYXNlIFNWR19QQUlOVFRZUEVfVVJJX05PTkU6CiAgICAgICAgIHJl
dHVybiBtX3VyaSArICIgbm9uZSI7CiAgICAgY2FzZSBTVkdfUEFJTlRUWVBFX1VSSV9DVVJSRU5U
Q09MT1I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBmZGY5YWQyLi40
Y2I2NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTI0MCw3ICsy
NDAsNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjpwYXRoTGVuZ3RoQXR0cikgewogICAgICAgICBzZXRQYXRoTGVuZ3RoQmFzZVZhbHVlKHZhbHVl
LnRvRmxvYXQoKSk7CiAgICAgICAgIGlmIChwYXRoTGVuZ3RoQmFzZVZhbHVlKCkgPCAwKQotICAg
ICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJB
IG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0ZSA8cGF0aExlbmd0aD4gaXMgbm90IGFs
bG93ZWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5y
ZXBvcnRFcnJvcihBU0NJSUxpdGVyYWwoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHBhdGggYXR0cmli
dXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dlZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCmlu
ZGV4IDE1Yjk3YzIuLjU3NGUyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5jcHAKQEAgLTMyNCwzNyArMzI0LDM3IEBAIFN0cmluZyBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIAogICAgIHN3aXRjaCAobV9hbGln
bikgewogICAgIGNhc2UgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORToKLSAgICAgICAgYWxp
Z25UeXBlID0gIm5vbmUiOworICAgICAgICBhbGlnblR5cGUgPSBBU0NJSUxpdGVyYWwoIm5vbmUi
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlO
WU1JTjoKLSAgICAgICAgYWxpZ25UeXBlID0gInhNaW5ZTWluIjsKKyAgICAgICAgYWxpZ25UeXBl
ID0gQVNDSUlMaXRlcmFsKCJ4TWluWU1pbiIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOOgotICAgICAgICBhbGlnblR5cGUgPSAieE1p
ZFlNaW4iOworICAgICAgICBhbGlnblR5cGUgPSBBU0NJSUxpdGVyYWwoInhNaWRZTWluIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU46
Ci0gICAgICAgIGFsaWduVHlwZSA9ICJ4TWF4WU1pbiI7CisgICAgICAgIGFsaWduVHlwZSA9IEFT
Q0lJTGl0ZXJhbCgieE1heFlNaW4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRDoKLSAgICAgICAgYWxpZ25UeXBlID0gInhNaW5ZTWlk
IjsKKyAgICAgICAgYWxpZ25UeXBlID0gQVNDSUlMaXRlcmFsKCJ4TWluWU1pZCIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAg
ICAgICBhbGlnblR5cGUgPSAieE1pZFlNaWQiOworICAgICAgICBhbGlnblR5cGUgPSBBU0NJSUxp
dGVyYWwoInhNaWRZTWlkIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1BWFlNSUQ6Ci0gICAgICAgIGFsaWduVHlwZSA9ICJ4TWF4WU1pZCI7Cisg
ICAgICAgIGFsaWduVHlwZSA9IEFTQ0lJTGl0ZXJhbCgieE1heFlNaWQiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKLSAgICAgICAg
YWxpZ25UeXBlID0gInhNaW5ZTWF4IjsKKyAgICAgICAgYWxpZ25UeXBlID0gQVNDSUlMaXRlcmFs
KCJ4TWluWU1heCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSURZTUFYOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pZFlNYXgiOworICAgICAg
ICBhbGlnblR5cGUgPSBBU0NJSUxpdGVyYWwoInhNaWRZTWF4Iik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVg6Ci0gICAgICAgIGFsaWdu
VHlwZSA9ICJ4TWF4WU1heCI7CisgICAgICAgIGFsaWduVHlwZSA9IEFTQ0lJTGl0ZXJhbCgieE1h
eFlNYXgiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19VTktOT1dOOgotICAgICAgICBhbGlnblR5cGUgPSAidW5rbm93biI7CisgICAgICAgIGFsaWdu
VHlwZSA9IEFTQ0lJTGl0ZXJhbCgidW5rbm93biIpOwogICAgICAgICBicmVhazsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggZmYyYjk3YS4uODkyMzA1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIHZv
aWQgU1ZHVXNlRWxlbWVudDo6dG9DbGlwUGF0aChQYXRoJiBwYXRoKQogICAgIGlmIChuLT5pc1NW
R0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQoKm4pLmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkpIHsK
ICAgICAgICAgaWYgKCFpc0RpcmVjdFJlZmVyZW5jZSh0b1NWR0VsZW1lbnQoKm4pKSkgewogICAg
ICAgICAgICAgLy8gU3BlYzogSW5kaXJlY3QgcmVmZXJlbmNlcyBhcmUgYW4gZXJyb3IgKDE0LjMu
NSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRF
cnJvcigiTm90IGFsbG93ZWQgdG8gdXNlIGluZGlyZWN0IHJlZmVyZW5jZSBpbiA8Y2xpcC1wYXRo
PiIpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9y
dEVycm9yKEFTQ0lJTGl0ZXJhbCgiTm90IGFsbG93ZWQgdG8gdXNlIGluZGlyZWN0IHJlZmVyZW5j
ZSBpbiA8Y2xpcC1wYXRoPiIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRvU1ZH
R3JhcGhpY3NFbGVtZW50KCpuKS50b0NsaXBQYXRoKHBhdGgpOwogICAgICAgICAgICAgLy8gRklY
TUU6IEF2b2lkIG1hbnVhbCByZXNvbHV0aW9uIG9mIHgveSBoZXJlLiBJdHMgcG90ZW50aWFsbHkg
aGFybWZ1bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5jcHAKaW5kZXggY2I0MzhhOC4uYWE5ZTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTM5OCw3ICszOTgsNyBAQCBib29sIFNW
R1NNSUxFbGVtZW50OjpwYXJzZUNvbmRpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlLCBCZWdpbk9y
RW5kIGJlZ2luT3JFbmQpCiAgICAgICAgIHJlcGVhdHMgPSBuYW1lU3RyaW5nLnN1YnN0cmluZyg3
LCBuYW1lU3RyaW5nLmxlbmd0aCgpIC0gOCkudG9VSW50U3RyaWN0KCZvayk7CiAgICAgICAgIGlm
ICghb2spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG5hbWVTdHJpbmcgPSAi
cmVwZWF0IjsKKyAgICAgICAgbmFtZVN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgicmVwZWF0Iik7CiAg
ICAgICAgIHR5cGUgPSBDb25kaXRpb246OkV2ZW50QmFzZTsKICAgICB9IGVsc2UgaWYgKG5hbWVT
dHJpbmcgPT0gImJlZ2luIiB8fCBuYW1lU3RyaW5nID09ICJlbmQiKSB7CiAgICAgICAgIGlmIChi
YXNlSUQuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
aW5kZXggMDQxMDJkYi4uYmMxNDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0VHJhbnNwYXJl
bnQodHJ1ZSk7IC8vIFNWRyBJbWFnZXMgYXJlIHRyYW5zcGFyZW50LgogCiAgICAgICAgIEFTU0VS
VChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3Vs
ZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgotICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwi
KTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1J
TUVUeXBlKEFTQ0lJTGl0ZXJhbCgiaW1hZ2Uvc3ZnK3htbCIpKTsKICAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRo
ZSBlbXB0eSBkb2N1bWVudAogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CkBAIC0zODks
NyArMzg5LDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAKIFN0cmluZyBTVkdJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewotICAg
IHJldHVybiAic3ZnIjsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzdmciKTsKIH0KIAogYm9v
bCBpc0luU1ZHSW1hZ2UoY29uc3QgRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCAxMmZiZWQ0Li43ZDU5ZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC01ODEsMTAgKzU4MSwxMCBAQCBTdHJpbmcgSW50ZXJuYWxzOjpz
aGFkb3dSb290VHlwZShjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
IAogICAgIHN3aXRjaCAodG9TaGFkb3dSb290KHJvb3QpLT50eXBlKCkpIHsKICAgICBjYXNlIFNo
YWRvd1Jvb3Q6OlVzZXJBZ2VudFNoYWRvd1Jvb3Q6Ci0gICAgICAgIHJldHVybiBTdHJpbmcoIlVz
ZXJBZ2VudFNoYWRvd1Jvb3QiKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVXNlckFn
ZW50U2hhZG93Um9vdCIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCJVbmtub3duIik7CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIlVua25vd24iKTsKICAgICB9CiB9CiAKQEAgLTEyMDgsNyArMTIwOCw3IEBA
IFN0cmluZyBJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IHZhbHVlKQogICAgICAgICBTdHJpbmcgaW5mZXJyZWROYW1lID0gZnVuY0V4ZWN1dGFibGUtPmlu
ZmVycmVkTmFtZSgpLnN0cmluZygpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCJmdW5jdGlvbiBc
IiIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKGluZmVycmVkTmFtZSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoIlwiIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyInKTsKICAgICB9IGVsc2Ug
aWYgKGV4ZWN1dGFibGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiZXZhbCIpOwogICAgIGVsc2UgewpAQCAtMTIxOCwxMSArMTIxOCwxMSBAQCBTdHJpbmcgSW50
ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkKIAog
ICAgIHJlc3VsdC5hcHBlbmQoIiB7ICIpOwogICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc3RhcnRM
aW5lKTsKLSAgICByZXN1bHQuYXBwZW5kKCI6Iik7CisgICAgcmVzdWx0LmFwcGVuZCgnOicpOwog
ICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc3RhcnRDb2x1bW4pOwogICAgIHJlc3VsdC5hcHBlbmQo
IiAtICIpOwogICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoZW5kTGluZSk7Ci0gICAgcmVzdWx0LmFw
cGVuZCgiOiIpOworICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKICAgICByZXN1bHQuYXBwZW5kTnVt
YmVyKGVuZENvbHVtbik7CiAgICAgcmVzdWx0LmFwcGVuZCgiIH0iKTsKIApAQCAtMTk5MywxMyAr
MTk5MywxMyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpnZXRDdXJyZW50Q3Vyc29ySW5mbyhFeGNlcHRp
b25Db2RlJiBlYykKICAgICByZXN1bHQuYXBwZW5kKGN1cnNvclR5cGVUb1N0cmluZyhjdXJzb3Iu
dHlwZSgpKSk7CiAgICAgcmVzdWx0LmFwcGVuZCgiIGhvdFNwb3Q9Iik7CiAgICAgcmVzdWx0LmFw
cGVuZE51bWJlcihjdXJzb3IuaG90U3BvdCgpLngoKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiLCIp
OworICAgIHJlc3VsdC5hcHBlbmQoJywnKTsKICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKGN1cnNv
ci5ob3RTcG90KCkueSgpKTsKICAgICBpZiAoY3Vyc29yLmltYWdlKCkpIHsKICAgICAgICAgRmxv
YXRTaXplIHNpemUgPSBjdXJzb3IuaW1hZ2UoKS0+c2l6ZSgpOwogICAgICAgICByZXN1bHQuYXBw
ZW5kKCIgaW1hZ2U9Iik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc2l6ZS53aWR0aCgp
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgieCIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCd4
Jyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc2l6ZS5oZWlnaHQoKSk7CiAgICAgfQog
I2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTG9jYXRpb24uY3BwCmluZGV4IGM2ZmNjZWIuLjIzZTJmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIFN0cmluZyBXb3Jr
ZXJMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cGF0aG5h
bWUoKSBjb25zdAogewotICAgIHJldHVybiBtX3VybC5wYXRoKCkuaXNFbXB0eSgpID8gIi8iIDog
bV91cmwucGF0aCgpOworICAgIHJldHVybiBtX3VybC5wYXRoKCkuaXNFbXB0eSgpID8gQVNDSUlM
aXRlcmFsKCIvIikgOiBtX3VybC5wYXRoKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6
c2VhcmNoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAppbmRleCAwNWM1ZmE0Li4yODVkNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgY29uc3QgVVJM
JiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0
cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1
ZXN0KCkKIHsKICAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVx
dWVzdD4obV91cmwpOwotICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIHJl
cXVlc3QtPnNldEhUVFBNZXRob2QoQVNDSUlMaXRlcmFsKCJHRVQiKSk7CiAgICAgcmV0dXJuIFdU
Rjo6bW92ZShyZXF1ZXN0KTsKIH0KICAgICAKQEAgLTEyMyw5ICsxMjMsOSBAQCB2b2lkIFdvcmtl
clNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikK
IAogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5n
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0IiwgbV9yZXNwb25zZUVuY29kaW5nKTsKKyAgICAgICAg
ICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwo
InRleHQvamF2YXNjcmlwdCIpLCBtX3Jlc3BvbnNlRW5jb2RpbmcpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQv
amF2YXNjcmlwdCIsICJVVEYtOCIpOworICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9qYXZhc2NyaXB0IiksICJVVEYt
OCIpOwogICAgIH0KIAogICAgIGlmICghbGVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAppbmRl
eCA2NzNjNWZiLi4xMzY4YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJy
b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcApAQCAtNjAsMTEg
KzYwLDExIEBAIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwgY29u
c3QgY2hhciogbWVzc2FnZSwgVGV4dFBvc2l0aW9uIHBvCiAgICAgaWYgKHR5cGUgPT0gZmF0YWwg
fHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiBtX2xhc3RFcnJvclBvc2l0aW9uLm1fbGlu
ZSAhPSBwb3NpdGlvbi5tX2xpbmUgJiYgbV9sYXN0RXJyb3JQb3NpdGlvbi5tX2NvbHVtbiAhPSBw
b3NpdGlvbi5tX2NvbHVtbikpIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNh
c2Ugd2FybmluZzoKLSAgICAgICAgICAgIGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyIsIHBv
c2l0aW9uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIGFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxp
dGVyYWwoIndhcm5pbmciKSwgcG9zaXRpb24sIG1lc3NhZ2UpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgZmF0YWw6CiAgICAgICAgIGNhc2Ugbm9uRmF0YWw6Ci0gICAgICAgICAg
ICBhcHBlbmRFcnJvck1lc3NhZ2UoImVycm9yIiwgcG9zaXRpb24sIG1lc3NhZ2UpOworICAgICAg
ICAgICAgYXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgcG9zaXRpb24s
IG1lc3NhZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgbV9sYXN0RXJyb3JQb3NpdGlvbiA9IHBv
c2l0aW9uOwpAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCogZG9jLCBjbwogCiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGgzID0gZG9jLT5jcmVhdGVFbGVtZW50KGgzVGFnLCB0cnVlKTsKICAg
ICByZXBvcnRFbGVtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChoMy5nZXQoKSk7Ci0gICAgaDMtPnBh
cnNlckFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgcGFnZSBjb250YWlucyB0
aGUgZm9sbG93aW5nIGVycm9yczoiKSk7CisgICAgaDMtPnBhcnNlckFwcGVuZENoaWxkKGRvYy0+
Y3JlYXRlVGV4dE5vZGUoQVNDSUlMaXRlcmFsKCJUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxv
d2luZyBlcnJvcnM6IikpKTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBmaXhlZCA9IGRvYy0+Y3Jl
YXRlRWxlbWVudChkaXZUYWcsIHRydWUpOwogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGZpeGVkQXR0
cmlidXRlczsKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RWxl
bWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCogZG9jLCBjbwogCiAg
ICAgaDMgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoaDNUYWcsIHRydWUpOwogICAgIHJlcG9ydEVsZW1l
bnQtPnBhcnNlckFwcGVuZENoaWxkKGgzLmdldCgpKTsKLSAgICBoMy0+cGFyc2VyQXBwZW5kQ2hp
bGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgiQmVsb3cgaXMgYSByZW5kZXJpbmcgb2YgdGhlIHBhZ2Ug
dXAgdG8gdGhlIGZpcnN0IGVycm9yLiIpKTsKKyAgICBoMy0+cGFyc2VyQXBwZW5kQ2hpbGQoZG9j
LT5jcmVhdGVUZXh0Tm9kZShBU0NJSUxpdGVyYWwoIkJlbG93IGlzIGEgcmVuZGVyaW5nIG9mIHRo
ZSBwYWdlIHVwIHRvIHRoZSBmaXJzdCBlcnJvci4iKSkpOwogCiAgICAgcmV0dXJuIHJlcG9ydEVs
ZW1lbnQucmVsZWFzZSgpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgWE1MRXJyb3JzOjpp
bnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBoZWFkID0g
bV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChoZWFkVGFnLCB0cnVlKTsKICAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IHN0eWxlID0gbV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChzdHlsZVRhZywgdHJ1
ZSk7CiAgICAgICAgIGhlYWQtPnBhcnNlckFwcGVuZENoaWxkKHN0eWxlKTsKLSAgICAgICAgc3R5
bGUtPnBhcnNlckFwcGVuZENoaWxkKG1fZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKCJodG1sLCBi
b2R5IHsgaGVpZ2h0OiAxMDAlIH0gcGFyc2VyZXJyb3IgKyBzdmcgeyB3aWR0aDogMTAwJTsgaGVp
Z2h0OiAxMDAlIH0iKSk7CisgICAgICAgIHN0eWxlLT5wYXJzZXJBcHBlbmRDaGlsZChtX2RvY3Vt
ZW50LT5jcmVhdGVUZXh0Tm9kZShBU0NJSUxpdGVyYWwoImh0bWwsIGJvZHkgeyBoZWlnaHQ6IDEw
MCUgfSBwYXJzZXJlcnJvciArIHN2ZyB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCUgfSIpKSk7
CiAgICAgICAgIHN0eWxlLT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgcm9vdEVs
ZW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKGhlYWQpOwogICAgICAgICBSZWZQdHI8RWxlbWVudD4g
Ym9keSA9IG1fZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgdHJ1ZSk7CkBAIC0xNTQs
NyArMTU0LDcgQEAgdm9pZCBYTUxFcnJvcnM6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICAg
ICAgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNl
OiBub3JtYWwiKSk7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGggPSBtX2RvY3Vt
ZW50LT5jcmVhdGVFbGVtZW50KHBUYWcsIHRydWUpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNl
clNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7Ci0gICAgICAgIHBhcmFncmFwaC0+cGFyc2VyQXBw
ZW5kQ2hpbGQobV9kb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNy
ZWF0ZWQgYXMgdGhlIHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFu
ZCBjb2x1bW4gbnVtYmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIp
KTsKKyAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJBcHBlbmRDaGlsZChtX2RvY3VtZW50LT5jcmVh
dGVUZXh0Tm9kZShBU0NJSUxpdGVyYWwoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhl
IHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVt
YmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIpKSk7CiAgICAgICAg
IHJlcG9ydEVsZW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKHBhcmFncmFwaC5yZWxlYXNlKCkpOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZDgx
ZTA2OS4uMWE3ZTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1bnNpZ25lZCBs
b25nIHRpbWVvdXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRy
aWdnZXIgb3IgdXBkYXRlIHRoZSB0aW1lb3V0IFRpbWVyIGhlcmUsIGlmIG5lZWRlZC4gaHR0cDov
L3dlYmtpdC5vcmcvYi85ODE1NgogICAgIC8vIFhIUjIgc3BlYywgNC43LjMuICJUaGlzIGltcGxp
ZXMgdGhhdCB0aGUgdGltZW91dCBhdHRyaWJ1dGUgY2FuIGJlIHNldCB3aGlsZSBmZXRjaGluZyBp
cyBpbiBwcm9ncmVzcy4gSWYgdGhhdCBvY2N1cnMgaXQgd2lsbCBzdGlsbCBiZSBtZWFzdXJlZCBy
ZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgZmV0Y2hpbmcuIgogICAgIGlmIChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSAmJiAhbV9hc3luYykgewotICAgICAgICBsb2dDb25z
b2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAiWE1MSHR0cFJlcXVlc3QudGltZW91
dCBjYW5ub3QgYmUgc2V0IGZvciBzeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJv
bSB0aGUgd2luZG93IGNvbnRleHQuIik7CisgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIEFTQ0lJTGl0ZXJhbCgiWE1MSHR0cFJlcXVlc3QudGltZW91dCBj
YW5ub3QgYmUgc2V0IGZvciBzeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0
aGUgd2luZG93IGNvbnRleHQuIikpOwogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZXRSZXNwb25zZVR5cGUoY29uc3QgU3RyaW5nJiByZXNwb25zZVR5cGUsIEV4Y2Vw
dGlvbkNvZGUmCiAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBm
b3IgSFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3RzIGZvciBsb2NhbCBwcm90b2Nv
bHMKICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBkYXRhOiBzdGlsbCBtYWtlIHNlbnNlIHRvIGFs
bG93LgogICAgIGlmICghbV9hc3luYyAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9j
dW1lbnQoKSAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKLSAgICAgICAgbG9n
Q29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlhNTEh0dHBSZXF1ZXN0LnJl
c3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Igc3luY2hyb25vdXMgSFRUUChTKSByZXF1
ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpOworICAgICAgICBsb2dDb25zb2xl
RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBBU0NJSUxpdGVyYWwoIlhNTEh0dHBSZXF1
ZXN0LnJlc3BvbnNlVHlwZSBjYW5ub3QgYmUgY2hhbmdlZCBmb3Igc3luY2hyb25vdXMgSFRUUChT
KSByZXF1ZXN0cyBtYWRlIGZyb20gdGhlIHdpbmRvdyBjb250ZXh0LiIpKTsKICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMjIsMTUg
KzMyMiwxNSBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVHlwZSgpCiAgICAgY2Fz
ZSBSZXNwb25zZVR5cGVEZWZhdWx0OgogICAgICAgICByZXR1cm4gIiI7CiAgICAgY2FzZSBSZXNw
b25zZVR5cGVUZXh0OgotICAgICAgICByZXR1cm4gInRleHQiOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJ0ZXh0Iik7CiAgICAgY2FzZSBSZXNwb25zZVR5cGVKU09OOgotICAgICAgICBy
ZXR1cm4gImpzb24iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJqc29uIik7CiAgICAg
Y2FzZSBSZXNwb25zZVR5cGVEb2N1bWVudDoKLSAgICAgICAgcmV0dXJuICJkb2N1bWVudCI7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRvY3VtZW50Iik7CiAgICAgY2FzZSBSZXNwb25z
ZVR5cGVCbG9iOgotICAgICAgICByZXR1cm4gImJsb2IiOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJibG9iIik7CiAgICAgY2FzZSBSZXNwb25zZVR5cGVBcnJheUJ1ZmZlcjoKLSAgICAg
ICAgcmV0dXJuICJhcnJheWJ1ZmZlciI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFy
cmF5YnVmZmVyIik7CiAgICAgfQogICAgIHJldHVybiAiIjsKIH0KQEAgLTUwMCw3ICs1MDAsNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBV
UkwmIHVybCwgYm9vbCBhc3luYywgRXhjZQogCiAgICAgaWYgKCFhc3luYyAmJiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKSAmJiAhZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+c3luY1hIUkluRG9jdW1lbnRz
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAiU3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3RzIGFyZSBkaXNhYmxlZCBmb3Ig
dGhpcyBwYWdlLiIpOworICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgQVNDSUlMaXRlcmFsKCJTeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgYXJl
IGRpc2FibGVkIGZvciB0aGlzIHBhZ2UuIikpOwogICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTUxMCw3ICs1MTAs
NyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25z
dCBVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZQogICAgICAgICAvLyBXZSdsbCBvbmx5IGRpc2Fi
bGUgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBIVFRQKFMpIHJlcXVlc3RzIHNpbmNlIHN5bmMgcmVx
dWVzdHMgZm9yIGxvY2FsIHByb3RvY29scwogICAgICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBk
YXRhOiBzdGlsbCBtYWtlIHNlbnNlIHRvIGFsbG93LgogICAgICAgICBpZiAodXJsLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSAmJiBtX3Jlc3BvbnNlVHlwZUNvZGUgIT0gUmVzcG9uc2VUeXBlRGVm
YXVsdCkgewotICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgIlN5bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3aW5kb3cg
Y29udGV4dCBjYW5ub3QgaGF2ZSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgc2V0LiIpOwor
ICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgQVND
SUlMaXRlcmFsKCJTeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2lu
ZG93IGNvbnRleHQgY2Fubm90IGhhdmUgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIHNldC4i
KSk7CiAgICAgICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGFzeW5jLCBF
eGNlCiAjaWYgRU5BQkxFKFhIUl9USU1FT1VUKQogICAgICAgICAvLyBTaW1pbGFybHksIHRpbWVv
dXRzIGFyZSBkaXNhYmxlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMgYXMgd2VsbC4KICAgICAg
ICAgaWYgKG1fdGltZW91dE1pbGxpc2Vjb25kcyA+IDApIHsKLSAgICAgICAgICAgIGxvZ0NvbnNv
bGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJTeW5jaHJvbm91cyBYTUxIdHRwUmVx
dWVzdHMgbXVzdCBub3QgaGF2ZSBhIHRpbWVvdXQgdmFsdWUgc2V0LiIpOworICAgICAgICAgICAg
bG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgQVNDSUlMaXRlcmFsKCJT
eW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgbXVzdCBub3QgaGF2ZSBhIHRpbWVvdXQgdmFsdWUg
c2V0LiIpKTsKICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01ODUsMTUgKzU4NSwxNSBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX21ldGhvZCAhPSAiR0VUIiAmJiBtX21ldGhvZCAhPSAi
SEVBRCIgJiYgbV91cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIFN0cmlu
ZyBjb250ZW50VHlwZSA9IGdldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIpOworICAgICAg
ICBTdHJpbmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKEFTQ0lJTGl0ZXJhbCgiQ29u
dGVudC1UeXBlIikpOwogICAgICAgICBpZiAoY29udGVudFR5cGUuaXNFbXB0eSgpKSB7CiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKHVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhl
YWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl
bmNvZGVkIik7CisgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKEFTQ0lJ
TGl0ZXJhbCgiQ29udGVudC1UeXBlIiksIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIikpOwogICAgICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGNoYXJzZXQgdXNlZCBmb3Ig
ZW5jb2RpbmcuCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKCJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgICAgICAgICAgc2V0UmVxdWVz
dEhlYWRlckludGVybmFsKEFTQ0lJTGl0ZXJhbCgiQ29udGVudC1UeXBlIiksIEFTQ0lJTGl0ZXJh
bCgiYXBwbGljYXRpb24veG1sIikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IEFj
Y29yZGluZyB0byBYTUxIdHRwUmVxdWVzdCBMZXZlbCAyLCB0aGlzIHNob3VsZCB1c2UgdGhlIERv
Y3VtZW50LmlubmVySFRNTCBhbGdvcml0aG0KQEAgLTYxNiwxNiArNjE2LDE2IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OnNlbmQoY29uc3QgU3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFib2R5LmlzTnVsbCgpICYmIG1fbWV0aG9kICE9
ICJHRVQiICYmIG1fbWV0aG9kICE9ICJIRUFEIiAmJiBtX3VybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpIHsKLSAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcigi
Q29udGVudC1UeXBlIik7CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IGdldFJlcXVlc3RI
ZWFkZXIoQVNDSUlMaXRlcmFsKCJDb250ZW50LVR5cGUiKSk7CiAgICAgICAgIGlmIChjb250ZW50
VHlwZS5pc0VtcHR5KCkpIHsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAg
ICAgICBpZiAodXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKLSAgICAg
ICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgICAgICBzZXRSZXF1
ZXN0SGVhZGVySW50ZXJuYWwoQVNDSUlMaXRlcmFsKCJDb250ZW50LVR5cGUiKSwgQVNDSUlMaXRl
cmFsKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSk7CiAgICAgICAgICAgICBl
bHNlCiAjZW5kaWYKLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNv
bnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94bWwiKTsKKyAgICAgICAgICAgICAgICBzZXRSZXF1
ZXN0SGVhZGVySW50ZXJuYWwoQVNDSUlMaXRlcmFsKCJDb250ZW50LVR5cGUiKSwgQVNDSUlMaXRl
cmFsKCJhcHBsaWNhdGlvbi94bWwiKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBy
ZXBsYWNlQ2hhcnNldEluTWVkaWFUeXBlKGNvbnRlbnRUeXBlLCAiVVRGLTgiKTsKKyAgICAgICAg
ICAgIHJlcGxhY2VDaGFyc2V0SW5NZWRpYVR5cGUoY29udGVudFR5cGUsIEFTQ0lJTGl0ZXJhbCgi
VVRGLTgiKSk7CiAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlKTsKICAgICAgICAgfQogCkBAIC02NDMsMTQgKzY0
MywxNCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kKEJsb2IqIGJvZHksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9tZXRob2QgIT0gIkdFVCIgJiYg
bV9tZXRob2QgIT0gIkhFQUQiICYmIG1fdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewot
ICAgICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcigiQ29u
dGVudC1UeXBlIik7CisgICAgICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBnZXRSZXF1
ZXN0SGVhZGVyKEFTQ0lJTGl0ZXJhbCgiQ29udGVudC1UeXBlIikpOwogICAgICAgICBpZiAoY29u
dGVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGJsb2JUeXBl
ID0gYm9keS0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKCFibG9iVHlwZS5pc0VtcHR5KCkgJiYg
aXNWYWxpZENvbnRlbnRUeXBlKGJsb2JUeXBlKSkKLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0
SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsIGJsb2JUeXBlKTsKKyAgICAgICAgICAgICAg
ICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoQVNDSUlMaXRlcmFsKCJDb250ZW50LVR5cGUiKSwg
YmxvYlR5cGUpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gRnJvbSBG
aWxlQVBJIHNwZWMsIHdoZW5ldmVyIG1lZGlhIHR5cGUgY2Fubm90IGJlIGRldGVybWluZWQsIGVt
cHR5IHN0cmluZyBtdXN0IGJlIHJldHVybmVkLgotICAgICAgICAgICAgICAgIHNldFJlcXVlc3RI
ZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBlIiwgIiIpOworICAgICAgICAgICAgICAgIHNldFJl
cXVlc3RIZWFkZXJJbnRlcm5hbChBU0NJSUxpdGVyYWwoIkNvbnRlbnQtVHlwZSIpLCAiIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjcxLDEwICs2NzEsMTAgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6c2VuZChET01Gb3JtRGF0YSogYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAK
ICAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keS0+Z2VuZXJhdGVGaWxlcyhkb2N1bWVudCgpKTsK
IAotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50
LVR5cGUiKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcihB
U0NJSUxpdGVyYWwoIkNvbnRlbnQtVHlwZSIpKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBlLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgY29udGVudFR5cGUgPSBtYWtlU3RyaW5nKCJtdWx0aXBh
cnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iLCBtX3JlcXVlc3RFbnRpdHlCb2R5LT5ib3VuZGFyeSgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQt
VHlwZSIsIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5h
bChBU0NJSUxpdGVyYWwoIkNvbnRlbnQtVHlwZSIpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERP
TUZvcm1EYXRhKiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBYTUxIdHRwUmVxdWVz
dDo6c2VuZChBcnJheUJ1ZmZlciogYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlKCJBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFhNTEh0dHBS
ZXF1ZXN0LnNlbmQoKS4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiIpOworICAgIFN0cmlu
ZyBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIkFycmF5QnVmZmVyIGlzIGRlcHJlY2F0ZWQg
aW4gWE1MSHR0cFJlcXVlc3Quc2VuZCgpLiBVc2UgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQuIikp
OwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgY29uc29sZU1lc3NhZ2UpOwogCiAg
ICAgc2VuZEJ5dGVzRGF0YShib2R5LT5kYXRhKCksIGJvZHktPmJ5dGVMZW5ndGgoKSwgZWMpOwpA
QCAtMTAxNCw3ICsxMDE0LDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVU
eXBlKCkgY29uc3QKICAgICAgICAgICAgIG1pbWVUeXBlID0gbV9yZXNwb25zZS5taW1lVHlwZSgp
OwogICAgIH0KICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBtaW1lVHlwZSA9
ICJ0ZXh0L3htbCI7CisgICAgICAgIG1pbWVUeXBlID0gQVNDSUlMaXRlcmFsKCJ0ZXh0L3htbCIp
OwogCiAgICAgcmV0dXJuIG1pbWVUeXBlOwogfQpAQCAtMTE1MCwxNiArMTE1MCwxNiBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
KQogCiAgICAgaWYgKHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1f
cmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCBtX3Jlc3BvbnNlRW5jb2Rpbmcp
OworICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFT
Q0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCBtX3Jlc3BvbnNlRW5jb2RpbmcpOwogICAgICAgICAv
LyBhbGxvdyBUZXh0UmVzb3VyY2VEZWNvZGVyIHRvIGxvb2sgaW5zaWRlIHRoZSBtX3Jlc3BvbnNl
IGlmIGl0J3MgWE1MIG9yIEhUTUwKICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2VJc1hNTCgpKSB7
Ci0gICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFw
cGxpY2F0aW9uL3htbCIpOworICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veG1sIikpOwogICAgICAgICAg
ICAgLy8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMsIHVubGlrZSBpdCBpcyBkb25lIGZv
ciBvdGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9y
IG9mIHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZveCBhbmQgT3BlcmEuCiAgICAgICAg
ICAgICBtX2RlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAgICAgICB9IGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3BvbnNlTUlNRVR5cGUoKSwgInRleHQvaHRtbCIpKQot
ICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L2h0bWwiLCAiVVRGLTgiKTsKKyAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCAiVVRGLTgiKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CisgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICJVVEYt
OCIpOwogICAgIH0KIAogICAgIGlmICghbGVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAK
aW5kZXggMzNkNjQzNy4uZTBjZGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCkBA
IC0zMTIsNyArMzEyLDcgQEAgaW5saW5lIFBhcnNlcjo6VG9rZW4gUGFyc2VyOjpuZXh0VG9rZW5J
bnRlcm5hbCgpCiAgICAgICAgIGlmIChpc0JpbmFyeU9wZXJhdG9yQ29udGV4dCgpKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VUb2tlbkFuZEFkdmFuY2UoTVVMT1AsIE51bWVyaWNPcDo6T1BfTXVs
KTsKICAgICAgICAgKyttX25leHRQb3M7Ci0gICAgICAgIHJldHVybiBUb2tlbihOQU1FVEVTVCwg
IioiKTsKKyAgICAgICAgcmV0dXJuIFRva2VuKE5BTUVURVNULCBBU0NJSUxpdGVyYWwoIioiKSk7
CiAgICAgY2FzZSAnJCc6IHsgLy8gJCBRTmFtZQogICAgICAgICBtX25leHRQb3MrKzsKICAgICAg
ICAgU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggMGUy
NzYxOS4uZjljODIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gWFNMVFByb2Nlc3Nvcjo6
dHJhbnNmb3JtVG9GcmFnbWVudChOb2RlKiBzb3VyY2VOb2RlCiAKICAgICAvLyBJZiB0aGUgb3V0
cHV0IGRvY3VtZW50IGlzIEhUTUwsIGRlZmF1bHQgdG8gSFRNTCBtZXRob2QuCiAgICAgaWYgKG91
dHB1dERvYy0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmVzdWx0TUlNRVR5cGUgPSAidGV4
dC9odG1sIjsKKyAgICAgICAgcmVzdWx0TUlNRVR5cGUgPSBBU0NJSUxpdGVyYWwoInRleHQvaHRt
bCIpOwogCiAgICAgaWYgKCF0cmFuc2Zvcm1Ub1N0cmluZygqc291cmNlTm9kZSwgcmVzdWx0TUlN
RVR5cGUsIHJlc3VsdFN0cmluZywgcmVzdWx0RW5jb2RpbmcpKQogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGNkYTJi
NDcuLjIxNDUzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcApAQCAtMjk0LDExICsyOTQsMTEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgcmVzdWx0TUlN
RVR5cGUoeG1sRG9jUHRyIHJlc3VsdERvYywgeHNsdFN0eWxlc2hlZXRQdHIgc2hlZXQKICAgICAg
ICAgcmVzdWx0VHlwZSA9IChjb25zdCB4bWxDaGFyKikiaHRtbCI7CiAKICAgICBpZiAoeG1sU3Ry
RXF1YWwocmVzdWx0VHlwZSwgKGNvbnN0IHhtbENoYXIqKSJodG1sIikpCi0gICAgICAgIHJldHVy
biAidGV4dC9odG1sIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIik7
CiAgICAgaWYgKHhtbFN0ckVxdWFsKHJlc3VsdFR5cGUsIChjb25zdCB4bWxDaGFyKikidGV4dCIp
KQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJ0ZXh0L3BsYWluIik7CiAKLSAgICByZXR1cm4gImFwcGxpY2F0aW9uL3htbCI7CisgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veG1sIik7CiB9CiAKIGJvb2wgWFNMVFBy
b2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSYgc291cmNlTm9kZSwgU3RyaW5nJiBtaW1l
VHlwZSwgU3RyaW5nJiByZXN1bHRTdHJpbmcsIFN0cmluZyYgcmVzdWx0RW5jb2RpbmcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>