<?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>136183</bug_id>
          
          <creation_ts>2014-08-22 16:41:30 -0700</creation_ts>
          <short_desc>WebKit and WebKit2: Use ASCIILiteral where possible</short_desc>
          <delta_ts>2019-01-10 14:53:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

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

Final batch of automated ASCIILiteral insertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030838</commentid>
    <comment_count>1</comment_count>
      <attachid>237010</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-22 16:42:36 -0700</bug_when>
    <thetext>Created attachment 237010
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030858</commentid>
    <comment_count>2</comment_count>
      <attachid>237010</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-08-22 17:57:59 -0700</bug_when>
    <thetext>Comment on attachment 237010
[PATCH] Proposed Fix

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

&gt; Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp:84
&gt; -        *setting = static_cast&lt;bool&gt;(CFBooleanGetValue(static_cast&lt;CFBooleanRef&gt;(value.get()))) ? &quot;true&quot; : &quot;false&quot;;
&gt; +        *setting = static_cast&lt;bool&gt;(CFBooleanGetValue(static_cast&lt;CFBooleanRef&gt;(value.get()))) ? ASCIILiteral(&quot;true&quot;) : ASCIILiteral(&quot;false&quot;);

From how this is used, it looks like populateSetting should return a TriState and the call site should create the string as needed.

&gt; Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp:86
&gt;          *setting = &quot;&quot;;

Unrelated but that looks like a bad use of strings. When a value does not exist, the return should be a null string, not an empty string.

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:143
&gt;      String path = String::fromUTF8(pwd.pw_dir);
&gt; -    path.append(&quot;/Library&quot;);
&gt; +    path.append(ASCIILiteral(&quot;/Library&quot;));

String path = String::fromUTF8(pwd.pw_dir) + &quot;/Library&quot;;

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:147
&gt; -    path.append(&quot;/Preferences&quot;);
&gt; +    path.append(ASCIILiteral(&quot;/Preferences&quot;));

Let&apos;s use StringOperators here, no need to create a new StringImpl for &quot;/Preferences&quot;

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:57
&gt;      case NSLeftTextAlignment:
&gt; -        return &quot;left&quot;;
&gt; +        return ASCIILiteral(&quot;left&quot;);

I hope clang only generate one constructor here.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:144
&gt; +    map-&gt;add(ASCIILiteral(&quot;insertNewlineIgnoringFieldEditor:&quot;), &quot;InsertNewline&quot;);
&gt; +    map-&gt;add(ASCIILiteral(&quot;insertParagraphSeparator:&quot;), &quot;InsertNewline&quot;);
&gt; +    map-&gt;add(ASCIILiteral(&quot;insertTabIgnoringFieldEditor:&quot;), &quot;InsertTab&quot;);
&gt; +    map-&gt;add(ASCIILiteral(&quot;pageDown:&quot;), &quot;MovePageDown&quot;);
&gt; +    map-&gt;add(ASCIILiteral(&quot;pageDownAndModifySelection:&quot;), &quot;MovePageDownAndModifySelection&quot;);
&gt; +    map-&gt;add(ASCIILiteral(&quot;pageUp:&quot;), &quot;MovePageUp&quot;);
&gt; +    map-&gt;add(ASCIILiteral(&quot;pageUpAndModifySelection:&quot;), &quot;MovePageUpAndModifySelection&quot;);

Why only the first of the two strings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030979</commentid>
    <comment_count>3</comment_count>
      <attachid>237010</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-24 11:39:25 -0700</bug_when>
    <thetext>Comment on attachment 237010
[PATCH] Proposed Fix

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

Seems like some of this code may be overusing String where we could use string literals. The problem is we have no better type for a string literal than &quot;const char*&quot; and that type does not pass the length through nor does it communicate the fact that the entire string is ASCII. And also if do hard code something to be a string literal than it’s troublesome if we want to compute its value in one case.

&gt;&gt; Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp:86
&gt;&gt;          *setting = &quot;&quot;;
&gt; 
&gt; Unrelated but that looks like a bad use of strings. When a value does not exist, the return should be a null string, not an empty string.

Maybe, but I don’t think that’s universally true. Sometimes the handy value to use for &quot;not existing&quot; is a null string, other times it’s better to always return a non-null string. I don’t think there’s a clear rule of thumb. Of course, it’s more efficient to use emptyString() rather than &quot;&quot; for an empty WTF::String.

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:57
&gt;&gt; +        return ASCIILiteral(&quot;left&quot;);
&gt; 
&gt; I hope clang only generate one constructor here.

Or the return value from this could just be const char* instead of const String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493488</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-10 14:53:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/47191485&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237010</attachid>
            <date>2014-08-22 16:42:36 -0700</date>
            <delta_ts>2014-08-24 11:39:24 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>136478</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
Zi9DaGFuZ2VMb2cKaW5kZXggYmQ4YzY3Ny4uMWFkMWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNC0wOC0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYktpdCBhbmQgV2ViS2l0MjogVXNlIEFTQ0lJTGl0ZXJhbCB3aGVy
ZSBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM2MTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChw
b3B1bGF0ZVNldHRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0
b3JBdHRhY2hEaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkKToKKwogMjAxNC0wMi0xNyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJn
aW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNz
T3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAppbmRleCA2MjMzM2Q5Li4xODU1NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApA
QCAtODEsNyArODEsNyBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5n
JiBrZXksIFN0cmluZyogc2V0dGluZykKICAgICBpZiAodHlwZSA9PSBDRlN0cmluZ0dldFR5cGVJ
RCgpKQogICAgICAgICAqc2V0dGluZyA9IHN0YXRpY19jYXN0PFN0cmluZz4oc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KHZhbHVlLmdldCgpKSk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSBDRkJvb2xl
YW5HZXRUeXBlSUQoKSkKLSAgICAgICAgKnNldHRpbmcgPSBzdGF0aWNfY2FzdDxib29sPihDRkJv
b2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlLmdldCgpKSkpID8g
InRydWUiIDogImZhbHNlIjsKKyAgICAgICAgKnNldHRpbmcgPSBzdGF0aWNfY2FzdDxib29sPihD
RkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlLmdldCgpKSkp
ID8gQVNDSUlMaXRlcmFsKCJ0cnVlIikgOiBBU0NJSUxpdGVyYWwoImZhbHNlIik7CiAgICAgZWxz
ZQogICAgICAgICAqc2V0dGluZyA9ICIiOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgV2Vi
SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiAKIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZChib29sIGRpc2FibGVkKQog
ewotICAgIHN0b3JlU2V0dGluZyhpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcsIGRpc2Fi
bGVkID8gInRydWUiIDogImZhbHNlIik7CisgICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvckF0dGFj
aERpc2FibGVkU2V0dGluZywgZGlzYWJsZWQgPyBBU0NJSUxpdGVyYWwoInRydWUiKSA6IEFTQ0lJ
TGl0ZXJhbCgiZmFsc2UiKSk7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
b3JTdGFydHNBdHRhY2hlZCgpCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JD
bGllbnQ6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCiB7Ci0gICAgc3Rv
cmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgYXR0YWNoZWQgPyAidHJ1
ZSIgOiAiZmFsc2UiKTsKKyAgICBzdG9yZVNldHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRT
ZXR0aW5nLCBhdHRhY2hlZCA/IEFTQ0lJTGl0ZXJhbCgidHJ1ZSIpIDogQVNDSUlMaXRlcmFsKCJm
YWxzZSIpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5k
U2V0dGluZ3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDllZDBiOGQuLjEyNmRiMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNC0wOC0yMiAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdCBhbmQgV2ViS2l0MjogVXNlIEFT
Q0lJTGl0ZXJhbCB3aGVyZSBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAg
ICAgIChIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjpIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVy
KToKKyAgICAgICAgKEhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6OndyaXRlT2JqZWN0cyk6Cisg
ICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktp
dDo6UHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tOgorICAgICAgICAobWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
c2V0UHJpbnRpbmc6bWluaW11bVBhZ2VMb2dpY2FsV2lkdGg6bG9naWNhbEhlaWdodDpvcmlnaW5h
bFBhZ2VXaWR0aDpvcmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdFZp
ZXdTaXplOnBhZ2luYXRlU2NyZWVuQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
aW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgr
W1dlYlZpZXcgX2RlY29kZURhdGE6XSk6CisKIDIwMTQtMDgtMjIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHBhaW50IGZsYXNoaW5n
IGluIHRoZSBXSzEgSW5zcGVjdG9yT3ZlcmxheSBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggYzNmZjE0ZC4uMDk0OTJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5t
bQpAQCAtMzQsMTEgKzM0LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIGNv
bnN0IGludCBjdXJyZW50RmlsZVZlcnNpb24gPSAxOwogCiBIaXN0b3J5UHJvcGVydHlMaXN0V3Jp
dGVyOjpIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyKCkKLSAgICA6IG1fZGlzcGxheVRpdGxlS2V5
KCJkaXNwbGF5VGl0bGUiKQotICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlS2V5KCJsYXN0Vmlz
aXRXYXNGYWlsdXJlIikKLSAgICAsIG1fbGFzdFZpc2l0ZWREYXRlS2V5KCJsYXN0VmlzaXRlZERh
dGUiKQotICAgICwgbV9yZWRpcmVjdFVSTHNLZXkoInJlZGlyZWN0VVJMcyIpCi0gICAgLCBtX3Rp
dGxlS2V5KCJ0aXRsZSIpCisgICAgOiBtX2Rpc3BsYXlUaXRsZUtleShBU0NJSUxpdGVyYWwoImRp
c3BsYXlUaXRsZSIpKQorICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlS2V5KEFTQ0lJTGl0ZXJh
bCgibGFzdFZpc2l0V2FzRmFpbHVyZSIpKQorICAgICwgbV9sYXN0VmlzaXRlZERhdGVLZXkoQVND
SUlMaXRlcmFsKCJsYXN0VmlzaXRlZERhdGUiKSkKKyAgICAsIG1fcmVkaXJlY3RVUkxzS2V5KEFT
Q0lJTGl0ZXJhbCgicmVkaXJlY3RVUkxzIikpCisgICAgLCBtX3RpdGxlS2V5KEFTQ0lJTGl0ZXJh
bCgidGl0bGUiKSkKICAgICAsIG1fdXJsS2V5KCIiKQogICAgICwgbV9idWZmZXIoMCkKIHsKQEAg
LTcwLDggKzcwLDggQEAgdm9pZCBIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjp3cml0ZU9iamVj
dHMoQmluYXJ5UHJvcGVydHlMaXN0T2JqZWN0U3RyZWFtJiBzdHIKIHsKICAgICBzaXplX3Qgb3V0
ZXJEaWN0aW9uYXJ5U3RhcnQgPSBzdHJlYW0ud3JpdGVEaWN0aW9uYXJ5U3RhcnQoKTsKIAotICAg
IHN0cmVhbS53cml0ZVN0cmluZygiV2ViSGlzdG9yeUZpbGVWZXJzaW9uIik7Ci0gICAgc3RyZWFt
LndyaXRlU3RyaW5nKCJXZWJIaXN0b3J5RGF0ZXMiKTsKKyAgICBzdHJlYW0ud3JpdGVTdHJpbmco
QVNDSUlMaXRlcmFsKCJXZWJIaXN0b3J5RmlsZVZlcnNpb24iKSk7CisgICAgc3RyZWFtLndyaXRl
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiV2ViSGlzdG9yeURhdGVzIikpOwogCiAgICAgc3RyZWFtLndy
aXRlSW50ZWdlcihjdXJyZW50RmlsZVZlcnNpb24pOwogICAgIHNpemVfdCBvdXRlckRhdGVBcnJh
eVN0YXJ0ID0gc3RyZWFtLndyaXRlQXJyYXlTdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMGRmMGRlYy4uMDU4YjQx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCkBAIC0yMTksNyArMjE5LDcgQEAgSlNWYWx1ZSBQcm94eUluc3RhbmNlOjpnZXRNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKIEpTVmFs
dWUgUHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50
aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQogewogICAgIGlmICghYXNPYmplY3QocnVudGltZU1l
dGhvZCktPmluaGVyaXRzKFByb3h5UnVudGltZU1ldGhvZDo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3Qu
IikpOworICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1
Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpKTsKIAogICAgIFByb3h5TWV0aG9kKiBt
ZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgp
KTsKICAgICBBU1NFUlQobWV0aG9kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggNzM0MDE4OS4uMjc5
NzM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTE5OTEsNyArMTk5MSw3IEBAIFBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHNpemUsIEhUTUxQCiAgICAgaWYgKGVycm9yQ29kZSAmJiBtX3dlYkZyYW1lKSB7CiAgICAgICAg
IFdlYlJlc291cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMg
PSBXZWJWaWV3R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7
CiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPnBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1bmMp
IHsKLSAgICAgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJhbWV0ZXJWYWx1ZShwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgInBsdWdpbnNwYWdlIikpKTsKKyAgICAgICAgICAgIFVSTCBwbHVn
aW5QYWdlVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhwYXJhbWV0ZXJWYWx1ZShwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgQVNDSUlM
aXRlcmFsKCJwbHVnaW5zcGFnZSIpKSkpOwogICAgICAgICAgICAgaWYgKCFwbHVnaW5QYWdlVVJM
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJM
ID0gVVJMKCk7CiAgICAgICAgICAgICBOU1N0cmluZyAqcGx1Z2luTmFtZSA9IHBsdWdpblBhY2th
Z2UgPyAoTlNTdHJpbmcgKilbcGx1Z2luUGFja2FnZSBwbHVnaW5JbmZvXS5uYW1lIDogbmlsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQppbmRleCAwOWRkYzFkLi5lOTYxYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRp
YyBOU1N0cmluZyAqbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKE5TQXJyYXkgKmxhYmVscywgY29u
c3QgU3RyaW5nJiBzdHJpbmdUCiAgICAgU3RyaW5nIG11dGFibGVTdHJpbmdUb01hdGNoID0gc3Ry
aW5nVG9NYXRjaDsKICAgICAKICAgICAvLyBNYWtlIG51bWJlcnMgYW5kIF8ncyBpbiBmaWVsZCBu
YW1lcyBiZWhhdmUgbGlrZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJhZGRyZXNzMiIKLSAgICBy
ZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4
dENhc2VTZW5zaXRpdmUpLCAiICIpOworICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gs
IFJlZ3VsYXJFeHByZXNzaW9uKEFTQ0lJTGl0ZXJhbCgiXFxkIiksIFRleHRDYXNlU2Vuc2l0aXZl
KSwgQVNDSUlMaXRlcmFsKCIgIikpOwogICAgIG11dGFibGVTdHJpbmdUb01hdGNoLnJlcGxhY2Uo
J18nLCAnICcpOwogICAgIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHAgPSByZWdFeHBG
b3JMYWJlbHMobGFiZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CmluZGV4IDBjMjI5ZDcuLjRhNGMwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMjgzNSw3ICsyODM1LDcgQEAgV0VCQ09SRV9DT01NQU5EKHRvZ2dsZVVu
ZGVybGluZSkKIAogICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICop
aXRlbTsKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNs
YXNzXV0pIHsKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0aW9u
ID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKKyAgICAg
ICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0aW9uID09IE5TV3JpdGluZ0Rp
cmVjdGlvbkxlZnRUb1JpZ2h0ID8gQVNDSUlMaXRlcmFsKCJsdHIiKSA6IEFTQ0lJTGl0ZXJhbCgi
cnRsIik7CiAgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6ZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pXTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gW3NlbGYgX2NhbkVkaXRdOwpAQCAtMjg1Myw3ICsyODUzLDcg
QEAgV0VCQ09SRV9DT01NQU5EKHRvZ2dsZVVuZGVybGluZSkKICAgICAgICAgaWYgKFttZW51SXRl
bSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKICAgICAgICAgICAgIC8vIFRh
a2UgY29udHJvbCBvZiB0aGUgdGl0bGUgb2YgdGhlIG1lbnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3Qg
Y2hlY2tpbmcvdW5jaGVja2luZyBpdCBiZWNhdXNlCiAgICAgICAgICAgICAvLyBhIGNoZWNrIHdv
dWxkIGJlIGFtYmlndW91cy4KLSAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQor
ICAgICAgICAgICAgW21lbnVJdGVtIHNldFRpdGxlOmZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25I
YXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQVNDSUlMaXRlcmFsKCJydGwiKSkKICAgICAg
ICAgICAgICAgICA/IFVJX1NUUklOR19JTlRFUk5BTCgiTGVmdCB0byBSaWdodCIsICJMZWZ0IHRv
IFJpZ2h0IGNvbnRleHQgbWVudSBpdGVtIikKICAgICAgICAgICAgICAgICA6IFVJX1NUUklOR19J
TlRFUk5BTCgiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBMZWZ0IGNvbnRleHQgbWVudSBpdGVt
IildOwogICAgICAgICB9CkBAIC00MzI1LDcgKzQzMjUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxL
ZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJh
bWUpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogY29yZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXco
KSkKLSAgICAgICAgICAgIGNvcmVWaWV3LT5zZXRNZWRpYVR5cGUoX3ByaXZhdGUtPnByaW50aW5n
ID8gInByaW50IiA6ICJzY3JlZW4iKTsKKyAgICAgICAgICAgIGNvcmVWaWV3LT5zZXRNZWRpYVR5
cGUoX3ByaXZhdGUtPnByaW50aW5nID8gQVNDSUlMaXRlcmFsKCJwcmludCIpIDogQVNDSUlMaXRl
cmFsKCJzY3JlZW4iKSk7CiAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlRnJh
bWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEluIHNldHRpbmcgcHJpbnRpbmcsIHdl
IHNob3VsZCBub3QgdmFsaWRhdGUgcmVzb3VyY2VzIGFscmVhZHkgY2FjaGVkIGZvciB0aGUgZG9j
dW1lbnQuCiAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQzNzA0CkBAIC02NDI5LDcgKzY0MjksNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0
VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9u
VW5kZQogICAgIC8vIHRoZW4gd2UgYWxzbyBleGVjdXRlIGl0IGltbWVkaWF0ZWx5LCBhcyB0aGVy
ZSB3aWxsIGJlIG5vIG90aGVyIGNoYW5jZS4KICAgICBib29sIHNob3VsZFNhdmVDb21tYW5kID0g
cGFyYW1ldGVycyAmJiBwYXJhbWV0ZXJzLT5zaG91bGRTYXZlQ29tbWFuZHM7CiAgICAgaWYgKGV2
ZW50ICYmIHNob3VsZFNhdmVDb21tYW5kICYmICFpc0Zyb21JbnB1dE1ldGhvZCkgewotICAgICAg
ICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChLZXlwcmVzc0NvbW1hbmQoImluc2Vy
dFRleHQ6IiwgdGV4dCkpOworICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVu
ZChLZXlwcmVzc0NvbW1hbmQoQVNDSUlMaXRlcmFsKCJpbnNlcnRUZXh0OiIpLCB0ZXh0KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCAwYjcwNmYzLi5lMmU4YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0yNzIyLDcgKzI3MjIsNyBAQCBzdGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywg
U0VMIHMpCiArIChOU1N0cmluZyAqKV9kZWNvZGVEYXRhOihOU0RhdGEgKilkYXRhCiB7CiAgICAg
SFRNTE5hbWVzOjppbml0KCk7IC8vIHRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIGltcG9ydGluZyBi
b29rbWFya3MgYXQgc3RhcnR1cCwgc28gSFRNTE5hbWVzIGFyZSBsaWtlbHkgdG8gYmUgdW5pbml0
aWFsaXplZCB5ZXQKLSAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L2h0bWwiKS0+ZGVjb2RlQW5kRmx1c2goc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5
dGVzXSksIFtkYXRhIGxlbmd0aF0pOyAvLyBib29rbWFyayBmaWxlcyBhcmUgSFRNTAorICAgIHJl
dHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwi
KSktPmRlY29kZUFuZEZsdXNoKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZGF0YSBieXRlc10p
LCBbZGF0YSBsZW5ndGhdKTsgLy8gYm9va21hcmsgZmlsZXMgYXJlIEhUTUwKIH0KIAogLSAodm9p
ZClfcHVzaFBlcmZvcm1pbmdQcm9ncmFtbWF0aWNGb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDUyYzAwYjku
LjhlYmE5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzAgQEAKKzIwMTQtMDgtMjIgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgYW5kIFdl
YktpdDI6IFVzZSBBU0NJSUxpdGVyYWwgd2hlcmUgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjE4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZG9HZXRJbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6cmVtb3ZlQWxsRGF0YWJhc2Vz
Rm9yT3JpZ2luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZG9EZWxl
dGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRvRGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlRW50cmll
cyk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjYWxjdWxhdGVBYnNv
bHV0ZURhdGFiYXNlRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZTo6ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJE
YXRhYmFzZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6
OmdldFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29yKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudCk6CisgICAgICAgIChXZWJL
aXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZSk6CisgICAgICAgICogRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEFkdmFuY2VPbmNlKToKKyAgICAgICAgKiBE
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWxNZXRhZGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpleHRyYWN0RXhp
c3RpbmdNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlOjpnZXRPckVzdGFibGlzaE1ldGFkYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MpOgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzTWFpbi5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5EZWxlZ2F0ZTo6ZG9QcmVJbml0aWFsaXph
dGlvbldvcmspOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkRlbGVnYXRlOjpn
ZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0
aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAgICog
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNz
RW50cnlQb2ludC5tbToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRl
OjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vz
c01haW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OkNo
aWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUpOgorICAgICAgICAq
IFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRy
eVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0
ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0
aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZSk6CisgICAgICAgICogU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WZXJzaW9uOjpwYXJzZSk6CisgICAgICAgICogU2hhcmVkL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcCk6CisgICAg
ICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkNo
aWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViS2l0OjpkdW1wQ2hhbmdl
ZExheWVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpk
ZXNjcmlwdGlvbik6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgICogU2hhcmVkL21hYy9XZWJNZW1vcnlTYW1wbGVyLm1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldFNlc3Npb25IaXN0b3J5
VVJMVmFsdWVUeXBlKToKKyAgICAgICAgKFdLUGFnZUdldFNlc3Npb25CYWNrRm9yd2FyZExpc3RJ
dGVtVmFsdWVUeXBlKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJl
bmNlc0NyZWF0ZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAg
ICAgKC1bV0tQcmVmZXJlbmNlcyBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4dDpyZXBsYWNlbWVudFJhbmdl
Ol0pOgorICAgICAgICAobWF5YmVDcmVhdGVTYW5kYm94RXh0ZW5zaW9uRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVu
Y2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdGF0aXN0aWNzUmVxdWVzdDo6Y29tcGxldGVkUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6dHJ5VG9PcGVuRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OmltcG9ydEl0
ZW1zKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVwZGF0ZURhdGFi
YXNlV2l0aENoYW5nZWRJdGVtcyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFi
YXNlOjpkYXRhYmFzZUlzRW1wdHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFi
YXNlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjppbXBv
cnRPcmlnaW5JZGVudGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6dXBkYXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNl
RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmFk
ZERhdGFiYXNlV2l0aE9yaWdpbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURhdGFiYXNlV2l0aE9yaWdpbklkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnBhdGhGb3JE
YXRhYmFzZVdpdGhPcmlnaW5JZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwOjpXZWJQYWdlR3JvdXAp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkZhY3RvcnlCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUJhY2tl
bmQ6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5QmFja2VuZDo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlckNvbm5lY3Rpb246OmRpZENyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlNlcnZlckNvbm5lY3Rpb246OmdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNv
bm5lY3Rpb246OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246
OmNvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRl
UmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjbGVhck9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlk
Q2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpvcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29yQWR2YW5jZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckl0ZXJhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9XZWJDb250ZW50
UHJvY2Vzc01haW4ubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRQcm9jZXNzTWFpbkRl
bGVnYXRlOjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRlbnRQcm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGVudFByb2Nlc3NNYWluRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NO
YW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldERhdGFiYXNlUXVvdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2FsbE1ldGhvZCk6CisgICAgICAgIChXZWJL
aXQ6OkpTTlBPYmplY3Q6OmNhbGxPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0
OjpjYWxsQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFVSTCk6
CisgICAgICAgIChXZWJLaXQ6Ok5QTl9Qb3N0VVJMKToKKyAgICAgICAgKFdlYktpdDo6TlBOX0dl
dFVSTE5vdGlmeSk6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9Qb3N0VVJMTm90aWZ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6dXNlckFnZW50KToKKyAgICAgICAgKFdlYktp
dDo6aXNUcmFuc3BhcmVudFNpbHZlcmxpZ2h0QmFja2dyb3VuZFZhbHVlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6cGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojpjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFs
aWdubWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVPcmlnaW5zKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OmNoYW5nZVdvcmRDYXNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZU92ZXJsYXlDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92
ZXJsYXlDb250cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXkpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVP
dXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNlbGVjdG9yRXhj
ZXB0aW9uTWFwKToKKwogMjAxNC0wOC0xOSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcGxhY2UgdXNlIG9mIFdLQ29weUNGTG9jYWxpemF0aW9uUHJlZmVy
cmVkTmFtZSB3aXRoIE5TTG9jYWxlIHB1YmxpYyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggYjkwZGNiNi4uZTQ5ZmZh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZG9HZXRJ
bmRleGVkRGF0YWJhc2VPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3Rv
cnkobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
b3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBB
U0NJSUxpdGVyYWwoIioiKSk7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0
aHMpIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0
ZXJhbCgiZmlsZSIpKTsKQEAgLTIzMSwxMCArMjMxLDEwIEBAIHN0YXRpYyB2b2lkIHJlbW92ZUFs
bERhdGFiYXNlc0Zvck9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUg
c3RhCiAgICAgLy8gICAgIC0gRm9yIHdyaXRlIG9wZXJhdGlvbnMsIHRoZXkgd2lsbCBzdGFydCBw
cm9kdWNpbmcgZXJyb3JzIGFzIFNRTGl0ZSBub3RpY2VzIHRoZSBtaXNzaW5nIGJhY2tpbmcgc3Rv
cmUuCiAgICAgLy8gVGhpcyBpcyB0cmFja2VkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzUzNDcKIAotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0aHMg
PSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gZGF0
YWJhc2VQYXRocyA9IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aCwgQVNDSUlMaXRlcmFsKCIqIikp
OwogCiAgICAgZm9yIChhdXRvJiBkYXRhYmFzZVBhdGggOiBkYXRhYmFzZVBhdGhzKSB7Ci0gICAg
ICAgIFN0cmluZyBkYXRhYmFzZUZpbGUgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJh
c2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKKyAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmls
ZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZVBhdGgsIEFTQ0lJTGl0ZXJhbCgi
SW5kZXhlZERCLnNxbGl0ZTMiKSk7CiAKICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKGRhdGFiYXNl
RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIERh
dGFiYXNlUHJvY2Vzczo6ZG9EZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzTW9kaWZpZWRCZXR3
ZWVuRGF0ZXMoZG91YmxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3Ry
aW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3RvcnkobV9pbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnksICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5
KG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CiAgICAgZm9y
IChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpCiAgICAgICAgIHJlbW92ZUFsbERhdGFi
YXNlc0Zvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RhcnREYXRlLCBlbmREYXRlKTsKIApAQCAt
MzA0LDcgKzMwNCw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkb0RlbGV0ZUFsbEluZGV4ZWRE
YXRhYmFzZUVudHJpZXModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9yeShtX2lu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5Q
YXRocyA9IGxpc3REaXJlY3RvcnkobV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIEFTQ0lJTGl0
ZXJhbCgiKiIpKTsKICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBmYzhiODMzLi4w
YWE2NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIFVuaXF1ZUlEQkRhdGFiYXNlOjpjYWxjdWxhdGVB
YnNvbHV0ZURhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBhYnNvbHV0ZURhdGFiYXNlRGly
ZWN0b3J5KQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYWJzb2x1dGVE
YXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgcmV0dXJuIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChhYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBBU0NJSUxpdGVy
YWwoIkluZGV4ZWREQi5zcWxpdGUzIikpOwogfQogCiBVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVl
SURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVy
KQpAQCAtODMsMTAgKzgzLDEwIEBAIFN0cmluZyBVbmlxdWVJREJEYXRhYmFzZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpLmlzTnVsbCgpKTsKIAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCku
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gIiUwMCI7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIiUwMCIpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lID0gZW5jb2RlRm9yRmlsZU5hbWUo
bV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsKLSAgICBmaWxlbmFtZS5yZXBsYWNlKCcuJywg
IiUyRSIpOworICAgIGZpbGVuYW1lLnJlcGxhY2UoJy4nLCBBU0NJSUxpdGVyYWwoIiUyRSIpKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKIH0KQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBpbgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
IW1fYWNjZXB0aW5nTmV3UmVxdWVzdHMpIHsKLSAgICAgICAgY2FsbGJhY2soSURCS2V5RGF0YSgp
LCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBwdXQgcmVjb3JkIGludG8gZGF0YWJhc2Ug
YmVjYXVzZSBpdCBoYXMgc2h1dCBkb3duIik7CisgICAgICAgIGNhbGxiYWNrKElEQktleURhdGEo
KSwgSU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHB1dCByZWNvcmQg
aW50byBkYXRhYmFzZSBiZWNhdXNlIGl0IGhhcyBzaHV0IGRvd24iKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
dXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbgog
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGNvbnN0
IElEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJj46OmNyZWF0ZShbdGhpcywgY2Fs
bGJhY2tdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soa2V5RGF0YSwgZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFt0aGlzLCBjYWxsYmFja10oKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKElEQktleURhdGEoKSwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8g
cHV0IHJlY29yZCBpbnRvIGRhdGFiYXNlIik7CisgICAgICAgIGNhbGxiYWNrKElEQktleURhdGEo
KSwgSU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHB1dCByZWNvcmQg
aW50byBkYXRhYmFzZSIpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJl
cXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGluCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmICghbV9hY2Nl
cHRpbmdOZXdSZXF1ZXN0cykgewotICAgICAgICBjYWxsYmFjayhJREJHZXRSZXN1bHQoKSwgSU5W
QUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gZ2V0IHJlY29yZCBmcm9tIGRhdGFiYXNlIGJlY2F1
c2UgaXQgaGFzIHNodXQgZG93biIpOworICAgICAgICBjYWxsYmFjayhJREJHZXRSZXN1bHQoKSwg
SU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCByZWNvcmQgZnJv
bSBkYXRhYmFzZSBiZWNhdXNlIGl0IGhhcyBzaHV0IGRvd24iKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTU5NCw3ICs1OTQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRS
ZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbgogICAg
IFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGNvbnN0IElE
QkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmPjo6Y3JlYXRlKFt0aGlzLCBjYWxs
YmFja10oY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2socmVzdWx0LCBlcnJv
ckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwgW3RoaXMsIGNhbGxiYWNrXSgpIHsKLSAgICAg
ICAgY2FsbGJhY2soSURCR2V0UmVzdWx0KCksIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRv
IGdldCByZWNvcmQgZnJvbSBkYXRhYmFzZSIpOworICAgICAgICBjYWxsYmFjayhJREJHZXRSZXN1
bHQoKSwgSU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCByZWNv
cmQgZnJvbSBkYXRhYmFzZSIpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmICghbV9h
Y2NlcHRpbmdOZXdSZXF1ZXN0cykgewotICAgICAgICBjYWxsYmFjaygwLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBvcGVuIGN1cnNvciBp
biBkYXRhYmFzZSBiZWNhdXNlIGl0IGhhcyBzaHV0IGRvd24iKTsKKyAgICAgICAgY2FsbGJhY2so
MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIG9wZW4gY3Vyc29yIGluIGRhdGFiYXNlIGJlY2F1c2UgaXQgaGFzIHNo
dXQgZG93biIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjE3LDcgKzYxNyw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpCiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVz
dCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBTdHJp
bmcmPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oaW50NjRfdCBjdXJzb3JJRCwgY29uc3QgSURC
S2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soY3Vyc29ySUQsIGtleSwgcHJpbWFyeUtleSwg
dmFsdWUsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LCBbdGhpcywgY2FsbGJhY2td
KCkgewotICAgICAgICBjYWxsYmFjaygwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJTlZB
TElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBnZXQgcmVjb3JkIGZyb20gZGF0YWJhc2UiKTsKKyAg
ICAgICAgY2FsbGJhY2soMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSU5WQUxJRF9TVEFU
RV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGdldCByZWNvcmQgZnJvbSBkYXRhYmFzZSIp
KTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJ
RCgpOwpAQCAtNjMxLDE0ICs2MzEsMTQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29y
QWR2YW5jZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW4KICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKCFtX2FjY2VwdGluZ05ld1JlcXVl
c3RzKSB7Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElOVkFM
SURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGFkdmFuY2UgY3Vyc29yIGluIGRhdGFiYXNlIGJlY2F1
c2UgaXQgaGFzIHNodXQgZG93biIpOworICAgICAgICBjYWxsYmFjayhudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gYWR2
YW5jZSBjdXJzb3IgaW4gZGF0YWJhc2UgYmVjYXVzZSBpdCBoYXMgc2h1dCBkb3duIikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9
IEFzeW5jUmVxdWVzdEltcGw8Y29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmPjo6Y3JlYXRl
KFt0aGlzLCBjYWxsYmFja10oY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRh
JiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVy
cm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2so
a2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0s
IFt0aGlzLCBjYWxsYmFja10oKSB7Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGFkdmFuY2UgY3Vyc29yIGlu
IGRhdGFiYXNlIik7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IElOVkFMSURfU1RBVEVfRVJSLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBhZHZhbmNlIGN1cnNv
ciBpbiBkYXRhYmFzZSIpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJl
cXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtNjUyLDE0ICs2NTIsMTQgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlm
aWVyLCBjb24KICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKCFtX2Fj
Y2VwdGluZ05ld1JlcXVlc3RzKSB7Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGl0ZXJhdGUgY3Vyc29yIGlu
IGRhdGFiYXNlIGJlY2F1c2UgaXQgaGFzIHNodXQgZG93biIpOworICAgICAgICBjYWxsYmFjayhu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gaXRlcmF0ZSBjdXJzb3IgaW4gZGF0YWJhc2UgYmVjYXVzZSBpdCBoYXMgc2h1
dCBkb3duIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Y29uc3QgSURCS2V5RGF0YSYsIGNvbnN0
IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBT
dHJpbmcmPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oY29uc3QgSURCS2V5RGF0YSYga2V5LCBj
b25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFs
dWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAg
ICAgICAgY2FsbGJhY2soa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgZXJyb3JDb2RlLCBlcnJvck1l
c3NhZ2UpOwogICAgIH0sIFt0aGlzLCBjYWxsYmFja10oKSB7Ci0gICAgICAgIGNhbGxiYWNrKG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGl0
ZXJhdGUgY3Vyc29yIGluIGRhdGFiYXNlIik7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBpdGVyYXRlIGN1cnNvciBpbiBkYXRhYmFzZSIpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90
IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtNjczLDE0ICs2NzMsMTQgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y291bnQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBpbnQ2NF8KICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgaWYgKCFtX2FjY2VwdGluZ05ld1JlcXVlc3RzKSB7Ci0gICAgICAgIGNhbGxiYWNrKDAs
IElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGdldCBjb3VudCBmcm9tIGRhdGFiYXNlIGJl
Y2F1c2UgaXQgaGFzIHNodXQgZG93biIpOworICAgICAgICBjYWxsYmFjaygwLCBJTlZBTElEX1NU
QVRFX0VSUiwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2Ug
YmVjYXVzZSBpdCBoYXMgc2h1dCBkb3duIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRf
dCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShpbnQ2
NF90IGNvdW50LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7CiAgICAgICAgIGNhbGxiYWNrKGNvdW50LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAg
ICAgfSwgW3RoaXMsIGNhbGxiYWNrXSgpIHsKLSAgICAgICAgY2FsbGJhY2soMCwgSU5WQUxJRF9T
VEFURV9FUlIsICJVbmFibGUgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2UiKTsKKyAgICAgICAg
Y2FsbGJhY2soMCwgSU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGdl
dCBjb3VudCBmcm9tIGRhdGFiYXNlIikpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVz
dElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CkBAIC02OTQsMTQgKzY5NCwxNCBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
ICghbV9hY2NlcHRpbmdOZXdSZXF1ZXN0cykgewotICAgICAgICBjYWxsYmFjayhJTlZBTElEX1NU
QVRFX0VSUiwgIlVuYWJsZSB0byBkZWxldGVSYW5nZSBmcm9tIGRhdGFiYXNlIGJlY2F1c2UgaXQg
aGFzIHNodXQgZG93biIpOworICAgICAgICBjYWxsYmFjayhJTlZBTElEX1NUQVRFX0VSUiwgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlUmFuZ2UgZnJvbSBkYXRhYmFzZSBiZWNhdXNlIGl0
IGhhcyBzaHV0IGRvd24iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8
QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDx1aW50MzJfdCwgY29uc3Qg
U3RyaW5nJj46OmNyZWF0ZShbY2FsbGJhY2tdKHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBlcnJvck1l
c3NhZ2UpOwogICAgIH0sIFtjYWxsYmFja10oKSB7Ci0gICAgICAgIGNhbGxiYWNrKElOVkFMSURf
U1RBVEVfRVJSLCAiVW5hYmxlIHRvIGRlbGV0ZVJhbmdlIGZyb20gZGF0YWJhc2UiKTsKKyAgICAg
ICAgY2FsbGJhY2soSU5WQUxJRF9TVEFURV9FUlIsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRl
bGV0ZVJhbmdlIGZyb20gZGF0YWJhc2UiKSk7CiAgICAgfSk7CiAKICAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJD
dXJzb3IuY3BwCmluZGV4IDkzMmJmNzMuLjE4MWZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FM
aXRlSURCQ3Vyc29yLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6QWR2
YW5jZVJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsQWR2YW5jZU9uY2UoKQogICAgICAg
ICAgICAgcmV0dXJuIEFkdmFuY2VSZXN1bHQ6OkZhaWx1cmU7CiAgICAgICAgIH0KIAotICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgb2JqZWN0U3RvcmVTdGF0ZW1lbnQoKm1fc3RhdGVtZW50LT5kYXRh
YmFzZSgpLCAiU0VMRUNUIHZhbHVlIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSBDQVNUKD8gQVMg
VEVYVCkgYW5kIG9iamVjdFN0b3JlSUQgPSA/OyIpOworICAgICAgICBTUUxpdGVTdGF0ZW1lbnQg
b2JqZWN0U3RvcmVTdGF0ZW1lbnQoKm1fc3RhdGVtZW50LT5kYXRhYmFzZSgpLCBBU0NJSUxpdGVy
YWwoIlNFTEVDVCB2YWx1ZSBGUk9NIFJlY29yZHMgV0hFUkUga2V5ID0gQ0FTVCg/IEFTIFRFWFQp
IGFuZCBvYmplY3RTdG9yZUlEID0gPzsiKSk7CiAKICAgICAgICAgaWYgKG9iamVjdFN0b3JlU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPawogICAgICAgICAgICAgfHwgb2JqZWN0U3Rv
cmVTdGF0ZW1lbnQuYmluZEJsb2IoMSwgbV9jdXJyZW50VmFsdWVCdWZmZXIuZGF0YSgpLCBtX2N1
cnJlbnRWYWx1ZUJ1ZmZlci5zaXplKCkpICE9IFNRTFJlc3VsdE9rCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5j
cHAKaW5kZXggY2UxYTNiOC4uZDhlZjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcApAQCAtODgs
MzcgKzg4LDM3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1ldGFkYXRhPiBVbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y3JlYXRlCiAgICAgQVNTRVJUKG1fc3FsaXRl
REIpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBpZiAoIW1fc3Fs
aXRlREItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSURCRGF0YWJhc2VJbmZvIChrZXkg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgaWYgKCFt
X3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkNSRUFURSBUQUJMRSBJREJE
YXRhYmFzZUluZm8gKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7
IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBJREJEYXRhYmFzZUlu
Zm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCks
IG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPYmplY3RTdG9yZUluZm8gKGlkIElOVEVH
RVIgUFJJTUFSWSBLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJ
Q1QgRkFJTCwgbmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENP
TkZMSUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBhdXRv
SW5jIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWF4SW5kZXhJRCBJTlRFR0VS
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5l
eGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkNSRUFURSBUQUJMRSBPYmplY3RTdG9yZUluZm8g
KGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUg
T04gQ09ORkxJQ1QgRkFJTCwgbmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5J
UVVFIE9OIENPTkZMSUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMLCBhdXRvSW5jIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWF4SW5kZXhJ
RCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSkgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgT2JqZWN0U3RvcmVJbmZvIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIG1fc3FsaXRlREIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgSW5kZXhJbmZvIChpZCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwsIG5hbWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBvYmplY3RTdG9yZUlEIElO
VEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5UGF0aCBCTE9CIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwsIGlzVW5pcXVlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCwgbXVsdGlFbnRyeSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7Cisg
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIkNSRUFURSBU
QUJMRSBJbmRleEluZm8gKGlkIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbmFt
ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG9iamVjdFN0b3JlSUQgSU5URUdFUiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXlQYXRoIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCwgaXNVbmlxdWUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBtdWx0
aUVudHJ5IElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBJbmRleEluZm8gdGFibGUgaW4gZGF0YWJhc2Ug
KCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkNS
RUFURSBUQUJMRSBSZWNvcmRzIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKEFTQ0lJ
TGl0ZXJhbCgiQ1JFQVRFIFRBQkxFIFJlY29yZHMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXkgVEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKTsiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIFJlY29yZHMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+
bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9zcWxp
dGVEQiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlm
ICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJbmRleFJlY29yZHMg
KGluZGV4SUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBvYmplY3RTdG9yZUlE
IElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09MTEFURSBJREJL
RVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFsdWUgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0
ZXJhbCgiQ1JFQVRFIFRBQkxFIEluZGV4UmVjb3JkcyAoaW5kZXhJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwsIG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMLCBrZXkgVEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMLCB2YWx1ZSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEluZGV4UmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAo
JWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9y
TXNnKCkpOwogICAgICAgICBtX3NxbGl0ZURCID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JF
QVRFIFRBQkxFIEtleUdlbmVyYXRvcnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElO
VEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3FsaXRl
REItPmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiQ1JFQVRFIFRBQkxFIEtleUdlbmVyYXRv
cnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElOVEVHRVIgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCk7IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBL
ZXlHZW5lcmF0b3JzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxh
c3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fc3FsaXRl
REIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4OCw3ICsxODgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VNZXRhZGF0YT4gVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6OmV4dHJhYwogICAgICAgICBtZXRhZGF0YS0+dmVyc2lvbiA9IHNx
bC5nZXRDb2x1bW5JbnQoMCk7CiAgICAgfQogICAgIHsKLSAgICAgICAgU1FMaXRlU3RhdGVtZW50
IHNxbCgqbV9zcWxpdGVEQiwgIlNFTEVDVCB2YWx1ZSBGUk9NIElEQkRhdGFiYXNlSW5mbyBXSEVS
RSBrZXkgPSAnRGF0YWJhc2VOYW1lJzsiKTsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgq
bV9zcWxpdGVEQiwgQVNDSUlMaXRlcmFsKCJTRUxFQ1QgdmFsdWUgRlJPTSBJREJEYXRhYmFzZUlu
Zm8gV0hFUkUga2V5ID0gJ0RhdGFiYXNlTmFtZSc7IikpOwogICAgICAgICBpZiAoc3FsLmlzQ29s
dW1uTnVsbCgwKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBtZXRhZGF0
YS0+bmFtZSA9IHNxbC5nZXRDb2x1bW5UZXh0KDApOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1ldGFkYXRhPiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZTo6Z2V0T3JFCiAgICAgaWYgKCFtX3NxbGl0ZURCKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIG1fc3FsaXRlREItPnNldENvbGxhdGlvbkZ1bmN0aW9uKCJJREJLRVki
LCBbdGhpc10oaW50IGFMZW5ndGgsIGNvbnN0IHZvaWQqIGEsIGludCBiTGVuZ3RoLCBjb25zdCB2
b2lkKiBiKSB7CisgICAgbV9zcWxpdGVEQi0+c2V0Q29sbGF0aW9uRnVuY3Rpb24oQVNDSUlMaXRl
cmFsKCJJREJLRVkiKSwgW3RoaXNdKGludCBhTGVuZ3RoLCBjb25zdCB2b2lkKiBhLCBpbnQgYkxl
bmd0aCwgY29uc3Qgdm9pZCogYikgewogICAgICAgICByZXR1cm4gaWRiS2V5Q29sbGF0ZShhTGVu
Z3RoLCBhLCBiTGVuZ3RoLCBiKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVlYjU0NWUuLjVmYzZhMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTI1OCwxMiArMjU4LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9j
ZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKQogCiAgICAgU3RhdGlzdGljc0RhdGEg
ZGF0YTsKIAotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJIb3N0c1BlbmRpbmdDb3Vu
dCIsIHNjaGVkdWxlci5ob3N0c1BlbmRpbmdDb3VudCgpKTsKLSAgICBkYXRhLnN0YXRpc3RpY3NO
dW1iZXJzLnNldCgiSG9zdHNBY3RpdmVDb3VudCIsIHNjaGVkdWxlci5ob3N0c0FjdGl2ZUNvdW50
KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJMb2Fkc1BlbmRpbmdDb3VudCIs
IHNjaGVkdWxlci5sb2Fkc1BlbmRpbmdDb3VudCgpKTsKLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1i
ZXJzLnNldCgiTG9hZHNBY3RpdmVDb3VudCIsIHNjaGVkdWxlci5sb2Fkc0FjdGl2ZUNvdW50KCkp
OwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJEb3dubG9hZHNBY3RpdmVDb3VudCIs
IHNoYXJlZCgpLmRvd25sb2FkTWFuYWdlcigpLmFjdGl2ZURvd25sb2FkQ291bnQoKSk7Ci0gICAg
ZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIk91dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzQ291bnQiLCBzaGFyZWQoKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5vdXRzdGFuZGlu
Z0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVt
YmVycy5zZXQoQVNDSUlMaXRlcmFsKCJIb3N0c1BlbmRpbmdDb3VudCIpLCBzY2hlZHVsZXIuaG9z
dHNQZW5kaW5nQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlM
aXRlcmFsKCJIb3N0c0FjdGl2ZUNvdW50IiksIHNjaGVkdWxlci5ob3N0c0FjdGl2ZUNvdW50KCkp
OworICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiTG9hZHNQZW5k
aW5nQ291bnQiKSwgc2NoZWR1bGVyLmxvYWRzUGVuZGluZ0NvdW50KCkpOworICAgIGRhdGEuc3Rh
dGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiTG9hZHNBY3RpdmVDb3VudCIpLCBzY2hl
ZHVsZXIubG9hZHNBY3RpdmVDb3VudCgpKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNl
dChBU0NJSUxpdGVyYWwoIkRvd25sb2Fkc0FjdGl2ZUNvdW50IiksIHNoYXJlZCgpLmRvd25sb2Fk
TWFuYWdlcigpLmFjdGl2ZURvd25sb2FkQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVt
YmVycy5zZXQoQVNDSUlMaXRlcmFsKCJPdXRzdGFuZGluZ0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
c0NvdW50IiksIHNoYXJlZCgpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm91dHN0YW5kaW5nQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCgpKTsKIAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZEdldFN0YXRpc3RpY3MoZGF0YSwg
Y2FsbGJhY2tJRCksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1BsdWdpblByb2Nlc3NNYWluLm1tIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNz
L1BsdWdpblByb2Nlc3NNYWluLm1tCmluZGV4IDBkYWM5NGYuLmQ2ZmJlMjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nl
c3MvUGx1Z2luUHJvY2Vzc01haW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1BsdWdpblByb2Nlc3NNYWluLm1tCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgICAgIC8vIENoZWNrIGlmIHdlJ3Jl
IGJlaW5nIHNwYXduZWQgdG8gd3JpdGUgYSBNSU1FIHR5cGUgcHJlZmVyZW5jZXMgZmlsZS4KLSAg
ICAgICAgU3RyaW5nIHBsdWdpblBhdGggPSBtX2NvbW1hbmRMaW5lWyJjcmVhdGVQbHVnaW5NSU1F
VHlwZXNQcmVmZXJlbmNlcyJdOworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aCA9IG1fY29tbWFu
ZExpbmVbQVNDSUlMaXRlcmFsKCJjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyIpXTsK
ICAgICAgICAgaWYgKCFwbHVnaW5QYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2Ug
YXJlIG5ldmVyIGdvaW5nIHRvIGdldCB0byB0aGUgYWN0dWFsIGluaXRpYWxpemF0aW9uLCBzbyBp
bml0aWFsaXplIFdlYktpdDIgbm93LgogICAgICAgICAgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsK
QEAgLTg4LDE0ICs4OCwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0RXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhKQogICAgIHsKLSAgICAgICAgU3RyaW5nIHBsdWdpblBhdGggPSBtX2NvbW1hbmRM
aW5lWyJwbHVnaW4tcGF0aCJdOworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aCA9IG1fY29tbWFu
ZExpbmVbQVNDSUlMaXRlcmFsKCJwbHVnaW4tcGF0aCIpXTsKICAgICAgICAgaWYgKHBsdWdpblBh
dGguaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5hZGQoInBsdWdpbi1wYXRoIiwgcGx1Z2luUGF0aCk7CisgICAgICAg
IGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInBsdWdpbi1wYXRoIiks
IHBsdWdpblBhdGgpOwogCi0gICAgICAgIFN0cmluZyBkaXNhYmxlU2FuZGJveCA9IG1fY29tbWFu
ZExpbmVbImRpc2FibGUtc2FuZGJveCJdOworICAgICAgICBTdHJpbmcgZGlzYWJsZVNhbmRib3gg
PSBtX2NvbW1hbmRMaW5lW0FTQ0lJTGl0ZXJhbCgiZGlzYWJsZS1zYW5kYm94IildOwogICAgICAg
ICBpZiAoIWRpc2FibGVTYW5kYm94LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgiZGlzYWJsZS1zYW5kYm94IiwgZGlzYWJsZVNhbmRib3gpOworICAg
ICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgiZGlzYWJs
ZS1zYW5kYm94IiksIGRpc2FibGVTYW5kYm94KTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQv
bWFjL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZUVu
dHJ5UG9pbnQubW0KaW5kZXggMjJkZjE3ZS4uMWY1NTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZp
Y2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQ
b2ludC9tYWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtNDYsMTQg
KzQ2LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHhwY19vYmplY3RfdCBleHRyYURhdGFJ
bml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUobV9pbml0
aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRhIik7CiAKLSAgICAgICAg
U3RyaW5nIHBsdWdpblBhdGggPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUlu
aXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInBsdWdpbi1wYXRoIik7CisgICAgICAgIFN0cmluZyBw
bHVnaW5QYXRoID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXph
dGlvbkRhdGFPYmplY3QsIEFTQ0lJTGl0ZXJhbCgicGx1Z2luLXBhdGgiKSk7CiAgICAgICAgIGlm
IChwbHVnaW5QYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJwbHVnaW4tcGF0aCIsIHBsdWdpblBhdGgp
OworICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJwbHVn
aW4tcGF0aCIpLCBwbHVnaW5QYXRoKTsKIAotICAgICAgICBTdHJpbmcgZGlzYWJsZVNhbmRib3gg
PSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9i
amVjdCwgImRpc2FibGUtc2FuZGJveCIpOworICAgICAgICBTdHJpbmcgZGlzYWJsZVNhbmRib3gg
PSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9i
amVjdCwgQVNDSUlMaXRlcmFsKCJkaXNhYmxlLXNhbmRib3giKSk7CiAgICAgICAgIGlmICghZGlz
YWJsZVNhbmRib3guaXNFbXB0eSgpKQotICAgICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuYWRkKCJkaXNhYmxlLXNhbmRib3giLCBkaXNhYmxlU2FuZGJveCk7CisgICAgICAgICAgICBl
eHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJkaXNhYmxlLXNhbmRib3gi
KSwgZGlzYWJsZVNhbmRib3gpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDI4NDFl
ZWQuLjg4ZTQ4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6Omxvd01lbW9y
eUhhbmRsZXIoYm9vbCBjcml0aWNhbCkKIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXpl
UHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgbV9wbHVnaW5QYXRoID0gcGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0
aW9uRGF0YS5nZXQoInBsdWdpbi1wYXRoIik7CisgICAgbV9wbHVnaW5QYXRoID0gcGFyYW1ldGVy
cy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoQVNDSUlMaXRlcmFsKCJwbHVnaW4tcGF0aCIp
KTsKICAgICBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKHBhcmFtZXRlcnMpOwogCiAgICAgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyKCkuc2V0TG93TWVtb3J5SGFuZGxlcihsb3dNZW1vcnlIYW5kbGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tCmluZGV4IGYzNWMxYjAuLjIyMjk4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtNDY3LDcgKzQ2
Nyw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzCiAKICAgICBib29sIHBhcmVudElzU2FuZGJv
eGVkID0gcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllci54cGNDb25uZWN0aW9uICYmIHBy
b2Nlc3NJc1NhbmRib3hlZCh4cGNfY29ubmVjdGlvbl9nZXRfcGlkKHBhcmFtZXRlcnMuY29ubmVj
dGlvbklkZW50aWZpZXIueHBjQ29ubmVjdGlvbi5nZXQoKSkpOwogCi0gICAgaWYgKHBhcmFtZXRl
cnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJkaXNhYmxlLXNhbmRib3giKSA9PSAiMSIp
IHsKKyAgICBpZiAocGFyYW1ldGVycy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoQVNDSUlM
aXRlcmFsKCJkaXNhYmxlLXNhbmRib3giKSkgPT0gIjEiKSB7CiAgICAgICAgIGlmIChwYXJlbnRJ
c1NhbmRib3hlZCkgewogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJTYW5kYm94ZWQgcHJvY2Vz
c2VzIG1heSBub3QgZGlzYWJsZSBwbHVnLWluIHNhbmRib3gsIHRlcm1pbmF0aW5nICVzLiIsIHBh
cmFtZXRlcnMuY2xpZW50SWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGV4
aXQoRVhfT1NFUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9j
ZXNzL0NoaWxkUHJvY2Vzc0VudHJ5UG9pbnQubW0KaW5kZXggMTNmMzA2ZS4uYzBkNmE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xl
Z2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nl
c3NFbnRyeVBvaW50Lm1tCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzTWFpbkRl
bGVnYXRlOjpkb1ByZUluaXRpYWxpemF0aW9uV29yaygpCiAKIGJvb2wgQ2hpbGRQcm9jZXNzTWFp
bkRlbGVnYXRlOjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcihJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgU3RyaW5nIHNlcnZpY2VOYW1lID0gbV9jb21tYW5k
TGluZVsic2VydmljZW5hbWUiXTsKKyAgICBTdHJpbmcgc2VydmljZU5hbWUgPSBtX2NvbW1hbmRM
aW5lW0FTQ0lJTGl0ZXJhbCgic2VydmljZW5hbWUiKV07CiAgICAgaWYgKHNlcnZpY2VOYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtNzQsNyArNzQsNyBAQCBi
b29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0Q29ubmVjdGlvbklkZW50aWZpZXIoSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaQogCiBib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6
Z2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpCiB7Ci0gICAgY2xp
ZW50SWRlbnRpZmllciA9IG1fY29tbWFuZExpbmVbImNsaWVudC1pZGVudGlmaWVyIl07CisgICAg
Y2xpZW50SWRlbnRpZmllciA9IG1fY29tbWFuZExpbmVbQVNDSUlMaXRlcmFsKCJjbGllbnQtaWRl
bnRpZmllciIpXTsKICAgICBpZiAoY2xpZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBD
aGlsZFByb2Nlc3NNYWluRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGll
bnRJZGVudGlmaWVyKQogCiBib29sIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50
UHJvY2Vzc05hbWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKIHsKLSAgICBjbGllbnRQcm9j
ZXNzTmFtZSA9IG1fY29tbWFuZExpbmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgIGNsaWVudFBy
b2Nlc3NOYW1lID0gbV9jb21tYW5kTGluZVtBU0NJSUxpdGVyYWwoInVpLXByb2Nlc3MtbmFtZSIp
XTsKICAgICBpZiAoY2xpZW50UHJvY2Vzc05hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2lu
dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCmluZGV4IGUwMDI0NjUuLjEyODdhYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBv
aW50Lm1tCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdh
dGU6OmdldENvbm5lY3Rpb25JZGVudGlmaWVyKElQQzo6Q29ubmVjdGlvbjo6SWRlCiAKIGJvb2wg
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5n
JiBjbGllbnRJZGVudGlmaWVyKQogewotICAgIGNsaWVudElkZW50aWZpZXIgPSB4cGNfZGljdGlv
bmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWlkZW50aWZpZXIi
KTsKKyAgICBjbGllbnRJZGVudGlmaWVyID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2lu
aXRpYWxpemVyTWVzc2FnZSwgQVNDSUlMaXRlcmFsKCJjbGllbnQtaWRlbnRpZmllciIpKTsKICAg
ICBpZiAoY2xpZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlh
bGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcmIGNsaWVudElkZW50aWZp
ZXIKIAogYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vz
c05hbWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSkKIHsKLSAgICBjbGllbnRQcm9jZXNzTmFt
ZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJ1aS1w
cm9jZXNzLW5hbWUiKTsKKyAgICBjbGllbnRQcm9jZXNzTmFtZSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsIEFTQ0lJTGl0ZXJhbCgidWktcHJvY2Vzcy1u
YW1lIikpOwogICAgIGlmIChjbGllbnRQcm9jZXNzTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdp
bk1vZHVsZU1hYy5tbQppbmRleCA1OTVkNmRkLi5hNTBjNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05l
dHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCkBAIC00NDMsNyArNDQzLDcgQEAgUGx1Z2luVmVyc2lv
biBQbHVnaW5WZXJzaW9uOjpwYXJzZShjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCiAgICAg
UGx1Z2luVmVyc2lvbiB2ZXJzaW9uOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdmVyc2lvblN0cmlu
Z0NvbXBvbmVudHM7Ci0gICAgdmVyc2lvblN0cmluZy5zcGxpdCgiLiIsIHZlcnNpb25TdHJpbmdD
b21wb25lbnRzKTsKKyAgICB2ZXJzaW9uU3RyaW5nLnNwbGl0KCcuJywgdmVyc2lvblN0cmluZ0Nv
bXBvbmVudHMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVyc2lvblN0cmluZ0NvbXBv
bmVudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYm9vbCBzdWNjZXNzZnVsbHlQYXJzZWQgPSBm
YWxzZTsKICAgICAgICAgdW5zaWduZWQgdmVyc2lvbkNvbXBvbmVudCA9IHZlcnNpb25TdHJpbmdD
b21wb25lbnRzW2ldLnRvVUludCgmc3VjY2Vzc2Z1bGx5UGFyc2VkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDdlZTEwMDQuLmI3NDZmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAt
NTI3LDggKzUyNyw4IEBAIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiBSZW1vdGVTY3Jv
bGxpbmdUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGCiB7CiAgICAgUmVtb3RlU2Ny
b2xsaW5nVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7CiAKLSAgICBkdW1wUHJvcGVydHkodHMs
ICJ2aWV3cG9ydC1yZWN0LWF0LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMudmlld3BvcnRSZWN0
QXRMYXN0TGF5b3V0KCkpOwotICAgIGR1bXBQcm9wZXJ0eSh0cywgImxheWVyLXBvc2l0aW9uLWF0
LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsK
KyAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgidmlld3BvcnQtcmVjdC1hdC1sYXN0
LWxheW91dCIpLCBjb25zdHJhaW50cy52aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQoKSk7CisgICAg
ZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImxheWVyLXBvc2l0aW9uLWF0LWxhc3QtbGF5
b3V0IiksIGNvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSk7CiAKICAgICBy
ZXR1cm4gdHM7CiB9CkBAIC01MzcsOCArNTM3LDggQEAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRT
dHJlYW0mIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFMK
IHsKICAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKIAotICAg
IGR1bXBQcm9wZXJ0eSh0cywgInN0aWNreS1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0
cmFpbnRzLnN0aWNreU9mZnNldEF0TGFzdExheW91dCgpKTsKLSAgICBkdW1wUHJvcGVydHkodHMs
ICJsYXllci1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0cmFpbnRzLmxheWVyUG9zaXRp
b25BdExhc3RMYXlvdXQoKSk7CisgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoInN0
aWNreS1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIpLCBjb25zdHJhaW50cy5zdGlja3lPZmZzZXRB
dExhc3RMYXlvdXQoKSk7CisgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImxheWVy
LXBvc2l0aW9uLWF0LWxhc3QtbGF5b3V0IiksIGNvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExh
c3RMYXlvdXQoKSk7CiAKICAgICByZXR1cm4gdHM7CiB9CkBAIC01NDksMTAgKzU0OSwxMCBAQCB2
b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYgbm9kZSwgYm9vbCBjaAogCiAgICAgdHMgPDwgIihub2RlICIgPDwgbm9kZS5zY3Jv
bGxpbmdOb2RlSUQoKTsKIAotICAgIGR1bXBQcm9wZXJ0eSh0cywgInR5cGUiLCBub2RlLm5vZGVU
eXBlKCkpOworICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJ0eXBlIiksIG5vZGUu
bm9kZVR5cGUoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKLSAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAibGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQ+KG5vZGUubGF5ZXIoKSkpOworICAgICAgICBkdW1wUHJvcGVydHkodHMs
IEFTQ0lJTGl0ZXJhbCgibGF5ZXIiKSwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEPihub2RlLmxheWVyKCkpKTsKICAgICAKICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5
cGUoKSkgewogICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOgpAQCAtNTc1LDIzICs1NzUsMjMg
QEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUKICAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0
cmVhbSYgdHMgPSAqdGhpczsKICAgICAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbGFibGVBcmVhU2l6ZSkpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNjcm9sbGFibGUt
YXJlYS1zaXplIiwgbm9kZS5zY3JvbGxhYmxlQXJlYVNpemUoKSk7CisgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJzY3JvbGxhYmxlLWFyZWEtc2l6ZSIpLCBub2RlLnNjcm9s
bGFibGVBcmVhU2l6ZSgpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxD
b250ZW50c1NpemUpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJ0b3RhbC1jb250ZW50cy1z
aXplIiwgbm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgZHVtcFByb3BlcnR5KHRz
LCBBU0NJSUxpdGVyYWwoInRvdGFsLWNvbnRlbnRzLXNpemUiKSwgbm9kZS50b3RhbENvbnRlbnRz
U2l6ZSgpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVu
dHNTaXplKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicmVhY2hhYmxlLWNvbnRlbnRzLXNp
emUiLCBub2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCBBU0NJSUxpdGVyYWwoInJlYWNoYWJsZS1jb250ZW50cy1zaXplIiksIG5vZGUucmVhY2hh
YmxlQ29udGVudHNTaXplKCkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwg
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxQb3NpdGlvbikpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNjcm9sbC1wb3NpdGlvbiIs
IG5vZGUuc2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlM
aXRlcmFsKCJzY3JvbGwtcG9zaXRpb24iKSwgbm9kZS5zY3JvbGxQb3NpdGlvbigpKTsKIAogICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luKSkKLSAgICAgICAgZHVtcFBy
b3BlcnR5KHRzLCAic2Nyb2xsLW9yaWdpbiIsIG5vZGUuc2Nyb2xsT3JpZ2luKCkpOworICAgICAg
ICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgic2Nyb2xsLW9yaWdpbiIpLCBub2RlLnNj
cm9sbE9yaWdpbigpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVk
U2Nyb2xsUG9zaXRpb24pKSB7Ci0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInJlcXVlc3RlZC1z
Y3JvbGwtcG9zaXRpb24iLCBub2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkpOwotICAgICAg
ICBkdW1wUHJvcGVydHkodHMsICJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uLWlzLXByb2dyYW1h
dGljIiwgbm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNT
Y3JvbGwoKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJyZXF1ZXN0
ZWQtc2Nyb2xsLXBvc2l0aW9uIiksIG5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSk7Cisg
ICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJyZXF1ZXN0ZWQtc2Nyb2xsLXBv
c2l0aW9uLWlzLXByb2dyYW1hdGljIiksIG5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXBy
ZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOwogICAgIH0KIH0KICAgICAKQEAgLTYwMiw3ICs2
MDIsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJgogICAgIGR1bXAoc3RhdGljX2Nhc3Q8Y29u
c3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVz
T25seSk7CiAgICAgCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZyYW1lU2Nh
bGVGYWN0b3IpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJmcmFtZS1zY2FsZS1mYWN0b3Ii
LCBub2RlLmZyYW1lU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVND
SUlMaXRlcmFsKCJmcmFtZS1zY2FsZS1mYWN0b3IiKSwgbm9kZS5mcmFtZVNjYWxlRmFjdG9yKCkp
OwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Ok5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKSkgewogICAgICAgICB0cyA8PCAiXG4iOwpAQCAtNjI2LDMxICs2MjYsMzEgQEAgdm9p
ZCBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZSYKICAgICAvLyBGSVhNRTogZHVtcCBzY3JvbGxCZWhhdmlvckZv
ckZpeGVkRWxlbWVudHMKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFk
ZXJIZWlnaHQpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJoZWFkZXItaGVpZ2h0Iiwgbm9k
ZS5oZWFkZXJIZWlnaHQoKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFs
KCJoZWFkZXItaGVpZ2h0IiksIG5vZGUuaGVhZGVySGVpZ2h0KCkpOwogCiAgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckhlaWdodCkpCi0gICAgICAgIGR1bXBQcm9wZXJ0
eSh0cywgImZvb3Rlci1oZWlnaHQiLCBub2RlLmZvb3RlckhlaWdodCgpKTsKKyAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImZvb3Rlci1oZWlnaHQiKSwgbm9kZS5mb290ZXJI
ZWlnaHQoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVu
dEluc2V0KSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAidG9wLWNvbnRlbnQtaW5zZXQiLCBu
b2RlLnRvcENvbnRlbnRJbnNldCgpKTsKKyAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxp
dGVyYWwoInRvcC1jb250ZW50LWluc2V0IiksIG5vZGUudG9wQ29udGVudEluc2V0KCkpOwogCiAg
ICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZyYW1lU2NhbGVGYWN0b3IpKQotICAg
ICAgICBkdW1wUHJvcGVydHkodHMsICJmcmFtZS1zY2FsZS1mYWN0b3IiLCBub2RlLmZyYW1lU2Nh
bGVGYWN0b3IoKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJmcmFt
ZS1zY2FsZS1mYWN0b3IiKSwgbm9kZS5mcmFtZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCi0gICAgICAg
IGR1bXBQcm9wZXJ0eSh0cywgInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXll
cigpKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJzY3JvbGxlZC1j
b250ZW50cy1sYXllciIpLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKIAogICAgIGlmICghY2hhbmdlZFBy
b3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0
cywgImNsaXAtaW5zZXQtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQ+KG5vZGUuaW5zZXRDbGlwTGF5ZXIoKSkpOworICAgICAgICBkdW1wUHJvcGVydHko
dHMsIEFTQ0lJTGl0ZXJhbCgiY2xpcC1pbnNldC1sYXllciIpLCBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaW5zZXRDbGlwTGF5ZXIoKSkpOwogCiAgICAg
aWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpCi0gICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgImNvbnRlbnQtc2hhZG93LWxheWVyIiwgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmNvbnRlbnRTaGFkb3dMYXllcigp
KSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJjb250ZW50LXNoYWRv
dy1sYXllciIpLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5v
ZGUuY29udGVudFNoYWRvd0xheWVyKCkpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNP
bmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpIZWFkZXJMYXllcikpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImhlYWRlci1s
YXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5o
ZWFkZXJMYXllcigpKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJo
ZWFkZXItbGF5ZXIiKSwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
Pihub2RlLmhlYWRlckxheWVyKCkpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5
IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpGb290ZXJMYXllcikpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImZvb3Rlci1sYXll
ciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5mb290
ZXJMYXllcigpKSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJmb290
ZXItbGF5ZXIiKSwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihu
b2RlLmZvb3RlckxheWVyKCkpKTsKIH0KICAgICAKIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRl
eHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUm
IG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQpAQCAtNjYwLDcgKzY2MCw3IEBAIHZv
aWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbGluZ05vCiAgICAgZHVtcChzdGF0aWNfY2FzdDxjb25zdCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKICAg
ICAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50
c0xheWVyKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsZWQtY29udGVudHMtbGF5
ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Ny
b2xsZWRDb250ZW50c0xheWVyKCkpKTsKKyAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxp
dGVyYWwoInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiksIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogfQog
CiB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlRml4ZWROb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKQEAgLTcx
MSw4ICs3MTEsOCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNv
bnN0IFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBibwogewogICAgIFJlbW90ZVNjcm9s
bGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwogCi0gICAgZHVtcFByb3BlcnR5KHRzLCAi
aGFzIGNoYW5nZWQgcHJvcGVydGllcyIsIHN0YXRlVHJlZS5oYXNDaGFuZ2VkUHJvcGVydGllcygp
KTsKLSAgICBkdW1wUHJvcGVydHkodHMsICJoYXMgbmV3IHJvb3Qgbm9kZSIsIHN0YXRlVHJlZS5o
YXNOZXdSb290U3RhdGVOb2RlKCkpOworICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFs
KCJoYXMgY2hhbmdlZCBwcm9wZXJ0aWVzIiksIHN0YXRlVHJlZS5oYXNDaGFuZ2VkUHJvcGVydGll
cygpKTsKKyAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiaGFzIG5ldyByb290IG5v
ZGUiKSwgc3RhdGVUcmVlLmhhc05ld1Jvb3RTdGF0ZU5vZGUoKSk7CiAKICAgICBpZiAoc3RhdGVU
cmVlLnJvb3RTdGF0ZU5vZGUoKSkKICAgICAgICAgcmVjdXJzaXZlRHVtcE5vZGVzKCpzdGF0ZVRy
ZWUucm9vdFN0YXRlTm9kZSgpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOwpAQCAtNzIwLDcgKzcy
MCw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Ny
b2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRyZWUsIGJvCiAgICAgaWYgKCFzdGF0ZVRyZWUucmVtb3Zl
ZE5vZGVzKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IHJl
bW92ZWROb2RlczsKICAgICAgICAgY29weVRvVmVjdG9yKHN0YXRlVHJlZS5yZW1vdmVkTm9kZXMo
KSwgcmVtb3ZlZE5vZGVzKTsKLSAgICAgICAgZHVtcFByb3BlcnR5PFZlY3RvcjxTY3JvbGxpbmdO
b2RlSUQ+Pih0cywgInJlbW92ZWQtbm9kZXMiLCByZW1vdmVkTm9kZXMpOworICAgICAgICBkdW1w
UHJvcGVydHk8VmVjdG9yPFNjcm9sbGluZ05vZGVJRD4+KHRzLCBBU0NJSUxpdGVyYWwoInJlbW92
ZWQtbm9kZXMiKSwgcmVtb3ZlZE5vZGVzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggMjBlMmE1ZC4uMmMwMTI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTE0MCwx
MSArMTQwLDExIEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBD
aGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmCiAgICAgc2FuZGJveFBhcmFtZXRl
cnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9ESVIiLCBwd2QucHdfZGlyKTsKIAogICAgIFN0cmlu
ZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwd2QucHdfZGlyKTsKLSAgICBwYXRoLmFwcGVuZCgi
L0xpYnJhcnkiKTsKKyAgICBwYXRoLmFwcGVuZChBU0NJSUxpdGVyYWwoIi9MaWJyYXJ5IikpOwog
CiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX0RJ
UiIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCi0gICAgcGF0aC5h
cHBlbmQoIi9QcmVmZXJlbmNlcyIpOworICAgIHBhdGguYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiL1By
ZWZlcmVuY2VzIikpOwogCiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigi
SE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBkNGE3NjRlLi4xYmViOGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTg4MiwzNiArODgyLDM2IEBAIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgUGxhdGZvcm1D
CiAgICAgdHMgPDwgYW5pbWF0aW9uLmtleVBhdGg7CiAKICAgICBpZiAoYW5pbWF0aW9uLmJlZ2lu
VGltZSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYmVnaW5UaW1lIiwgYW5pbWF0aW9uLmJl
Z2luVGltZSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJiZWdpblRp
bWUiKSwgYW5pbWF0aW9uLmJlZ2luVGltZSk7CiAKICAgICBpZiAoYW5pbWF0aW9uLmR1cmF0aW9u
KQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJkdXJhdGlvbiIsIGFuaW1hdGlvbi5kdXJhdGlv
bik7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJkdXJhdGlvbiIpLCBh
bmltYXRpb24uZHVyYXRpb24pOwogCiAgICAgaWYgKGFuaW1hdGlvbi50aW1lT2Zmc2V0KQotICAg
ICAgICBkdW1wUHJvcGVydHkodHMsICJ0aW1lT2Zmc2V0IiwgYW5pbWF0aW9uLnRpbWVPZmZzZXQp
OworICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgidGltZU9mZnNldCIpLCBh
bmltYXRpb24udGltZU9mZnNldCk7CiAKLSAgICBkdW1wUHJvcGVydHkodHMsICJyZXBlYXRDb3Vu
dCIsIGFuaW1hdGlvbi5yZXBlYXRDb3VudCk7CisgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxp
dGVyYWwoInJlcGVhdENvdW50IiksIGFuaW1hdGlvbi5yZXBlYXRDb3VudCk7CiAKICAgICBpZiAo
YW5pbWF0aW9uLnNwZWVkICE9IDEpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNwZWVkIiwg
YW5pbWF0aW9uLnNwZWVkKTsKKyAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwo
InNwZWVkIiksIGFuaW1hdGlvbi5zcGVlZCk7CiAKLSAgICBkdW1wUHJvcGVydHkodHMsICJmaWxs
TW9kZSIsIGFuaW1hdGlvbi5maWxsTW9kZSk7Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAidmFsdWVG
dW5jdGlvbiIsIGFuaW1hdGlvbi52YWx1ZUZ1bmN0aW9uKTsKKyAgICBkdW1wUHJvcGVydHkodHMs
IEFTQ0lJTGl0ZXJhbCgiZmlsbE1vZGUiKSwgYW5pbWF0aW9uLmZpbGxNb2RlKTsKKyAgICBkdW1w
UHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgidmFsdWVGdW5jdGlvbiIpLCBhbmltYXRpb24udmFs
dWVGdW5jdGlvbik7CiAKICAgICBpZiAoYW5pbWF0aW9uLmF1dG9SZXZlcnNlcykKLSAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCAiYXV0b1JldmVyc2VzIiwgYW5pbWF0aW9uLmF1dG9SZXZlcnNlcyk7
CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJhdXRvUmV2ZXJzZXMiKSwg
YW5pbWF0aW9uLmF1dG9SZXZlcnNlcyk7CiAKICAgICBpZiAoIWFuaW1hdGlvbi5yZW1vdmVkT25D
b21wbGV0aW9uKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJyZW1vdmVkT25Db21wbGV0aW9u
IiwgYW5pbWF0aW9uLnJlbW92ZWRPbkNvbXBsZXRpb24pOworICAgICAgICBkdW1wUHJvcGVydHko
dHMsIEFTQ0lJTGl0ZXJhbCgicmVtb3ZlZE9uQ29tcGxldGlvbiIpLCBhbmltYXRpb24ucmVtb3Zl
ZE9uQ29tcGxldGlvbik7CiAKICAgICBpZiAoYW5pbWF0aW9uLmFkZGl0aXZlKQotICAgICAgICBk
dW1wUHJvcGVydHkodHMsICJhZGRpdGl2ZSIsIGFuaW1hdGlvbi5hZGRpdGl2ZSk7CisgICAgICAg
IGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJhZGRpdGl2ZSIpLCBhbmltYXRpb24uYWRk
aXRpdmUpOwogCiAgICAgaWYgKGFuaW1hdGlvbi5yZXZlcnNlVGltaW5nRnVuY3Rpb25zKQotICAg
ICAgICBkdW1wUHJvcGVydHkodHMsICJyZXZlcnNlVGltaW5nRnVuY3Rpb25zIiwgYW5pbWF0aW9u
LnJldmVyc2VUaW1pbmdGdW5jdGlvbnMpOworICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJ
TGl0ZXJhbCgicmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyIpLCBhbmltYXRpb24ucmV2ZXJzZVRpbWlu
Z0Z1bmN0aW9ucyk7CiAKICAgICBpZiAoYW5pbWF0aW9uLmhhc0V4cGxpY2l0QmVnaW5UaW1lKQot
ICAgICAgICBkdW1wUHJvcGVydHkodHMsICJoYXNFeHBsaWNpdEJlZ2luVGltZSIsIGFuaW1hdGlv
bi5oYXNFeHBsaWNpdEJlZ2luVGltZSk7CisgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlM
aXRlcmFsKCJoYXNFeHBsaWNpdEJlZ2luVGltZSIpLCBhbmltYXRpb24uaGFzRXhwbGljaXRCZWdp
blRpbWUpOwogCiAgICAgdHMgPDwgIlxuIjsKICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwpAQCAt
OTI3LDEzICs5MjcsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBQbGF0Zm9ybUMKICAgICAgICAgdHMud3Jp
dGVJbmRlbnQoKTsKICAgICAgICAgdHMgPDwgIihrZXlmcmFtZSAiIDw8IHVuc2lnbmVkKGkpOwog
ICAgICAgICBpZiAoaSA8IGFuaW1hdGlvbi5rZXlUaW1lcy5zaXplKCkpCi0gICAgICAgICAgICBk
dW1wUHJvcGVydHkodHMsICJ0aW1lIiwgYW5pbWF0aW9uLmtleVRpbWVzW2ldKTsKKyAgICAgICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJ0aW1lIiksIGFuaW1hdGlvbi5rZXlU
aW1lc1tpXSk7CiAKICAgICAgICAgaWYgKGkgPCBhbmltYXRpb24udGltaW5nRnVuY3Rpb25zLnNp
emUoKSAmJiBhbmltYXRpb24udGltaW5nRnVuY3Rpb25zW2ldKQotICAgICAgICAgICAgZHVtcFBy
b3BlcnR5PGNvbnN0IFRpbWluZ0Z1bmN0aW9uJj4odHMsICJ0aW1pbmcgZnVuY3Rpb24iLCAqYW5p
bWF0aW9uLnRpbWluZ0Z1bmN0aW9uc1tpXSk7CisgICAgICAgICAgICBkdW1wUHJvcGVydHk8Y29u
c3QgVGltaW5nRnVuY3Rpb24mPih0cywgQVNDSUlMaXRlcmFsKCJ0aW1pbmcgZnVuY3Rpb24iKSwg
KmFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbnNbaV0pOwogCiAgICAgICAgIGlmIChpIDwgYW5pbWF0
aW9uLmtleVZhbHVlcy5zaXplKCkpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJ2YWx1
ZSIsIGFuaW1hdGlvbi5rZXlWYWx1ZXNbaV0pOworICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRz
LCBBU0NJSUxpdGVyYWwoInZhbHVlIiksIGFuaW1hdGlvbi5rZXlWYWx1ZXNbaV0pOwogCiAgICAg
ICAgIHRzIDw8ICIpIjsKICAgICB9CkBAIC0xMDE5LDEwNiArMTAxOSwxMDYgQEAgc3RhdGljIHZv
aWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFJlbW90ZUxheWVyVHIKICAgICAgICAgdHMgPDwgIihsYXllciAiIDw8IGxheWVySUQ7CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpOYW1lQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0
cywgIm5hbWUiLCBsYXllclByb3BlcnRpZXMubmFtZSk7CisgICAgICAgICAgICBkdW1wUHJvcGVy
dHkodHMsIEFTQ0lJTGl0ZXJhbCgibmFtZSIpLCBsYXllclByb3BlcnRpZXMubmFtZSk7CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVy
dHk8VmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+KHRzLCAiY2hpbGRyZW4i
LCBsYXllclByb3BlcnRpZXMuY2hpbGRyZW4pOworICAgICAgICAgICAgZHVtcFByb3BlcnR5PFZl
Y3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+Pih0cywgQVNDSUlMaXRlcmFsKCJj
aGlsZHJlbiIpLCBsYXllclByb3BlcnRpZXMuY2hpbGRyZW4pOwogCiAgICAgICAgIGlmIChsYXll
clByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6UG9zaXRpb25DaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicG9zaXRp
b24iLCBsYXllclByb3BlcnRpZXMucG9zaXRpb24pOworICAgICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCBBU0NJSUxpdGVyYWwoInBvc2l0aW9uIiksIGxheWVyUHJvcGVydGllcy5wb3NpdGlvbik7
CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3VuZHNDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFBy
b3BlcnR5KHRzLCAiYm91bmRzIiwgbGF5ZXJQcm9wZXJ0aWVzLmJvdW5kcyk7CisgICAgICAgICAg
ICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiYm91bmRzIiksIGxheWVyUHJvcGVydGll
cy5ib3VuZHMpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRp
ZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QW5jaG9yUG9pbnRDaGFuZ2VkKQotICAg
ICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYW5jaG9yUG9pbnQiLCBsYXllclByb3BlcnRpZXMu
YW5jaG9yUG9pbnQpOworICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwo
ImFuY2hvclBvaW50IiksIGxheWVyUHJvcGVydGllcy5hbmNob3JQb2ludCk7CiAKICAgICAgICAg
aWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3Bl
cnR5KHRzLCAiYmFja2dyb3VuZENvbG9yIiwgbGF5ZXJQcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xv
cik7CisgICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiYmFja2dyb3Vu
ZENvbG9yIiksIGxheWVyUHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgICAgIGlm
IChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6Qm9yZGVyQ29sb3JDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRz
LCAiYm9yZGVyQ29sb3IiLCBsYXllclByb3BlcnRpZXMuYm9yZGVyQ29sb3IpOworICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImJvcmRlckNvbG9yIiksIGxheWVyUHJv
cGVydGllcy5ib3JkZXJDb2xvcik7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJXaWR0aENo
YW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJib3JkZXJXaWR0aCIsIGxheWVy
UHJvcGVydGllcy5ib3JkZXJXaWR0aCk7CisgICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFT
Q0lJTGl0ZXJhbCgiYm9yZGVyV2lkdGgiKSwgbGF5ZXJQcm9wZXJ0aWVzLmJvcmRlcldpZHRoKTsK
IAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok9wYWNpdHlDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFBy
b3BlcnR5KHRzLCAib3BhY2l0eSIsIGxheWVyUHJvcGVydGllcy5vcGFjaXR5KTsKKyAgICAgICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJvcGFjaXR5IiksIGxheWVyUHJvcGVy
dGllcy5vcGFjaXR5KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5zZm9ybUNoYW5nZWQpCi0g
ICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJ0cmFuc2Zvcm0iLCBsYXllclByb3BlcnRpZXMu
dHJhbnNmb3JtID8gKmxheWVyUHJvcGVydGllcy50cmFuc2Zvcm0gOiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJ0cmFu
c2Zvcm0iKSwgbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9ybSA/ICpsYXllclByb3BlcnRpZXMudHJh
bnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpT
dWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJz
dWJsYXllclRyYW5zZm9ybSIsIGxheWVyUHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA/ICps
YXllclByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJzdWJsYXllclRy
YW5zZm9ybSIpLCBsYXllclByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPyAqbGF5ZXJQcm9w
ZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpIaWRkZW5DaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAiaGlkZGVuIiwgbGF5ZXJQcm9wZXJ0aWVzLmhpZGRlbik7CisgICAgICAgICAgICBkdW1w
UHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiaGlkZGVuIiksIGxheWVyUHJvcGVydGllcy5oaWRk
ZW4pOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6R2VvbWV0cnlGbGlwcGVkQ2hhbmdlZCkKLSAgICAg
ICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImdlb21ldHJ5RmxpcHBlZCIsIGxheWVyUHJvcGVydGll
cy5nZW9tZXRyeUZsaXBwZWQpOworICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxp
dGVyYWwoImdlb21ldHJ5RmxpcHBlZCIpLCBsYXllclByb3BlcnRpZXMuZ2VvbWV0cnlGbGlwcGVk
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkRvdWJsZVNpZGVkQ2hhbmdlZCkKLSAgICAgICAgICAg
IGR1bXBQcm9wZXJ0eSh0cywgImRvdWJsZVNpZGVkIiwgbGF5ZXJQcm9wZXJ0aWVzLmRvdWJsZVNp
ZGVkKTsKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJkb3VibGVT
aWRlZCIpLCBsYXllclByb3BlcnRpZXMuZG91YmxlU2lkZWQpOwogCiAgICAgICAgIGlmIChsYXll
clByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TWFza3NUb0JvdW5kc0NoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJt
YXNrc1RvQm91bmRzIiwgbGF5ZXJQcm9wZXJ0aWVzLm1hc2tzVG9Cb3VuZHMpOworICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoIm1hc2tzVG9Cb3VuZHMiKSwgbGF5ZXJQ
cm9wZXJ0aWVzLm1hc2tzVG9Cb3VuZHMpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMu
Y2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6T3BhcXVlQ2hh
bmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgIm9wYXF1ZSIsIGxheWVyUHJvcGVy
dGllcy5vcGFxdWUpOworICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwo
Im9wYXF1ZSIpLCBsYXllclByb3BlcnRpZXMub3BhcXVlKTsKIAogICAgICAgICBpZiAobGF5ZXJQ
cm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
Ok1hc2tMYXllckNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJtYXNrTGF5
ZXIiLCBsYXllclByb3BlcnRpZXMubWFza0xheWVySUQpOworICAgICAgICAgICAgZHVtcFByb3Bl
cnR5KHRzLCBBU0NJSUxpdGVyYWwoIm1hc2tMYXllciIpLCBsYXllclByb3BlcnRpZXMubWFza0xh
eWVySUQpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMg
JiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q2xvbmVkQ29udGVudHNDaGFuZ2VkKQotICAg
ICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY2xvbmVkTGF5ZXIiLCBsYXllclByb3BlcnRpZXMu
Y2xvbmVkTGF5ZXJJRCk7CisgICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJh
bCgiY2xvbmVkTGF5ZXIiKSwgbGF5ZXJQcm9wZXJ0aWVzLmNsb25lZExheWVySUQpOwogCiAgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6Q29udGVudHNSZWN0Q2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgImNvbnRlbnRzUmVjdCIsIGxheWVyUHJvcGVydGllcy5jb250ZW50c1JlY3QpOwor
ICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImNvbnRlbnRzUmVjdCIp
LCBsYXllclByb3BlcnRpZXMuY29udGVudHNSZWN0KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9w
ZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNv
bnRlbnRzU2NhbGVDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVu
dHNTY2FsZSIsIGxheWVyUHJvcGVydGllcy5jb250ZW50c1NjYWxlKTsKKyAgICAgICAgICAgIGR1
bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJjb250ZW50c1NjYWxlIiksIGxheWVyUHJvcGVy
dGllcy5jb250ZW50c1NjYWxlKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5n
ZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1pbmlmaWNhdGlvbkZp
bHRlckNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJtaW5pZmljYXRpb25G
aWx0ZXIiLCBsYXllclByb3BlcnRpZXMubWluaWZpY2F0aW9uRmlsdGVyKTsKKyAgICAgICAgICAg
IGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJtaW5pZmljYXRpb25GaWx0ZXIiKSwgbGF5
ZXJQcm9wZXJ0aWVzLm1pbmlmaWNhdGlvbkZpbHRlcik7CiAKICAgICAgICAgaWYgKGxheWVyUHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpN
YWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywg
Im1hZ25pZmljYXRpb25GaWx0ZXIiLCBsYXllclByb3BlcnRpZXMubWFnbmlmaWNhdGlvbkZpbHRl
cik7CisgICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgibWFnbmlmaWNh
dGlvbkZpbHRlciIpLCBsYXllclByb3BlcnRpZXMubWFnbmlmaWNhdGlvbkZpbHRlcik7CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpCbGVuZE1vZGVDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3Bl
cnR5KHRzLCAiYmxlbmRNb2RlIiwgbGF5ZXJQcm9wZXJ0aWVzLmJsZW5kTW9kZSk7CisgICAgICAg
ICAgICBkdW1wUHJvcGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiYmxlbmRNb2RlIiksIGxheWVyUHJv
cGVydGllcy5ibGVuZE1vZGUpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3BlZWRDaGFuZ2VkKQot
ICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic3BlZWQiLCBsYXllclByb3BlcnRpZXMuc3Bl
ZWQpOworICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoInNwZWVkIiks
IGxheWVyUHJvcGVydGllcy5zcGVlZCk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUaW1lT2Zmc2V0
Q2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRpbWVPZmZzZXQiLCBsYXll
clByb3BlcnRpZXMudGltZU9mZnNldCk7CisgICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsIEFT
Q0lJTGl0ZXJhbCgidGltZU9mZnNldCIpLCBsYXllclByb3BlcnRpZXMudGltZU9mZnNldCk7CiAK
ICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKSB7CiAgICAgICAgICAgICBp
ZiAoY29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGxheWVyUHJv
cGVydGllcy5iYWNraW5nU3RvcmUuZ2V0KCkpCi0gICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5
PGNvbnN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJj4odHMsICJiYWNraW5nU3RvcmUiLCAqYmFj
a2luZ1N0b3JlKTsKKyAgICAgICAgICAgICAgICBkdW1wUHJvcGVydHk8Y29uc3QgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUmPih0cywgQVNDSUlMaXRlcmFsKCJiYWNraW5nU3RvcmUiKSwgKmJhY2tp
bmdTdG9yZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAiYmFja2luZ1N0b3JlIiwgInJlbW92ZWQiKTsKKyAgICAgICAgICAgICAgICBkdW1wUHJv
cGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgiYmFja2luZ1N0b3JlIiksICJyZW1vdmVkIik7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKQotICAgICAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCAiZmlsdGVycyIsIGxheWVyUHJvcGVydGllcy5maWx0ZXJzID8gKmxh
eWVyUHJvcGVydGllcy5maWx0ZXJzIDogRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAg
IGR1bXBQcm9wZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJmaWx0ZXJzIiksIGxheWVyUHJvcGVydGll
cy5maWx0ZXJzID8gKmxheWVyUHJvcGVydGllcy5maWx0ZXJzIDogRmlsdGVyT3BlcmF0aW9ucygp
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkFuaW1hdGlvbnNDaGFuZ2VkKSB7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGtleUFuaW1hdGlvblBhaXIgOiBsYXllclByb3BlcnRpZXMuYWRk
ZWRBbmltYXRpb25zKQogICAgICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImFuaW1hdGlv
biAiICsgIGtleUFuaW1hdGlvblBhaXIuZmlyc3QsIGtleUFuaW1hdGlvblBhaXIuc2Vjb25kKTsK
IAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBuYW1lIDogbGF5ZXJQcm9wZXJ0aWVzLmtl
eVBhdGhzT2ZBbmltYXRpb25zVG9SZW1vdmUpCi0gICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAicmVtb3ZlZCBhbmltYXRpb24iLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBkdW1wUHJv
cGVydHkodHMsIEFTQ0lJTGl0ZXJhbCgicmVtb3ZlZCBhbmltYXRpb24iKSwgbmFtZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkVkZ2VBbnRpYWxpYXNpbmdNYXNrQ2hhbmdlZCkK
LSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImVkZ2VBbnRpYWxpYXNpbmdNYXNrIiwgbGF5
ZXJQcm9wZXJ0aWVzLmVkZ2VBbnRpYWxpYXNpbmdNYXNrKTsKKyAgICAgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgQVNDSUlMaXRlcmFsKCJlZGdlQW50aWFsaWFzaW5nTWFzayIpLCBsYXllclByb3Bl
cnRpZXMuZWRnZUFudGlhbGlhc2luZ01hc2spOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q3VzdG9t
QXBwZWFyYW5jZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJjdXN0b21B
cHBlYXJhbmNlIiwgbGF5ZXJQcm9wZXJ0aWVzLmN1c3RvbUFwcGVhcmFuY2UpOworICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImN1c3RvbUFwcGVhcmFuY2UiKSwgbGF5
ZXJQcm9wZXJ0aWVzLmN1c3RvbUFwcGVhcmFuY2UpOwogCiAgICAgICAgIGlmIChsYXllclByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q3Vz
dG9tQmVoYXZpb3JDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY3VzdG9t
QmVoYXZpb3IiLCBsYXllclByb3BlcnRpZXMuY3VzdG9tQmVoYXZpb3IpOworICAgICAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCBBU0NJSUxpdGVyYWwoImN1c3RvbUJlaGF2aW9yIiksIGxheWVyUHJv
cGVydGllcy5jdXN0b21CZWhhdmlvcik7CiAKICAgICAgICAgdHMgPDwgIikiOwogCkBAIC0xMTk0
LDcgKzExOTQsNyBAQCBDU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlw
dGlvbigpIGNvbnN0CiAgICAgZHVtcENoYW5nZWRMYXllcnModHMsIG1fY2hhbmdlZExheWVyUHJv
cGVydGllcyk7CiAKICAgICBpZiAoIW1fZGVzdHJveWVkTGF5ZXJJRHMuaXNFbXB0eSgpKQotICAg
ICAgICBkdW1wUHJvcGVydHk8VmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+
KHRzLCAiZGVzdHJveWVkLWxheWVycyIsIG1fZGVzdHJveWVkTGF5ZXJJRHMpOworICAgICAgICBk
dW1wUHJvcGVydHk8VmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+KHRzLCBB
U0NJSUxpdGVyYWwoImRlc3Ryb3llZC1sYXllcnMiKSwgbV9kZXN0cm95ZWRMYXllcklEcyk7CiAK
ICAgICB0cyA8PCAiKVxuIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50
RmFjdG9yeS5tbQppbmRleCBmNzBkYjFjLi5mN2ZlNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDIzLDIwICs0MjMsMjAgQEAgV2ViS2V5
Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoTlNFdmVu
dCAqZXZlbnQsIGJvb2wgaGEKIAogICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVy
biAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZv
ciBFbnRlci4KICAgICBpZiAod2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewot
ICAgICAgICB0ZXh0ID0gIlxyIjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAg
ICAgICB0ZXh0ID0gQVNDSUlMaXRlcmFsKCJcciIpOworICAgICAgICB1bm1vZGlmaWVkVGV4dCA9
IEFTQ0lJTGl0ZXJhbCgiXHIiKTsKICAgICB9CiAKICAgICAvLyBBcHBLaXQgc2V0cyB0ZXh0IHRv
ICJceDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVudCBjaGFy
YWN0ZXIgY29kZSBpcyA4LgogICAgIGlmICh3aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfQkFD
SykgewotICAgICAgICB0ZXh0ID0gIlx4OCI7Ci0gICAgICAgIHVubW9kaWZpZWRUZXh0ID0gIlx4
OCI7CisgICAgICAgIHRleHQgPSBBU0NJSUxpdGVyYWwoIlx4OCIpOworICAgICAgICB1bm1vZGlm
aWVkVGV4dCA9IEFTQ0lJTGl0ZXJhbCgiXHg4Iik7CiAgICAgfQogCiAgICAgLy8gQWx3YXlzIHVz
ZSA5IGZvciBUYWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNo
YXJhY3RlciBmb3Igc2hpZnQtdGFiLgogICAgIGlmICh3aW5kb3dzVmlydHVhbEtleUNvZGUgPT0g
VktfVEFCKSB7Ci0gICAgICAgIHRleHQgPSAiXHg5IjsKLSAgICAgICAgdW5tb2RpZmllZFRleHQg
PSAiXHg5IjsKKyAgICAgICAgdGV4dCA9IEFTQ0lJTGl0ZXJhbCgiXHg5Iik7CisgICAgICAgIHVu
bW9kaWZpZWRUZXh0ID0gQVNDSUlMaXRlcmFsKCJceDkiKTsKICAgICB9CiAKICAgICByZXR1cm4g
V2ViS2V5Ym9hcmRFdmVudCh0eXBlLCB0ZXh0LCB1bm1vZGlmaWVkVGV4dCwga2V5SWRlbnRpZmll
ciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgbWFjQ2hhckNv
ZGUsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBjb21tYW5kcywgYXV0b1JlcGVhdCwgaXNLZXlwYWQs
IGlzU3lzdGVtS2V5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9XZWJNZW1vcnlTYW1wbGVyLm1hYy5tbQppbmRleCAxNTI4N2YyLi42YTY4
ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBs
ZXIubWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxl
ci5tYWMubW0KQEAgLTE0MSwzNyArMTQxLDM3IEBAIFdlYk1lbW9yeVN0YXRpc3RpY3MgV2ViTWVt
b3J5U2FtcGxlcjo6c2FtcGxlV2ViS2l0KCkgY29uc3QKIAogICAgIGRvdWJsZSBub3cgPSBjdXJy
ZW50VGltZSgpOwogICAgICAgICAKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChT
dHJpbmcoIlRpbWVzdGFtcCIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChB
U0NJSUxpdGVyYWwoIlRpbWVzdGFtcCIpKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMu
YXBwZW5kKG5vdyk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJU
b3RhbCBCeXRlcyBvZiBNZW1vcnkgSW4gVXNlIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtl
eXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiVG90YWwgQnl0ZXMgb2YgTWVtb3J5IEluIFVzZSIpKTsK
ICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1ZXMuYXBwZW5kKHRvdGFsQnl0ZXNJblVzZSk7Ci0g
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJGYXN0IE1hbGxvYyBab25l
IEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKEFTQ0lJTGl0ZXJh
bCgiRmFzdCBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52YWx1
ZXMuYXBwZW5kKGZhc3RNYWxsb2NCeXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5r
ZXlzLmFwcGVuZChTdHJpbmcoIkRlZmF1bHQgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2Vi
S2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJEZWZhdWx0IE1hbGxvYyBa
b25lIEJ5dGVzIikpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVs
dE1hbGxvY1pvbmVCeXRlc0luVXNlKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVu
ZChTdHJpbmcoIkRpc3BhdGNoIENvbnRpbnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKKyAg
ICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChBU0NJSUxpdGVyYWwoIkRpc3BhdGNoIENv
bnRpbnVhdGlvbiBNYWxsb2MgWm9uZSBCeXRlcyIpKTsKICAgICB3ZWJLaXRNZW1vcnlTdGF0cy52
YWx1ZXMuYXBwZW5kKGRpc3BhdGNoQ29udGludWF0aW9uTWFsbG9jWm9uZUJ5dGVzSW5Vc2UpOwot
ICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiUHVyZ2VhYmxlIE1hbGxv
YyBab25lIEJ5dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKEFTQ0lJ
TGl0ZXJhbCgiUHVyZ2VhYmxlIE1hbGxvYyBab25lIEJ5dGVzIikpOwogICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQocHVyZ2VhYmxlTWFsbG9jWm9uZUJ5dGVzSW5Vc2UpOwotICAg
IHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5
dGVzIikpOworICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgi
SmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQoanNjSGVhcEJ5dGVzSW5Vc2UpOwotICAgIHdlYktpdE1lbW9yeVN0YXRzLmtleXMuYXBw
ZW5kKFN0cmluZygiVG90YWwgQnl0ZXMgb2YgQ29tbWl0dGVkIE1lbW9yeSIpKTsKKyAgICB3ZWJL
aXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChBU0NJSUxpdGVyYWwoIlRvdGFsIEJ5dGVzIG9mIENv
bW1pdHRlZCBNZW1vcnkiKSk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZCh0
b3RhbEJ5dGVzQ29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChT
dHJpbmcoIkZhc3QgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMu
a2V5cy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJGYXN0IE1hbGxvYyBab25lIEJ5dGVzIikpOwogICAg
IHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZmFzdE1hbGxvY0J5dGVzQ29tbWl0dGVk
KTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkRlZmF1bHQgTWFs
bG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoQVND
SUlMaXRlcmFsKCJEZWZhdWx0IE1hbGxvYyBab25lIEJ5dGVzIikpOwogICAgIHdlYktpdE1lbW9y
eVN0YXRzLnZhbHVlcy5hcHBlbmQoZGVmYXVsdE1hbGxvY1pvbmVCeXRlc0NvbW1pdHRlZCk7Ci0g
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJEaXNwYXRjaCBDb250aW51
YXRpb24gTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5h
cHBlbmQoQVNDSUlMaXRlcmFsKCJEaXNwYXRjaCBDb250aW51YXRpb24gTWFsbG9jIFpvbmUgQnl0
ZXMiKSk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChkaXNwYXRjaENvbnRp
bnVhdGlvbk1hbGxvY1pvbmVCeXRlc0NvbW1pdHRlZCk7Ci0gICAgd2ViS2l0TWVtb3J5U3RhdHMu
a2V5cy5hcHBlbmQoU3RyaW5nKCJQdXJnZWFibGUgTWFsbG9jIFpvbmUgQnl0ZXMiKSk7CisgICAg
d2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJQdXJnZWFibGUgTWFs
bG9jIFpvbmUgQnl0ZXMiKSk7CiAgICAgd2ViS2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChw
dXJnZWFibGVNYWxsb2Nab25lQnl0ZXNDb21taXR0ZWQpOwotICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKFN0cmluZygiSmF2YVNjcmlwdCBIZWFwIEJ5dGVzIikpOworICAgIHdlYktp
dE1lbW9yeVN0YXRzLmtleXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiSmF2YVNjcmlwdCBIZWFwIEJ5
dGVzIikpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoanNjSGVhcEJ5dGVz
Q29tbWl0dGVkKTsKLSAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChTdHJpbmcoIkph
dmFTY3JpcHQgU3RhY2sgQnl0ZXMiKSk7CisgICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBl
bmQoQVNDSUlMaXRlcmFsKCJKYXZhU2NyaXB0IFN0YWNrIEJ5dGVzIikpOwogICAgIHdlYktpdE1l
bW9yeVN0YXRzLnZhbHVlcy5hcHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcyk7Ci0g
ICAgd2ViS2l0TWVtb3J5U3RhdHMua2V5cy5hcHBlbmQoU3RyaW5nKCJKYXZhU2NyaXB0IEpJVCBC
eXRlcyIpKTsKKyAgICB3ZWJLaXRNZW1vcnlTdGF0cy5rZXlzLmFwcGVuZChBU0NJSUxpdGVyYWwo
IkphdmFTY3JpcHQgSklUIEJ5dGVzIikpOwogICAgIHdlYktpdE1lbW9yeVN0YXRzLnZhbHVlcy5h
cHBlbmQoZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpOwotICAgIHdlYktpdE1lbW9yeVN0YXRz
LmtleXMuYXBwZW5kKFN0cmluZygiUmVzaWRlbnQgU2l6ZSIpKTsKKyAgICB3ZWJLaXRNZW1vcnlT
dGF0cy5rZXlzLmFwcGVuZChBU0NJSUxpdGVyYWwoIlJlc2lkZW50IFNpemUiKSk7CiAgICAgd2Vi
S2l0TWVtb3J5U3RhdHMudmFsdWVzLmFwcGVuZChyZXNpZGVudFNpemUpOwogICAgIAogICAgIHJl
dHVybiB3ZWJLaXRNZW1vcnlTdGF0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggM2MwMDZiYy4uM2NiODBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTM0MSwxMyArMzQxLDEzIEBAIHZvaWQgV0tQYWdlVGVy
bWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRTZXNzaW9u
SGlzdG9yeVVSTFZhbHVlVHlwZSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nKiBzZXNzaW9u
SGlzdG9yeVVSTFZhbHVlVHlwZSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIlNlc3Npb25IaXN0b3J5
VVJMIikubGVha1JlZigpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyogc2Vzc2lvbkhpc3RvcnlV
UkxWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiU2Vzc2lvbkhp
c3RvcnlVUkwiKSkubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSShzZXNzaW9uSGlzdG9yeVVS
TFZhbHVlVHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdldFNlc3Npb25CYWNrRm9yd2Fy
ZExpc3RJdGVtVmFsdWVUeXBlKCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcqIHNlc3Npb25C
YWNrRm9yd2FyZExpc3RWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJTZXNzaW9uQmFj
a0ZvcndhcmRMaXN0SXRlbSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcqIHNl
c3Npb25CYWNrRm9yd2FyZExpc3RWYWx1ZVR5cGUgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKEFTQ0lJ
TGl0ZXJhbCgiU2Vzc2lvbkJhY2tGb3J3YXJkTGlzdEl0ZW0iKSkubGVha1JlZigpOwogICAgIHJl
dHVybiB0b0FQSShzZXNzaW9uQmFja0ZvcndhcmRMaXN0VmFsdWVUeXBlKTsKIH0KIApAQCAtMTE4
OCwyMSArMTE4OCwyMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiAgICAgICAgICAgICBJ
bW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKICAgICAgICAgICAgIGlmICh3aW5kb3dG
ZWF0dXJlcy54U2V0KQotICAgICAgICAgICAgICAgIG1hcC5zZXQoIngiLCBBUEk6OkRvdWJsZTo6
Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLngpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KEFTQ0lJ
TGl0ZXJhbCgieCIpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLngpKTsKICAg
ICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy55U2V0KQotICAgICAgICAgICAgICAgIG1hcC5z
ZXQoInkiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnkpKTsKKyAgICAgICAg
ICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgieSIpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzLnkpKTsKICAgICAgICAgICAgIGlmICh3aW5kb3dGZWF0dXJlcy53aWR0aFNl
dCkKLSAgICAgICAgICAgICAgICBtYXAuc2V0KCJ3aWR0aCIsIEFQSTo6RG91YmxlOjpjcmVhdGUo
d2luZG93RmVhdHVyZXMud2lkdGgpKTsKKyAgICAgICAgICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0
ZXJhbCgid2lkdGgiKSwgQVBJOjpEb3VibGU6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy53aWR0aCkp
OwogICAgICAgICAgICAgaWYgKHdpbmRvd0ZlYXR1cmVzLmhlaWdodFNldCkKLSAgICAgICAgICAg
ICAgICBtYXAuc2V0KCJoZWlnaHQiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVz
LmhlaWdodCkpOwotICAgICAgICAgICAgbWFwLnNldCgibWVudUJhclZpc2libGUiLCBBUEk6OkJv
b2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5tZW51QmFyVmlzaWJsZSkpOwotICAgICAgICAg
ICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRv
d0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpKTsKLSAgICAgICAgICAgIG1hcC5zZXQoInRvb2xC
YXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMudG9vbEJhclZp
c2libGUpKTsKLSAgICAgICAgICAgIG1hcC5zZXQoImxvY2F0aW9uQmFyVmlzaWJsZSIsIEFQSTo6
Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSkpOwotICAg
ICAgICAgICAgbWFwLnNldCgic2Nyb2xsYmFyc1Zpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh3aW5kb3dGZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSkpOwotICAgICAgICAgICAgbWFwLnNl
dCgicmVzaXphYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMucmVzaXph
YmxlKSk7Ci0gICAgICAgICAgICBtYXAuc2V0KCJmdWxsc2NyZWVuIiwgQVBJOjpCb29sZWFuOjpj
cmVhdGUod2luZG93RmVhdHVyZXMuZnVsbHNjcmVlbikpOwotICAgICAgICAgICAgbWFwLnNldCgi
ZGlhbG9nIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZGlhbG9nKSk7Cisg
ICAgICAgICAgICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoImhlaWdodCIpLCBBUEk6OkRvdWJs
ZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmhlaWdodCkpOworICAgICAgICAgICAgbWFwLnNldChB
U0NJSUxpdGVyYWwoIm1lbnVCYXJWaXNpYmxlIiksIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRv
d0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSk7CisgICAgICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0
ZXJhbCgic3RhdHVzQmFyVmlzaWJsZSIpLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0
dXJlcy5zdGF0dXNCYXJWaXNpYmxlKSk7CisgICAgICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJh
bCgidG9vbEJhclZpc2libGUiKSwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMu
dG9vbEJhclZpc2libGUpKTsKKyAgICAgICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJsb2Nh
dGlvbkJhclZpc2libGUiKSwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9j
YXRpb25CYXJWaXNpYmxlKSk7CisgICAgICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgic2Ny
b2xsYmFyc1Zpc2libGUiKSwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuc2Ny
b2xsYmFyc1Zpc2libGUpKTsKKyAgICAgICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJyZXNp
emFibGUiKSwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMucmVzaXphYmxlKSk7
CisgICAgICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgiZnVsbHNjcmVlbiIpLCBBUEk6OkJv
b2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7CisgICAgICAgICAgICBt
YXAuc2V0KEFTQ0lJTGl0ZXJhbCgiZGlhbG9nIiksIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRv
d0ZlYXR1cmVzLmRpYWxvZykpOwogICAgICAgICAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25h
cnk+IGZlYXR1cmVzTWFwID0gSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKFdURjo6bW92ZSht
YXApKTsKIAogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5iYXNlLnZlcnNpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggYTk4
NjEyMC4uNzdiMGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIFdLVHlwZUlEIFdLUHJlZmVyZW5j
ZXNHZXRUeXBlSUQoKQogCiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJlZmVyZW5jZXNDcmVhdGUoKQog
ewotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlV2l0aExlZ2FjeURlZmF1bHRzKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0
Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVy
ZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyhTdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJX
ZWJLaXQyLiIpLCBBU0NJSUxpdGVyYWwoIldlYktpdDIuIikpOwogICAgIHJldHVybiB0b0FQSShw
cmVmZXJlbmNlcy5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIAogV0tQcmVmZXJlbmNlc1JlZiBX
S1ByZWZlcmVuY2VzQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmllclJl
ZikKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVy
ZW5jZXM6OmNyZWF0ZVdpdGhMZWdhY3lEZWZhdWx0cyh0b1dURlN0cmluZyhpZGVudGlmaWVyUmVm
KSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBw
cmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVnYWN5RGVmYXVsdHModG9X
VEZTdHJpbmcoaWRlbnRpZmllclJlZiksIEFTQ0lJTGl0ZXJhbCgiV2ViS2l0Mi4iKSwgQVNDSUlM
aXRlcmFsKCJXZWJLaXQyLiIpKTsKICAgICByZXR1cm4gdG9BUEkocHJlZmVyZW5jZXMucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCAxZGM4NGNjLi44YzM4OTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1t
CkBAIC0zOSw3ICszOSw3IEBACiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBfcHJlZmVyZW5jZXMgPSBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQiLCAiV2ViS2l0Iik7CisgICAgX3ByZWZlcmVu
Y2VzID0gV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCBBU0NJSUxpdGVy
YWwoIldlYktpdCIpLCBBU0NJSUxpdGVyYWwoIldlYktpdCIpKTsKICAgICByZXR1cm4gc2VsZjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGJm
MzE3NjcuLmViOGQyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAg
VmVjdG9yPEtleXByZXNzQ29tbWFuZD4qIGtleXByZXNzQ29tbWFuZHMgPSBfZGF0YS0+X2NvbGxl
Y3RlZEtleXByZXNzQ29tbWFuZHM7CiAgICAgaWYgKGtleXByZXNzQ29tbWFuZHMpIHsKICAgICAg
ICAgQVNTRVJUKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCk7Ci0gICAg
ICAgIEtleXByZXNzQ29tbWFuZCBjb21tYW5kKCJpbnNlcnRUZXh0OiIsIHRleHQpOworICAgICAg
ICBLZXlwcmVzc0NvbW1hbmQgY29tbWFuZChBU0NJSUxpdGVyYWwoImluc2VydFRleHQ6IiksIHRl
eHQpOwogICAgICAgICBrZXlwcmVzc0NvbW1hbmRzLT5hcHBlbmQoY29tbWFuZCk7CiAgICAgICAg
IExPRyhUZXh0SW5wdXQsICIuLi5zdG9yZWQiKTsKICAgICAgICAgX2RhdGEtPl9wYWdlLT5yZWdp
c3RlcktleXByZXNzQ29tbWFuZE5hbWUoY29tbWFuZC5jb21tYW5kTmFtZSk7CkBAIC0yMzU1LDcg
KzIzNTUsNyBAQCBzdGF0aWMgYm9vbCBtYXliZUNyZWF0ZVNhbmRib3hFeHRlbnNpb25Gcm9tUGFz
dGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsCiAgICAgaWYgKGlzRGlyZWN0b3J5KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKEFTQ0lJTGl0ZXJhbCgiLyIp
LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IDAzMDEx
YzcuLmFmNzRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMTUwLDExICsxNTAs
MTEgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQ
cm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMKIHsKICAgICBsYXVuY2hPcHRpb25zLmFyY2hp
dGVjdHVyZSA9IHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8ucGx1Z2luQXJjaGl0
ZWN0dXJlOwogICAgIGxhdW5jaE9wdGlvbnMuZXhlY3V0YWJsZUhlYXAgPSBQbHVnaW5Qcm9jZXNz
UHJveHk6OnBsdWdpbk5lZWRzRXhlY3V0YWJsZUhlYXAocGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMu
bW9kdWxlSW5mbyk7Ci0gICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoInBsdWdpbi1wYXRoIiwgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5wYXRo
KTsKKyAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxp
dGVyYWwoInBsdWdpbi1wYXRoIiksIHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLm1vZHVsZUluZm8u
cGF0aCk7CiAKICAgICBpZiAocGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuc2FuZGJveFBvbGljeSA9
PSBQbHVnaW5Qcm9jZXNzU2FuZGJveFBvbGljeVVuc2FuZGJveGVkKSB7CiAgICAgICAgIGlmICgh
cHJvY2Vzc0lzU2FuZGJveGVkKGdldHBpZCgpKSkKLSAgICAgICAgICAgIGxhdW5jaE9wdGlvbnMu
ZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJkaXNhYmxlLXNhbmRib3giLCAiMSIpOworICAg
ICAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlM
aXRlcmFsKCJkaXNhYmxlLXNhbmRib3giKSwgIjEiKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJNYWluIHByb2Nlc3MgaXMgc2FuZGJveGVkLCBpZ25vcmluZyBwbHVn
LWluIHNhbmRib3ggcG9saWN5Iik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKaW5kZXggYmMwYTFlNi4uNmUyMGNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCkBAIC03OSw5ICs3
OSw5IEBAIHZvaWQgU3RhdGlzdGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTdGF0aXN0aWNzRGF0CiAgICAgYWRkVG9EaWN0aW9uYXJ5RnJvbUhh
c2hNYXAobV9yZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIGRhdGEuc3RhdGlzdGljc051bWJlcnMp
OwogCiAgICAgaWYgKCFkYXRhLmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnktPnNldCgiSmF2YVNjcmlwdFBy
b3RlY3RlZE9iamVjdFR5cGVDb3VudHMiLCBjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoZGF0
YS5qYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cykuZ2V0KCkpOworICAgICAgICBt
X3Jlc3BvbnNlRGljdGlvbmFyeS0+c2V0KEFTQ0lJTGl0ZXJhbCgiSmF2YVNjcmlwdFByb3RlY3Rl
ZE9iamVjdFR5cGVDb3VudHMiKSwgY3JlYXRlRGljdGlvbmFyeUZyb21IYXNoTWFwKGRhdGEuamF2
YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMpLmdldCgpKTsKICAgICBpZiAoIWRhdGEu
amF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc3BvbnNl
RGljdGlvbmFyeS0+c2V0KCJKYXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyIsIGNyZWF0ZURpY3Rp
b25hcnlGcm9tSGFzaE1hcChkYXRhLmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKS5nZXQoKSk7
CisgICAgICAgIG1fcmVzcG9uc2VEaWN0aW9uYXJ5LT5zZXQoQVNDSUlMaXRlcmFsKCJKYXZhU2Ny
aXB0T2JqZWN0VHlwZUNvdW50cyIpLCBjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoZGF0YS5q
YXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cykuZ2V0KCkpOwogCiAgICAgaWYgKCFkYXRhLndlYkNv
cmVDYWNoZVN0YXRpc3RpY3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJ
OjpPYmplY3Q+PiBjYWNoZVN0YXRpc3RpY3M7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU3RhdGlz
dGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dGF0aXN0aWNzRGF0CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RhdGlzdGljIDogZGF0YS53
ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzKQogICAgICAgICAgICAgY2FjaGVTdGF0aXN0aWNzLnVuY2hl
Y2tlZEFwcGVuZChjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoc3RhdGlzdGljKSk7CiAKLSAg
ICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnktPnNldCgiV2ViQ29yZUNhY2hlU3RhdGlzdGljcyIs
IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUoY2FjaGVTdGF0aXN0aWNzKSkuZ2V0KCkpOwor
ICAgICAgICBtX3Jlc3BvbnNlRGljdGlvbmFyeS0+c2V0KEFTQ0lJTGl0ZXJhbCgiV2ViQ29yZUNh
Y2hlU3RhdGlzdGljcyIpLCBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGNhY2hlU3RhdGlz
dGljcykpLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAobV9vdXRzdGFuZGluZ1JlcXVlc3RzLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDZlYmQyZmYuLmRmZDQ0NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZS5jcHAKQEAgLTEwNSwxMSArMTA1LDExIEBAIGJvb2wgTG9jYWxTdG9yYWdlRGF0
YWJhc2U6OnRyeVRvT3BlbkRhdGFiYXNlKERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IG9wZW5pbmdT
dHJhCiAgICAgaWYgKCFtaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKSkgewogICAgICAgICAvLyBX
ZSBmYWlsZWQgdG8gbWlncmF0ZSB0aGUgaXRlbSB0YWJsZS4gSW4gb3JkZXIgdG8gYXZvaWQgdHJ5
aW5nIHRvIG1pZ3JhdGUgdGhlIHRhYmxlIG92ZXIgYW5kIG92ZXIsCiAgICAgICAgIC8vIGp1c3Qg
ZGVsZXRlIGl0IGFuZCBzdGFydCBmcm9tIHNjcmF0Y2guCi0gICAgICAgIGlmICghbV9kYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiKSkKKyAgICAgICAgaWYgKCFt
X2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCgiRFJPUCBUQUJMRSBJdGVtVGFi
bGUiKSkpCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWxldGUgdGFibGUgSXRl
bVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIik7CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBJdGVtVGFibGUgKGtl
eSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwpIikpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
QVNDSUlMaXRlcmFsKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBU
RVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwpIikpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB0
YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTExOSwxMCArMTE5LDEwIEBAIGJvb2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6
OnRyeVRvT3BlbkRhdGFiYXNlKERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IG9wZW5pbmdTdHJhCiAK
IGJvb2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiB7
Ci0gICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJJdGVtVGFibGUiKSkKKyAgICBpZiAo
IW1fZGF0YWJhc2UudGFibGVFeGlzdHMoQVNDSUlMaXRlcmFsKCJJdGVtVGFibGUiKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgU1FMaXRlU3RhdGVtZW50IHF1ZXJ5KG1fZGF0YWJhc2Us
ICJTRUxFQ1QgdmFsdWUgRlJPTSBJdGVtVGFibGUgTElNSVQgMSIpOworICAgIFNRTGl0ZVN0YXRl
bWVudCBxdWVyeShtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCB2YWx1ZSBGUk9NIEl0
ZW1UYWJsZSBMSU1JVCAxIikpOwogCiAgICAgLy8gVGhpcyBxdWVyeSBpc24ndCBldmVyIGV4ZWN1
dGVkLCBpdCdzIGp1c3QgdXNlZCB0byBjaGVjayB0aGUgY29sdW1uIHR5cGUuCiAgICAgaWYgKHF1
ZXJ5LmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoMCkpCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBM
b2NhbFN0b3JhZ2VEYXRhYmFzZTo6aW1wb3J0SXRlbXMoU3RvcmFnZU1hcCYgc3RvcmFnZU1hcCkK
ICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNR
TGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFiYXNlLCAiU0VMRUNUIGtleSwgdmFsdWUgRlJPTSBJ
dGVtVGFibGUiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkobV9kYXRhYmFzZSwgQVNDSUlM
aXRlcmFsKCJTRUxFQ1Qga2V5LCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSIpKTsKICAgICBpZiAocXVl
cnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlbGVjdCBpdGVtcyBmcm9tIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwogICAg
ICAgICByZXR1cm47CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZTo6dXBkYXRlRGF0YWJhc2VXaXRoQ2hhbmdlZEl0ZW1zKGNvbnN0IEhhc2hNYXA8U3RyaW5nLAog
ICAgIGlmIChtX3Nob3VsZENsZWFySXRlbXMpIHsKICAgICAgICAgbV9zaG91bGRDbGVhckl0ZW1z
ID0gZmFsc2U7CiAKLSAgICAgICAgU1FMaXRlU3RhdGVtZW50IGNsZWFyU3RhdGVtZW50KG1fZGF0
YWJhc2UsICJERUxFVEUgRlJPTSBJdGVtVGFibGUiKTsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50
IGNsZWFyU3RhdGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gSXRl
bVRhYmxlIikpOwogICAgICAgICBpZiAoY2xlYXJTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJl
c3VsdE9rKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGNsZWFy
IHN0YXRlbWVudCAtIGNhbm5vdCB3cml0ZSB0byBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIik7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMDUsMTMgKzMwNSwxMyBAQCB2b2lkIExvY2FsU3RvcmFn
ZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZVdpdGhDaGFuZ2VkSXRlbXMoY29uc3QgSGFzaE1hcDxT
dHJpbmcsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgaW5zZXJ0U3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBJdGVtVGFibGUgVkFMVUVTICg/LCA/KSIp
OworICAgIFNRTGl0ZVN0YXRlbWVudCBpbnNlcnRTdGF0ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlM
aXRlcmFsKCJJTlNFUlQgSU5UTyBJdGVtVGFibGUgVkFMVUVTICg/LCA/KSIpKTsKICAgICBpZiAo
aW5zZXJ0U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGluc2VydCBzdGF0ZW1lbnQgLSBjYW5ub3Qgd3JpdGUg
dG8gbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgU1FMaXRlU3RhdGVtZW50IGRlbGV0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZS
T00gSXRlbVRhYmxlIFdIRVJFIGtleT0/Iik7CisgICAgU1FMaXRlU3RhdGVtZW50IGRlbGV0ZVN0
YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIkRFTEVURSBGUk9NIEl0ZW1UYWJsZSBX
SEVSRSBrZXk9PyIpKTsKICAgICBpZiAoZGVsZXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxS
ZXN1bHRPaykgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGRlbGV0ZSBz
dGF0ZW1lbnQgLSBjYW5ub3Qgd3JpdGUgdG8gbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSIpOwogICAg
ICAgICByZXR1cm47CkBAIC0zNDcsNyArMzQ3LDcgQEAgYm9vbCBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZTo6ZGF0YWJhc2VJc0VtcHR5KCkKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RhdGFiYXNl
LCAiU0VMRUNUIENPVU5UKCopIEZST00gSXRlbVRhYmxlIik7CisgICAgU1FMaXRlU3RhdGVtZW50
IHF1ZXJ5KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIENPVU5UKCopIEZST00gSXRl
bVRhYmxlIikpOwogICAgIGlmIChxdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY291bnQgbnVtYmVyIG9mIHJvd3MgaW4gSXRlbVRh
YmxlIGZvciBsb2NhbCBzdG9yYWdlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDMzODQxMTAuLmU0NmE2YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKICAgICBpZiAoIW1fZGF0YWJh
c2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBvcmlnaW4sIHBhdGggRlJPTSBPcmlnaW5zIik7Cisg
ICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlNF
TEVDVCBvcmlnaW4sIHBhdGggRlJPTSBPcmlnaW5zIikpOwogICAgIGlmIChzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50LiIpOwogICAgICAgICByZXR1cm47CkBAIC0xMTEsNyArMTExLDcgQEAg
dm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiAg
ICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgZGVsZXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxF
VEUgRlJPTSBPcmlnaW5zIik7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBkZWxldGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJERUxFVEUgRlJPTSBPcmlnaW5zIikpOwogICAg
ICAgICBpZiAoZGVsZXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBhbGwgb3Jp
Z2lucyIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFN0cmluZyBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKSBjb25zdAogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGF0YWJhc2VQYXRoKCJTdG9y
YWdlVHJhY2tlci5kYiIpOworICAgIHJldHVybiBkYXRhYmFzZVBhdGgoQVNDSUlMaXRlcmFsKCJT
dG9yYWdlVHJhY2tlci5kYiIpKTsKIH0KIAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3BlbmluZ1N0
cmF0ZWd5KQpAQCAtMTg5LDEwICsxODksMTAgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3AKICAg
ICAvLyBldmVuIHRob3VnaCB3ZSBuZXZlciBhY2Nlc3MgdGhlIGRhdGFiYXNlIGZyb20gZGlmZmVy
ZW50IHRocmVhZHMgc2ltdWx0YW5lb3VzbHkuCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFk
aW5nQ2hlY2tzKCk7CiAKLSAgICBpZiAobV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lucyIp
KQorICAgIGlmIChtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKEFTQ0lJTGl0ZXJhbCgiT3JpZ2lucyIp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJF
UExBQ0UsIHBhdGggVEVYVCk7IikpCisgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KEFTQ0lJTGl0ZXJhbCgiQ1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBP
TiBDT05GTElDVCBSRVBMQUNFLCBwYXRoIFRFWFQpOyIpKSkKICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIE9yaWdpbnMgdGFibGUuIik7CiB9CiAKQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6aW1wb3J0T3JpZ2luSWRlbnRpZmll
cnMoKQogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoU2tpcElmTm9uRXhpc3RlbnQpOwogCiAgICAg
aWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKLSAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRl
bWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIG9yaWdpbiBGUk9NIE9yaWdpbnMiKTsKKyAgICAgICAg
U1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlNFTEVD
VCBvcmlnaW4gRlJPTSBPcmlnaW5zIikpOwogICAgICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxSZXN1bHRPaykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJl
cGFyZSBzdGF0ZW1lbnQuIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjMsNyArMjIzLDcg
QEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmltcG9ydE9yaWdpbklkZW50aWZp
ZXJzKCkKIAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnVwZGF0ZVRyYWNrZXJE
YXRhYmFzZUZyb21Mb2NhbFN0b3JhZ2VEYXRhYmFzZUZpbGVzKCkKIHsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBwYXRocyA9IGxpc3REaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksICIqLmxv
Y2Fsc3RvcmFnZSIpOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzID0gbGlzdERpcmVjdG9yeSht
X2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgQVNDSUlMaXRlcmFsKCIqLmxvY2Fsc3RvcmFnZSIpKTsK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zKG1fb3JpZ2lucyk7CiAgICAgSGFzaFNldDxT
dHJpbmc+IG9yaWdpbnNGcm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxlczsKQEAgLTI1OSw3ICsy
NTksNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2VXaXRo
T3JpZ2luSWRlbnRpZmllcihjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3Bl
bigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1f
ZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBPcmlnaW5zIFZBTFVFUyAoPywgPykiKTsKKyAgICBTUUxp
dGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiSU5TRVJUIElO
VE8gT3JpZ2lucyBWQUxVRVMgKD8sID8pIikpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlz
aCBvcmlnaW4gJyVzJyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbklkZW50aWZpZXIudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGF0YWJhc2VXaXRoT3JpZ2luSWRlbnRpZmllcihj
b25zdCBTdHJpbgogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU1FMaXRlU3RhdGVtZW50IGRlbGV0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZS
T00gT3JpZ2lucyB3aGVyZSBvcmlnaW49PyIpOworICAgIFNRTGl0ZVN0YXRlbWVudCBkZWxldGVT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJERUxFVEUgRlJPTSBPcmlnaW5zIHdo
ZXJlIG9yaWdpbj0/IikpOwogICAgIGlmIChkZWxldGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TFJlc3VsdE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRp
b24gb2Ygb3JpZ2luICclcyciLCBvcmlnaW5JZGVudGlmaWVyLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzE1LDcgKzMxNSw3IEBAIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OnBhdGhGb3JEYXRhYmFzZVdpdGhPcmlnaW5JZGVudGlmaWVyKGNvbnN0IFN0
CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgcGF0aFN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNU
IHBhdGggRlJPTSBPcmlnaW5zIFdIRVJFIG9yaWdpbj0/Iik7CisgICAgU1FMaXRlU3RhdGVtZW50
IHBhdGhTdGF0ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1QgcGF0aCBGUk9N
IE9yaWdpbnMgV0hFUkUgb3JpZ2luPT8iKSk7CiAgICAgaWYgKHBhdGhTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBh
cmUgc2VsZWN0aW9uIG9mIHBhdGggZm9yIG9yaWdpbiAnJXMnIiwgb3JpZ2luSWRlbnRpZmllci51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCBiYjQwY2QyLi5mMWI0ZDI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtODYsNyArODYsNyBAQCBz
dGF0aWMgV2ViUGFnZUdyb3VwRGF0YSBwYWdlR3JvdXBEYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgYm9vbCB2aXNpYmxlVG9JbgogLy8gSWYgaXQgdHVybnMgb3V0IHRoYXQgaXQncyB3cm9u
Zywgd2UgY2FuIGNoYW5nZSBpdCB0byB0byAiV2ViS2l0Mi4iIGFuZCBnZXQgcmlkIG9mIHRoZSBn
bG9iYWxEZWJ1Z0tleVByZWZpeCBmcm9tIFdlYlByZWZlcmVuY2VzLgogV2ViUGFnZUdyb3VwOjpX
ZWJQYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIHZpc2libGVUb0luamVj
dGVkQnVuZGxlLCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQpCiAgICAgOiBtX2RhdGEocGFn
ZUdyb3VwRGF0YShpZGVudGlmaWVyLCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSwgdmlzaWJsZVRv
SGlzdG9yeUNsaWVudCkpCi0gICAgLCBtX3ByZWZlcmVuY2VzKFdlYlByZWZlcmVuY2VzOjpjcmVh
dGVXaXRoTGVnYWN5RGVmYXVsdHMobV9kYXRhLmlkZW50aWZlciwgIi5XZWJLaXQyIiwgIldlYktp
dDIuIikpCisgICAgLCBtX3ByZWZlcmVuY2VzKFdlYlByZWZlcmVuY2VzOjpjcmVhdGVXaXRoTGVn
YWN5RGVmYXVsdHMobV9kYXRhLmlkZW50aWZlciwgQVNDSUlMaXRlcmFsKCIuV2ViS2l0MiIpLCBB
U0NJSUxpdGVyYWwoIldlYktpdDIuIikpKQogewogICAgIHdlYlBhZ2VHcm91cE1hcCgpLnNldCht
X2RhdGEucGFnZUdyb3VwSUQsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAyYzE5MTQ5Li40ODFkNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzExLDcgKzcxMSw3IEBAIGJvb2wgV2ViUGFn
ZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYg
dXJsLCBTYW5kYm94CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIVdlYklu
c3BlY3RvclByb3h5Ojppc0luc3BlY3RvclBhZ2UoKnRoaXMpKTsKICNlbmRpZgogCi0gICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9u
bHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZShBU0NJSUxpdGVyYWwoIi8iKSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00OTI2LDcg
KzQ5MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbQogCiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVm
ZXJlbmNlLnNpemUoKSk7CiAKLSAgICBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHN1
Z2dlc3RlZEZpbGVuYW1lLCAiYXBwbGljYXRpb24vcGRmIiwgb3JpZ2luYXRpbmdVUkxTdHJpbmcs
IGRhdGEuZ2V0KCkpOworICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoc3VnZ2Vz
dGVkRmlsZW5hbWUsIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vcGRmIiksIG9yaWdpbmF0aW5n
VVJMU3RyaW5nLCBkYXRhLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmlt
dW1MYXlvdXRTaXplKGNvbnN0IEludFNpemUmIG1pbmltdW1MYXlvdXRTaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IGNkODhiMDkuLjg5
ZGNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMu
bW0KQEAgLTM1OSw3ICszNTksNyBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIC8vIEN1cnJlbnRseSwgdGhlIHRvcCBs
ZXZlbCBvZiB0aGF0IGRpcmVjdG9yeSBjb250YWlucyBlbnRpdGllcyByZWxhdGVkIHRvIFdlYlNR
TCBkYXRhYmFzZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzLCBhbmQgbW92ZSBXZWJTUUwg
aW50byBhIHN1YmRpcmVjdG9yeSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDgwNykKICAgICAvLyBJbiB0aGUgbWVhbnRpbWUsIGFuIGVudGl0eSBuYW1lIHByZWZp
eGVkIHdpdGggdGhyZWUgdW5kZXJzY29yZXMgd2lsbCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgV2Vi
U1FMIGVudGl0aWVzLgotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGxhdGZv
cm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOworICAg
IHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKSwgQVNDSUlMaXRlcmFsKCJfX19JbmRleGVkREIiKSk7CiB9CiAKIFN0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwCmluZGV4IDY5NTRiNWQu
Ljk5OTg2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcApA
QCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViSURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4oY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIGluCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyID0gdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlTmFt
ZSwgb3BlbmluZ09yaWdpbiwgbWFpbkZyYW1lT3JpZ2luKTsKICAgICBpZiAoZGF0YWJhc2VJZGVu
dGlmaWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRBY2Nlc3NFcnJvciwg
IkRvY3VtZW50IGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBJbmRleGVkIERhdGFiYXNlcyIpKTsKKyAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SW52YWxpZEFjY2Vzc0Vycm9yLCBBU0NJSUxpdGVyYWwoIkRvY3VtZW50
IGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBJbmRleGVkIERhdGFiYXNlcyIpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYklEQkZhY3RvcnlCYWNr
ZW5kOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU2Vj
dQogCiAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IHVuaXF1ZURhdGFiYXNlSWRlbnRp
ZmllcihkYXRhYmFzZU5hbWUsIG9wZW5pbmdPcmlnaW4sIG1haW5GcmFtZU9yaWdpbik7CiAgICAg
aWYgKGRhdGFiYXNlSWRlbnRpZmllci5pc051bGwoKSkgewotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZh
bGlkQWNjZXNzRXJyb3IsICJEb2N1bWVudCBpcyBub3QgYWxsb3dlZCB0byB1c2UgSW5kZXhlZCBE
YXRhYmFzZXMiKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRBY2Nlc3NFcnJvciwgQVNDSUlM
aXRlcmFsKCJEb2N1bWVudCBpcyBub3QgYWxsb3dlZCB0byB1c2UgSW5kZXhlZCBEYXRhYmFzZXMi
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
U2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYTlkOTRiNC4uZmVmYjhkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBA
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBib29sIHN1Y2NlCiAgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/
IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjcmVhdGluZyBvYmplY3Qgc3Rv
cmUiKSk7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxs
cHRyIDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1cmVkIGNyZWF0aW5nIG9i
amVjdCBzdG9yZSIpKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRl
SW5kZXgoSURCVHJhbnNhY3Rpb25CYWNrZW5kJnRyYW5zYWN0aW9uLCBjb25zdCBDcmVhdGVJbmRl
eE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKQEAgLTM0NCw3ICszNDQsNyBAQCB2
b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUluZGV4KElEQlRyYW5zYWN0aW9uQmFj
a2VuZCZ0cmFuc2FjdGlvbiwgY29ucwogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Ojpj
cmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0
SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKLSAgICAgICAgY29tcGxldGlvbkNhbGxi
YWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNyZWF0aW5nIGluZGV4IikpOworICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1
cmVkIGNyZWF0aW5nIGluZGV4IikpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlSW5kZXgodWludDY0X3QgcmVxdWVzdElE
LCBib29sIHN1Y2Nlc3MpCiAgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIg
OiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjcmVhdGluZyBpbmRleCIpKTsKKyAgICBzZXJ2
ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJVbmtub3duIGVycm9yIG9jY3VyZWQgY3JlYXRpbmcgaW5kZXgiKSkpOwogfQogCiB2
b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRlbGV0ZUluZGV4KElEQlRyYW5zYWN0aW9uQmFj
a2VuZCZ0cmFuc2FjdGlvbiwgY29uc3QgRGVsZXRlSW5kZXhPcGVyYXRpb24mIG9wZXJhdGlvbiwg
c3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0
aW9uQ2FsbGJhY2spCkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpkZWxldGVJbmRleChJREJUcmFuc2FjdGlvbkJhY2tlbmQmdHJhbnNhY3Rpb24sIGNvbnMK
ICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1w
bDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFj
ayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxs
YmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Ig
b2NjdXJlZCBkZWxldGluZyBpbmRleCIpKTsKKyAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCBBU0NJSUxpdGVyYWwoIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBpbmRleCIpKSk7
CiAgICAgfSk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBzZXJ2ZXJSZXF1ZXN0LT5yZXF1
ZXN0SUQoKTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246
OmRpZERlbGV0ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogICAgIGlm
ICghc2VydmVyUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VydmVyUmVxdWVzdC0+
Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxscHRyIDogSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9j
Y3VyZWQgZGVsZXRpbmcgaW5kZXgiKSk7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1
ZXN0KHN1Y2Nlc3MgPyBudWxscHRyIDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBv
Y2N1cmVkIGRlbGV0aW5nIGluZGV4IikpKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpnZXQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgR2V0T3Bl
cmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJHZXRSZXN1bHQm
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQpAQCAt
NDAyLDcgKzQwMiw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0KElEQlRyYW5z
YWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGNvbnN0IEdldE9wCiAgICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Y29uc3QgSURCR2V0UmVz
dWx0JiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2Fs
bGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9u
Q2FsbGJhY2tdKCkgewotICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soSURCR2V0UmVzdWx0KCks
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGdldHRpbmcgcmVjb3JkIikpOworICAgICAgICBj
b21wbGV0aW9uQ2FsbGJhY2soSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIlVua25v
d24gZXJyb3Igb2NjdXJlZCBnZXR0aW5nIHJlY29yZCIpKSk7CiAgICAgfSk7CiAKICAgICB1aW50
NjRfdCByZXF1ZXN0SUQgPSBzZXJ2ZXJSZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKQEAgLTQyMSw3ICs0
MjEsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnB1dChJREJUcmFuc2FjdGlvbkJh
Y2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBQdXRPcAogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwog
CiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2td
KCkgewotICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sobnVsbHB0ciwgSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVy
cm9yIG9jY3VyZWQgcHV0dGluZyByZWNvcmQiKSk7CisgICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
ayhudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIG9jY3VyZWQgcHV0dGlu
ZyByZWNvcmQiKSkpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gc2VydmVy
UmVxdWVzdC0+cmVxdWVzdElEKCk7CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpjb3VudChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBj
b25zdCBDb3UKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNS
ZXF1ZXN0SW1wbDxpbnQ2NF90LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRl
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRs
ZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjaygw
LCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBnZXR0aW5nIGNvdW50IikpOworICAgICAgICBj
b21wbGV0aW9uQ2FsbGJhY2soMCwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1
cmVkIGdldHRpbmcgY291bnQiKSkpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElE
ID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVSYW5nZShJREJUcmFuc2FjdGlvbkJhY2tlbmQm
IHRyYW5zYWN0aW9uLCBjb24KICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0
ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRl
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRs
ZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBnZXR0aW5nIGNvdW50IikpOworICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1cmVkIGdl
dHRpbmcgY291bnQiKSkpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gc2Vy
dmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpjbGVhck9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYs
IGNvbnN0IENsZWEKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5
bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBs
ZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2Nv
bXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVu
a25vd24gZXJyb3Igb2NjdXJlZCBjbGVhcmluZyBvYmplY3Qgc3RvcmUiKSk7CisgICAgICAgIGNv
bXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIG9jY3VyZWQg
Y2xlYXJpbmcgb2JqZWN0IHN0b3JlIikpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2NF90IHJlcXVl
c3RJRCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtNTkxLDcgKzU5MSw3IEBAIHZv
aWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGJvb2wgc3VjY2VzCiAgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51
bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjbGVhcmluZyBvYmplY3Qgc3RvcmUi
KSk7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxscHRy
IDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1cmVkIGNsZWFyaW5nIG9iamVj
dCBzdG9yZSIpKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgRGVsZXRlT2JqZWN0U3RvcmVP
cGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCkBAIC01OTksNyArNTk5LDcgQEAgdm9p
ZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShJREJUcmFuc2FjdGlv
bkJhY2tlbmQmLCBjb25zdCBEZWwKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3Jl
YXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhh
bmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
ayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBvYmplY3Qgc3RvcmUiKSk7Cisg
ICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9y
IG9jY3VyZWQgZGVsZXRpbmcgb2JqZWN0IHN0b3JlIikpKTsKICAgICB9KTsKIAogICAgIHVpbnQ2
NF90IHJlcXVlc3RJRCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJRCgpOwpAQCAtNjIwLDcgKzYy
MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2NlCiAgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3Vj
Y2VzcyA/IG51bGxwdHIgOiBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBvYmpl
Y3Qgc3RvcmUiKSk7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3Mg
PyBudWxscHRyIDogSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1cmVkIGRlbGV0
aW5nIG9iamVjdCBzdG9yZSIpKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IElEQkRh
dGFiYXNlQmFja2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxs
YmFjaykKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNo
YW5nZURhdGFiYXNlVmVyc2lvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdAogICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKIAog
ICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgp
IHsKLSAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVk
IGNoYW5naW5nIGRhdGFiYXNlIHZlcnNpb24iKSk7CisgICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
ayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIG9jY3VyZWQgY2hhbmdpbmcgZGF0YWJh
c2UgdmVyc2lvbiIpKSk7CiAgICAgfSk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBzZXJ2
ZXJSZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgcwogICAgIGlmICghc2VydmVyUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2VydmVyUmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MgPyBudWxscHRyIDogSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
ICJVbmtub3duIGVycm9yIG9jY3VyZWQgY2hhbmdpbmcgZGF0YWJhc2UgdmVyc2lvbiIpKTsKKyAg
ICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIG9jY3VyZWQgY2hhbmdpbmcgZGF0YWJhc2UgdmVy
c2lvbiIpKSk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcihJ
REJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vyc29yT3BlcmF0aW9uJiBvcGVyYXRp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQ2NF90LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQpAQCAtNjU3LDcgKzY1Nyw3IEBAIHZv
aWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcihJREJUcmFuc2FjdGlvbkJhY2tl
bmQmLCBjb25zdCBPcGVuQ3Vyc29yCiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVx
dWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVy
UmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdKCkgewotICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2soMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJV
bmtub3duIGVycm9yIG9jY3VyZWQgb3BlbmluZyBkYXRhYmFzZSBjdXJzb3IiKSk7CisgICAgICAg
IGNvbXBsZXRpb25DYWxsYmFjaygwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVND
SUlMaXRlcmFsKCJVbmtub3duIGVycm9yIG9jY3VyZWQgb3BlbmluZyBkYXRhYmFzZSBjdXJzb3Ii
KSkpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gc2VydmVyUmVxdWVzdC0+
cmVxdWVzdElEKCk7CkBAIC02NzQsNyArNjc0LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpjdXJzb3JBZHZhbmNlKElEQkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJzb3JBZHZhbmMK
ICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1w
bDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRp
b25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBs
ZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBhZHZhbmNpbmcgZGF0
YWJhc2UgY3Vyc29yIikpOworICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBlcnJvciBvY2N1cmVkIGFk
dmFuY2luZyBkYXRhYmFzZSBjdXJzb3IiKSkpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVx
dWVzdElEID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CkBAIC02OTEsNyArNjkxLDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JJdGVyYXRlKElEQkN1cnNvckJhY2tl
bmQmLCBjb25zdCBDdXJzb3JJdGVyYXQKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJS
ZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJy
b3Igb2NjdXJlZCBpdGVyYXRpbmcgZGF0YWJhc2UgY3Vyc29yIikpOworICAgICAgICBjb21wbGV0
aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
VW5rbm93biBlcnJvciBvY2N1cmVkIGl0ZXJhdGluZyBkYXRhYmFzZSBjdXJzb3IiKSkpOwogICAg
IH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvbWFj
L0xlZ2FjeVByb2Nlc3MvV2ViQ29udGVudFByb2Nlc3NNYWluLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1dlYkNvbnRlbnRQcm9jZXNz
TWFpbi5tbQppbmRleCA5YWRlOTEzLi42NjM4ZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvV2ViQ29udGVudFByb2Nl
c3NNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMv
TGVnYWN5UHJvY2Vzcy9XZWJDb250ZW50UHJvY2Vzc01haW4ubW0KQEAgLTg4LDcgKzg4LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldENvbm5lY3Rpb25JZGVudGlmaWVyKElQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIFN0cmlu
ZyBjbGllbnRFeGVjdXRhYmxlID0gbV9jb21tYW5kTGluZVsiY2xpZW50LWV4ZWN1dGFibGUiXTsK
KyAgICAgICAgU3RyaW5nIGNsaWVudEV4ZWN1dGFibGUgPSBtX2NvbW1hbmRMaW5lW0FTQ0lJTGl0
ZXJhbCgiY2xpZW50LWV4ZWN1dGFibGUiKV07CiAgICAgICAgIGlmIChjbGllbnRFeGVjdXRhYmxl
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU6
OmdldENvbm5lY3Rpb25JZGVudGlmaWVyKGlkZW50aWZpZXIpOwogCkBAIC0xMDcsNyArMTA3LDcg
QEAgcHVibGljOgogCiAgICAgICAgIEVudmlyb25tZW50VmFyaWFibGVzIGVudmlyb25tZW50VmFy
aWFibGVzOwogICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5zZXQoRW52aXJvbm1lbnRWYXJp
YWJsZXM6OnByZWV4aXN0aW5nUHJvY2Vzc1NlcnZpY2VOYW1lS2V5KCksIHNlcnZpY2VOYW1lLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5zZXQoRW52aXJvbm1l
bnRWYXJpYWJsZXM6OnByZWV4aXN0aW5nUHJvY2Vzc1R5cGVLZXkoKSwgbV9jb21tYW5kTGluZVsi
dHlwZSJdLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5zZXQo
RW52aXJvbm1lbnRWYXJpYWJsZXM6OnByZWV4aXN0aW5nUHJvY2Vzc1R5cGVLZXkoKSwgbV9jb21t
YW5kTGluZVtBU0NJSUxpdGVyYWwoInR5cGUiKV0udXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAg
cG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX3QgZmlsZUFjdGlvbnM7CiAgICAgICAgIHBvc2l4X3Nw
YXduX2ZpbGVfYWN0aW9uc19pbml0KCZmaWxlQWN0aW9ucyk7CkBAIC0xNDgsNyArMTQ4LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBj
bGllbnRJZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgU3RyaW5nIGNsaWVudEV4ZWN1dGFibGUg
PSBtX2NvbW1hbmRMaW5lWyJjbGllbnQtZXhlY3V0YWJsZSJdOworICAgICAgICBTdHJpbmcgY2xp
ZW50RXhlY3V0YWJsZSA9IG1fY29tbWFuZExpbmVbQVNDSUlMaXRlcmFsKCJjbGllbnQtZXhlY3V0
YWJsZSIpXTsKICAgICAgICAgaWYgKGNsaWVudEV4ZWN1dGFibGUuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmll
cihjbGllbnRJZGVudGlmaWVyKTsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFByb2Nlc3NO
YW1lKQogICAgIHsKLSAgICAgICAgU3RyaW5nIGNsaWVudEV4ZWN1dGFibGUgPSBtX2NvbW1hbmRM
aW5lWyJjbGllbnQtZXhlY3V0YWJsZSJdOworICAgICAgICBTdHJpbmcgY2xpZW50RXhlY3V0YWJs
ZSA9IG1fY29tbWFuZExpbmVbQVNDSUlMaXRlcmFsKCJjbGllbnQtZXhlY3V0YWJsZSIpXTsKICAg
ICAgICAgaWYgKGNsaWVudEV4ZWN1dGFibGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUoY2xpZW50UHJv
Y2Vzc05hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDFhNjcyN2IuLmZmZTIwY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c2V0RGF0YWJhc2VRdW90YSh1aW50NjRfdCBxdW90YSkKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogICAgIC8vIEhpc3RvcmljYWxseSwgd2UndmUgdXNlZCB0aGUgZm9sbG93aW5n
IChzb21ld2hhdCBub24tc2Vuc2ljYWwpIHN0cmluZwogICAgIC8vIGZvciB0aGUgZGF0YWJhc2VJ
ZGVudGlmaWVyIG9mIGxvY2FsIGZpbGVzLgotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBs
ZW1lbnQ8V2ViRGF0YWJhc2VNYW5hZ2VyPigpLT5zZXRRdW90YUZvck9yaWdpbigiZmlsZV9fMCIs
IHF1b3RhKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zdXBwbGVtZW50PFdlYkRhdGFiYXNl
TWFuYWdlcj4oKS0+c2V0UXVvdGFGb3JPcmlnaW4oQVNDSUlMaXRlcmFsKCJmaWxlX18wIiksIHF1
b3RhKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHF1b3RhKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCmluZGV4IDFjZWQyOTMuLjc0MmU3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxNZXRob2QoRXhlY1N0YXRlKiBl
eGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZh
bHVlKCZhcmd1bWVudHNbaV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2Fs
bGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGlu
ZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9
IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVj
dCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBKU0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9iamVjdChKU0M6OkV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNb
aV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24g
TlBPYmplY3QuIikpOworICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBP
YmplY3QuIikpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5j
b252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwog
ICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBK
U1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
fQogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBP
YmplY3QuIikpOworICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmpl
Y3QuIikpKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnRO
UFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIHJlc3VsdCk7CiAgICAgcmVs
ZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jCiAKIEpTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nl
c3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOworICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4i
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCmluZGV4IDMyODY0M2UuLjg0ODRhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHN0YXRpYyBOUEVycm9yIE5Q
Tl9HZXRVUkwoTlBQIG5wcCwgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQpCiAg
ICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgIAogICAgIFJlZlB0cjxOZXRz
Y2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKLSAgICBw
bHVnaW4tPmxvYWRVUkwoIkdFVCIsIG1ha2VVUkxTdHJpbmcodXJsKSwgdGFyZ2V0LCBIVFRQSGVh
ZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CisgICAgcGx1Z2luLT5sb2Fk
VVJMKEFTQ0lJTGl0ZXJhbCgiR0VUIiksIG1ha2VVUkxTdHJpbmcodXJsKSwgdGFyZ2V0LCBIVFRQ
SGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CiAgICAgCiAgICAgcmV0
dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiB9CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIE5Q
RXJyb3IgTlBOX1Bvc3RVUkwoTlBQIG5wcCwgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0
YXJnZXQsIHVpbnQzMl8KICAgICAgICAgcmV0dXJuIGVycm9yOwogCiAgICAgUmVmUHRyPE5ldHNj
YXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOwotICAgIHBs
dWdpbi0+bG9hZFVSTCgiUE9TVCIsIG1ha2VVUkxTdHJpbmcodXJsKSwgdGFyZ2V0LCBXVEY6Om1v
dmUoaGVhZGVyRmllbGRzKSwgcG9zdERhdGEsIGZhbHNlLCAwKTsKKyAgICBwbHVnaW4tPmxvYWRV
UkwoQVNDSUlMaXRlcmFsKCJQT1NUIiksIG1ha2VVUkxTdHJpbmcodXJsKSwgdGFyZ2V0LCBXVEY6
Om1vdmUoaGVhZGVyRmllbGRzKSwgcG9zdERhdGEsIGZhbHNlLCAwKTsKICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CiB9CiAKQEAgLTM4Myw3ICszODMsNyBAQCBzdGF0aWMgTlBFcnJvciBOUE5f
R2V0VVJMTm90aWZ5KE5QUCBucHAsIGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0
LCB2bwogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIAogICAgIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKLSAg
ICBwbHVnaW4tPmxvYWRVUkwoIkdFVCIsIG1ha2VVUkxTdHJpbmcodXJsKSwgdGFyZ2V0LCBIVFRQ
SGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCB0cnVlLCBub3RpZnlEYXRhKTsKKyAgICBw
bHVnaW4tPmxvYWRVUkwoQVNDSUlMaXRlcmFsKCJHRVQiKSwgbWFrZVVSTFN0cmluZyh1cmwpLCB0
YXJnZXQsIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIHRydWUsIG5vdGlmeURh
dGEpOwogICAgIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KQEAgLTM5Nyw3ICszOTcs
NyBAQCBzdGF0aWMgTlBFcnJvciBOUE5fUG9zdFVSTE5vdGlmeShOUFAgbnBwLCBjb25zdCBjaGFy
KiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdQogICAgICAgICByZXR1cm4gZXJyb3I7CiAKICAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQ
KG5wcCk7Ci0gICAgcGx1Z2luLT5sb2FkVVJMKCJQT1NUIiwgbWFrZVVSTFN0cmluZyh1cmwpLCB0
YXJnZXQsIGhlYWRlckZpZWxkcywgcG9zdERhdGEsIHRydWUsIG5vdGlmeURhdGEpOworICAgIHBs
dWdpbi0+bG9hZFVSTChBU0NJSUxpdGVyYWwoIlBPU1QiKSwgbWFrZVVSTFN0cmluZyh1cmwpLCB0
YXJnZXQsIGhlYWRlckZpZWxkcywgcG9zdERhdGEsIHRydWUsIG5vdGlmeURhdGEpOwogICAgIHJl
dHVybiBOUEVSUl9OT19FUlJPUjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXgg
ODZkMDJiMi4uMDNlNmRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0xNjAsNyAr
MTYwLDcgQEAgY29uc3QgY2hhciogTmV0c2NhcGVQbHVnaW46OnVzZXJBZ2VudCgpCiAKICNpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKE1BQykKICAgICAgICAgaWYgKHF1aXJrcygpLmNvbnRhaW5zKFBs
dWdpblF1aXJrczo6QXBwZW5kVmVyc2lvbjNVc2VyQWdlbnQpKQotICAgICAgICAgICAgdXNlckFn
ZW50LmFwcGVuZCgiIFZlcnNpb24vMy4yLjEiKTsKKyAgICAgICAgICAgIHVzZXJBZ2VudC5hcHBl
bmQoQVNDSUlMaXRlcmFsKCIgVmVyc2lvbi8zLjIuMSIpKTsKICNlbmRpZgogCiAgICAgICAgIG1f
dXNlckFnZW50ID0gdXNlckFnZW50LnV0ZjgoKTsKQEAgLTU2MCw3ICs1NjAsNyBAQCBzdGF0aWMg
Ym9vbCBpc1RyYW5zcGFyZW50U2lsdmVybGlnaHRCYWNrZ3JvdW5kVmFsdWUoY29uc3QgU3RyaW5n
JiBsb3dlcmNhc2VCYWNrZwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChsb3dlcmNhc2VCYWNr
Z3JvdW5kVmFsdWUuc3RhcnRzV2l0aCgic2MjIikpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
Y29tcG9uZW50czsKLSAgICAgICAgbG93ZXJjYXNlQmFja2dyb3VuZFZhbHVlLnN1YnN0cmluZygz
KS5zcGxpdCgiLCIsIGNvbXBvbmVudHMpOworICAgICAgICBsb3dlcmNhc2VCYWNrZ3JvdW5kVmFs
dWUuc3Vic3RyaW5nKDMpLnNwbGl0KCcsJywgY29tcG9uZW50cyk7CiAKICAgICAgICAgLy8gQW4g
U2NSR0IgdmFsdWUgd2l0aCBhbHBoYSB0cmFuc3BhcmVuY3ksIGluIHRoZSBmb3JtIHNjI0EsUixH
LEIuCiAgICAgICAgIGlmIChjb21wb25lbnRzLnNpemUoKSA9PSA0KSB7CkBAIC02NjYsNyArNjY2
LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogCiAgICAgLy8gTG9hZCB0aGUgc3JjIFVSTCBpZiBuZWVkZWQuCiAgICAgaWYg
KCFwYXJhbWV0ZXJzLnNob3VsZFVzZU1hbnVhbExvYWRlciAmJiAhcGFyYW1ldGVycy51cmwuaXNF
bXB0eSgpICYmIHNob3VsZExvYWRTcmNVUkwoKSkKLSAgICAgICAgbG9hZFVSTCgiR0VUIiwgcGFy
YW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rvcjx1
aW50OF90PigpLCBmYWxzZSwgMCk7CisgICAgICAgIGxvYWRVUkwoQVNDSUlMaXRlcmFsKCJHRVQi
KSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZl
Y3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAzMTQ1ZmI1Li44ZjZmNDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25z
dCBTdHJpbmcmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghc3Rh
cnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpLCAwLCAidGV4dC9w
bGFpbiIsICIiKSkKKyAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0
cmluZy5sZW5ndGgoKSwgMCwgQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICIiKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZGVsaXZlckRhdGEocmVzdWx0Q1N0cmluZy5kYXRhKCksIHJlc3Vs
dENTdHJpbmcubGVuZ3RoKCkpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogewogICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAm
JiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBm
aWxlLgotICAgICAgICBtX2ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldlYktpdFBsdWdp
blN0cmVhbSIsIG1fZmlsZUhhbmRsZSk7CisgICAgICAgIG1fZmlsZVBhdGggPSBvcGVuVGVtcG9y
YXJ5RmlsZShBU0NJSUxpdGVyYWwoIldlYktpdFBsdWdpblN0cmVhbSIpLCBtX2ZpbGVIYW5kbGUp
OwogCiAgICAgICAgIC8vIFdlIGZhaWxlZCB0byBvcGVuIHRoZSBmaWxlLCBzdG9wIHRoZSBzdHJl
YW0uCiAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBkMjk0YzhiLi5jMzAyMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNTQxLDEzICs1NDEsMTMg
QEAgUGx1Z2luSW5mbyBQREZQbHVnaW46OnBsdWdpbkluZm8oKQogICAgIGluZm8uaXNBcHBsaWNh
dGlvblBsdWdpbiA9IHRydWU7CiAKICAgICBNaW1lQ2xhc3NJbmZvIHBkZk1pbWVDbGFzc0luZm87
Ci0gICAgcGRmTWltZUNsYXNzSW5mby50eXBlID0gImFwcGxpY2F0aW9uL3BkZiI7CisgICAgcGRm
TWltZUNsYXNzSW5mby50eXBlID0gQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9wZGYiKTsKICAg
ICBwZGZNaW1lQ2xhc3NJbmZvLmRlc2MgPSBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwog
ICAgIHBkZk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiIpOwogICAgIGluZm8u
bWltZXMuYXBwZW5kKHBkZk1pbWVDbGFzc0luZm8pOwogCiAgICAgTWltZUNsYXNzSW5mbyB0ZXh0
UERGTWltZUNsYXNzSW5mbzsKLSAgICB0ZXh0UERGTWltZUNsYXNzSW5mby50eXBlID0gInRleHQv
cGRmIjsKKyAgICB0ZXh0UERGTWltZUNsYXNzSW5mby50eXBlID0gQVNDSUlMaXRlcmFsKCJ0ZXh0
L3BkZiIpOwogICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLmRlc2MgPSBwZGZEb2N1bWVudFR5cGVE
ZXNjcmlwdGlvbigpOwogICAgIHRleHRQREZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5k
KCJwZGYiKTsKICAgICBpbmZvLm1pbWVzLmFwcGVuZCh0ZXh0UERGTWltZUNsYXNzSW5mbyk7CkBA
IC04MTIsOSArODEyLDkgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlOwogICAgIHN5bnRoZXNpemVk
UmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUobV9zdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAg
c3ludGhlc2l6ZWRSZXNwb25zZS5zZXRVUkwobV9zb3VyY2VVUkwpOyAvLyBOZWVkcyB0byBtYXRj
aCB0aGUgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVQREZVUkwuCi0gICAgc3ludGhlc2l6ZWRSZXNw
b25zZS5zZXRNaW1lVHlwZSgiYXBwbGljYXRpb24vcGRmIik7CisgICAgc3ludGhlc2l6ZWRSZXNw
b25zZS5zZXRNaW1lVHlwZShBU0NJSUxpdGVyYWwoImFwcGxpY2F0aW9uL3BkZiIpKTsKIAotICAg
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKG1fZGF0YS5nZXQoKSksIG1fc291cmNlVVJMLCAi
YXBwbGljYXRpb24vcGRmIiwgU3RyaW5nKCksIFN0cmluZygpLCBzeW50aGVzaXplZFJlc3BvbnNl
KTsKKyAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShtX2RhdGEuZ2V0KCkpLCBtX3NvdXJj
ZVVSTCwgQVNDSUlMaXRlcmFsKCJhcHBsaWNhdGlvbi9wZGYiKSwgU3RyaW5nKCksIFN0cmluZygp
LCBzeW50aGVzaXplZFJlc3BvbnNlKTsKICAgICBwbHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3Vt
ZW50KCktPmxvYWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZSgpKTsK
IH0KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgYm9vbCBQREZQbHVnaW46OmluaXRpYWxpemUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX3NvdXJjZVVSTCA9IHBhcmFtZXRl
cnMudXJsOwogICAgIGlmICghcGFyYW1ldGVycy5zaG91bGRVc2VNYW51YWxMb2FkZXIgJiYgIXBh
cmFtZXRlcnMudXJsLmlzRW1wdHkoKSkKLSAgICAgICAgY29udHJvbGxlcigpLT5sb2FkVVJMKHBk
ZkRvY3VtZW50UmVxdWVzdElELCAiR0VUIiwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmlu
ZygpLCBIVFRQSGVhZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CisgICAgICAg
IGNvbnRyb2xsZXIoKS0+bG9hZFVSTChwZGZEb2N1bWVudFJlcXVlc3RJRCwgQVNDSUlMaXRlcmFs
KCJHRVQiKSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFw
KCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSk7CiAKICAgICBjb250cm9sbGVyKCktPmRpZElu
aXRpYWxpemVQbHVnaW4oKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5v
dGF0aW9uLm1tCmluZGV4IGE1ZDJmNWUuLjA5NTkwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5u
b3RhdGlvbi5tbQpAQCAtNTQsMTUgKzU0LDE1IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgY3NzQWxp
Z25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQoTlNUZXh0QWxpZ25tZW50IGFsaWdubWVuCiB7
CiAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKICAgICBjYXNlIE5TTGVmdFRleHRBbGlnbm1lbnQ6
Ci0gICAgICAgIHJldHVybiAibGVmdCI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImxl
ZnQiKTsKICAgICBjYXNlIE5TUmlnaHRUZXh0QWxpZ25tZW50OgotICAgICAgICByZXR1cm4gInJp
Z2h0IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmlnaHQiKTsKICAgICBjYXNlIE5T
Q2VudGVyVGV4dEFsaWdubWVudDoKLSAgICAgICAgcmV0dXJuICJjZW50ZXIiOworICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJjZW50ZXIiKTsKICAgICBjYXNlIE5TSnVzdGlmaWVkVGV4dEFs
aWdubWVudDoKLSAgICAgICAgcmV0dXJuICJqdXN0aWZ5IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgianVzdGlmeSIpOwogICAgIGNhc2UgTlNOYXR1cmFsVGV4dEFsaWdubWVudDoKLSAg
ICAgICAgcmV0dXJuICItd2Via2l0LXN0YXJ0IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiLXdlYmtpdC1zdGFydCIpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IDQ2MDg5YzMuLjA3MmI1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6bG9hZFVSTCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBTdHJpbmcmCiAgICAgaWYgKCFodHRwQm9keS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJh
bWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3Jl
YXRlKGh0dHBCb2R5LmRhdGEoKSwgaHR0cEJvZHkuc2l6ZSgpKSk7CiAgICAgICAgIGlmIChmcmFt
ZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAg
ICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUENvbnRlbnRU
eXBlKEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikpOwog
ICAgIH0KIAogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKHRhcmdldCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNh
Y2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA0MTg3YmY1Li5hN2IyMWQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVz
b3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVPcmlnaW5zKHVpbnQ2NF90IGNh
bGxiYWNrSUQpIGNvbnN0CiAjZW5kaWYKICAgICAgICAgQ0ZJbmRleCBzaXplID0gY2ZVUkxIb3N0
cyA/IENGQXJyYXlHZXRDb3VudChjZlVSTEhvc3RzLmdldCgpKSA6IDA7CiAKLSAgICAgICAgU3Ry
aW5nIGh0dHBTdHJpbmcoImh0dHAiKTsKKyAgICAgICAgU3RyaW5nIGh0dHBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJodHRwIikpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKICAgICAgICAgICAgIENGU3RyaW5nUmVmIGhvc3QgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjZlVSTEhvc3RzLmdldCgpLCBpKSk7CiAgICAg
ICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGh0dHBTdHJpbmcsIGhv
c3QsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCBmMzZkZGJj
Li40NTY3OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0xNDAs
NyArMTQwLDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlV29yZENhc2UoV2ViUGFnZSogcGFnZSwgU0VM
IHNlbGVjdG9yKQogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0
ZSgpOworICAgIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJzZWxlY3RXb3Jk
IikpLmV4ZWN1dGUoKTsKIAogICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1lLmRp
c3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUuZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCkpOwogICAgIHBhZ2UtPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCgmZnJhbWUsIFtzZWxlY3Rl
ZFN0cmluZyBwZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAK
aW5kZXggODY0NTdjNS4uYWM0YTFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTU1LDgg
KzU1LDggQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmluaXRpYWxpemUoKQogICAgIG1f
ZG9jdW1lbnRPdmVybGF5Um9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fd2ViUGFn
ZS5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CiAgICAgbV92
aWV3T3ZlcmxheVJvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3dlYlBhZ2UuZHJh
d2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwogI2lmbmRlZiBOREVC
VUcKLSAgICBtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllci0+c2V0TmFtZSgiUGFnZSBPdmVybGF5
IGNvbnRhaW5lciAoZG9jdW1lbnQtcmVsYXRpdmUpIik7Ci0gICAgbV92aWV3T3ZlcmxheVJvb3RM
YXllci0+c2V0TmFtZSgiUGFnZSBPdmVybGF5IGNvbnRhaW5lciAodmlldy1yZWxhdGl2ZSkiKTsK
KyAgICBtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllci0+c2V0TmFtZShBU0NJSUxpdGVyYWwoIlBh
Z2UgT3ZlcmxheSBjb250YWluZXIgKGRvY3VtZW50LXJlbGF0aXZlKSIpKTsKKyAgICBtX3ZpZXdP
dmVybGF5Um9vdExheWVyLT5zZXROYW1lKEFTQ0lJTGl0ZXJhbCgiUGFnZSBPdmVybGF5IGNvbnRh
aW5lciAodmlldy1yZWxhdGl2ZSkiKSk7CiAjZW5kaWYKIH0KIApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6aW5zdGFsbFBhZ2VPdmVybGF5KFBhc3NSZWZQdHI8
UGFnZU92ZXJsYXk+IHBhZ2VPdmVybAogICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Iob3Zl
cmxheS0+YmFja2dyb3VuZENvbG9yKCkpOwogICAgIHVwZGF0ZU92ZXJsYXlHZW9tZXRyeSgqb3Zl
cmxheSwgKmxheWVyKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgbGF5ZXItPnNldE5hbWUoIlBhZ2Ug
T3ZlcmxheSBjb250ZW50Iik7CisgICAgbGF5ZXItPnNldE5hbWUoQVNDSUlMaXRlcmFsKCJQYWdl
IE92ZXJsYXkgY29udGVudCIpKTsKICNlbmRpZgogCiAgICAgdXBkYXRlU2V0dGluZ3NGb3JMYXll
cigqbGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IDYwNjI4
MDcuLjY5NjFmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTE2
OCw3ICsxNjgsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6
ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOwogCiAgICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlv
bk1hYzo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Ci0gICAgdG9HcmFwaGljc0xheWVyQ0EobGF5
ZXIoKSktPnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGln
aHRJbiIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJDQShs
YXllcigpKS0+cGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleShBU0NJSUxpdGVy
YWwoIkZhZGVIaWdobGlnaHRJbiIpLCBwbGF0Zm9ybUFuaW1hdGlvbi5nZXQoKSk7CiB9CiAKIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KCkKQEAgLTE4
Niw3ICsxODYsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6
ZmFkZU91dCgpCiAgICAgfV07CiAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxh
dGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjcmVhdGUoYW5pbWF0aW9u
LmdldCgpKTsKLSAgICB0b0dyYXBoaWNzTGF5ZXJDQShsYXllcigpKS0+cGxhdGZvcm1DQUxheWVy
KCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0
aW9uLmdldCgpKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJDQShsYXllcigpKS0+cGxhdGZvcm1DQUxh
eWVyKCktPmFkZEFuaW1hdGlvbkZvcktleShBU0NJSUxpdGVyYWwoIkZhZGVIaWdobGlnaHRPdXQi
KSwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDVl
ZDNlYTkuLjliN2RhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2lu
LnkoKSk7CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKIAotICAgIFJldGFpblB0cjxDQUJh
c2ljQW5pbWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFu
aW1hdGlvbkZvcktleVBhdGgoInRyYW5zZm9ybSIpOworICAgIFJldGFpblB0cjxDQUJhc2ljQW5p
bWF0aW9uPiByZW5kZXJWaWV3QW5pbWF0aW9uQ0EgPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlv
bkZvcktleVBhdGgoQVNDSUlMaXRlcmFsKCJ0cmFuc2Zvcm0iKSk7CiAgICAgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IHJlbmRlclZpZXdBbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjOjpjcmVhdGUocmVuZGVyVmlld0FuaW1hdGlvbkNBLmdldCgpKTsKICAgICByZW5kZXJWaWV3
QW5pbWF0aW9uLT5zZXRUb1ZhbHVlKHRyYW5zZm9ybSk7CiAKQEAgLTY0MSwyMyArNjQxLDIzIEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOl4odm9pZCkgewotICAgICAgICB6
b29tTGF5ZXItPnJlbW92ZUFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIpOwor
ICAgICAgICB6b29tTGF5ZXItPnJlbW92ZUFuaW1hdGlvbkZvcktleShBU0NJSUxpdGVyYWwoInRy
YW5zaWVudFpvb21Db21taXQiKSk7CiAgICAgICAgIGlmIChzaGFkb3dDQUxheWVyKQogICAgICAg
ICAgICAgW3NoYWRvd0NBTGF5ZXIgcmVtb3ZlQWxsQW5pbWF0aW9uc107CiAgICAgICAgIGFwcGx5
VHJhbnNpZW50Wm9vbVRvUGFnZShzY2FsZSwgb3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21M
YXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVuZGVyVmll
d0FuaW1hdGlvbi5nZXQoKSk7CisgICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoQVND
SUlMaXRlcmFsKCJ0cmFuc2llbnRab29tQ29tbWl0IiksIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0
KCkpOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRv
d0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUoZnJhbWVWaWV3LCBzY2FsZSk7CiAg
ICAgICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHNoYWRvd1BhdGggPSBhZG9wdENGKENHUGF0aENy
ZWF0ZVdpdGhSZWN0KHNoYWRvd0JvdW5kcywgTlVMTCkpLmdldCgpOwogCi0gICAgICAgIFJldGFp
blB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dCb3VuZHNBbmltYXRpb24gPSB0cmFuc2llbnRa
b29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoImJvdW5kcyIpOworICAgICAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNu
YXBBbmltYXRpb25Gb3JLZXlQYXRoKEFTQ0lJTGl0ZXJhbCgiYm91bmRzIikpOwogICAgICAgICBb
c2hhZG93Qm91bmRzQW5pbWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpz
aGFkb3dCb3VuZHNdXTsKLSAgICAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IHNoYWRv
d1Bvc2l0aW9uQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRo
KCJwb3NpdGlvbiIpOworICAgICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93
UG9zaXRpb25BbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgo
QVNDSUlMaXRlcmFsKCJwb3NpdGlvbiIpKTsKICAgICAgICAgW3NoYWRvd1Bvc2l0aW9uQW5pbWF0
aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6c2hhZG93TGF5ZXJQb3NpdGlv
bkZvckZyYW1lKGZyYW1lVmlldywgY29uc3RyYWluZWRPcmlnaW4pXV07Ci0gICAgICAgIFJldGFp
blB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQYXRoQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9v
bVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJzaGFkb3dQYXRoIik7CisgICAgICAgIFJldGFpblB0
cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQYXRoQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNu
YXBBbmltYXRpb25Gb3JLZXlQYXRoKEFTQ0lJTGl0ZXJhbCgic2hhZG93UGF0aCIpKTsKICAgICAg
ICAgW3NoYWRvd1BhdGhBbmltYXRpb24gc2V0VG9WYWx1ZTooaWQpc2hhZG93UGF0aC5nZXQoKV07
CiAKICAgICAgICAgW3NoYWRvd0NBTGF5ZXIgYWRkQW5pbWF0aW9uOnNoYWRvd0JvdW5kc0FuaW1h
dGlvbi5nZXQoKSBmb3JLZXk6QCJ0cmFuc2llbnRab29tQ29tbWl0U2hhZG93Qm91bmRzIl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KaW5kZXggZTRhNWY2ZC4uOTEyZTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTM1LDEzICsxMzUsMTMgQEAg
c3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogY3JlYXRlU2VsZWN0b3JFeGNlcHRpb25NYXAo
KQogewogICAgIFNlbGVjdG9yTmFtZU1hcCogbWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+OwogCi0gICAgbWFwLT5hZGQoImluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOiIs
ICJJbnNlcnROZXdsaW5lIik7Ci0gICAgbWFwLT5hZGQoImluc2VydFBhcmFncmFwaFNlcGFyYXRv
cjoiLCAiSW5zZXJ0TmV3bGluZSIpOwotICAgIG1hcC0+YWRkKCJpbnNlcnRUYWJJZ25vcmluZ0Zp
ZWxkRWRpdG9yOiIsICJJbnNlcnRUYWIiKTsKLSAgICBtYXAtPmFkZCgicGFnZURvd246IiwgIk1v
dmVQYWdlRG93biIpOwotICAgIG1hcC0+YWRkKCJwYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjoi
LCAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgbWFwLT5hZGQoInBhZ2VV
cDoiLCAiTW92ZVBhZ2VVcCIpOwotICAgIG1hcC0+YWRkKCJwYWdlVXBBbmRNb2RpZnlTZWxlY3Rp
b246IiwgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBtYXAtPmFkZChBU0NJ
SUxpdGVyYWwoImluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOiIpLCAiSW5zZXJ0TmV3
bGluZSIpOworICAgIG1hcC0+YWRkKEFTQ0lJTGl0ZXJhbCgiaW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yOiIpLCAiSW5zZXJ0TmV3bGluZSIpOworICAgIG1hcC0+YWRkKEFTQ0lJTGl0ZXJhbCgiaW5z
ZXJ0VGFiSWdub3JpbmdGaWVsZEVkaXRvcjoiKSwgIkluc2VydFRhYiIpOworICAgIG1hcC0+YWRk
KEFTQ0lJTGl0ZXJhbCgicGFnZURvd246IiksICJNb3ZlUGFnZURvd24iKTsKKyAgICBtYXAtPmFk
ZChBU0NJSUxpdGVyYWwoInBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uOiIpLCAiTW92ZVBhZ2VE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIik7CisgICAgbWFwLT5hZGQoQVNDSUlMaXRlcmFsKCJwYWdl
VXA6IiksICJNb3ZlUGFnZVVwIik7CisgICAgbWFwLT5hZGQoQVNDSUlMaXRlcmFsKCJwYWdlVXBB
bmRNb2RpZnlTZWxlY3Rpb246IiksICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIik7CiAK
ICAgICByZXR1cm4gbWFwOwogfQo=
</data>
<flag name="review"
          id="261715"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="261725"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>