<?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>188955</bug_id>
          
          <creation_ts>2018-08-26 14:14:52 -0700</creation_ts>
          <short_desc>[Cocoa] Adapt more WebKit code to be ARC-compatible</short_desc>
          <delta_ts>2021-03-17 12:03:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222336</see_also>
          <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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1453728</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-26 14:14:52 -0700</bug_when>
    <thetext>[Cocoa] Adapt more WebKit code to be ARC-compatible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453729</commentid>
    <comment_count>1</comment_count>
      <attachid>348101</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-26 14:42:58 -0700</bug_when>
    <thetext>Created attachment 348101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453730</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-26 14:44:52 -0700</bug_when>
    <thetext>Attachment 348101 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebPageProxy.cpp:7329:  Declaration has space between type name and * in NSObject *WebPageProxy  [whitespace/declaration] [3]
Total errors found: 1 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453735</commentid>
    <comment_count>3</comment_count>
      <attachid>348104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-26 15:11:34 -0700</bug_when>
    <thetext>Created attachment 348104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453736</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-26 15:13:59 -0700</bug_when>
    <thetext>Attachment 348104 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebPageProxy.cpp:7329:  Declaration has space between type name and * in NSObject *WebPageProxy  [whitespace/declaration] [3]
Total errors found: 1 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453745</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-26 18:05:38 -0700</bug_when>
    <thetext>Looks like it’s compiling and passing tests everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453866</commentid>
    <comment_count>6</comment_count>
      <attachid>348104</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2018-08-27 07:04:25 -0700</bug_when>
    <thetext>Comment on attachment 348104
Patch

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

&gt; Source/WebKit/Shared/API/c/cf/WKStringCF.mm:55
&gt; +        CFRetain(cfString);
&gt; +        return toAPI(static_cast&lt;API::String*&gt;(&amp;[(WKNSString *)(__bridge NSString *)cfString _apiObject]));

I&apos;d put the CFRetain inside the toAPI call instead of on a separate line.

&gt; Source/WebKit/Shared/API/c/cf/WKURLCF.mm:58
&gt; +        CFRetain(cfURL);

Same here.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:2054
&gt; -    [[event retain] autorelease];
&gt; +    CFRetain((__bridge CFTypeRef)event);
&gt; +    CFAutorelease((__bridge CFTypeRef)event);

I seem to remember that you can do something like

__autoreleasing NSEvent *autoreleasedEvent = event;

(I think we&apos;ve done something similar in Safari).

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:2074
&gt; -    [[event retain] autorelease];
&gt; +    CFRetain((__bridge CFTypeRef)event);
&gt; +    CFAutorelease((__bridge CFTypeRef)event);

Same thing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453885</commentid>
    <comment_count>7</comment_count>
      <attachid>348104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-27 08:47:11 -0700</bug_when>
    <thetext>Comment on attachment 348104
Patch

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

&gt;&gt; Source/WebKit/Shared/API/c/cf/WKStringCF.mm:55
&gt;&gt; +        return toAPI(static_cast&lt;API::String*&gt;(&amp;[(WKNSString *)(__bridge NSString *)cfString _apiObject]));
&gt; 
&gt; I&apos;d put the CFRetain inside the toAPI call instead of on a separate line.

Done.

The reason I didn’t do that originally is that I wanted a construction where the __bridge cast will warn if we use the wrong toll-free bridged type and I was worried that CFRetain would cause the expression to dumb down its type from CFStringRef to CFTypeRef. But frankly I have no idea if it will do that or not, and I also guess the warning is not so important that I should work so hard to preserve it.

&gt;&gt; Source/WebKit/Shared/API/c/cf/WKURLCF.mm:58
&gt;&gt; +        CFRetain(cfURL);
&gt; 
&gt; Same here.

Done.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:2054
&gt;&gt; +    CFAutorelease((__bridge CFTypeRef)event);
&gt; 
&gt; I seem to remember that you can do something like
&gt; 
&gt; __autoreleasing NSEvent *autoreleasedEvent = event;
&gt; 
&gt; (I think we&apos;ve done something similar in Safari).

I like the idea of moving to a better idiom. The thing I recall in Safari is a macro:

    #define AUTORELEASING_PROTECT(object) ({ __autoreleasing volatile id protector = object; (void)protector; })

I am not sure that’s better than explicit calls to CFRetain and CFAutorelease.

I’d be happy to switch idioms to something we like better: It will be easy to find all the call sites by searching for CFAutorelease; so far there are only 4, these 3 in WebKit and 1 I already landed in WebCore. For now I’d prefer to land these as just CFRetain/CFAutorelease since I’m not sure I prefer an idiom involving volatile and unused local variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453889</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-27 08:51:30 -0700</bug_when>
    <thetext>Committed r235365: &lt;https://trac.webkit.org/changeset/235365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453890</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-27 08:52:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/43755547&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348101</attachid>
            <date>2018-08-26 14:42:58 -0700</date>
            <delta_ts>2018-08-26 15:11:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188955-20180826144257.patch</filename>
            <type>text/plain</type>
            <size>79495</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwOTgwOGFiYWU0NjMxNDZl
M2QyNTI4MmI2YmZjZGMzMmU5OTdlNWQuLjg2ZDNhOTdkYTk1NTc2ZDIyNTk0MmFlNWJlMmViNjMw
ODk5ZGY0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTk2IEBACisyMDE4LTA4LTI2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkYXB0IG1vcmUgV2Vi
S2l0IGNvZGUgdG8gYmUgQVJDLWNvbXBhdGlibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODk1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaDogVXNlIF9fc3Ryb25nIGZvciBhbiBpbi9vdXQgYXJndW1lbnQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQpOgorICAgICAgICBVc2UgX19zdHJvbmcgZm9y
IGEgaW4vb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6YXBwbHlDb29raWVCbG9ja2luZ1BvbGljeSk6IENhbGwgYSBOU1VSTFNlc3Npb25UYXNrCisg
ICAgICAgIG1ldGhvZCB1c2luZyBhbiBleHBsaWNpdCBjYXRlZ29yeSBkZWNsYXJhdGlvbiByYXRo
ZXIgdGhhbiBieSB1c2luZyBwZXJmb3JtU2VsZWN0b3I6CisgICAgICAgIHNpbmNlIEFSQyBpcyB1
bmFibGUgdG8gY29ycmVjdGx5IGNvbXBpbGUgYSBjYWxsIHdoZW4gaXQgZG9lc24ndCBrbm93IGFy
Z3VtZW50IGFuZAorICAgICAgICByZXN1bHQgdHlwZXMuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXpl
Q29jb2FPdmVycmlkZXMpOiBBZGQgc29tZSBfX2JyaWRnZSBjYXN0cy4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbTogVXNlIEhhc2hTZXQ8Q0ZUeXBl
UmVmPiBpbnN0ZWFkIG9mCisgICAgICAgIEhhc2hTZXQ8Q2xhc3M+IHNpbmNlIENsYXNzIGlhIGFu
IEFSQy1tYW5hZ2VkIHR5cGUgYW5kIFdURiBoYXNoIHRhYmxlcyBjYW4ndAorICAgICAgICBjdXJy
ZW50bHkgaGFuZGxlIHRob3NlIGFzIGtleSB0eXBlcy4KKyAgICAgICAgKC1bV0tSZW1vdGVPYmpl
Y3REZWNvZGVyIGRlY29kZVZhbHVlT2ZPYmpDVHlwZTphdDpdKTogQ2hhbmdlZCB0eXBlcyBhbmQg
YWRkZWQgY2FzdHMKKyAgICAgICAgdG8gYWRhcHQgdG8gdGhlIGFib3ZlLgorICAgICAgICAoZGVj
b2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbSk6IERpdHRvLgorICAgICAgICAoY2hlY2tJZkNsYXNz
SXNBbGxvd2VkKTogRGl0dG8uCisgICAgICAgIChkZWNvZGVJbnZvY2F0aW9uQXJndW1lbnRzKTog
RGl0dG8uCisgICAgICAgIChkZWNvZGVPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKC1bV0tSZW1v
dGVPYmplY3REZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3Nlczpmb3JLZXk6XSk6IERpdHRvLgor
ICAgICAgICAoLVtXS1JlbW90ZU9iamVjdERlY29kZXIgYWxsb3dlZENsYXNzZXNdKTogRGl0dG8u
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06
CisgICAgICAgIChwcm9wZXJ0eUxpc3RDbGFzc2VzKTogRGl0dG8uCisgICAgICAgIChpbml0aWFs
aXplTWV0aG9kKTogRGl0dG8uCisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBk
ZWJ1Z0Rlc2NyaXB0aW9uXSk6IERpdHRvLgorICAgICAgICAoY2xhc3Nlc0ZvclNlbGVjdG9yQXJn
dW1lbnQpOiBEaXR0by4KKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIGNsYXNz
ZXNGb3JTZWxlY3Rvcjphcmd1bWVudEluZGV4Om9mUmVwbHk6XSk6IERpdHRvLgorICAgICAgICAo
LVtfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ugc2V0Q2xhc3Nlczpmb3JTZWxlY3Rvcjphcmd1bWVu
dEluZGV4Om9mUmVwbHk6XSk6IERpdHRvLgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UgX2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjpdKTogRGl0dG8uCisgICAg
ICAgICgtW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBfYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlc0Zv
clJlcGx5QmxvY2tPZlNlbGVjdG9yOl0pOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmg6IERpdHRvLgorCisgICAgICAg
ICogU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW06CisgICAgICAgIChXS1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZyk6IFVzZSBDRlJldGFpbiBpbnN0ZWFkIG9mIC1bTlNPYmplY3QgcmV0YWlu
XS4gQWxzbyB1c2UKKyAgICAgICAgYSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwpOiBEaXR0
by4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6
Ok9iamVjdDo6cmVmKTogQWRkZWQgYSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoQVBJOjpPYmpl
Y3Q6OmRlcmVmKTogRGl0dG8uCisgICAgICAgIChBUEk6OmFsbG9jYXRlV0tPYmplY3QpOiBVc2Ug
Y2xhc3NfY3JlYXRlSW5zdGFuY2UgaW5zdGVhZCBvZiBOU0FsbG9jYXRlT2JqZWN0LgorICAgICAg
ICAoQVBJOjpPYmplY3Q6OndyYXApOiBVc2UgYSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OnVud3JhcCk6IERpdHRvLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDogVXNlIENGVHlwZVJlZiBmb3Ig
bGF5ZXJzCisgICAgICAgIG9yIHZpZXdzIGluIHRoZSBSZWxhdGVkTGF5ZXJNYXAgc2luY2Ugd2Ug
ZG9uJ3Qgd2FudCB0aGUgaXRlbXMgcmV0YWluZWQsIGFuZCBjYW4ndAorICAgICAgICB1c2UgX191
bnNhZmVfdXJldGFpbmVkIGJlY2F1c2UgdGhlIGhlYWRlciBpcyB1c2VkIGluIG5vbi1PYmplY3Rp
dmUtQyBjb250ZXh0cy4KKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMpOiBBZGRlZCBfX2JyaWRnZSBjYXN0
cywKKyAgICAgICAgbmVlZGVkIGJlY2F1c2Ugb2YgdGhlIGFib3ZlIGNoYW5nZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpicm93c2luZ0NvbnRleHRDb250cm9sbGVyTWFwKTogVXNlIF9fdW5z
YWZlX3VucmV0YWluZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKGRpZFJlY2VpdmVNZXNzYWdlKTogVXNlIGEgX19icmlkZ2UgY2Fz
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9y
ZS5tbToKKyAgICAgICAgKC1bV0tDb250ZW50UnVsZUxpc3RTdG9yZSBjb21waWxlQ29udGVudFJ1
bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudFJ1bGVMaXN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICBVc2UgYSByZXRhaW4gaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGhh
dmUgYSAicmVsZWFzZXNBcmd1bWVudDoiIGJvb2xlYW4uIFRoZSBjb3N0IG9mIGEgc2luZ2xlCisg
ICAgICAgIHJldGFpbi9yZWxlYXNlIHBhaXIgc2hvdWxkIGJlIGluZmluaXRlc21hbCBjb21wYXJl
ZCB0byB0aGUgZW50aXJlIHByb2Nlc3Mgb2YgY29tcGlsaW5nLgorICAgICAgICAoLVtXS0NvbnRl
bnRSdWxlTGlzdFN0b3JlIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNv
ZGVkQ29udGVudFJ1bGVMaXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBNb3ZlZCB0
aGUgY29kZSBmb3IgdGhlICJyZWxlYXNlcyBhcmd1bWVudCIgdmVyc2lvbiBoZXJlIHNpbmNlIHRo
ZSBwcml2YXRlIG1ldGhvZCBpcyBub3cgdGhlCisgICAgICAgIGFjdHVhbCBtZXRob2QgdGhhdCBk
b2VzIHRoZSB3b3JrLiBUaGUgcHVibGljIG1ldGhvZCBub3cgc2ltcGx5IGNhbGxzIHRoaXMgcHJp
dmF0ZSBvbmUgYWZ0ZXIKKyAgICAgICAgZG9pbmcgYSByZXRhaW4uIFRoZSBvcHRpbWl6YXRpb24g
b2YgcmVsZWFzaW5nIHRoZSBhcmd1bWVudCBhdCB0aGUgY29ycmVjdCBtb21lbnQgc2hvdWxkIGJl
IGludGFjdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3Rv
cmUubW06IFVzZSBDRlR5cGVSZWYgZm9yIHRoZSBrZXkgdG8gdGhlIF9vYnNlcnZlcnMKKyAgICAg
ICAgSGFzaE1hcCBzaW5jZSB0aGUgV1RGIGNvbGxlY3Rpb25zIGNhbid0IHlldCBoYW5kbGUgQVJD
IHR5cGVzIGZvciBrZXlzLgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBhZGRPYnNlcnZl
cjpdKTogQWRkZWQgX19icmlkZ2UgY2FzdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBhYm92
ZS4KKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmUgcmVtb3ZlT2JzZXJ2ZXI6XSk6IERpdHRv
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbToKKyAg
ICAgICAgKHNldFVwQ29ubmVjdGlvbkNsaWVudCk6IEFkZGVkIGEgX19icmlkZ2UgY2FzdC4KKyAg
ICAgICAgKHNldFVwSGlzdG9yeUNsaWVudCk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmg6IEFkZGVkIGEgZGVjbGFyYXRpb24gb2YgdGhlCisg
ICAgICAgIC1bV0tWaWV3IF9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOmNvbXBsZXRpb25I
YW5kbGVyOl0gbWV0aG9kLiBUaGlzIHBlY3VsaWFyIGlkaW9tCisgICAgICAgIHNob3VsZCBiZSBy
ZW1vdmVkLCBidXQgSSBkaWRuJ3QgYm90aGVyIGRvaW5nIHRoYXQgc2luY2UgdGhlIGVudGlyZSBX
S1ZpZXcgY2xhc3MgaXMgYWxyZWFkeQorICAgICAgICBkZXByZWNhdGVkIGFuZCBzbyB3aWxsIGV2
ZW50dWFsbHkgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOiBVc2UgX191bnNhZmVfdW5yZXRhaW5lZCBmb3IgdGhlIGtleXMgaW4gdGhlIHBh
Z2UgdG8KKyAgICAgICAgdmlldyBtYXAuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5RXZlbnRzRW5h
YmxlZENoYW5nZWRDYWxsYmFjayk6IFVzZSBhIF9fYnJpZGdlIGNhc3QuCisgICAgICAgICgtW1dL
V2ViVmlldyBfY2VydGlmaWNhdGVDaGFpbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3
IGNlcnRpZmljYXRlQ2hhaW5dKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQubW06CisgICAgICAgIChpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlk
ZW50aWZpZXIpOiBVc2UgX19icmlkZ2UgY2FzdHMuCisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJ
bmZvIG1pbWVUeXBlXSk6IERpdHRvLiBBbHNvIHVzZSBicmlkZ2luZ0F1dG9yZWxlYXNlLgorICAg
ICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyB1dGlUeXBlXSk6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0
YWxsSWNvbkxvYWRpbmdDbGllbnRdKTogQ2FsbCB0aGUgbWV0aG9kCisgICAgICAgIF9zaG91bGRM
b2FkSWNvbldpdGhQYXJhbWV0ZXJzOmNvbXBsZXRpb25IYW5kbGVyOiBpbiBhIG5vcm1hbCB3YXkg
cmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgICAgcGVyZm9ybVNlbGVjdG9yOndpdGhPYmplY3Q6d2l0
aE9iamVjdDogc2luY2UgQVJDIGlzIHVuYWJsZSB0byBjb3JyZWN0bHkgY29tcGlsZSBhIGNhbGwK
KyAgICAgICAgd2hlbiBpdCBkb2Vzbid0IGtub3cgYXJndW1lbnQgYW5kIHJlc3VsdCB0eXBlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFz
dGVyS2V5KTogVXNlIHRoZSBvdmVybG9hZAorICAgICAgICBvZiBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nIHRoYXQga25vd3MgaG93IHRvIHdvcmsgd2l0aCBhbiBOU0RhdGEgcmF0aGVy
IHRoYW4KKyAgICAgICAgcmUtaW1wbGVtZW50aW5nIGl0IGhlcmUuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogRGl0dG8uIEFsc28gcmVt
b3ZlZCB1bm5lZWRlZAorICAgICAgICB1c2Ugb2YgUmV0YWluUHRyLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6IFVzZSBOU09iamVjdCAqIGFzIHRoZSByZXN1bHQg
dHlwZSBvZgorICAgICAgICBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0
VGVzdFJlc3VsdC4gT3VyIHRlY2huaXF1ZXMgZm9yIGRlZmluaW5nIHN1Y2gKKyAgICAgICAgZnVu
Y3Rpb25zIGluIGhlYWRlcnMgd2hpbGUgcmVtYWluaW5nIGNvbXBhdGlibGUgd2l0aCBub24tT2Jq
ZWN0aXZlLUMgd2lsbCBzdGlsbCB3b3JrCisgICAgICAgIGZpbmUgZ2l2ZW4gaG93IHdlIHVzZSB0
aGlzLCBhbmQgY29udmVydGluZyB0byBhbmQgZnJvbSB2b2lkKiByYXRoZXIgdGhhbiBOU09iamVj
dCAqCisgICAgICAgIHdvdWxkIGJlIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgdW5kZXIgQVJD
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOiBVc2UgQ0ZSZXRhaW4vQ0ZB
dXRvcmVsZWFzZSBpbnN0ZWFkIG9mCisgICAgICAgIHJldGFpbi9hdXRvcmVsZWFzZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW1tZWRpYXRlQWN0aW9u
QW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQpOgorICAgICAgICBVcGRhdGVkIHJl
dHVybiB0eXBlIHRvIE5TT2JqZWN0ICouCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpw
ZXJmb3JtS2V5RXF1aXZhbGVudCk6IFVzZSBDRlJldGFpbi9DRkF1dG9yZWxlYXNlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogVXNlIE5TT2JqZWN0ICogYXMgdGhlIHJlc3Vs
dCB0eXBlLCBhcyBhYm92ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJUcmVlKTogVXNlIF9fYnJpZGdlIGNhc3RzIHRvIGJlIGNvbXBhdGli
bGUKKyAgICAgICAgd2l0aCB0aGUgY2hhbmdlcyB0byB0aGUgUmVsYXRlZExheWVyTWFwIHR5cGVz
LgorICAgICAgICAoV2ViS2l0OjpyZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZSk6
IFVzZSBfX2JyaWRnZSBjYXN0LgorCisgICAgICAgICogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbW1lZGlh
dGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIFVz
ZSBOU09iamVjdCAqIGFzIHRoZSByZXN1bHQgdHlwZSwgYXMgYWJvdmUuCisgICAgICAgICogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOiBVc2UgTlNPYmplY3QgKiBhcyB0aGUg
cmVzdWx0IHR5cGUsIGFzIGFib3ZlLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVmVmlldyk6IFVzZSBfX2JyaWRn
ZSBjYXN0LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGVyZWZWaWV3KTogRGl0
dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZXNDb250cm9sbGVyOjpyZWZyZXNoRXhpc3RpbmdTZXJ2aWNl
cyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgdXNlCisgICAgICAgIG9mIE5ldmVyRGVzdHJveWVkIGZv
ciBPYmplY3RpdmUtQyBvYmplY3QgcG9pbnRlcnMuIFNpbXBsZXIgYW5kIG1vcmUgZWZmaWNpZW50
CisgICAgICAgIGJvdGggd2l0aCBhbmQgd2l0aG91dCBBUkMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyIF91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtXSk6IFJlbW92
ZWQgdW5uZWVkZWQKKyAgICAgICAgY2FzdCBub3cgdGhhdCBpbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdCBoYXMgYSBtb3JlCisgICAgICAgIGFjY3VyYXRl
IHJldHVybiB0eXBlLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgZGVhbGxvY10pOiBVc2UgYSBtb3JlIGRpcmVj
dCBhcHByb2FjaCB0byBtYWtpbmcgc3VyZSB3ZSBkbyB0aGUKKyAgICAgICAgbm9uLXRocmVhZC1z
YWZlIGFjdGlvbnMgb24gdGhlIG1haW4gdGhyZWFkIHdpdGggYSBjYWxsIHRvIGNhbGxPbk1haW5U
aHJlYWQuCisgICAgICAgIFRoZSBvbGQgc29sdXRpb24sIFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFs
bG9jYXRlT25NYWluVGhyZWFkLCBtYXkgbm90IGJlIHBvc3NpYmxlCisgICAgICAgIGluIGFuIEFS
Qy1jb21wYXRpYmxlIHdheSwgYnV0IHRoaXMgb25lIHNob3VsZCB3b3JrIGZpbmUuCisgICAgICAg
IChsaW5rRGVzdGluYXRpb25OYW1lKTogQ2hhbmdlZCB0byByZXR1cm4gYW4gTlNTdHJpbmcgKiB0
byBtYWtlIHN1cmUgd2UgZ2V0IHRoZQorICAgICAgICBvYmplY3QgbGlmZXRpbWVzIGNvcnJlY3Qg
dW5kZXIgQVJDLgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1BERkRvY3VtZW50OnBh
Z2U6YXRQb2ludDpdKTogQWRkZWQgX19icmlkZ2UgY2FzdHMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaDogVXNlIF9fdW5zYWZl
X3VucmV0YWluZWQKKyAgICAgICAgZm9yIHRoZSB2YWx1ZSB0eXBlcyBpbiBET00gY2FjaGVzLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFs
cy5tbToKKyAgICAgICAgKFdlYktpdDo6dG9XS0RPTU5vZGUpOiBVcGRhdGVkIGZvciB0aGUgYWJv
dmUuCisgICAgICAgIChXZWJLaXQ6OnRvV0tET01SYW5nZSk6IERpdHRvLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSk6IFJl
d3JvdGUgdGhlIGNsYXNzX3JlcGxhY2VNZXRob2QKKyAgICAgICAgY2FsbCB0byBzaWRlc3RlcCB0
aGUgcnVsZXMgYWJvdXQgbm90IHVzaW5nIEBzZWxlY3RvcihyZWxlYXNlKSB1bmRlciBBUkMuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cGRhdGVQbHVnaW5MYXllcik6IFVzZSBf
X2JyaWRnZSBjYXN0cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOiBBZGRlZCBhbiBpbmNsdWRlIG9mCisgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLmgsIHdpdGhvdXQgd2hpY2ggdGhpcyBjb2RlIGRvZXNuJ3QgY29tcGlsZQor
ICAgICAgICB1bmRlciBBUkMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNoYW5nZVdvcmRD
YXNlKTogVXNlIGEgZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBzZWxlY3Rvciwgc2luY2UgQVJDIGlz
IHVuYWJsZQorICAgICAgICB0byBjb3JyZWN0bHkgY29tcGlsZSBhIG1ldGhvZCBjYWxsIHdoZW4g
aXQgZG9lc24ndCBrbm93IGFyZ3VtZW50IGFuZCByZXN1bHQgdHlwZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkVkaXRvckNsaWVudDo6dXBwZXJjYXNlV29yZCk6IFVwZGF0ZWQgdG8gdXNlIGEgZnVu
Y3Rpb24gcmF0aGVyIHRoYW4gYSBzZWxlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50Ojpsb3dlcmNhc2VXb3JkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6Y2FwaXRhbGl6ZVdvcmQpOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOiBBZGRlZCBhbiBpbmNsdWRlIG9mCisgICAgICAgIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TL01hYy5oLCB3aXRob3V0IHdoaWNoIHRoaXMg
Y29kZSBkb2Vzbid0IGNvbXBpbGUKKyAgICAgICAgdW5kZXIgQVJDLgorCiAyMDE4LTA4LTIzICBK
ZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgLVtXS05hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJl
bnRQb2xpY3k6cGx1Z2luSW5mbzp1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uOl0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaAppbmRleCAzZTgyZWU0NWNmNDU3MTVmMjA3MjRkMjcwYmU5YWY3ZGY0MTJhNGEyLi42
MmIxYzE0OTVhMWMxN2FjMjZlOThjZWJhN2YyYTcwODFlNjgyZWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRh
dGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImKTsKLSAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1
ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOworICAgIHZvaWQgYXBwbHlT
bmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25n
IE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKICAgICBzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqc3RhdGVsZXNzQ29va2llU3Rv
cmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZjJjYzczMzU5M2NhZGMwNWNmNDYzMDdl
NjgyMGY0YjkyMDQ2OTQxMC4uZmMyMDljOGY3MTM5N2UxNzI4YzE1MjM3OTkzN2IyOGI5ZjRjMWQy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC01Niw2ICs1NiwxNSBAQCBAZW5kCiAjaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZOU1VSTENvbm5lY3Rpb24uaD4KICNlbmRpZgogCisjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisKKy8vIEZJWE1FOiBNb3ZlIHRvIENGTmV0d29y
a1NQSS5oPworQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrICgpCistICh2b2lkKV9zZXRFeHBs
aWNpdENvb2tpZVN0b3JhZ2U6KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpc3RvcmFnZTsKK0BlbmQK
KworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgVVNFKENSRURFTlRJQUxfU1RP
UkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKQEAgLTg1LDcgKzk0LDcgQEAgc3RhdGljIGZsb2F0
IHRvTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5KFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5KQogICAgIHJldHVybiBOU1VSTFNlc3Npb25UYXNrUHJpb3JpdHlEZWZhdWx0Owog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQoTlNVUkxSZXF1ZXN0KiYgbnNSZXF1ZXN0LCBi
b29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRS
ZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QgKiYgbnNSZXF1
ZXN0LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZikKIHsKICNpZiAhUExBVEZPUk0oTUFDKQogICAgIFVOVVNFRF9QQVJBTShzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZik7CkBAIC0xMTksNiArMTI4LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlm
TmVlZGUKIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQorCiBO
U0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVsZXNzQ29va2ll
U3RvcmFnZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0hUVFBD
b29raWVTdG9yYWdlPj4gc3RhdGVsZXNzQ29va2llU3RvcmFnZTsKQEAgLTE0NCwxMCArMTU0LDEx
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llQmxvY2tpbmdQb2xpY3ko
Ym9vbCBzaG91bGRCbG9jaykKICAgICBpZiAoc2hvdWxkQmxvY2sgPT0gbV9oYXNCZWVuU2V0VG9V
c2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU0hUVFBD
b29raWVTdG9yYWdlICpzdG9yYWdlID0gc2hvdWxkQmxvY2sgPyBzdGF0ZWxlc3NDb29raWVTdG9y
YWdlKCk6IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkubnNDb29raWVTdG9yYWdl
KCk7Ci0gICAgW21fdGFzayBwZXJmb3JtU2VsZWN0b3I6TlNTZWxlY3RvckZyb21TdHJpbmcoQCJf
c2V0RXhwbGljaXRDb29raWVTdG9yYWdlOiIpIHdpdGhPYmplY3Q6KE5TT2JqZWN0KilzdG9yYWdl
Ll9jb29raWVTdG9yYWdlXTsKKyAgICBOU0hUVFBDb29raWVTdG9yYWdlICpzdG9yYWdlID0gc2hv
dWxkQmxvY2sgPyBzdGF0ZWxlc3NDb29raWVTdG9yYWdlKCkgOiBtX3Nlc3Npb24tPm5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpLm5zQ29va2llU3RvcmFnZSgpOworICAgIFttX3Rhc2sgX3NldEV4cGxp
Y2l0Q29va2llU3RvcmFnZTpzdG9yYWdlLl9jb29raWVTdG9yYWdlXTsKICAgICBtX2hhc0JlZW5T
ZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgPSBzaG91bGRCbG9jazsKIH0KKwogI2VuZGlm
CiAKIGJvb2wgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmlzVGhpcmRQYXJ0eVJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDdlYzA0YmNmZWQ1
ODMyNmM2NjM1M2VlMzVlOGIxYjc1Y2UxMTliZmEuLmMzMTIwYmI1OWEwYTU0YjY5ODcwOTJmYWY1
NjkyZDQyNDE1M2U2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQ1Myw4ICs0NTMsOCBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90
aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCkud2luZG93SGlkZGVuKFtub3Rp
ZmljYXRpb24gb2JqZWN0XSk7IH1dOwogCiAgICAgLy8gTGVhayB0aGUgdHdvIG9ic2VydmVycyBz
byB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl
IHByb2Nlc3MuCi0gICAgQ0ZSZXRhaW4ob3JkZXJPblNjcmVlbk9ic2VydmVyKTsKLSAgICBDRlJl
dGFpbihvcmRlck9mZlNjcmVlbk9ic2VydmVyKTsKKyAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZU
eXBlUmVmKW9yZGVyT25TY3JlZW5PYnNlcnZlcik7CisgICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENG
VHlwZVJlZilvcmRlck9mZlNjcmVlbk9ic2VydmVyKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNz
OjpzZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhib29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbQppbmRleCA2ZjBiOWIyZWNiNDExOWZlMTJlNDBjZmQyNTUxOTM3OTJiNTYzYjIxLi44ZDFm
MWFjMThmYjZhZDRjZTc2NDU5Y2U4ZjdjOGZhNGIyYmI1NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMzg1
LDcgKzM4NSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1JlbW90ZU9iamVjdERlY29kZXIgewogICAg
IGNvbnN0IEFQSTo6QXJyYXkqIF9vYmplY3RTdHJlYW07CiAgICAgc2l6ZV90IF9vYmplY3RTdHJl
YW1Qb3NpdGlvbjsKIAotICAgIGNvbnN0IEhhc2hTZXQ8Q2xhc3M+KiBfYWxsb3dlZENsYXNzZXM7
CisgICAgY29uc3QgSGFzaFNldDxDRlR5cGVSZWY+KiBfYWxsb3dlZENsYXNzZXM7CiB9CiAKIC0g
KGlkKWluaXRXaXRoSW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilpbnRlcmZh
Y2Ugcm9vdE9iamVjdERpY3Rpb25hcnk6KGNvbnN0IEFQSTo6RGljdGlvbmFyeSopcm9vdE9iamVj
dERpY3Rpb25hcnkgcmVwbHlUb1NlbGVjdG9yOihTRUwpcmVwbHlUb1NlbGVjdG9yCkBAIC00MTAs
NyArNDEwLDcgQEAgLSAodm9pZClkZWNvZGVWYWx1ZU9mT2JqQ1R5cGU6KGNvbnN0IGNoYXIgKil0
eXBlIGF0Oih2b2lkICopZGF0YQogICAgIHN3aXRjaCAoKnR5cGUpIHsKICAgICAvLyBpbnQKICAg
ICBjYXNlICdpJzoKLSAgICAgICAgKnN0YXRpY19jYXN0PGludCo+KGRhdGEpID0gW2RlY29kZU9i
amVjdEZyb21PYmplY3RTdHJlYW0oc2VsZiwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGludFZhbHVl
XTsKKyAgICAgICAgKnN0YXRpY19jYXN0PGludCo+KGRhdGEpID0gW2RlY29kZU9iamVjdEZyb21P
YmplY3RTdHJlYW0oc2VsZiwgeyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10g
fSkgaW50VmFsdWVdOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBAIC00MzMsOSAr
NDMzLDkgQEAgLSAoaWQpZGVjb2RlT2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgIHJl
dHVybiBbc2VsZiBkZWNvZGVPYmplY3RPZkNsYXNzZXM6bmlsIGZvcktleTprZXldOwogfQogCi1z
dGF0aWMgaWQgZGVjb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqLCBjb25zdCBBUEk6
OkRpY3Rpb25hcnkqLCBjb25zdCBIYXNoU2V0PENsYXNzPiYgYWxsb3dlZENsYXNzZXMpOworc3Rh
dGljIGlkIGRlY29kZU9iamVjdChXS1JlbW90ZU9iamVjdERlY29kZXIgKiwgY29uc3QgQVBJOjpE
aWN0aW9uYXJ5KiwgY29uc3QgSGFzaFNldDxDRlR5cGVSZWY+JiBhbGxvd2VkQ2xhc3Nlcyk7CiAK
LXN0YXRpYyBpZCBkZWNvZGVPYmplY3RGcm9tT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RGVj
b2RlciAqZGVjb2RlciwgY29uc3QgSGFzaFNldDxDbGFzcz4mIGFsbG93ZWRDbGFzc2VzKQorc3Rh
dGljIGlkIGRlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oV0tSZW1vdGVPYmplY3REZWNvZGVy
ICpkZWNvZGVyLCBjb25zdCBIYXNoU2V0PENGVHlwZVJlZj4mIGFsbG93ZWRDbGFzc2VzKQogewog
ICAgIGlmICghZGVjb2Rlci0+X29iamVjdFN0cmVhbSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAg
LTQ1NCwxMSArNDU0LDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrSWZDbGFzc0lzQWxsb3dlZChXS1Jl
bW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIENsYXNzIG9iamVjdENsCiAgICAgaWYgKCFhbGxv
d2VkQ2xhc3NlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFsbG93ZWRDbGFzc2VzLT5j
b250YWlucyhvYmplY3RDbGFzcykpCisgICAgaWYgKGFsbG93ZWRDbGFzc2VzLT5jb250YWlucygo
X19icmlkZ2UgQ0ZUeXBlUmVmKW9iamVjdENsYXNzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChDbGFzcyBzdXBlcmNsYXNzID0gY2xhc3NfZ2V0U3VwZXJjbGFzcyhvYmplY3RDbGFzcyk7
IHN1cGVyY2xhc3M7IHN1cGVyY2xhc3MgPSBjbGFzc19nZXRTdXBlcmNsYXNzKHN1cGVyY2xhc3Mp
KSB7Ci0gICAgICAgIGlmIChhbGxvd2VkQ2xhc3Nlcy0+Y29udGFpbnMoc3VwZXJjbGFzcykpCisg
ICAgICAgIGlmIChhbGxvd2VkQ2xhc3Nlcy0+Y29udGFpbnMoKF9fYnJpZGdlIENGVHlwZVJlZilz
dXBlcmNsYXNzKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3OCw3ICs0Nzgs
NyBAQCBzdGF0aWMgdm9pZCB2YWxpZGF0ZUNsYXNzKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVj
b2RlciwgQ2xhc3Mgb2JqZWN0Q2xhc3MpCiAgICAgW2RlY29kZXIgdmFsaWRhdGVDbGFzc1N1cHBv
cnRzU2VjdXJlQ29kaW5nOm9iamVjdENsYXNzXTsKIH0KIAotc3RhdGljIHZvaWQgZGVjb2RlSW52
b2NhdGlvbkFyZ3VtZW50cyhXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIE5TSW52b2Nh
dGlvbiAqaW52b2NhdGlvbiwgY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiYgYWxsb3dlZEFy
Z3VtZW50Q2xhc3NlcywgTlNVSW50ZWdlciBmaXJzdEFyZ3VtZW50KQorc3RhdGljIHZvaWQgZGVj
b2RlSW52b2NhdGlvbkFyZ3VtZW50cyhXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiwgY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4m
IGFsbG93ZWRBcmd1bWVudENsYXNzZXMsIE5TVUludGVnZXIgZmlyc3RBcmd1bWVudCkKIHsKICAg
ICBOU01ldGhvZFNpZ25hdHVyZSAqbWV0aG9kU2lnbmF0dXJlID0gaW52b2NhdGlvbi5tZXRob2RT
aWduYXR1cmU7CiAgICAgTlNVSW50ZWdlciBhcmd1bWVudENvdW50ID0gbWV0aG9kU2lnbmF0dXJl
Lm51bWJlck9mQXJndW1lbnRzOwpAQCAtNDkxLDU2ICs0OTEsNTYgQEAgc3RhdGljIHZvaWQgZGVj
b2RlSW52b2NhdGlvbkFyZ3VtZW50cyhXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIE5T
SW52b2NhdGkKICAgICAgICAgc3dpdGNoICgqdHlwZSkgewogICAgICAgICAvLyBkb3VibGUKICAg
ICAgICAgY2FzZSAnZCc6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IFtkZWNvZGVPYmpl
Y3RGcm9tT2JqZWN0U3RyZWFtKGRlY29kZXIsIHsgW05TTnVtYmVyIGNsYXNzXSB9KSBkb3VibGVW
YWx1ZV07CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVj
dFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSB9
KSBkb3VibGVWYWx1ZV07CiAgICAgICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFs
dWUgYXRJbmRleDppXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gZmxvYXQKICAgICAgICAgY2FzZSAnZic6IHsKLSAgICAgICAgICAgIGZsb2F0IHZhbHVlID0g
W2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3Nd
IH0pIGZsb2F0VmFsdWVdOworICAgICAgICAgICAgZmxvYXQgdmFsdWUgPSBbZGVjb2RlT2JqZWN0
RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVy
IGNsYXNzXSB9KSBmbG9hdFZhbHVlXTsKICAgICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3Vt
ZW50OiZ2YWx1ZSBhdEluZGV4OmldOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBpbnQKICAgICAgICAgY2FzZSAnaSc6IHsKLSAgICAgICAgICAgIGludCB2YWx1
ZSA9IFtkZWNvZGVPYmplY3RGcm9tT2JqZWN0U3RyZWFtKGRlY29kZXIsIHsgW05TTnVtYmVyIGNs
YXNzXSB9KSBpbnRWYWx1ZV07CisgICAgICAgICAgICBpbnQgdmFsdWUgPSBbZGVjb2RlT2JqZWN0
RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVy
IGNsYXNzXSB9KSBpbnRWYWx1ZV07CiAgICAgICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVu
dDomdmFsdWUgYXRJbmRleDppXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gdW5zaWduZWQKICAgICAgICAgY2FzZSAnSSc6IHsKLSAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNO
dW1iZXIgY2xhc3NdIH0pIHVuc2lnbmVkSW50VmFsdWVdOworICAgICAgICAgICAgdW5zaWduZWQg
dmFsdWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRn
ZSBDRlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSB9KSB1bnNpZ25lZEludFZhbHVlXTsKICAgICAg
ICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmldOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjaGFyCiAgICAgICAgIGNhc2Ug
J2MnOiB7Ci0gICAgICAgICAgICBjaGFyIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RT
dHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGNoYXJWYWx1ZV07CisgICAgICAg
ICAgICBjaGFyIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2Rlciwg
eyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgY2hhclZhbHVlXTsKICAg
ICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmldOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBib29sCiAgICAgICAgIGNh
c2UgJ0InOiB7Ci0gICAgICAgICAgICBib29sIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmpl
Y3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGJvb2xWYWx1ZV07CisgICAg
ICAgICAgICBib29sIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2Rl
ciwgeyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgYm9vbFZhbHVlXTsK
ICAgICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmldOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBsb25nCiAgICAgICAg
IGNhc2UgJ3EnOiB7Ci0gICAgICAgICAgICBsb25nIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21P
YmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGxvbmdWYWx1ZV07Cisg
ICAgICAgICAgICBsb25nIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVj
b2RlciwgeyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgbG9uZ1ZhbHVl
XTsKICAgICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4Omld
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB1bnNpZ25lZCBs
b25nCiAgICAgICAgIGNhc2UgJ1EnOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVl
ID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xh
c3NdIH0pIHVuc2lnbmVkTG9uZ1ZhbHVlXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFs
dWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBD
RlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSB9KSB1bnNpZ25lZExvbmdWYWx1ZV07CiAgICAgICAg
ICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRleDppXTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NTksMTMgKzU1OSwxMyBAQCBzdGF0aWMgdm9pZCBk
ZWNvZGVJbnZvY2F0aW9uQXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2Rlciwg
TlNJbnZvY2F0aQogICAgICAgICAvLyBzdHJ1Y3QKICAgICAgICAgY2FzZSAneyc6CiAgICAgICAg
ICAgICBpZiAoIXN0cmNtcCh0eXBlLCBAZW5jb2RlKE5TUmFuZ2UpKSkgewotICAgICAgICAgICAg
ICAgIE5TUmFuZ2UgdmFsdWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVy
LCB7IFtOU1ZhbHVlIGNsYXNzXSB9KSByYW5nZVZhbHVlXTsKKyAgICAgICAgICAgICAgICBOU1Jh
bmdlIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKVtOU1ZhbHVlIGNsYXNzXSB9KSByYW5nZVZhbHVlXTsKICAgICAgICAg
ICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRleDppXTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcCh0eXBlLCBA
ZW5jb2RlKENHU2l6ZSkpKSB7CiAgICAgICAgICAgICAgICAgQ0dTaXplIHZhbHVlOwotICAgICAg
ICAgICAgICAgIHZhbHVlLndpZHRoID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVj
b2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGRvdWJsZVZhbHVlXTsKLSAgICAgICAgICAgICAg
ICB2YWx1ZS5oZWlnaHQgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7
IFtOU051bWJlciBjbGFzc10gfSkgZG91YmxlVmFsdWVdOworICAgICAgICAgICAgICAgIHZhbHVl
LndpZHRoID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyAoX19icmlk
Z2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgZG91YmxlVmFsdWVdOworICAgICAgICAg
ICAgICAgIHZhbHVlLmhlaWdodCA9IFtkZWNvZGVPYmplY3RGcm9tT2JqZWN0U3RyZWFtKGRlY29k
ZXIsIHsgKF9fYnJpZGdlIENGVHlwZVJlZilbTlNOdW1iZXIgY2xhc3NdIH0pIGRvdWJsZVZhbHVl
XTsKICAgICAgICAgICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRl
eDppXTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTY3NSw3ICs2
NzUsNyBAQCBzdGF0aWMgaWQgZGVjb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVj
b2RlcikKICAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CiB9CiAKLXN0YXRpYyBpZCBk
ZWNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyLCBjb25zdCBBUEk6OkRp
Y3Rpb25hcnkqIGRpY3Rpb25hcnksIGNvbnN0IEhhc2hTZXQ8Q2xhc3M+JiBhbGxvd2VkQ2xhc3Nl
cykKK3N0YXRpYyBpZCBkZWNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVy
LCBjb25zdCBBUEk6OkRpY3Rpb25hcnkqIGRpY3Rpb25hcnksIGNvbnN0IEhhc2hTZXQ8Q0ZUeXBl
UmVmPiYgYWxsb3dlZENsYXNzZXMpCiB7CiAgICAgaWYgKCFkaWN0aW9uYXJ5KQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtNjg2LDcgKzY4Niw3IEBAIHN0YXRpYyBpZCBkZWNvZGVPYmplY3QoV0tS
ZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyLCBjb25zdCBBUEk6OkRpY3Rpb25hcnkqIGRpCiAg
ICAgaWYgKGFsbG93ZWRDbGFzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGRlY29kZU9i
amVjdChkZWNvZGVyKTsKIAotICAgIFNldEZvclNjb3BlPGNvbnN0IEhhc2hTZXQ8Q2xhc3M+Kj4g
YWxsb3dlZENsYXNzZXNDaGFuZ2UoZGVjb2Rlci0+X2FsbG93ZWRDbGFzc2VzLCAmYWxsb3dlZENs
YXNzZXMpOworICAgIFNldEZvclNjb3BlPGNvbnN0IEhhc2hTZXQ8Q0ZUeXBlUmVmPio+IGFsbG93
ZWRDbGFzc2VzQ2hhbmdlKGRlY29kZXItPl9hbGxvd2VkQ2xhc3NlcywgJmFsbG93ZWRDbGFzc2Vz
KTsKICAgICByZXR1cm4gZGVjb2RlT2JqZWN0KGRlY29kZXIpOwogfQogCkBAIC03NjIsOSArNzYy
LDkgQEAgLSAoQk9PTClyZXF1aXJlc1NlY3VyZUNvZGluZwogCiAtIChpZClkZWNvZGVPYmplY3RP
ZkNsYXNzZXM6KE5TU2V0ICopY2xhc3NlcyBmb3JLZXk6KE5TU3RyaW5nICopa2V5CiB7Ci0gICAg
SGFzaFNldDxDbGFzcz4gYWxsb3dlZENsYXNzZXM7CisgICAgSGFzaFNldDxDRlR5cGVSZWY+IGFs
bG93ZWRDbGFzc2VzOwogICAgIGZvciAoQ2xhc3MgYWxsb3dlZENsYXNzIGluIGNsYXNzZXMpCi0g
ICAgICAgIGFsbG93ZWRDbGFzc2VzLmFkZChhbGxvd2VkQ2xhc3MpOworICAgICAgICBhbGxvd2Vk
Q2xhc3Nlcy5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhbGxvd2VkQ2xhc3MpOwogCiAgICAgcmV0
dXJuIGRlY29kZU9iamVjdChzZWxmLCBfY3VycmVudERpY3Rpb25hcnktPmdldDxBUEk6OkRpY3Rp
b25hcnk+KGVzY2FwZUtleShrZXkpKSwgYWxsb3dlZENsYXNzZXMpOwogfQpAQCAtNzc1LDggKzc3
NSw4IEBAIC0gKE5TU2V0ICopYWxsb3dlZENsYXNzZXMKICAgICAgICAgcmV0dXJuIFtOU1NldCBz
ZXRdOwogCiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBp
bml0XSk7Ci0gICAgZm9yIChDbGFzcyBhbGxvd2VkQ2xhc3MgOiAqX2FsbG93ZWRDbGFzc2VzKQot
ICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDphbGxvd2VkQ2xhc3NdOworICAgIGZvciAoYXV0byBh
bGxvd2VkQ2xhc3MgOiAqX2FsbG93ZWRDbGFzc2VzKQorICAgICAgICBbcmVzdWx0IGFkZE9iamVj
dDooX19icmlkZ2UgQ2xhc3MpYWxsb3dlZENsYXNzXTsKIAogICAgIHJldHVybiByZXN1bHQuYXV0
b3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCmluZGV4IGMxMzcxNDA4OGFjMTI3OWRk
Mjk4ZGJiMjU2ZGY5Yjg2ZGNjNDUwNTQuLjYzNDQ2Yjc2ODAzNzk0Mjk0YzViYmZmNDM0ZTFkNjc0
MmJlNmEzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQpAQCAtNDYsMTIgKzQ2LDEyIEBAIC0gKE5T
U3RyaW5nICopX3R5cGVTdHJpbmc7CiBAZW5kCiAKIHN0cnVjdCBNZXRob2RJbmZvIHsKLSAgICBW
ZWN0b3I8SGFzaFNldDxDbGFzcz4+IGFsbG93ZWRBcmd1bWVudENsYXNzZXM7CisgICAgVmVjdG9y
PEhhc2hTZXQ8Q0ZUeXBlUmVmPj4gYWxsb3dlZEFyZ3VtZW50Q2xhc3NlczsKIAogICAgIHN0cnVj
dCBSZXBseUluZm8gewogICAgICAgICBOU1VJbnRlZ2VyIHJlcGx5UG9zaXRpb247CiAgICAgICAg
IENTdHJpbmcgcmVwbHlTaWduYXR1cmU7Ci0gICAgICAgIFZlY3RvcjxIYXNoU2V0PENsYXNzPj4g
YWxsb3dlZFJlcGx5Q2xhc3NlczsKKyAgICAgICAgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4g
YWxsb3dlZFJlcGx5Q2xhc3NlczsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVwbHlJbmZv
PiByZXBseUluZm87CiB9OwpAQCAtNzAsMTIgKzcwLDE1IEBAIHN0YXRpYyBib29sIGlzQ29udGFp
bmVyQ2xhc3MoQ2xhc3Mgb2JqZWN0Q2xhc3MpCiAgICAgcmV0dXJuIG9iamVjdENsYXNzID09IGFy
cmF5Q2xhc3MgfHwgb2JqZWN0Q2xhc3MgPT0gZGljdGlvbmFyeUNsYXNzOwogfQogCi1zdGF0aWMg
SGFzaFNldDxDbGFzcz4mIHByb3BlcnR5TGlzdENsYXNzZXMoKQorc3RhdGljIEhhc2hTZXQ8Q0ZU
eXBlUmVmPiYgcHJvcGVydHlMaXN0Q2xhc3NlcygpCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PENsYXNzPj4gcHJvcGVydHlMaXN0Q2xhc3NlczsKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4gcHJvcGVydHlMaXN0Q2xhc3Nl
czsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHByb3BlcnR5TGlzdENsYXNzZXMuY29uc3RydWN0
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDbGFzcz4geyBbTlNBcnJheSBjbGFzc10sIFtOU0RpY3Rp
b25hcnkgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdIH0pOworICAg
ICAgICBwcm9wZXJ0eUxpc3RDbGFzc2VzLmNvbnN0cnVjdChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
Q0ZUeXBlUmVmPiB7CisgICAgICAgICAgICAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU0FycmF5IGNs
YXNzXSwgKF9fYnJpZGdlIENGVHlwZVJlZilbTlNEaWN0aW9uYXJ5IGNsYXNzXSwKKyAgICAgICAg
ICAgIChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilbTlNTdHJpbmcgY2xhc3NdCisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgcmV0dXJu
IHByb3BlcnR5TGlzdENsYXNzZXM7CkBAIC04Myw3ICs4Niw3IEBAIHN0YXRpYyBIYXNoU2V0PENs
YXNzPiYgcHJvcGVydHlMaXN0Q2xhc3NlcygpCiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNZXRo
b2QoTWV0aG9kSW5mbyYgbWV0aG9kSW5mbywgUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0
b3IsIE5TTWV0aG9kU2lnbmF0dXJlICptZXRob2RTaWduYXR1cmUsIGJvb2wgZm9yUmVwbHlCbG9j
aykKIHsKLSAgICBWZWN0b3I8SGFzaFNldDxDbGFzcz4+IGFsbG93ZWRDbGFzc2VzOworICAgIFZl
Y3RvcjxIYXNoU2V0PENGVHlwZVJlZj4+IGFsbG93ZWRDbGFzc2VzOwogCiAgICAgTlNVSW50ZWdl
ciBmaXJzdEFyZ3VtZW50ID0gZm9yUmVwbHlCbG9jayA/IDEgOiAyOwogICAgIE5TVUludGVnZXIg
YXJndW1lbnRDb3VudCA9IG1ldGhvZFNpZ25hdHVyZS5udW1iZXJPZkFyZ3VtZW50czsKQEAgLTEy
Nyw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTWV0aG9kKE1ldGhvZEluZm8mIG1l
dGhvZEluZm8sIFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbAogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBhbGxvd2VkQ2xhc3Nlcy5hcHBlbmQoeyBvYmplY3RD
bGFzcyB9KTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMuYXBwZW5kKHsgKF9fYnJpZGdlIENGVHlw
ZVJlZilvYmplY3RDbGFzcyB9KTsKICAgICB9CiAKICAgICBpZiAoZm9yUmVwbHlCbG9jaykKQEAg
LTIxMiw4ICsyMTUsOCBAQCAtIChOU1N0cmluZyAqKWRlYnVnRGVzY3JpcHRpb24KICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6QCJ7Il0pOwogCiAgICAgICAgICAgICBhdXRvIG9yZGVyZWRBcmd1bWVudENsYXNz
ZXMgPSBjb3B5VG9WZWN0b3IoYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcyk7Ci0gICAgICAgICAgICBz
dGQ6OnNvcnQob3JkZXJlZEFyZ3VtZW50Q2xhc3Nlcy5iZWdpbigpLCBvcmRlcmVkQXJndW1lbnRD
bGFzc2VzLmVuZCgpLCBbXShDbGFzcyBhLCBDbGFzcyBiKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIENTdHJpbmcoY2xhc3NfZ2V0TmFtZShhKSkgPCBDU3RyaW5nKGNsYXNzX2dldE5hbWUoYikp
OworICAgICAgICAgICAgc3RkOjpzb3J0KG9yZGVyZWRBcmd1bWVudENsYXNzZXMuYmVnaW4oKSwg
b3JkZXJlZEFyZ3VtZW50Q2xhc3Nlcy5lbmQoKSwgW10oQ0ZUeXBlUmVmIGEsIENGVHlwZVJlZiBi
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoY2xhc3NfZ2V0TmFtZSgoX19icmlk
Z2UgQ2xhc3MpYSkpIDwgQ1N0cmluZyhjbGFzc19nZXROYW1lKChfX2JyaWRnZSBDbGFzcyliKSk7
CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgYm9vbCBuZWVkc0NvbW1hID0gZmFsc2U7
CkBAIC0yMjEsNyArMjI0LDcgQEAgLSAoTlNTdHJpbmcgKilkZWJ1Z0Rlc2NyaXB0aW9uCiAgICAg
ICAgICAgICAgICAgaWYgKG5lZWRzQ29tbWEpCiAgICAgICAgICAgICAgICAgICAgIFtyZXN1bHQg
YXBwZW5kU3RyaW5nOkAiLCAiXTsKIAotICAgICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kRm9y
bWF0OkAiJXMiLCBjbGFzc19nZXROYW1lKGFyZ3VtZW50Q2xhc3MpXTsKKyAgICAgICAgICAgICAg
ICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiVzIiwgY2xhc3NfZ2V0TmFtZSgoX19icmlkZ2UgQ2xh
c3MpYXJndW1lbnRDbGFzcyldOwogICAgICAgICAgICAgICAgIG5lZWRzQ29tbWEgPSB0cnVlOwog
ICAgICAgICAgICAgfQogCkBAIC0yNTIsNyArMjU1LDcgQEAgLSAoTlNTdHJpbmcgKilkZWJ1Z0Rl
c2NyaXB0aW9uCiAgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCi1zdGF0aWMg
SGFzaFNldDxDbGFzcz4mIGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KF9XS1JlbW90ZU9iamVj
dEludGVyZmFjZSAqaW50ZXJmYWNlLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYXJndW1lbnRJ
bmRleCwgYm9vbCByZXBseUJsb2NrKQorc3RhdGljIEhhc2hTZXQ8Q0ZUeXBlUmVmPiYgY2xhc3Nl
c0ZvclNlbGVjdG9yQXJndW1lbnQoX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2Us
IFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBhcmd1bWVudEluZGV4LCBib29sIHJlcGx5QmxvY2sp
CiB7CiAgICAgYXV0byBpdCA9IGludGVyZmFjZS0+X21ldGhvZHMuZmluZChzZWxlY3Rvcik7CiAg
ICAgaWYgKGl0ID09IGludGVyZmFjZS0+X21ldGhvZHMuZW5kKCkpCkBAIC0yODAsMTYgKzI4Mywx
NiBAQCAtIChOU1NldCAqKWNsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yIGFyZ3VtZW50
SW5kZXg6KE5TVUludGVnZXIpYXJndW1lbnRJbgogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhb
W05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogCiAgICAgZm9yIChhdXRvIGFsbG93ZWRDbGFz
cyA6IGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KHNlbGYsIHNlbGVjdG9yLCBhcmd1bWVudElu
ZGV4LCBvZlJlcGx5KSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6YWxsb3dlZENsYXNzXTsK
KyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6KF9fYnJpZGdlIENsYXNzKWFsbG93ZWRDbGFzc107
CiAKICAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0Q2xh
c3NlczooTlNTZXQgKiljbGFzc2VzIGZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IgYXJndW1lbnRJ
bmRleDooTlNVSW50ZWdlcilhcmd1bWVudEluZGV4IG9mUmVwbHk6KEJPT0wpb2ZSZXBseQogewot
ICAgIEhhc2hTZXQ8Q2xhc3M+IGFsbG93ZWRDbGFzc2VzOworICAgIEhhc2hTZXQ8Q0ZUeXBlUmVm
PiBhbGxvd2VkQ2xhc3NlczsKICAgICBmb3IgKENsYXNzIGFsbG93ZWRDbGFzcyBpbiBjbGFzc2Vz
KQotICAgICAgICBhbGxvd2VkQ2xhc3Nlcy5hZGQoYWxsb3dlZENsYXNzKTsKKyAgICAgICAgYWxs
b3dlZENsYXNzZXMuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYWxsb3dlZENsYXNzKTsKIAogICAg
IGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KHNlbGYsIHNlbGVjdG9yLCBhcmd1bWVudEluZGV4
LCBvZlJlcGx5KSA9IFdURk1vdmUoYWxsb3dlZENsYXNzZXMpOwogfQpAQCAtMzQ0LDE0ICszNDcs
MTQgQEAgLSAoTlNNZXRob2RTaWduYXR1cmUgKilfbWV0aG9kU2lnbmF0dXJlRm9yUmVwbHlCbG9j
a09mU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogICAgIHJldHVybiBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RJbmZvLnJlcGx5SW5mby0+cmVwbHlTaWduYXR1
cmUuZGF0YSgpXTsKIH0KIAotLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiYpX2FsbG93
ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCistIChjb25zdCBWZWN0
b3I8SGFzaFNldDxDRlR5cGVSZWY+PiYpX2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3Rv
cjooU0VMKXNlbGVjdG9yCiB7CiAgICAgQVNTRVJUKF9tZXRob2RzLmNvbnRhaW5zKHNlbGVjdG9y
KSk7CiAKICAgICByZXR1cm4gX21ldGhvZHMuZmluZChzZWxlY3RvciktPnZhbHVlLmFsbG93ZWRB
cmd1bWVudENsYXNzZXM7CiB9CiAKLS0gKGNvbnN0IFZlY3RvcjxIYXNoU2V0PENsYXNzPj4mKV9h
bGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yUmVwbHlCbG9ja09mU2VsZWN0b3I6KFNFTClzZWxlY3Rv
cgorLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4mKV9hbGxvd2VkQXJndW1lbnRD
bGFzc2VzRm9yUmVwbHlCbG9ja09mU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewogICAgIEFTU0VS
VChfbWV0aG9kcy5jb250YWlucyhzZWxlY3RvcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJ
bnRlcm5hbC5oCmluZGV4IDE3MDY0MmNlZDM1MGY2MWQ1MWE2NWJmM2IxMDI2MjY1YTJlMjljYzku
LjQ1ZWYwYTdiZDJmMGRmN2JhOTMyNjk4NzYyNmU5NTVkZTg4MTEwM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmpl
Y3RJbnRlcmZhY2VJbnRlcm5hbC5oCkBAIC0zNSw4ICszNSw4IEBACiAKIC0gKE5TTWV0aG9kU2ln
bmF0dXJlICopX21ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3I7CiAtIChO
U01ldGhvZFNpZ25hdHVyZSAqKV9tZXRob2RTaWduYXR1cmVGb3JSZXBseUJsb2NrT2ZTZWxlY3Rv
cjooU0VMKXNlbGVjdG9yOwotLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiYpX2FsbG93
ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yOwotLSAoY29uc3QgVmVj
dG9yPEhhc2hTZXQ8Q2xhc3M+PiYpX2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JSZXBseUJsb2Nr
T2ZTZWxlY3RvcjooU0VMKXNlbGVjdG9yOworLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBl
UmVmPj4mKV9hbGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcjsK
Ky0gKGNvbnN0IFZlY3RvcjxIYXNoU2V0PENGVHlwZVJlZj4+JilfYWxsb3dlZEFyZ3VtZW50Q2xh
c3Nlc0ZvclJlcGx5QmxvY2tPZlNlbGVjdG9yOihTRUwpc2VsZWN0b3I7CiAKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KaW5kZXggNjFkMWQ0N2I3
ZmUzMGE4MDk0MjlmMmFlYjFkM2E5MTRmMGE1NWQ3MS4uOThkN2ZhOWY4Njk4MmNjMTI1ZmVjOTQw
ZWI4NWRkYjNiMGQ2YWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tTdHJpbmdDRi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0
cmluZ0NGLm1tCkBAIC01MCw4ICs1MCwxMCBAQCBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZyhDRlN0cmluZ1JlZiBjZlN0cmluZykKIHsKICNpZiBXS19BUElfRU5BQkxFRAog
ICAgIC8vIFNpbmNlIFdLTlNTdHJpbmcgaXMgYW4gaW50ZXJuYWwgY2xhc3Mgd2l0aCBubyBzdWJj
bGFzc2VzLCB3ZSBjYW4gZG8gYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2suCi0gICAgaWYgKG9iamVj
dF9nZXRDbGFzcygoX19icmlkZ2UgTlNTdHJpbmcgKiljZlN0cmluZykgPT0gd2tOU1N0cmluZ0Ns
YXNzKCkpCi0gICAgICAgIHJldHVybiB0b0FQSShzdGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KCZb
KFdLTlNTdHJpbmcgKilbKE5TU3RyaW5nICopY2ZTdHJpbmcgcmV0YWluXSBfYXBpT2JqZWN0XSkp
OworICAgIGlmIChvYmplY3RfZ2V0Q2xhc3MoKF9fYnJpZGdlIE5TU3RyaW5nICopY2ZTdHJpbmcp
ID09IHdrTlNTdHJpbmdDbGFzcygpKSB7CisgICAgICAgIENGUmV0YWluKGNmU3RyaW5nKTsKKyAg
ICAgICAgcmV0dXJuIHRvQVBJKHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oJlsoV0tOU1N0cmlu
ZyAqKShfX2JyaWRnZSBOU1N0cmluZyAqKWNmU3RyaW5nIF9hcGlPYmplY3RdKSk7CisgICAgfQog
I2VuZGlmCiAgICAgU3RyaW5nIHN0cmluZyhjZlN0cmluZyk7CiAgICAgcmV0dXJuIHRvQ29waWVk
QVBJKHN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9X
S1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRl
eCBlZTYyN2IzY2ExNWExN2I4ZjYyNGU0ZThmYjJhNDU5NTNiYzM3YWFlLi5mNDNlMWRmMmNjNDcy
ZGQ2ZDg4NTJkMmRkMDRmYjM1NTEzMTA0MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NmL1dLVVJMQ0YubW0KQEAgLTU0LDggKzU0LDEwIEBAIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0
aENGVVJMKENGVVJMUmVmIGNmVVJMKQogCiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICAvLyBTaW5j
ZSBXS05TVVJMIGlzIGFuIGludGVybmFsIGNsYXNzIHdpdGggbm8gc3ViY2xhc3Nlcywgd2UgY2Fu
IGRvIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrLgotICAgIGlmIChvYmplY3RfZ2V0Q2xhc3MoKF9f
YnJpZGdlIE5TVVJMICopY2ZVUkwpID09IHdrTlNVUkxDbGFzcygpKQotICAgICAgICByZXR1cm4g
dG9BUEkoc3RhdGljX2Nhc3Q8QVBJOjpVUkwqPigmWyhXS05TVVJMICopWyhOU1VSTCAqKWNmVVJM
IHJldGFpbl0gX2FwaU9iamVjdF0pKTsKKyAgICBpZiAob2JqZWN0X2dldENsYXNzKChfX2JyaWRn
ZSBOU1VSTCAqKWNmVVJMKSA9PSB3a05TVVJMQ2xhc3MoKSkgeworICAgICAgICBDRlJldGFpbihj
ZlVSTCk7CisgICAgICAgIHJldHVybiB0b0FQSShzdGF0aWNfY2FzdDxBUEk6OlVSTCo+KCZbKFdL
TlNVUkwgKikoX19icmlkZ2UgTlNVUkwgKiljZlVSTCBfYXBpT2JqZWN0XSkpOworICAgIH0KICNl
bmRpZgogCiAgICAgQ1N0cmluZyB1cmxCeXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQppbmRleCA2ZjNkMjg0ZmQ4MGRmYTU5MmNlNWNlYTgzMDE3YjAwYjE2NzE5MzQ2
Li40NDhmZmQyOGFjYTdiOGYwZDkxMWQ3YzNjMmJkNzQ0ZjIyZjg0N2Y3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC05NSwxNyArOTUsMTcgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIHZvaWQgT2JqZWN0OjpyZWYoKQogewotICAgIENGUmV0YWluKHdyYXBwZXIoKSk7
CisgICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZil3cmFwcGVyKCkpOwogfQogCiB2b2lk
IE9iamVjdDo6ZGVyZWYoKQogewotICAgIENGUmVsZWFzZSh3cmFwcGVyKCkpOworICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKIHN0YXRpYyBpZCA8V0tP
YmplY3Q+IGFsbG9jYXRlV0tPYmplY3QoQ2xhc3MgY2xzLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gTlNBbGxvY2F0ZU9iamVjdChjbHMsIHNpemUgKyBtYXhpbXVtRXh0cmFTcGFjZUZvckFs
aWdubWVudCwgbnVsbHB0cik7CisgICAgcmV0dXJuIGNsYXNzX2NyZWF0ZUluc3RhbmNlKGNscywg
c2l6ZSArIG1heGltdW1FeHRyYVNwYWNlRm9yQWxpZ25tZW50KTsKIH0KIAogQVBJOjpPYmplY3Qm
IE9iamVjdDo6ZnJvbVdLT2JqZWN0RXh0cmFTcGFjZShpZCA8V0tPYmplY3Q+IG9iaikKQEAgLTM3
Miw3ICszNzIsNyBAQCB2b2lkKiBPYmplY3Q6OndyYXAoQVBJOjpPYmplY3QqIG9iamVjdCkKICAg
ICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dm9pZCo+KG9iamVjdC0+d3JhcHBlcigpKTsKKyAgICByZXR1cm4gKF9fYnJpZGdl
IHZvaWQqKW9iamVjdC0+d3JhcHBlcigpOwogfQogCiBBUEk6Ok9iamVjdCogT2JqZWN0Ojp1bndy
YXAodm9pZCogb2JqZWN0KQpAQCAtMzgwLDcgKzM4MCw3IEBAIEFQSTo6T2JqZWN0KiBPYmplY3Q6
OnVud3JhcCh2b2lkKiBvYmplY3QpCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuICZzdGF0aWNfY2FzdDxpZCA8V0tPYmplY3Q+PihvYmplY3Qp
Ll9hcGlPYmplY3Q7CisgICAgcmV0dXJuICYoKF9fYnJpZGdlIGlkIDxXS09iamVjdD4pb2JqZWN0
KS5fYXBpT2JqZWN0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIuaAppbmRleCAzMDFiYTkxMDhmYTVjZjRjOTc4ZTgzM2Y1ZmJh
NWEzMTIwYzIyZThlLi4wN2IzN2U5ODAyMTkxY2RkZTlkNTUzMTM0MGMzMGQ0YWQxYWVhMDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oCkBAIC0zNSw3ICszNSw3
IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZUhvc3Q7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgTGF5ZXJPclZpZXcgKj4gUmVsYXRlZExheWVy
TWFwOworICAgIHVzaW5nIFJlbGF0ZWRMYXllck1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBDRlR5cGVSZWY+OwogICAgIHN0YXRpYyB2b2lkIGFw
cGx5UHJvcGVydGllcyhDQUxheWVyICosIFJlbW90ZUxheWVyVHJlZUhvc3QqLCBjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3QgUmVsYXRlZExh
eWVyTWFwJiwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlKTsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKFVJVmlldyAq
LCBSZW1vdGVMYXllclRyZWVIb3N0KiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyUHJvcGVydGllcyYsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYsIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5tbQppbmRleCA3MjZhNWI3MTNmM2IwOGExMGM2MGNiMDQ0NGM2ODljMzA0
ZmI5ODNkLi5kZjNhMjFmODg4YWU5MzQ1NDdhN2NhMTJiYjY2YWRhMDk1YTQxMjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KQEAgLTI2Myw3ICsyNjMsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKENB
TGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllcgogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGNoaWxkcmVuID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OnByb3BlcnRpZXMuY2hpbGRyZW4uc2l6ZSgpXSk7CiAgICAgICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBwcm9wZXJ0aWVzLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVsYXRl
ZExheWVycy5nZXQoY2hpbGQpKTsKLSAgICAgICAgICAgIFtjaGlsZHJlbiBhZGRPYmplY3Q6cmVs
YXRlZExheWVycy5nZXQoY2hpbGQpXTsKKyAgICAgICAgICAgIFtjaGlsZHJlbiBhZGRPYmplY3Q6
KF9fYnJpZGdlIGlkKXJlbGF0ZWRMYXllcnMuZ2V0KGNoaWxkKV07CiAgICAgICAgIH0KIAogICAg
ICAgICBsYXllci5zdWJsYXllcnMgPSBjaGlsZHJlbi5nZXQoKTsKQEAgLTI4MCw3ICsyODAsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKENB
TGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllcgogICAgICAgICAgICAgaWYgKCFtYXNrVmlldy5sYXll
ci5zdXBlcmxheWVyKQogICAgICAgICAgICAgICAgIGxheWVyLm1hc2sgPSBtYXNrVmlldy5sYXll
cjsKICNlbHNlCi0gICAgICAgICAgICBDQUxheWVyICptYXNrTGF5ZXIgPSByZWxhdGVkTGF5ZXJz
LmdldChwcm9wZXJ0aWVzLm1hc2tMYXllcklEKTsKKyAgICAgICAgICAgIENBTGF5ZXIgKm1hc2tM
YXllciA9IChfX2JyaWRnZSBDQUxheWVyICopcmVsYXRlZExheWVycy5nZXQocHJvcGVydGllcy5t
YXNrTGF5ZXJJRCk7CiAgICAgICAgICAgICBBU1NFUlQoIW1hc2tMYXllci5zdXBlcmxheWVyKTsK
ICAgICAgICAgICAgIGlmICghbWFza0xheWVyLnN1cGVybGF5ZXIpCiAgICAgICAgICAgICAgICAg
bGF5ZXIubWFzayA9IG1hc2tMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmlu
ZGV4IGU2ZWVmY2RmMGZmN2VlMGM3MGUyM2FiMjNjMDg5NjlkYTkzZjhiMTMuLmQ2MjRhYTQxYzVi
MWE1NWZlNmRhNDUyYTY5ZDE4ZGVmYzI1YzJhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5tbQpAQCAtODMsOSArODMsOSBAQCBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyIHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tCcm93c2luZ0NvbnRleHRQb2xp
Y3lEZWxlZ2F0ZT4+IF9wb2xpY3lEZWxlZ2F0ZTsKIH0KIAotc3RhdGljIEhhc2hNYXA8V2ViUGFn
ZVByb3h5KiwgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICo+JiBicm93c2luZ0NvbnRleHRD
b250cm9sbGVyTWFwKCkKK3N0YXRpYyBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3Vu
cmV0YWluZWQgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICo+JiBicm93c2luZ0NvbnRleHRD
b250cm9sbGVyTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQ
YWdlUHJveHkqLCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKj4+IGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJNYXA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViUGFn
ZVByb3h5KiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
Kj4+IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJNYXA7CiAgICAgcmV0dXJuIGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCmluZGV4IGNlMjNkMGVjOGEzMmQ2NzFmZDMwNjYzMzE5
YTNhMmMxYjZjNWZiMGYuLmFiZTQzNDgzY2U5ZmViNmQxZGMzZWMyM2QxMDc1MDBjMjQ2MzM3Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlv
bi5tbQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0Nv
bm5lY3Rpb25SZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZQogICAgIGlmIChb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb25uZWN0aW9uOmRpZFJlY2Vp
dmVNZXNzYWdlV2l0aE5hbWU6Ym9keTopXSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG5zTWVzc2FnZU5hbWUgPSBhZG9wdENGKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1lc3NhZ2VOYW1lKSk7CiAgICAgICAgIFJldGFpblB0cjxpZD4gbnNNZXNz
YWdlQm9keSA9IHN0YXRpY19jYXN0PE9iakNPYmplY3RHcmFwaCo+KHRvSW1wbChtZXNzYWdlQm9k
eSkpLT5yb290T2JqZWN0KCk7Ci0gICAgICAgIFtkZWxlZ2F0ZSBjb25uZWN0aW9uOmNvbm5lY3Rp
b24gZGlkUmVjZWl2ZU1lc3NhZ2VXaXRoTmFtZTooTlNTdHJpbmcgKiluc01lc3NhZ2VOYW1lLmdl
dCgpIGJvZHk6bnNNZXNzYWdlQm9keS5nZXQoKV07CisgICAgICAgIFtkZWxlZ2F0ZSBjb25uZWN0
aW9uOmNvbm5lY3Rpb24gZGlkUmVjZWl2ZU1lc3NhZ2VXaXRoTmFtZTooX19icmlkZ2UgTlNTdHJp
bmcgKiluc01lc3NhZ2VOYW1lLmdldCgpIGJvZHk6bnNNZXNzYWdlQm9keS5nZXQoKV07CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50UnVsZUxpc3RTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCmluZGV4IDRiNDFiNDM5NjhjMmU4YjAwNTlhYTUx
ZDQzOGFlM2EzM2NiZTdiYmEuLmJhNzQyYWU1OGZlMjc1YWJmNDRjNWNkMGZhYjFhMjU3ZGE1NmZk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRl
bnRSdWxlTGlzdFN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCkBAIC03NCwyNyArNzQsNyBAQCArIChpbnN0YW5j
ZXR5cGUpc3RvcmVXaXRoVVJMOihOU1VSTCAqKXVybAogCiAtICh2b2lkKWNvbXBpbGVDb250ZW50
UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRl
bnRSdWxlTGlzdDooTlNTdHJpbmcgKillbmNvZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlm
aWVyOmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDplbmNvZGVkQ29udGVudFJ1bGVM
aXN0IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIHJlbGVhc2VzQXJndW1lbnQ6
Tk9dOwotfQotCi0tICh2b2lkKV9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICop
ZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250
ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciByZWxlYXNlc0FyZ3Vt
ZW50OihCT09MKXJlbGVhc2VzQXJndW1lbnQKLXsKLSAgICBTdHJpbmcganNvbihlbmNvZGVkQ29u
dGVudFJ1bGVMaXN0KTsKLSAgICBpZiAocmVsZWFzZXNBcmd1bWVudCkgewotICAgICAgICBbZW5j
b2RlZENvbnRlbnRSdWxlTGlzdCByZWxlYXNlXTsKLSAgICAgICAgZW5jb2RlZENvbnRlbnRSdWxl
TGlzdCA9IG5pbDsKLSAgICB9Ci0KLSAgICBfY29udGVudFJ1bGVMaXN0U3RvcmUtPmNvbXBpbGVD
b250ZW50UnVsZUxpc3QoaWRlbnRpZmllciwgV1RGTW92ZShqc29uKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmUHRyPEFQSTo6Q29udGVu
dFJ1bGVMaXN0PiBjb250ZW50UnVsZUxpc3QsIHN0ZDo6ZXJyb3JfY29kZSBlcnJvcikgewotICAg
ICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGF1dG8gdXNlckluZm8gPSBAe05TSGVscEFu
Y2hvckVycm9yS2V5OiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJ1bGUgbGlzdCBjb21w
aWxhdGlvbiBmYWlsZWQ6ICVzIiwgZXJyb3IubWVzc2FnZSgpLmNfc3RyKCldfTsKLQotICAgICAg
ICAgICAgLy8gZXJyb3IudmFsdWUoKSBjb3VsZCBoYXZlIGEgc3BlY2lmaWMgY29tcGlsZXIgZXJy
b3IgdGhhdCBpcyBub3QgZXF1YWwgdG8gV0tFcnJvckNvbnRlbnRSdWxlTGlzdFN0b3JlQ29tcGls
ZUZhaWxlZC4KLSAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gdXNlIGVycm9yLm1lc3NhZ2UsIGJ1
dCBoZXJlIHdlIHdhbnQgdG8gb25seSBwYXNzIG9uIENvbXBpbGVGYWlsZWQgd2l0aCB1c2VySW5m
byBmcm9tIHRoZSBzdGQ6OmVycm9yX2NvZGUuCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JDb250ZW50UnVsZUxpc3RTdG9yZUNvbXBpbGVGYWlsZWQgdXNlckluZm86dXNlcklu
Zm9dKTsKLSAgICAgICAgfQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKCpjb250
ZW50UnVsZUxpc3QpLCBuaWwpOwotICAgIH0pOworICAgIFtzZWxmIF9jb21waWxlQ29udGVudFJ1
bGVMaXN0Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxpc3Q6W2Vu
Y29kZWRDb250ZW50UnVsZUxpc3QgcmV0YWluXSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CiB9CiAKIC0gKHZvaWQpbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0Nv
bnRlbnRSdWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCkBAIC0xNzAsMTAg
KzE1MCwyMiBAQCAtICh2b2lkKV9nZXRDb250ZW50UnVsZUxpc3RTb3VyY2VGb3JJZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbgogfQogCiAvLyBOU19SRUxFQVNFU19B
UkdVTUVOVCB0byBrZWVwIHBlYWsgbWVtb3J5IHVzYWdlIGxvdy4KLQotLSAodm9pZClfY29tcGls
ZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNv
ZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKWVuY29kZWRDb250ZW50UnVsZUxpc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVu
dGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDooTlNT
dHJpbmcgKikgTlNfUkVMRUFTRVNfQVJHVU1FTlQgZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzZWxmIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9y
SWRlbnRpZmllcjppZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxpc3Q6ZW5jb2RlZENvbnRl
bnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciByZWxlYXNlc0Fy
Z3VtZW50OllFU107CisgICAgU3RyaW5nIGpzb24oZW5jb2RlZENvbnRlbnRSdWxlTGlzdCk7Cisg
ICAgW2VuY29kZWRDb250ZW50UnVsZUxpc3QgcmVsZWFzZV07CisgICAgZW5jb2RlZENvbnRlbnRS
dWxlTGlzdCA9IG5pbDsKKworICAgIF9jb250ZW50UnVsZUxpc3RTdG9yZS0+Y29tcGlsZUNvbnRl
bnRSdWxlTGlzdChpZGVudGlmaWVyLCBXVEZNb3ZlKGpzb24pLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8QVBJOjpDb250ZW50UnVs
ZUxpc3Q+IGNvbnRlbnRSdWxlTGlzdCwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7CisgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxwQW5jaG9y
RXJyb3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiUnVsZSBsaXN0IGNvbXBpbGF0
aW9uIGZhaWxlZDogJXMiLCBlcnJvci5tZXNzYWdlKCkuY19zdHIoKV19OworCisgICAgICAgICAg
ICAvLyBlcnJvci52YWx1ZSgpIGNvdWxkIGhhdmUgYSBzcGVjaWZpYyBjb21waWxlciBlcnJvciB0
aGF0IGlzIG5vdCBlcXVhbCB0byBXS0Vycm9yQ29udGVudFJ1bGVMaXN0U3RvcmVDb21waWxlRmFp
bGVkLgorICAgICAgICAgICAgLy8gV2Ugd2FudCB0byB1c2UgZXJyb3IubWVzc2FnZSwgYnV0IGhl
cmUgd2Ugd2FudCB0byBvbmx5IHBhc3Mgb24gQ29tcGlsZUZhaWxlZCB3aXRoIHVzZXJJbmZvIGZy
b20gdGhlIHN0ZDo6ZXJyb3JfY29kZS4KKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvckNvbnRlbnRSdWxlTGlzdFN0b3JlQ29tcGlsZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10p
OworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoKmNvbnRlbnRS
dWxlTGlzdCksIG5pbCk7CisgICAgfSk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3Rv
cmVXaXRoTGVnYWN5RmlsZW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA1NTMyNGExYjZiODRjNDcxNmFj
Y2U0N2MxNmZlNDc0MjNkNzVjNThjLi5hODA2YmRlYzJlMmQ0ODIzYjJmMWU5MmVkMTMzZTcxMzY1
ZGVmNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiB9OwogCiBA
aW1wbGVtZW50YXRpb24gV0tIVFRQQ29va2llU3RvcmUgewotICAgIEhhc2hNYXA8aWQ8V0tIVFRQ
Q29va2llU3RvcmVPYnNlcnZlcj4sIHN0ZDo6dW5pcXVlX3B0cjxXS0hUVFBDb29raWVTdG9yZU9i
c2VydmVyPj4gX29ic2VydmVyczsKKyAgICBIYXNoTWFwPENGVHlwZVJlZiwgc3RkOjp1bmlxdWVf
cHRyPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+PiBfb2JzZXJ2ZXJzOwogfQogCiAtICh2b2lk
KWRlYWxsb2MKQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKWRlbGV0ZUNvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljbwogCiAt
ICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPilvYnNlcnZl
cgogewotICAgIGF1dG8gcmVzdWx0ID0gX29ic2VydmVycy5hZGQob2JzZXJ2ZXIsIG51bGxwdHIp
OworICAgIGF1dG8gcmVzdWx0ID0gX29ic2VydmVycy5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilv
YnNlcnZlciwgbnVsbHB0cik7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xMTUsNyArMTE1LDcgQEAgLSAodm9pZClhZGRPYnNlcnZlcjooaWQ8V0tI
VFRQQ29va2llU3RvcmVPYnNlcnZlcj4pb2JzZXJ2ZXIKIAogLSAodm9pZClyZW1vdmVPYnNlcnZl
cjooaWQ8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4pb2JzZXJ2ZXIKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IF9vYnNlcnZlcnMudGFrZShvYnNlcnZlcik7CisgICAgYXV0byByZXN1bHQgPSBfb2Jz
ZXJ2ZXJzLnRha2UoKF9fYnJpZGdlIENGVHlwZVJlZilvYnNlcnZlcik7CiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCmluZGV4IDQ3YjdjNGNhNWExNDlmNTE4OTg2MmIz
Nzg4NzRhYzkwNWU1ODEwY2YuLjRkNDE3YjU0M2MwZWQ4NjIyOTk0MjIyMjZiYTBmYTU3MzMxZjU5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzR3JvdXAubW0KQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBDb25uZWN0aW9u
Q2xpZW50KFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXAsIFdLQ29udGV4dFJlZiBjb24KICAg
ICBtZW1zZXQoJmNvbm5lY3Rpb25DbGllbnQsIDAsIHNpemVvZihjb25uZWN0aW9uQ2xpZW50KSk7
CiAKICAgICBjb25uZWN0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY29ubmVjdGlv
bkNsaWVudC5iYXNlLmNsaWVudEluZm8gPSBwcm9jZXNzR3JvdXA7CisgICAgY29ubmVjdGlvbkNs
aWVudC5iYXNlLmNsaWVudEluZm8gPSAoX19icmlkZ2UgQ0ZUeXBlUmVmKXByb2Nlc3NHcm91cDsK
ICAgICBjb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24gPSBkaWRDcmVhdGVDb25u
ZWN0aW9uOwogCiAgICAgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChjb250ZXh0UmVmLCAm
Y29ubmVjdGlvbkNsaWVudC5iYXNlKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRVcEhpc3RvcnlDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250ZXh0
UmVmIGNvbnRleAogICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlD
bGllbnQpKTsKIAogICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBoaXN0
b3J5Q2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHByb2Nlc3NHcm91cDsKKyAgICBoaXN0b3J5Q2xp
ZW50LmJhc2UuY2xpZW50SW5mbyA9IChfX2JyaWRnZSBDRlR5cGVSZWYpcHJvY2Vzc0dyb3VwOwog
ICAgIGhpc3RvcnlDbGllbnQuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEgPSBkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTsKICAgICBoaXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdCA9IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdDsKICAgICBoaXN0b3J5Q2xpZW50
LmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCA9IGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDNlMTdjMGZhNDE2Zjk1ZjliOTkzZGY3MGY0YzRjNWVjOWJmOTcwN2MuLmZlODk2YmM2YjU0
ZTc4NmEyN2I0NTRlYzdmODc5NzdhZDRlMzhmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaApAQCAtMzAsNiArMzAsOCBAQAogI2lt
cG9ydCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxi
YXJTdHlsZS5oPgogCitAY2xhc3MgX1dLTGlua0ljb25QYXJhbWV0ZXJzOworCiBAaW50ZXJmYWNl
IFdLVmlldyAoUHJpdmF0ZSkKIAogLyogQyBTUEkgc3VwcG9ydC4gKi8KQEAgLTE0Niw0ICsxNDgs
MTEgQEAKIAogQGVuZAogCitAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZUZvclN1YmNsYXNzVG9E
ZWZpbmUpCisKKy8vIFRoaXMgYSBtZXRob2QgdGhhdCBzdWJjbGFzc2VzIGNhbiBkZWZpbmUgYW5k
IFdLVmlldyBpdHNlbGYgZG9lcyBub3QgZGVmaW5lLiBXS1ZpZXcgd2lsbCBjYWxsIHRoZSBtZXRo
b2QgaWYgaXQgaXMgcHJlc2VudC4KKy0gKHZvaWQpX3Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRl
cnM6KF9XS0xpbmtJY29uUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKHZvaWQgKF4pKE5TRGF0YSAqKSkpY29tcGxldGlvbkhhbmRsZXI7CisKK0BlbmQK
KwogI2VuZGlmIC8vICFUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwMDNhMTkzNTczZWI4YmQyY2Y0OWIzMzc3
YzNmYzg2MmJlZTFmMTgzLi4zMzlhMmJiMWRiYmFkMWMzOTQ0YTdmMWYzYjg5MTgwZGI3ZTY2NGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTIwOSw5ICsyMDksOSBAQCBAZW5kCiAKICNlbmRpZgogCi1zdGF0aWMgSGFzaE1hcDxXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIFdLV2ViVmlldyAqPiYgcGFnZVRvVmlld01hcCgpCitzdGF0aWMg
SGFzaE1hcDxXZWJLaXQ6OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJW
aWV3ICo+JiBwYWdlVG9WaWV3TWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdLV2ViVmlldyAqPj4gbWFwOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYktpdDo6V2ViUGFnZVByb3h5KiwgX191bnNhZmVf
dW5yZXRhaW5lZCBXS1dlYlZpZXcgKj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC0z
MTUxLDEwICszMTUxLDExIEBAIC0gKEJPT0wpX2hhdmVTZXRPYnNjdXJlZEluc2V0cwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0VWRU5UUykKKwog
c3RhdGljIHZvaWQgYWNjZXNzaWJpbGl0eUV2ZW50c0VuYWJsZWRDaGFuZ2VkQ2FsbGJhY2soQ0ZO
b3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmluZ1JlZiwgY29uc3Qg
dm9pZCosIENGRGljdGlvbmFyeVJlZikKIHsKICAgICBBU1NFUlQob2JzZXJ2ZXIpOwotICAgIFdL
V2ViVmlldyogd2VidmlldyA9IHN0YXRpY19jYXN0PFdLV2ViVmlldyo+KG9ic2VydmVyKTsKKyAg
ICBXS1dlYlZpZXcgKndlYnZpZXcgPSAoX19icmlkZ2UgV0tXZWJWaWV3ICopb2JzZXJ2ZXI7CiAg
ICAgW3dlYnZpZXcgX3VwZGF0ZUFjY2Vzc2liaWxpdHlFdmVudHNFbmFibGVkXTsKIH0KIApAQCAt
MzE2Myw2ICszMTY0LDcgQEAgLSAodm9pZClfdXBkYXRlQWNjZXNzaWJpbGl0eUV2ZW50c0VuYWJs
ZWQKICAgICBpZiAoIWlzTnVsbEZ1bmN0aW9uUG9pbnRlcihfQVhTV2ViQWNjZXNzaWJpbGl0eUV2
ZW50c0VuYWJsZWQpKQogICAgICAgICBfcGFnZS0+dXBkYXRlQWNjZXNzaWJpbGl0eUV2ZW50c0Vu
YWJsZWQoX0FYU1dlYkFjY2Vzc2liaWxpdHlFdmVudHNFbmFibGVkKCkpOwogfQorCiAjZW5kaWYK
IAogI3ByYWdtYSBtYXJrIE9TIFgtc3BlY2lmaWMgbWV0aG9kcwpAQCAtNDIzNiw3ICs0MjM4LDcg
QEAgLSAoV0tOYXZpZ2F0aW9uICopX2xvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6KEIKIC0gKE5TQXJyYXkgKilfY2VydGlmaWNhdGVDaGFp
bgogewogICAgIGlmIChXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IF9wYWdlLT5t
YWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIG1haW5GcmFtZS0+Y2VydGlmaWNhdGVJbmZvKCkg
PyAoTlNBcnJheSAqKW1haW5GcmFtZS0+Y2VydGlmaWNhdGVJbmZvKCktPmNlcnRpZmljYXRlSW5m
bygpLmNlcnRpZmljYXRlQ2hhaW4oKSA6IG5pbDsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZS0+
Y2VydGlmaWNhdGVJbmZvKCkgPyAoX19icmlkZ2UgTlNBcnJheSAqKW1haW5GcmFtZS0+Y2VydGlm
aWNhdGVJbmZvKCktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKSA6IG5pbDsK
IAogICAgIHJldHVybiBuaWw7CiB9CkBAIC02NjEyLDcgKzY2MTQsNyBAQCAtIChOU0FycmF5ICop
Y2VydGlmaWNhdGVDaGFpbgogICAgIGlmICghY2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXR1
cm4gQFsgXTsKIAotICAgIHJldHVybiAoTlNBcnJheSAqKWNlcnRpZmljYXRlSW5mby0+Y2VydGlm
aWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpID86IEBbIF07CisgICAgcmV0dXJuIChfX2Jy
aWRnZSBOU0FycmF5ICopY2VydGlmaWNhdGVJbmZvLT5jZXJ0aWZpY2F0ZUluZm8oKS5jZXJ0aWZp
Y2F0ZUNoYWluKCkgPzogQFsgXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQppbmRleCBmNDk1YzcxNGNjNGE3NGJj
NmZlMjQ4YTA2MTZkODBjNGQ1ZTBkZDJkLi40ZWQ1NWYxYzM0ZWUzZjkyMjg0ZTg3MWZiOThjMDhh
YzFhNWI2ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbQpAQCAtOTYsNyArOTYsNyBAQCAtIChOU1N0cmluZyAqKWZpbGVQYXRo
CiAKIHN0YXRpYyBCT09MIGlzRGVjbGFyZWRPckR5bmFtaWNUeXBlSWRlbnRpZmllcihOU1N0cmlu
ZyAqdHlwZSkKIHsKLSAgICByZXR1cm4gVVRUeXBlSXNEZWNsYXJlZCgoQ0ZTdHJpbmdSZWYpdHlw
ZSkgfHwgVVRUeXBlSXNEeW5hbWljKChDRlN0cmluZ1JlZil0eXBlKTsKKyAgICByZXR1cm4gVVRU
eXBlSXNEZWNsYXJlZCgoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdHlwZSkgfHwgVVRUeXBlSXNEeW5h
bWljKChfX2JyaWRnZSBDRlN0cmluZ1JlZil0eXBlKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfdHlw
ZUlkZW50aWZpZXJGcm9tUGF0aEV4dGVuc2lvbgpAQCAtMTE5LDggKzExOSw3IEBAIC0gKE5TU3Ry
aW5nICopbWltZVR5cGUKICAgICBpZiAoIWlzRGVjbGFyZWRPckR5bmFtaWNUeXBlSWRlbnRpZmll
cihjb250ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiBjb250ZW50VHlwZTsKIAotICAgIGF1dG8g
bWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3MoKENGU3Ry
aW5nUmVmKWNvbnRlbnRUeXBlLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgcmV0dXJuIChO
U1N0cmluZyAqKW1pbWVUeXBlLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpY29udGVu
dFR5cGUsIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKE5TU3RyaW5nICopdXRpVHlwZQpAQCAtMTI5LDggKzEyOCw3IEBAIC0gKE5TU3RyaW5nICop
dXRpVHlwZQogICAgIGlmIChpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlkZW50aWZpZXIoY29udGVu
dFR5cGUpKQogICAgICAgICByZXR1cm4gY29udGVudFR5cGU7CiAKLSAgICBhdXRvIHV0aVR5cGUg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NNSU1FVHlwZSwgKENGU3RyaW5nUmVmKWNvbnRlbnRUeXBlLCBuaWwpKTsKLSAgICByZXR1cm4g
KE5TU3RyaW5nICopdXRpVHlwZS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdENGKFVU
VHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwg
KF9fYnJpZGdlIENGU3RyaW5nUmVmKWNvbnRlbnRUeXBlLCBudWxscHRyKSkuYnJpZGdpbmdBdXRv
cmVsZWFzZSgpOwogfQogCiAtIChOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggZjc3NmZkY2U0ODAxYjM2ZGE4
MTlhMmU5NjU0MTBjZWI2ZWQzMTI4Zi4uMjZkN2ZmYjdhYTNhZTg1YzIxOGMxZTkwOTBjYTlkNDU2
OTFjMjQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTg4NCw3ICs4ODQsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAK
ICAgICAgICAgc3RhdGljIFNFTCBkZWxlZ2F0ZVNlbGVjdG9yKCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHNlbF9yZWdpc3Rlck5hbWUoIl9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0
ZXJzOmNvbXBsZXRpb25IYW5kbGVyOiIpOworICAgICAgICAgICAgcmV0dXJuIEBzZWxlY3Rvcihf
c2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyczpjb21wbGV0aW9uSGFuZGxlcjopOwogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgpAQCAtODk0LDcgKzg5NCw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0
YWxsSWNvbkxvYWRpbmdDbGllbnQKICAgICAgICAgewogICAgICAgICAgICAgUmV0YWluUHRyPF9X
S0xpbmtJY29uUGFyYW1ldGVycz4gcGFyYW1ldGVycyA9IGFkb3B0TlMoW1tfV0tMaW5rSWNvblBh
cmFtZXRlcnMgYWxsb2NdIF9pbml0V2l0aExpbmtJY29uOmxpbmtJY29uXSk7CiAKLSAgICAgICAg
ICAgIFttX3drVmlldyBwZXJmb3JtU2VsZWN0b3I6ZGVsZWdhdGVTZWxlY3RvcigpIHdpdGhPYmpl
Y3Q6cGFyYW1ldGVycy5nZXQoKSB3aXRoT2JqZWN0OkJsb2NrUHRyPHZvaWQoSWNvbkxvYWRDb21w
bGV0aW9uSGFuZGxlcik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9hZENvbXBs
ZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFttX3drVmlldyBfc2hvdWxkTG9h
ZEljb25XaXRoUGFyYW1ldGVyczpwYXJhbWV0ZXJzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOkJs
b2NrUHRyPHZvaWQoSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlcik+Ojpmcm9tQ2FsbGFibGUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29t
cGxldGlvbkhhbmRsZXIgbG9hZENvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgICAgIGlmIChs
b2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQgKE5TRGF0YSAqKT4o
bG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzNDQwMWRlM2JkZjUwMTZmMzJkNGJiNmZmMTZkZmQ1
OTEzN2E5ODE5Li41ZTI3NjQ5Y2FkY2I0Nzg5MDU0NzkwODUyZWNmN2RjNzkxZDNmMGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC05NzgsMTEgKzk3OCw4IEBAIFJlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQCiAgICAgaWYgKCFuYXZp
Z2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YSA9IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXddOwotCi0gICAgcmV0dXJuIEFQSTo6RGF0
YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKVtkYXRhIGJ5dGVz
XSwgW2RhdGEgbGVuZ3RoXSwgW10gKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKSB7
Ci0gICAgICAgIFsoTlNEYXRhICopZGF0YSByZWxlYXNlXTsKLSAgICB9LCBkYXRhLmxlYWtSZWYo
KSk7CisgICAgTlNEYXRhICpkYXRhID0gW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJDcnlwdG9NYXN0ZXJL
ZXlGb3JXZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107CisgICAgcmV0dXJuIEFQ
STo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSk7CiB9CiAKIFJlZlB0cjxBUEk6OlN0
cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAwNDk4ZDA4OGVkYWU3MGU2ZGNiYWNiNDBlMTky
ZWQwN2Q5ZDY0YmIzLi5kMTZmNTg1MmRkZjg0YTRkNTkyYjlmMzNlNzhlYjMyZGE5MjBiMTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KQEAgLTIyNiwxMiArMjI2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYKICAg
ICAgICAgfQogCiAjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwKQotICAgICAgICBhdXRvIGRhdGEgPSByZXRhaW5QdHIoa2V5ZWRB
cmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CisgICAgICAgIGF1dG8gZGF0YSA9IGtleWVkQXJj
aGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGE7CiAjZW5kaWYKIAotICAgICAgICBwYXJhbWV0ZXJzLmJ1
bmRsZVBhcmFtZXRlckRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25z
dCB1bnNpZ25lZCBjaGFyKilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0sIFtdICh1bnNpZ25l
ZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewotICAgICAgICAgICAgWyhOU0RhdGEgKilkYXRh
IHJlbGVhc2VdOwotICAgICAgICB9LCBkYXRhLmxlYWtSZWYoKSk7CisgICAgICAgIHBhcmFtZXRl
cnMuYnVuZGxlUGFyYW1ldGVyRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmco
V1RGTW92ZShkYXRhKSk7CiAgICAgfQogICAgIHBhcmFtZXRlcnMubmV0d29ya0FUU0NvbnRleHQg
PSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5QVRTQ29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggYTc3OGI5YTdjNzcwNTAyNzA0Mzk3
NjBhNjRlYjYxNWRmYmNkM2NjNy4uMzI3ZmE0OWQ3YjRjMWM4MWQzYzdlMTFlZTQ5MGU3MDJhZjYw
NGJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBA
IC0zNjQsNyArMzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZUZvckRpY3Rpb25hcnlM
b29rdXAoKTsKICAgICB2b2lkIHNldEFsbG93c0xpbmtQcmV2aWV3KGJvb2wpOwogICAgIGJvb2wg
YWxsb3dzTGlua1ByZXZpZXcoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0xpbmtQcmV2aWV3OyB9
Ci0gICAgdm9pZCogaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RS
ZXN1bHQoQVBJOjpIaXRUZXN0UmVzdWx0KiwgdWludDMyX3QgdHlwZSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKTsKKyAgICBOU09iamVjdCAqaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxl
ckZvckhpdFRlc3RSZXN1bHQoQVBJOjpIaXRUZXN0UmVzdWx0KiwgdWludDMyX3QgdHlwZSwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25I
aXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNE
ZWZhdWx0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpOwogICAgIHZvaWQgcHJlcGFyZUZvckltbWVk
aWF0ZUFjdGlvbkFuaW1hdGlvbigpOwogICAgIHZvaWQgY2FuY2VsSW1tZWRpYXRlQWN0aW9uQW5p
bWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDZlZDg2Y2YxN2Q0MWYyYzU1OTY0MmM1ODQ4NmQ3ZDM3MzdmZmJjZTEuLjRhNTczMGFh
MTNjZjRkMTdjNWVhMDM2YTJlNDkxODI3MDljNDFhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yMDUwLDcgKzIwNTAsOCBAQCBib29sIFdl
YlZpZXdJbXBsOjphY2NlcHRzRmlyc3RNb3VzZShOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVz
dGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJl
bGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAg
Ly8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVt
IGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICBD
RkF1dG9yZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwogCiAgICAgaWYgKCFbbV92
aWV3IGhpdFRlc3Q6ZXZlbnQubG9jYXRpb25JbldpbmRvd10pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIwNjksNyArMjA3MCw4IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNob3VsZERlbGF5V2lu
ZG93T3JkZXJpbmdGb3JFdmVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hh
bmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50
IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhl
IG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1
cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBX
ZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICBDRkF1dG9yZWxl
YXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwogCiAgICAgaWYgKCFbbV92aWV3IGhpdFRl
c3Q6ZXZlbnQubG9jYXRpb25JbldpbmRvd10pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMz
MTksNyArMzMyMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEFsbG93c0xpbmtQcmV2aWV3KGJv
b2wgYWxsb3dzTGlua1ByZXZpZXcpCiAgICAgICAgIFttX3ZpZXcgYWRkR2VzdHVyZVJlY29nbml6
ZXI6aW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcl07CiB9CiAKLXZvaWQqIFdlYlZpZXdJbXBsOjpp
bW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChBUEk6Okhp
dFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIHVpbnQzMl90IHR5cGUsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkKK05TT2JqZWN0ICpXZWJWaWV3SW1wbDo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoQVBJOjpIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVz
dWx0LCB1aW50MzJfdCB0eXBlLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgcmV0dXJu
IFttX3ZpZXcgX3dlYl9pbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVz
dFJlc3VsdEludGVybmFsOmhpdFRlc3RSZXN1bHQgd2l0aFR5cGU6dHlwZSB1c2VyRGF0YTp1c2Vy
RGF0YV07CiB9CkBAIC00ODgzLDcgKzQ4ODUsOCBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3Jt
S2V5RXF1aXZhbGVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRo
YXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3As
IGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBv
bmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQg
ZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQg
b3IgQXBwS2l0IGNvZGUuCi0gICAgW1tldmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBD
RlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICBDRkF1dG9yZWxlYXNlKChf
X2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwogCiAgICAgLy8gV2UgZ2V0IEVzYyBrZXkgaGVyZSBh
ZnRlciBwcm9jZXNzaW5nIGVpdGhlciBFc2Mgb3IgQ21kK3BlcmlvZC4gVGhlIGZvcm1lciBzdGFy
dHMgYXMgYSBrZXlEb3duLCBhbmQgdGhlIGxhdHRlciBzdGFydHMgYXMgYSBrZXkgZXF1aXZhbGVu
dCwKICAgICAvLyBidXQgYm90aCBnZXQgdHJhbnNmb3JtZWQgdG8gYSBjYW5jZWxPcGVyYXRpb246
IGNvbW1hbmQsIGV4ZWN1dGluZyB3aGljaCBwYXNzZXMgYW4gRXNjIGtleSBldmVudCB0byAtcGVy
Zm9ybUtleUVxdWl2YWxlbnQ6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IDI2ODNmYzhkZGI2ZjE5MTdlOWE3N2UzZTI1MjVlYzBhNDI1NDUxZTUuLjJkNzA5Y2YxZTM3Njcw
Njc3MTFiMzQwZWFkZjU0NWYwNzQ3MTI4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTM5OSwxMSArMzk5LDEwIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3Qg
V2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIEFQSTo6
T2JqZWN0KikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Piwg
dWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4pID0gMDsKLQorICAgIHZpcnR1YWwgTlNPYmpl
Y3QgKmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJl
ZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpID0gMDsK
ICNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFByb2Nlc3NpbmdBbGxQZW5kaW5n
TW91c2VFdmVudHMoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlkZW9Db250cm9sc01hbmFn
ZXJEaWRDaGFuZ2UoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggOGZmNTRi
MmY4YmUzYjljYWJhNWZhZDBiNDc3NGMyNTA4NzI4ODEyMC4uNGVmZTA4MGE2YzBiMWQyZDYyMjQ0
NjRhZmU4ZDA2MjE2ZjhhNDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTEw
NCwxMSArMTA0LDExIEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVl
KGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuCiAgICAgICAgIFJlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllcjo6UmVsYXRlZExheWVyTWFwIHJlbGF0ZWRMYXllcnM7CiAg
ICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkNoaWxkcmVuQ2hhbmdlZCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBj
aGlsZCA6IHByb3BlcnRpZXMuY2hpbGRyZW4pCi0gICAgICAgICAgICAgICAgcmVsYXRlZExheWVy
cy5zZXQoY2hpbGQsIGdldExheWVyKGNoaWxkKSk7CisgICAgICAgICAgICAgICAgcmVsYXRlZExh
eWVycy5zZXQoY2hpbGQsIChfX2JyaWRnZSBDRlR5cGVSZWYpZ2V0TGF5ZXIoY2hpbGQpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tMYXllckNoYW5nZWQgJiYgcHJvcGVydGllcy5t
YXNrTGF5ZXJJRCkKLSAgICAgICAgICAgIHJlbGF0ZWRMYXllcnMuc2V0KHByb3BlcnRpZXMubWFz
a0xheWVySUQsIGdldExheWVyKHByb3BlcnRpZXMubWFza0xheWVySUQpKTsKKyAgICAgICAgICAg
IHJlbGF0ZWRMYXllcnMuc2V0KHByb3BlcnRpZXMubWFza0xheWVySUQsIChfX2JyaWRnZSBDRlR5
cGVSZWYpZ2V0TGF5ZXIocHJvcGVydGllcy5tYXNrTGF5ZXJJRCkpOwogCiAgICAgICAgIGlmIChw
cm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkNsb25lZENvbnRlbnRzQ2hhbmdlZCAmJiBwcm9wZXJ0aWVzLmNsb25lZExheWVySUQpCiAgICAg
ICAgICAgICBjbG9uZXNUb1VwZGF0ZS5hcHBlbmQoTGF5ZXJJRFBhaXIobGF5ZXJJRCwgcHJvcGVy
dGllcy5jbG9uZWRMYXllcklEKSk7CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVIb3N0OjpkZXRhY2hSb290TGF5ZXIoKQogI2lmIEhBVkUoSU9TVVJGQUNFKQogc3RhdGlj
IHZvaWQgcmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VCYWNraW5nU3RvcmUoQ0FMYXllciAqbGF5ZXIp
CiB7Ci0gICAgaWYgKGxheWVyLmNvbnRlbnRzICYmIENGR2V0VHlwZUlEKGxheWVyLmNvbnRlbnRz
KSA9PSBDQU1hY2hQb3J0R2V0VHlwZUlEKCkpIHsKKyAgICBpZiAobGF5ZXIuY29udGVudHMgJiYg
Q0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNo
UG9ydEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5k
UmlnaHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZils
YXllci5jb250ZW50cykpOwogICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJD
b250ZW50cygpIDogbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggZTA3MmJjMjFiZDY5ODFkYjEwZTQwN2Y2NWFlYThiYmQ0MjQzMWIzYy4uNGI1OWVmN2Vj
ZDgyYzM1Y2QwYWIwODFhMzcxYjAyYmUwZDg5NzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MzI2LDcgKzczMjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3Vs
dERhdGEmCiAgICAgbV9wYWdlQ2xpZW50LmRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
KHJlc3VsdCwgY29udGVudFByZXZlbnRzRGVmYXVsdCwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQqIFdlYlBh
Z2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1
bHQoUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCwgdWludDY0X3QgdHlw
ZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YSkKK05TT2JqZWN0ICpXZWJQYWdlUHJveHk6
OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0
cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQsIHVpbnQ2NF90IHR5cGUsIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC5pbW1l
ZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChoaXRUZXN0UmVz
dWx0LCB0eXBlLCB1c2VyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGQ2OTM0ZDRhOWNmNjI4Nzg5MDViNGRkZmQ3YWI4YmFhMjU5MmFlYmYuLjJhYmM3
OWNlZjFhNDA4M2E0YTNiZGYwNDMzOWUyNDVjMmNkNmUyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRp
ZENvbXBsZXRlKCk7CiAKLSAgICB2b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9s
bGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3Qs
IFJlZlB0cjxBUEk6Ok9iamVjdD4pOworICAgIE5TT2JqZWN0ICppbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0
PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4pOwogCiAgICAgdm9pZCBpbnN0YWxsQWN0
aXZpdHlTdGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKaW5kZXggYzg4NGZhMmJiYTlmOGZhZWM5NzY2YjIyMzIxZTFmM2NlNWU4NWQxMy4uNjcyMGY3
YzA4MTQwZmVjOTRiNDc3NGRjOGZjMDE0MjM5YmFlYmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRz
RGVmYXVsdCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkKiBpbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0
UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVjdD4pIG92ZXJyaWRlOworICAgIE5T
T2JqZWN0ICppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3Vs
dChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9iamVj
dD4pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KaW5kZXggYTBiYzllYmU3OTg2OWE3NGZkYWUzOTU2YWFkODBmN2ExMzUyZjdlZi4u
YjNmNTQyMTlkMzExZDljZTI0MzU3OTdiZDEyMzBkOTczY2Y2YWU3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtODI3LDcgKzgy
Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRU
ZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhCiAgICAgbV9pbXBsLT5kaWRQZXJmb3JtSW1t
ZWRpYXRlQWN0aW9uSGl0VGVzdChyZXN1bHQsIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIHVzZXJE
YXRhKTsKIH0KIAotdm9pZCogUGFnZUNsaWVudEltcGw6OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IGhp
dFRlc3RSZXN1bHQsIHVpbnQ2NF90IHR5cGUsIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGEp
CitOU09iamVjdCAqUGFnZUNsaWVudEltcGw6OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRy
b2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RS
ZXN1bHQsIHVpbnQ2NF90IHR5cGUsIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGEpCiB7CiAg
ICAgcmV0dXJuIG1faW1wbC0+aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhp
dFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdC5nZXQoKSwgdHlwZSwgdXNlckRhdGEuZ2V0KCkpOwog
fQpAQCAtODU2LDEyICs4NTYsMTIgQEAgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlciYg
UGFnZUNsaWVudEltcGw6Om1lZGlhU2Vzc2lvbk1hbmFnZXIoKQogCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpyZWZWaWV3KCkKIHsKLSAgICBDRlJldGFpbihtX3ZpZXcpOworICAgIENGUmV0YWluKChf
X2JyaWRnZSBDRlR5cGVSZWYpbV92aWV3KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGVy
ZWZWaWV3KCkKIHsKLSAgICBDRlJlbGVhc2UobV92aWV3KTsKKyAgICBDRlJlbGVhc2UoKF9fYnJp
ZGdlIENGVHlwZVJlZiltX3ZpZXcpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydFdp
bmRvd0RyYWcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZp
Y2VzQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0Nv
bnRyb2xsZXIubW0KaW5kZXggYmI2ZmI3NTEzZTk1M2JjM2Y1ZGY1MDNjOWRlNzljYTNlNGMwMTVh
Ny4uM2M4YmM2NDJhZjgxY2VjYTQyYjE3MDU0NmE1M2Y4YzU2M2EwOTE1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1tCkBAIC05Nywy
NyArOTcsMjcgQEAgdm9pZCBTZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hFeGlzdGluZ1NlcnZp
Y2VzKGJvb2wgcmVmcmVzaEltbWVkaWF0ZWx5KQogICAgIGRpc3BhdGNoX2FmdGVyKHJlZnJlc2hU
aW1lLCBtX3JlZnJlc2hRdWV1ZSwgXnsKICAgICAgICAgYXV0byBzZXJ2aWNlTG9va3VwR3JvdXAg
PSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpKTsKIAotICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TlNJbWFnZSAqPiBpbWFnZShbW05TSW1hZ2UgYWxsb2NdIGluaXRd
KTsKKyAgICAgICAgc3RhdGljIE5TSW1hZ2UgKmltYWdlIHsgW1tOU0ltYWdlIGFsbG9jXSBpbml0
XSB9OwogICAgICAgICBoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhzZXJ2aWNlTG9va3Vw
R3JvdXAuZ2V0KCksIEBbIGltYWdlIF0sIFt0aGlzXSAoYm9vbCBoYXNTZXJ2aWNlcykgewogICAg
ICAgICAgICAgbV9oYXNJbWFnZVNlcnZpY2VzID0gaGFzU2VydmljZXM7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxOU0F0dHJpYnV0ZWRTdHJpbmcgKj4gYXR0
cmlidXRlZFN0cmluZyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCJhIl0pOworICAgICAgICBzdGF0aWMgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nIHsgW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYSJdIH07
CiAgICAgICAgIGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKHNlcnZpY2VMb29rdXBHcm91
cC5nZXQoKSwgQFsgYXR0cmlidXRlZFN0cmluZyBdLCBbdGhpc10gKGJvb2wgaGFzU2VydmljZXMp
IHsKICAgICAgICAgICAgIG1faGFzU2VsZWN0aW9uU2VydmljZXMgPSBoYXNTZXJ2aWNlczsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgc3RhdGljIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZ1dpdGhSaWNoQ29udGVudDsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nV2l0
aFJpY2hDb250ZW50KSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF4geworICAgICAgICBzdGF0aWMgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50ID0gW10geworICAgICAgICAgICAgTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyAqcmljaFN0cmluZzsKKyAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZyaWNoU3RyaW5nXSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBhdHRhY2htZW50ID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGlu
aXRdKTsKLSAgICAgICAgICAgICAgICBhdXRvIGNlbGwgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNo
bWVudENlbGwgYWxsb2NdIGluaXRJbWFnZUNlbGw6aW1hZ2UuZ2V0KCldKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGNlbGwgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudENlbGwgYWxsb2NdIGlu
aXRJbWFnZUNlbGw6aW1hZ2VdKTsKICAgICAgICAgICAgICAgICBbYXR0YWNobWVudCBzZXRBdHRh
Y2htZW50Q2VsbDpjZWxsLmdldCgpXTsKLSAgICAgICAgICAgICAgICBOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nICpyaWNoU3RyaW5nID0gKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilbTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0
YWNobWVudC5nZXQoKV07CisgICAgICAgICAgICAgICAgcmljaFN0cmluZyA9IFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRhY2htZW50LmdldCgp
XSBtdXRhYmxlQ29weV07CiAgICAgICAgICAgICAgICAgW3JpY2hTdHJpbmcgYXBwZW5kQXR0cmli
dXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nXTsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVk
U3RyaW5nV2l0aFJpY2hDb250ZW50ID0gW3JpY2hTdHJpbmcgcmV0YWluXTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmljaFN0cmluZzsKKyAgICAgICAg
fSgpOwogCiAgICAgICAgIGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKHNlcnZpY2VMb29r
dXBHcm91cC5nZXQoKSwgQFsgYXR0cmlidXRlZFN0cmluZ1dpdGhSaWNoQ29udGVudCBdLCBbdGhp
c10gKGJvb2wgaGFzU2VydmljZXMpIHsKICAgICAgICAgICAgIG1faGFzUmljaENvbnRlbnRTZXJ2
aWNlcyA9IGhhc1NlcnZpY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggOGNlYWRjMWQ5YzIz
YzJkODA0NGVkYzMxMGNlZjQ2Y2NkNTJjOTYzMy4uZjg3MjA3MDY0YzdiZTUxZWFlYmIyN2EwMzFk
NDkwNTExMmIzODhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0zMjgsNyArMzI4LDcgQEAg
LSAodm9pZClfdXBkYXRlSW1tZWRpYXRlQWN0aW9uSXRlbQogICAgIH0KIAogICAgIFJlZlB0cjxB
UEk6OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBbc2VsZiBfd2ViSGl0VGVzdFJlc3Vs
dF07Ci0gICAgaWQgY3VzdG9tQ2xpZW50QW5pbWF0aW9uQ29udHJvbGxlciA9IChpZCkoX3BhZ2Ut
PmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KGhpdFRl
c3RSZXN1bHQsIF90eXBlLCBfdXNlckRhdGEpKTsKKyAgICBpZCBjdXN0b21DbGllbnRBbmltYXRp
b25Db250cm9sbGVyID0gX3BhZ2UtPmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJG
b3JIaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQsIF90eXBlLCBfdXNlckRhdGEpOwogICAgIGlm
IChjdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVyID09IFtOU051bGwgbnVsbF0pIHsKICAg
ICAgICAgW3NlbGYgX2NhbmNlbEltbWVkaWF0ZUFjdGlvbl07CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCA3YjBi
MzhiNzQ1NDQ2MWM3YTI3OWE3NTM3M2U2NTg5ZWRlMTYzNTJhLi4xZmRhN2RiZTVkZjFmZjdkYjE3
NzBjYWZiMTQwZGZmNTYwZjVhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC02Myw4ICs2MywxMCBAQCAtIChpZClpbml0V2l0aEZyYW1l
UHJveHk6KFdlYktpdDo6V2ViRnJhbWVQcm94eSYpZnJhbWUgdmlldzooTlNWaWV3ICopd2tWaWV3
CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxv
Y2F0ZU9uTWFpblRocmVhZChbV0tQcmludGluZ1ZpZXcgY2xhc3NdLCBzZWxmKSkKLSAgICAgICAg
cmV0dXJuOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lID0gV1RGTW92ZShfd2ViRnJhbWUp
LCBwcmV2aWV3cyA9IFdURk1vdmUoX3BhZ2VQcmV2aWV3cyldIHsKKyAgICAgICAgLy8gRGVhbGxv
Y2F0ZSB0aGVzZSBvbiB0aGUgbWFpbiB0aHJlYWQsIG5vdCB0aGUgY3VycmVudCB0aHJlYWQsIHNp
bmNlIHRoZQorICAgICAgICAvLyByZWZlcmVuY2UgY291bnRpbmcgYW5kIHRoZSBkZXN0cnVjdG9y
cyBhcmVuJ3QgdGhyZWFkc2FmZS4KKyAgICB9KTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
QEAgLTQzMSw5ICs0MzMsOSBAQCAtICh1bnNpZ25lZClfcGFnZUZvclJlY3Q6KE5TUmVjdClyZWN0
CiAgICAgcmV0dXJuIDA7IC8vIEludmFsaWQgcGFnZSBudW1iZXIuCiB9CiAKLXN0YXRpYyBDRlN0
cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50ICpkb2N1bWVudCwgUERGRGVz
dGluYXRpb24gKmRlc3RpbmF0aW9uKQorc3RhdGljIE5TU3RyaW5nICpsaW5rRGVzdGluYXRpb25O
YW1lKFBERkRvY3VtZW50ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlc3RpbmF0aW9uKQog
ewotICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
bHUtJWYtJWYiLCAodW5zaWduZWQgbG9uZylbZG9jdW1lbnQgaW5kZXhGb3JQYWdlOmRlc3RpbmF0
aW9uLnBhZ2VdLCBkZXN0aW5hdGlvbi5wb2ludC54LCBkZXN0aW5hdGlvbi5wb2ludC55XTsKKyAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlbHUtJWYtJWYiLCAodW5zaWdu
ZWQgbG9uZylbZG9jdW1lbnQgaW5kZXhGb3JQYWdlOmRlc3RpbmF0aW9uLnBhZ2VdLCBkZXN0aW5h
dGlvbi5wb2ludC54LCBkZXN0aW5hdGlvbi5wb2ludC55XTsKIH0KIAogLSAodm9pZClfZHJhd1BE
RkRvY3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3VtZW50IHBhZ2U6KHVuc2lnbmVkKXBhZ2Ug
YXRQb2ludDooTlNQb2ludClwb2ludApAQCAtNDcwLDcgKzQ3Miw3IEBAIC0gKHZvaWQpX2RyYXdQ
REZEb2N1bWVudDooUERGRG9jdW1lbnQgKilwZGZEb2N1bWVudCBwYWdlOih1bnNpZ25lZClwYWdl
IGF0UG9pbnQ6CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGRlc3RpbmF0aW9uIDogX2xpbmtEZXN0
aW5hdGlvbnNQZXJQYWdlW3BhZ2VdKSB7CiAgICAgICAgIENHUG9pbnQgZGVzdGluYXRpb25Qb2lu
dCA9IENHUG9pbnRBcHBseUFmZmluZVRyYW5zZm9ybShOU1BvaW50VG9DR1BvaW50KFtkZXN0aW5h
dGlvbiBwb2ludF0pLCB0cmFuc2Zvcm0pOwotICAgICAgICBDR1BERkNvbnRleHRBZGREZXN0aW5h
dGlvbkF0UG9pbnQoY29udGV4dCwgbGlua0Rlc3RpbmF0aW9uTmFtZShwZGZEb2N1bWVudCwgZGVz
dGluYXRpb24uZ2V0KCkpLCBkZXN0aW5hdGlvblBvaW50KTsKKyAgICAgICAgQ0dQREZDb250ZXh0
QWRkRGVzdGluYXRpb25BdFBvaW50KGNvbnRleHQsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilsaW5r
RGVzdGluYXRpb25OYW1lKHBkZkRvY3VtZW50LCBkZXN0aW5hdGlvbi5nZXQoKSksIGRlc3RpbmF0
aW9uUG9pbnQpOwogICAgIH0KIAogICAgIGZvciAoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiBp
biBbcGRmUGFnZSBhbm5vdGF0aW9uc10pIHsKQEAgLTQ4OCw4ICs0OTAsNyBAQCAtICh2b2lkKV9k
cmF3UERGRG9jdW1lbnQ6KFBERkRvY3VtZW50ICopcGRmRG9jdW1lbnQgcGFnZToodW5zaWduZWQp
cGFnZSBhdFBvaW50OgogICAgICAgICAgICAgUERGRGVzdGluYXRpb24gKmRlc3RpbmF0aW9uID0g
W2xpbmtBbm5vdGF0aW9uIGRlc3RpbmF0aW9uXTsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRp
b24pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDR1BERkNvbnRleHRT
ZXREZXN0aW5hdGlvbkZvclJlY3QoY29udGV4dCwgbGlua0Rlc3RpbmF0aW9uTmFtZShwZGZEb2N1
bWVudCwgZGVzdGluYXRpb24pLCB0cmFuc2Zvcm1lZFJlY3QpOwotCisgICAgICAgICAgICBDR1BE
RkNvbnRleHRTZXREZXN0aW5hdGlvbkZvclJlY3QoY29udGV4dCwgKF9fYnJpZGdlIENGU3RyaW5n
UmVmKWxpbmtEZXN0aW5hdGlvbk5hbWUocGRmRG9jdW1lbnQsIGRlc3RpbmF0aW9uKSwgdHJhbnNm
b3JtZWRSZWN0KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTUludGVybmFscy5oCmluZGV4IDI4OTEzMTg2NTFhZDkyZDU2ZDA3NmM1YjU1ZWVl
ZGE0NjJmYTBkZjEuLmM5ZWIwNWE3Y2Q5YjQ1YTY4NjA1MDg1OGE5ZWNhN2QzMWY1YzFjY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaApAQCAtODksOCArODksOCBAQCBwcml2YXRl
OgogCiAvLyAtLSBDYWNoZXMgLS0KIAotRE9NQ2FjaGU8V2ViQ29yZTo6Tm9kZSosIFdLRE9NTm9k
ZSAqPiYgV0tET01Ob2RlQ2FjaGUoKTsKLURPTUNhY2hlPFdlYkNvcmU6OlJhbmdlKiwgV0tET01S
YW5nZSAqPiYgV0tET01SYW5nZUNhY2hlKCk7CitET01DYWNoZTxXZWJDb3JlOjpOb2RlKiwgX191
bnNhZmVfdW5yZXRhaW5lZCBXS0RPTU5vZGUgKj4mIFdLRE9NTm9kZUNhY2hlKCk7CitET01DYWNo
ZTxXZWJDb3JlOjpSYW5nZSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tET01SYW5nZSAqPiYgV0tE
T01SYW5nZUNhY2hlKCk7CiAKIC8vIC0tIE5vZGUgYW5kIGNsYXNzZXMgZGVyaXZlZCBmcm9tIE5v
ZGUuIC0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KaW5kZXggNjUwZmQ0NzNj
Y2ZlYTEwMzUzMmFlYjQwM2FmMGQzOGZiZmMzMThlMS4uYWYwZmU2MzJhYmM3YzliYzU1NzZmNDQy
MGM3NDQ4MTczYTcxNTdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0KQEAg
LTUxLDE1ICs1MSwxNSBAQCBzdGF0aWMgV0tET01UeXBlIHRvV0tET01UeXBlKFdlYkNvcmVUeXBl
IGltcGwsIERPTUNhY2hlPFdlYkNvcmVUeXBlLCBXS0RPTVR5cGU+JgogCiAvLyAtLSBDYWNoZXMg
LS0gCiAKLURPTUNhY2hlPFdlYkNvcmU6Ok5vZGUqLCBXS0RPTU5vZGUgKj4mIFdLRE9NTm9kZUNh
Y2hlKCkKK0RPTUNhY2hlPFdlYkNvcmU6Ok5vZGUqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLRE9N
Tm9kZSAqPiYgV0tET01Ob2RlQ2FjaGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
T01DYWNoZTxXZWJDb3JlOjpOb2RlKiwgV0tET01Ob2RlICo+PiBjYWNoZTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8RE9NQ2FjaGU8V2ViQ29yZTo6Tm9kZSosIF9fdW5zYWZlX3VucmV0YWlu
ZWQgV0tET01Ob2RlICo+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLURPTUNhY2hl
PFdlYkNvcmU6OlJhbmdlKiwgV0tET01SYW5nZSAqPiYgV0tET01SYW5nZUNhY2hlKCkKK0RPTUNh
Y2hlPFdlYkNvcmU6OlJhbmdlKiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS0RPTVJhbmdlICo+JiBX
S0RPTVJhbmdlQ2FjaGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxET01DYWNoZTxX
ZWJDb3JlOjpSYW5nZSosIFdLRE9NUmFuZ2UgKj4+IGNhY2hlOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxET01DYWNoZTxXZWJDb3JlOjpSYW5nZSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tE
T01SYW5nZSAqPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCkBAIC05OCw3ICs5OCw3
IEBAIFdlYkNvcmU6Ok5vZGUqIHRvV2ViQ29yZU5vZGUoV0tET01Ob2RlICp3cmFwcGVyKQogCiBX
S0RPTU5vZGUgKnRvV0tET01Ob2RlKFdlYkNvcmU6Ok5vZGUqIGltcGwpCiB7Ci0gICAgcmV0dXJu
IHRvV0tET01UeXBlPFdlYkNvcmU6Ok5vZGUqLCBXS0RPTU5vZGUgKj4oaW1wbCwgV0tET01Ob2Rl
Q2FjaGUoKSk7CisgICAgcmV0dXJuIHRvV0tET01UeXBlPFdlYkNvcmU6Ok5vZGUqLCBfX3Vuc2Fm
ZV91bnJldGFpbmVkIFdLRE9NTm9kZSAqPihpbXBsLCBXS0RPTU5vZGVDYWNoZSgpKTsKIH0KIAog
V2ViQ29yZTo6RWxlbWVudCogdG9XZWJDb3JlRWxlbWVudChXS0RPTUVsZW1lbnQgKndyYXBwZXIp
CkBAIC0xNDUsNyArMTQ1LDcgQEAgV2ViQ29yZTo6UmFuZ2UqIHRvV2ViQ29yZVJhbmdlKFdLRE9N
UmFuZ2UgKiB3cmFwcGVyKQogCiBXS0RPTVJhbmdlICp0b1dLRE9NUmFuZ2UoV2ViQ29yZTo6UmFu
Z2UqIGltcGwpCiB7Ci0gICAgcmV0dXJuIHRvV0tET01UeXBlPFdlYkNvcmU6OlJhbmdlKiwgV0tE
T01SYW5nZSAqPihpbXBsLCBXS0RPTVJhbmdlQ2FjaGUoKSk7CisgICAgcmV0dXJuIHRvV0tET01U
eXBlPFdlYkNvcmU6OlJhbmdlKiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS0RPTVJhbmdlICo+KGlt
cGwsIFdLRE9NUmFuZ2VDYWNoZSgpKTsKIH0KIAogLy8gLS0gSGVscGVycyAtLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBl
UGx1Z2luTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCmluZGV4IDhlYzZiODI1OTE1MDkyYWI4NDY5MzY0ZmQy
YjU1YTZhNTMwNGZiNWUuLmVkY2Y1MzJjODVhYWY4YzZiM2E1MGFlM2Q2NGJlMDZlOWFhMGUzNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVBsdWdpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KQEAgLTIwNCw5ICsyMDQsMTAg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKCkKICAgICAgICAg
Ly8gUGF0Y2ggLVtOU0V4Y2VwdGlvbiByZWxlYXNlXSB0byBub3QgcmVsZWFzZSB0aGUgb2JqZWN0
LgogICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CiAgICAgICAgIGRpc3BhdGNo
X29uY2UoJm9uY2UsIF57Ci0gICAgICAgICAgICBDbGFzcyBleGNlcHRpb25DbGFzcyA9IFtOU0V4
Y2VwdGlvbiBjbGFzc107Ci0gICAgICAgICAgICBNZXRob2QgZXhjZXB0aW9uUmVsZWFzZU1ldGhv
ZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKGV4Y2VwdGlvbkNsYXNzLCBAc2VsZWN0b3IocmVs
ZWFzZSkpOwotICAgICAgICAgICAgY2xhc3NfcmVwbGFjZU1ldGhvZChleGNlcHRpb25DbGFzcywg
QHNlbGVjdG9yKHJlbGVhc2UpLCByZWludGVycHJldF9jYXN0PElNUD4oTlNFeGNlcHRpb25fcmVs
ZWFzZSksIG1ldGhvZF9nZXRUeXBlRW5jb2RpbmcoZXhjZXB0aW9uUmVsZWFzZU1ldGhvZCkpOwor
ICAgICAgICAgICAgYXV0byBleGNlcHRpb25DbGFzcyA9IFtOU0V4Y2VwdGlvbiBjbGFzc107Cisg
ICAgICAgICAgICBhdXRvIHJlbGVhc2VTZWxlY3RvciA9IHNlbF9yZWdpc3Rlck5hbWUoInJlbGVh
c2UiKTsKKyAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uUmVsZWFzZU1ldGhvZCA9IGNsYXNzX2dl
dEluc3RhbmNlTWV0aG9kKGV4Y2VwdGlvbkNsYXNzLCByZWxlYXNlU2VsZWN0b3IpOworICAgICAg
ICAgICAgY2xhc3NfcmVwbGFjZU1ldGhvZChleGNlcHRpb25DbGFzcywgcmVsZWFzZVNlbGVjdG9y
LCByZWludGVycHJldF9jYXN0PElNUD4oTlNFeGNlcHRpb25fcmVsZWFzZSksIG1ldGhvZF9nZXRU
eXBlRW5jb2RpbmcoZXhjZXB0aW9uUmVsZWFzZU1ldGhvZCkpOwogICAgICAgICB9KTsKICAgICB9
CiB9CkBAIC0xMTU5LDkgKzExNjAsOSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjp1cGRhdGVQbHVn
aW5MYXllcigpCiAgICAgLy8gYmUgcmV0dXJuZWQgYnkgdXNpbmcgTlBOX0dldFZhbHVlIGFuZCBw
YXNzIHRoZSBXS05WRXhwZWN0c05vbnJldGFpbmVkTGF5ZXIgcGFyYW1ldGVyLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODI4MiBkZXNjcmliZXMgdGhl
IGJ1ZyB3aGVyZSBXZWJLaXQgZXhwZWN0cyByZXRhaW5lZCBsYXllcnMuCiAgICAgaWYgKG1fcGx1
Z2luUmV0dXJuc05vbnJldGFpbmVkTGF5ZXIpCi0gICAgICAgIG1fcGx1Z2luTGF5ZXIgPSByZWlu
dGVycHJldF9jYXN0PENBTGF5ZXIgKj4odmFsdWUpOworICAgICAgICBtX3BsdWdpbkxheWVyID0g
KF9fYnJpZGdlIENBTGF5ZXIgKil2YWx1ZTsKICAgICBlbHNlCi0gICAgICAgIG1fcGx1Z2luTGF5
ZXIgPSBhZG9wdE5TKHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllciAqPih2YWx1ZSkpOworICAgICAg
ICBtX3BsdWdpbkxheWVyID0gYWRvcHROUygoX19icmlkZ2UgQ0FMYXllciAqKXZhbHVlKTsKIAog
ICAgIGlmIChtX3BsdWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVp
cmtzOjpNYWtlT3BhcXVlVW5sZXNzVHJhbnNwYXJlbnRTaWx2ZXJsaWdodEJhY2tncm91bmRBdHRy
aWJ1dGVFeGlzdHMpICYmCiAgICAgICAgICFtX2lzVHJhbnNwYXJlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA1YzJlMDY2
OTJiZmE3N2EyNThlMjQ0ZWMzOGNhNmRlY2ExZWE4MGI2Li41MzA3ZTI2YTc2MzdlOGE2OWIwNDVh
YmI5Mjg3OWYzZjhjNjU4NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTY5LDYgKzY5LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BERkRvY3VtZW50SW1hZ2UuaD4KQEAgLTgxLDE1ICs4MiwxMiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU01lbnVTUEkuaD4KICNpbXBvcnQgPHd0
Zi9VVUlELmg+CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIC8vIFNldCBvdmVyZmxvdzogaGlkZGVuIG9uIHRoZSBhbm5vdGF0aW9uIGNvbnRhaW5l
ciBzbyA8aW5wdXQ+IGVsZW1lbnRzIHNjcm9sbGVkIG91dCBvZiB2aWV3IGRvbid0IHNob3cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggYmZhYjYwYTZkYWU3ZDQ1ZjA2MDIx
ZWY3NDM1NDJhNzdmZWJlZDc5ZS4uMWY5MGM0YTU3NDBmNDE1MDlkOGU4NWIxOWQ0YTA3ZTgwMDQz
YTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTYzLDcgKzYzLDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1zdGF0aWMgdm9pZCBjaGFuZ2VXb3Jk
Q2FzZShXZWJQYWdlKiBwYWdlLCBTRUwgc2VsZWN0b3IpCitzdGF0aWMgdm9pZCBjaGFuZ2VXb3Jk
Q2FzZShXZWJQYWdlKiBwYWdlLCBOU1N0cmluZyAqKCpjaGFuZ2VDYXNlKShOU1N0cmluZyAqKSkK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLmVkaXRvcigpLmNhbkVkaXQo
KSkKQEAgLTcyLDIyICs3MiwyOCBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VXb3JkQ2FzZShXZWJQYWdl
KiBwYWdlLCBTRUwgc2VsZWN0b3IpCiAgICAgZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0
V29yZCIpLmV4ZWN1dGUoKTsKIAogICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1l
LmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUuZWRpdG9yKCkuc2VsZWN0ZWRU
ZXh0KCkpOwotICAgIHBhZ2UtPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCgmZnJhbWUsIFtzZWxl
Y3RlZFN0cmluZyBwZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdKTsKKyAgICBwYWdlLT5yZXBsYWNl
U2VsZWN0aW9uV2l0aFRleHQoJmZyYW1lLCBjaGFuZ2VDYXNlKHNlbGVjdGVkU3RyaW5nKSk7CiB9
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBjaGFuZ2VX
b3JkQ2FzZShtX3BhZ2UsIEBzZWxlY3Rvcih1cHBlcmNhc2VTdHJpbmcpKTsKKyAgICBjaGFuZ2VX
b3JkQ2FzZShtX3BhZ2UsIFtdIChOU1N0cmluZyAqc3RyaW5nKSB7CisgICAgICAgIHJldHVybiBb
c3RyaW5nIHVwcGVyY2FzZVN0cmluZ107CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojpsb3dlcmNhc2VXb3JkKCkKIHsKLSAgICBjaGFuZ2VXb3JkQ2FzZShtX3BhZ2UsIEBzZWxl
Y3Rvcihsb3dlcmNhc2VTdHJpbmcpKTsKKyAgICBjaGFuZ2VXb3JkQ2FzZShtX3BhZ2UsIFtdIChO
U1N0cmluZyAqc3RyaW5nKSB7CisgICAgICAgIHJldHVybiBbc3RyaW5nIGxvd2VyY2FzZVN0cmlu
Z107CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjYXBpdGFsaXplV29yZCgp
CiB7Ci0gICAgY2hhbmdlV29yZENhc2UobV9wYWdlLCBAc2VsZWN0b3IoY2FwaXRhbGl6ZWRTdHJp
bmcpKTsKKyAgICBjaGFuZ2VXb3JkQ2FzZShtX3BhZ2UsIFtdIChOU1N0cmluZyAqc3RyaW5nKSB7
CisgICAgICAgIHJldHVybiBbc3RyaW5nIGNhcGl0YWxpemVkU3RyaW5nXTsKKyAgICB9KTsKIH0K
IAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGU0M2UyOWQzYTUz
ZDRmMGM5MTk0NzRkYzViNDUyNDQ2MTcxZjA0YjAuLjE3Y2ZiMzRkZTA0ZTgzZWNjYWVmMzQzMTI1
OTk3ODE2NDBlOTg3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNzMsMTkgKzczLDIyIEBACiAjaW1wb3J0IDxzdGRpby5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdElPUy5oIgogI2ltcG9ydCA8VUlLaXQvVUlBY2Nlc3NpYmlsaXR5Lmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJLmg+CisjZW5kaWYKIAotI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisjaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogI2ltcG9ydCA8QVhSdW50aW1lL0FYRGVmaW5lcy5oPgogI2ltcG9ydCA8QVhSdW50aW1l
L0FYTm90aWZpY2F0aW9uQ29uc3RhbnRzLmg+Ci0jZWxzZQotI2RlZmluZSBrQVhQaWRTdGF0dXND
aGFuZ2VkTm90aWZpY2F0aW9uIDAKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKSAmJiAhVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNkZWZpbmUga0FYUGlkU3RhdHVzQ2hhbmdlZE5vdGlmaWNh
dGlvbiAwCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIldLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RNYWMuaCIKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
M0RNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lTWFjLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU1Njcm9sbGVySW1wU1BJLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348104</attachid>
            <date>2018-08-26 15:11:34 -0700</date>
            <delta_ts>2018-08-27 07:04:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188955-20180826151133.patch</filename>
            <type>text/plain</type>
            <size>81033</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwOTgwOGFiYWU0NjMxNDZl
M2QyNTI4MmI2YmZjZGMzMmU5OTdlNWQuLjg2ZDNhOTdkYTk1NTc2ZDIyNTk0MmFlNWJlMmViNjMw
ODk5ZGY0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTk2IEBACisyMDE4LTA4LTI2ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkYXB0IG1vcmUgV2Vi
S2l0IGNvZGUgdG8gYmUgQVJDLWNvbXBhdGlibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODk1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaDogVXNlIF9fc3Ryb25nIGZvciBhbiBpbi9vdXQgYXJndW1lbnQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQpOgorICAgICAgICBVc2UgX19zdHJvbmcgZm9y
IGEgaW4vb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6YXBwbHlDb29raWVCbG9ja2luZ1BvbGljeSk6IENhbGwgYSBOU1VSTFNlc3Npb25UYXNrCisg
ICAgICAgIG1ldGhvZCB1c2luZyBhbiBleHBsaWNpdCBjYXRlZ29yeSBkZWNsYXJhdGlvbiByYXRo
ZXIgdGhhbiBieSB1c2luZyBwZXJmb3JtU2VsZWN0b3I6CisgICAgICAgIHNpbmNlIEFSQyBpcyB1
bmFibGUgdG8gY29ycmVjdGx5IGNvbXBpbGUgYSBjYWxsIHdoZW4gaXQgZG9lc24ndCBrbm93IGFy
Z3VtZW50IGFuZAorICAgICAgICByZXN1bHQgdHlwZXMuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXpl
Q29jb2FPdmVycmlkZXMpOiBBZGQgc29tZSBfX2JyaWRnZSBjYXN0cy4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbTogVXNlIEhhc2hTZXQ8Q0ZUeXBl
UmVmPiBpbnN0ZWFkIG9mCisgICAgICAgIEhhc2hTZXQ8Q2xhc3M+IHNpbmNlIENsYXNzIGlhIGFu
IEFSQy1tYW5hZ2VkIHR5cGUgYW5kIFdURiBoYXNoIHRhYmxlcyBjYW4ndAorICAgICAgICBjdXJy
ZW50bHkgaGFuZGxlIHRob3NlIGFzIGtleSB0eXBlcy4KKyAgICAgICAgKC1bV0tSZW1vdGVPYmpl
Y3REZWNvZGVyIGRlY29kZVZhbHVlT2ZPYmpDVHlwZTphdDpdKTogQ2hhbmdlZCB0eXBlcyBhbmQg
YWRkZWQgY2FzdHMKKyAgICAgICAgdG8gYWRhcHQgdG8gdGhlIGFib3ZlLgorICAgICAgICAoZGVj
b2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbSk6IERpdHRvLgorICAgICAgICAoY2hlY2tJZkNsYXNz
SXNBbGxvd2VkKTogRGl0dG8uCisgICAgICAgIChkZWNvZGVJbnZvY2F0aW9uQXJndW1lbnRzKTog
RGl0dG8uCisgICAgICAgIChkZWNvZGVPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKC1bV0tSZW1v
dGVPYmplY3REZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3Nlczpmb3JLZXk6XSk6IERpdHRvLgor
ICAgICAgICAoLVtXS1JlbW90ZU9iamVjdERlY29kZXIgYWxsb3dlZENsYXNzZXNdKTogRGl0dG8u
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06
CisgICAgICAgIChwcm9wZXJ0eUxpc3RDbGFzc2VzKTogRGl0dG8uCisgICAgICAgIChpbml0aWFs
aXplTWV0aG9kKTogRGl0dG8uCisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBk
ZWJ1Z0Rlc2NyaXB0aW9uXSk6IERpdHRvLgorICAgICAgICAoY2xhc3Nlc0ZvclNlbGVjdG9yQXJn
dW1lbnQpOiBEaXR0by4KKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIGNsYXNz
ZXNGb3JTZWxlY3Rvcjphcmd1bWVudEluZGV4Om9mUmVwbHk6XSk6IERpdHRvLgorICAgICAgICAo
LVtfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ugc2V0Q2xhc3Nlczpmb3JTZWxlY3Rvcjphcmd1bWVu
dEluZGV4Om9mUmVwbHk6XSk6IERpdHRvLgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UgX2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjpdKTogRGl0dG8uCisgICAg
ICAgICgtW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSBfYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlc0Zv
clJlcGx5QmxvY2tPZlNlbGVjdG9yOl0pOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZUludGVybmFsLmg6IERpdHRvLgorCisgICAgICAg
ICogU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW06CisgICAgICAgIChXS1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZyk6IFVzZSBDRlJldGFpbiBpbnN0ZWFkIG9mIC1bTlNPYmplY3QgcmV0YWlu
XS4gQWxzbyB1c2UKKyAgICAgICAgYSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwpOiBEaXR0
by4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6
Ok9iamVjdDo6cmVmKTogQWRkZWQgYSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoQVBJOjpPYmpl
Y3Q6OmRlcmVmKTogRGl0dG8uCisgICAgICAgIChBUEk6OmFsbG9jYXRlV0tPYmplY3QpOiBVc2Ug
Y2xhc3NfY3JlYXRlSW5zdGFuY2UgaW5zdGVhZCBvZiBOU0FsbG9jYXRlT2JqZWN0LgorICAgICAg
ICAoQVBJOjpPYmplY3Q6OndyYXApOiBVc2UgYSBfX2JyaWRnZSBjYXN0LgorICAgICAgICAoQVBJ
OjpPYmplY3Q6OnVud3JhcCk6IERpdHRvLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDogVXNlIENGVHlwZVJlZiBmb3Ig
bGF5ZXJzCisgICAgICAgIG9yIHZpZXdzIGluIHRoZSBSZWxhdGVkTGF5ZXJNYXAgc2luY2Ugd2Ug
ZG9uJ3Qgd2FudCB0aGUgaXRlbXMgcmV0YWluZWQsIGFuZCBjYW4ndAorICAgICAgICB1c2UgX191
bnNhZmVfdXJldGFpbmVkIGJlY2F1c2UgdGhlIGhlYWRlciBpcyB1c2VkIGluIG5vbi1PYmplY3Rp
dmUtQyBjb250ZXh0cy4KKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMpOiBBZGRlZCBfX2JyaWRnZSBjYXN0
cywKKyAgICAgICAgbmVlZGVkIGJlY2F1c2Ugb2YgdGhlIGFib3ZlIGNoYW5nZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpicm93c2luZ0NvbnRleHRDb250cm9sbGVyTWFwKTogVXNlIF9fdW5z
YWZlX3VucmV0YWluZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKGRpZFJlY2VpdmVNZXNzYWdlKTogVXNlIGEgX19icmlkZ2UgY2Fz
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9y
ZS5tbToKKyAgICAgICAgKC1bV0tDb250ZW50UnVsZUxpc3RTdG9yZSBjb21waWxlQ29udGVudFJ1
bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudFJ1bGVMaXN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICBVc2UgYSByZXRhaW4gaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGhh
dmUgYSAicmVsZWFzZXNBcmd1bWVudDoiIGJvb2xlYW4uIFRoZSBjb3N0IG9mIGEgc2luZ2xlCisg
ICAgICAgIHJldGFpbi9yZWxlYXNlIHBhaXIgc2hvdWxkIGJlIGluZmluaXRlc21hbCBjb21wYXJl
ZCB0byB0aGUgZW50aXJlIHByb2Nlc3Mgb2YgY29tcGlsaW5nLgorICAgICAgICAoLVtXS0NvbnRl
bnRSdWxlTGlzdFN0b3JlIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNv
ZGVkQ29udGVudFJ1bGVMaXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBNb3ZlZCB0
aGUgY29kZSBmb3IgdGhlICJyZWxlYXNlcyBhcmd1bWVudCIgdmVyc2lvbiBoZXJlIHNpbmNlIHRo
ZSBwcml2YXRlIG1ldGhvZCBpcyBub3cgdGhlCisgICAgICAgIGFjdHVhbCBtZXRob2QgdGhhdCBk
b2VzIHRoZSB3b3JrLiBUaGUgcHVibGljIG1ldGhvZCBub3cgc2ltcGx5IGNhbGxzIHRoaXMgcHJp
dmF0ZSBvbmUgYWZ0ZXIKKyAgICAgICAgZG9pbmcgYSByZXRhaW4uIFRoZSBvcHRpbWl6YXRpb24g
b2YgcmVsZWFzaW5nIHRoZSBhcmd1bWVudCBhdCB0aGUgY29ycmVjdCBtb21lbnQgc2hvdWxkIGJl
IGludGFjdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3Rv
cmUubW06IFVzZSBDRlR5cGVSZWYgZm9yIHRoZSBrZXkgdG8gdGhlIF9vYnNlcnZlcnMKKyAgICAg
ICAgSGFzaE1hcCBzaW5jZSB0aGUgV1RGIGNvbGxlY3Rpb25zIGNhbid0IHlldCBoYW5kbGUgQVJD
IHR5cGVzIGZvciBrZXlzLgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBhZGRPYnNlcnZl
cjpdKTogQWRkZWQgX19icmlkZ2UgY2FzdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBhYm92
ZS4KKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmUgcmVtb3ZlT2JzZXJ2ZXI6XSk6IERpdHRv
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbToKKyAg
ICAgICAgKHNldFVwQ29ubmVjdGlvbkNsaWVudCk6IEFkZGVkIGEgX19icmlkZ2UgY2FzdC4KKyAg
ICAgICAgKHNldFVwSGlzdG9yeUNsaWVudCk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmg6IEFkZGVkIGEgZGVjbGFyYXRpb24gb2YgdGhlCisg
ICAgICAgIC1bV0tWaWV3IF9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOmNvbXBsZXRpb25I
YW5kbGVyOl0gbWV0aG9kLiBUaGlzIHBlY3VsaWFyIGlkaW9tCisgICAgICAgIHNob3VsZCBiZSBy
ZW1vdmVkLCBidXQgSSBkaWRuJ3QgYm90aGVyIGRvaW5nIHRoYXQgc2luY2UgdGhlIGVudGlyZSBX
S1ZpZXcgY2xhc3MgaXMgYWxyZWFkeQorICAgICAgICBkZXByZWNhdGVkIGFuZCBzbyB3aWxsIGV2
ZW50dWFsbHkgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOiBVc2UgX191bnNhZmVfdW5yZXRhaW5lZCBmb3IgdGhlIGtleXMgaW4gdGhlIHBh
Z2UgdG8KKyAgICAgICAgdmlldyBtYXAuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5RXZlbnRzRW5h
YmxlZENoYW5nZWRDYWxsYmFjayk6IFVzZSBhIF9fYnJpZGdlIGNhc3QuCisgICAgICAgICgtW1dL
V2ViVmlldyBfY2VydGlmaWNhdGVDaGFpbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3
IGNlcnRpZmljYXRlQ2hhaW5dKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQubW06CisgICAgICAgIChpc0RlY2xhcmVkT3JEeW5hbWljVHlwZUlk
ZW50aWZpZXIpOiBVc2UgX19icmlkZ2UgY2FzdHMuCisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJ
bmZvIG1pbWVUeXBlXSk6IERpdHRvLiBBbHNvIHVzZSBicmlkZ2luZ0F1dG9yZWxlYXNlLgorICAg
ICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyB1dGlUeXBlXSk6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0
YWxsSWNvbkxvYWRpbmdDbGllbnRdKTogQ2FsbCB0aGUgbWV0aG9kCisgICAgICAgIF9zaG91bGRM
b2FkSWNvbldpdGhQYXJhbWV0ZXJzOmNvbXBsZXRpb25IYW5kbGVyOiBpbiBhIG5vcm1hbCB3YXkg
cmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgICAgcGVyZm9ybVNlbGVjdG9yOndpdGhPYmplY3Q6d2l0
aE9iamVjdDogc2luY2UgQVJDIGlzIHVuYWJsZSB0byBjb3JyZWN0bHkgY29tcGlsZSBhIGNhbGwK
KyAgICAgICAgd2hlbiBpdCBkb2Vzbid0IGtub3cgYXJndW1lbnQgYW5kIHJlc3VsdCB0eXBlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFz
dGVyS2V5KTogVXNlIHRoZSBvdmVybG9hZAorICAgICAgICBvZiBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nIHRoYXQga25vd3MgaG93IHRvIHdvcmsgd2l0aCBhbiBOU0RhdGEgcmF0aGVy
IHRoYW4KKyAgICAgICAgcmUtaW1wbGVtZW50aW5nIGl0IGhlcmUuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogRGl0dG8uIEFsc28gcmVt
b3ZlZCB1bm5lZWRlZAorICAgICAgICB1c2Ugb2YgUmV0YWluUHRyLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6IFVzZSBOU09iamVjdCAqIGFzIHRoZSByZXN1bHQg
dHlwZSBvZgorICAgICAgICBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0
VGVzdFJlc3VsdC4gT3VyIHRlY2huaXF1ZXMgZm9yIGRlZmluaW5nIHN1Y2gKKyAgICAgICAgZnVu
Y3Rpb25zIGluIGhlYWRlcnMgd2hpbGUgcmVtYWluaW5nIGNvbXBhdGlibGUgd2l0aCBub24tT2Jq
ZWN0aXZlLUMgd2lsbCBzdGlsbCB3b3JrCisgICAgICAgIGZpbmUgZ2l2ZW4gaG93IHdlIHVzZSB0
aGlzLCBhbmQgY29udmVydGluZyB0byBhbmQgZnJvbSB2b2lkKiByYXRoZXIgdGhhbiBOU09iamVj
dCAqCisgICAgICAgIHdvdWxkIGJlIGRpZmZpY3VsdCB0byBkbyBjb3JyZWN0bHkgdW5kZXIgQVJD
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOiBVc2UgQ0ZSZXRhaW4vQ0ZB
dXRvcmVsZWFzZSBpbnN0ZWFkIG9mCisgICAgICAgIHJldGFpbi9hdXRvcmVsZWFzZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW1tZWRpYXRlQWN0aW9u
QW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQpOgorICAgICAgICBVcGRhdGVkIHJl
dHVybiB0eXBlIHRvIE5TT2JqZWN0ICouCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpw
ZXJmb3JtS2V5RXF1aXZhbGVudCk6IFVzZSBDRlJldGFpbi9DRkF1dG9yZWxlYXNlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDogVXNlIE5TT2JqZWN0ICogYXMgdGhlIHJlc3Vs
dCB0eXBlLCBhcyBhYm92ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJUcmVlKTogVXNlIF9fYnJpZGdlIGNhc3RzIHRvIGJlIGNvbXBhdGli
bGUKKyAgICAgICAgd2l0aCB0aGUgY2hhbmdlcyB0byB0aGUgUmVsYXRlZExheWVyTWFwIHR5cGVz
LgorICAgICAgICAoV2ViS2l0OjpyZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZSk6
IFVzZSBfX2JyaWRnZSBjYXN0LgorCisgICAgICAgICogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbW1lZGlh
dGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIFVz
ZSBOU09iamVjdCAqIGFzIHRoZSByZXN1bHQgdHlwZSwgYXMgYWJvdmUuCisgICAgICAgICogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOiBVc2UgTlNPYmplY3QgKiBhcyB0aGUg
cmVzdWx0IHR5cGUsIGFzIGFib3ZlLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVmVmlldyk6IFVzZSBfX2JyaWRn
ZSBjYXN0LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGVyZWZWaWV3KTogRGl0
dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZXNDb250cm9sbGVyOjpyZWZyZXNoRXhpc3RpbmdTZXJ2aWNl
cyk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgdXNlCisgICAgICAgIG9mIE5ldmVyRGVzdHJveWVkIGZv
ciBPYmplY3RpdmUtQyBvYmplY3QgcG9pbnRlcnMuIFNpbXBsZXIgYW5kIG1vcmUgZWZmaWNpZW50
CisgICAgICAgIGJvdGggd2l0aCBhbmQgd2l0aG91dCBBUkMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyIF91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtXSk6IFJlbW92
ZWQgdW5uZWVkZWQKKyAgICAgICAgY2FzdCBub3cgdGhhdCBpbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdCBoYXMgYSBtb3JlCisgICAgICAgIGFjY3VyYXRl
IHJldHVybiB0eXBlLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5t
bToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgZGVhbGxvY10pOiBVc2UgYSBtb3JlIGRpcmVj
dCBhcHByb2FjaCB0byBtYWtpbmcgc3VyZSB3ZSBkbyB0aGUKKyAgICAgICAgbm9uLXRocmVhZC1z
YWZlIGFjdGlvbnMgb24gdGhlIG1haW4gdGhyZWFkIHdpdGggYSBjYWxsIHRvIGNhbGxPbk1haW5U
aHJlYWQuCisgICAgICAgIFRoZSBvbGQgc29sdXRpb24sIFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFs
bG9jYXRlT25NYWluVGhyZWFkLCBtYXkgbm90IGJlIHBvc3NpYmxlCisgICAgICAgIGluIGFuIEFS
Qy1jb21wYXRpYmxlIHdheSwgYnV0IHRoaXMgb25lIHNob3VsZCB3b3JrIGZpbmUuCisgICAgICAg
IChsaW5rRGVzdGluYXRpb25OYW1lKTogQ2hhbmdlZCB0byByZXR1cm4gYW4gTlNTdHJpbmcgKiB0
byBtYWtlIHN1cmUgd2UgZ2V0IHRoZQorICAgICAgICBvYmplY3QgbGlmZXRpbWVzIGNvcnJlY3Qg
dW5kZXIgQVJDLgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1BERkRvY3VtZW50OnBh
Z2U6YXRQb2ludDpdKTogQWRkZWQgX19icmlkZ2UgY2FzdHMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMuaDogVXNlIF9fdW5zYWZl
X3VucmV0YWluZWQKKyAgICAgICAgZm9yIHRoZSB2YWx1ZSB0eXBlcyBpbiBET00gY2FjaGVzLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFs
cy5tbToKKyAgICAgICAgKFdlYktpdDo6dG9XS0RPTU5vZGUpOiBVcGRhdGVkIGZvciB0aGUgYWJv
dmUuCisgICAgICAgIChXZWJLaXQ6OnRvV0tET01SYW5nZSk6IERpdHRvLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSk6IFJl
d3JvdGUgdGhlIGNsYXNzX3JlcGxhY2VNZXRob2QKKyAgICAgICAgY2FsbCB0byBzaWRlc3RlcCB0
aGUgcnVsZXMgYWJvdXQgbm90IHVzaW5nIEBzZWxlY3RvcihyZWxlYXNlKSB1bmRlciBBUkMuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp1cGRhdGVQbHVnaW5MYXllcik6IFVzZSBf
X2JyaWRnZSBjYXN0cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOiBBZGRlZCBhbiBpbmNsdWRlIG9mCisgICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLmgsIHdpdGhvdXQgd2hpY2ggdGhpcyBjb2RlIGRvZXNuJ3QgY29tcGlsZQor
ICAgICAgICB1bmRlciBBUkMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNoYW5nZVdvcmRD
YXNlKTogVXNlIGEgZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBzZWxlY3Rvciwgc2luY2UgQVJDIGlz
IHVuYWJsZQorICAgICAgICB0byBjb3JyZWN0bHkgY29tcGlsZSBhIG1ldGhvZCBjYWxsIHdoZW4g
aXQgZG9lc24ndCBrbm93IGFyZ3VtZW50IGFuZCByZXN1bHQgdHlwZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkVkaXRvckNsaWVudDo6dXBwZXJjYXNlV29yZCk6IFVwZGF0ZWQgdG8gdXNlIGEgZnVu
Y3Rpb24gcmF0aGVyIHRoYW4gYSBzZWxlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50Ojpsb3dlcmNhc2VXb3JkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6Y2FwaXRhbGl6ZVdvcmQpOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOiBBZGRlZCBhbiBpbmNsdWRlIG9mCisgICAgICAgIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TL01hYy5oLCB3aXRob3V0IHdoaWNoIHRoaXMg
Y29kZSBkb2Vzbid0IGNvbXBpbGUKKyAgICAgICAgdW5kZXIgQVJDLgorCiAyMDE4LTA4LTIzICBK
ZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgLVtXS05hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkV2l0aEN1cnJl
bnRQb2xpY3k6cGx1Z2luSW5mbzp1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uOl0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaAppbmRleCAzZTgyZWU0NWNmNDU3MTVmMjA3MjRkMjcwYmU5YWY3ZGY0MTJhNGEyLi42
MmIxYzE0OTVhMWMxN2FjMjZlOThjZWJhN2YyYTcwODFlNjgyZWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRh
dGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImKTsKLSAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1
ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOworICAgIHZvaWQgYXBwbHlT
bmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25n
IE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKICAgICBzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqc3RhdGVsZXNzQ29va2llU3Rv
cmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZjJjYzczMzU5M2NhZGMwNWNmNDYzMDdl
NjgyMGY0YjkyMDQ2OTQxMC4uZmMyMDljOGY3MTM5N2UxNzI4YzE1MjM3OTkzN2IyOGI5ZjRjMWQy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC01Niw2ICs1NiwxNSBAQCBAZW5kCiAjaW1wb3J0
IDxDRk5ldHdvcmsvQ0ZOU1VSTENvbm5lY3Rpb24uaD4KICNlbmRpZgogCisjaWYgSEFWRShDRk5F
VFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCisKKy8vIEZJWE1FOiBNb3ZlIHRvIENGTmV0d29y
a1NQSS5oPworQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrICgpCistICh2b2lkKV9zZXRFeHBs
aWNpdENvb2tpZVN0b3JhZ2U6KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpc3RvcmFnZTsKK0BlbmQK
KworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgVVNFKENSRURFTlRJQUxfU1RP
UkFHRV9XSVRIX05FVFdPUktfU0VTU0lPTikKQEAgLTg1LDcgKzk0LDcgQEAgc3RhdGljIGZsb2F0
IHRvTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5KFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5KQogICAgIHJldHVybiBOU1VSTFNlc3Npb25UYXNrUHJpb3JpdHlEZWZhdWx0Owog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQoTlNVUkxSZXF1ZXN0KiYgbnNSZXF1ZXN0LCBi
b29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRS
ZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QgKiYgbnNSZXF1
ZXN0LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZikKIHsKICNpZiAhUExBVEZPUk0oTUFDKQogICAgIFVOVVNFRF9QQVJBTShzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZik7CkBAIC0xMTksNiArMTI4LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlm
TmVlZGUKIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQorCiBO
U0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVsZXNzQ29va2ll
U3RvcmFnZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0hUVFBD
b29raWVTdG9yYWdlPj4gc3RhdGVsZXNzQ29va2llU3RvcmFnZTsKQEAgLTE0NCwxMCArMTU0LDEx
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llQmxvY2tpbmdQb2xpY3ko
Ym9vbCBzaG91bGRCbG9jaykKICAgICBpZiAoc2hvdWxkQmxvY2sgPT0gbV9oYXNCZWVuU2V0VG9V
c2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU0hUVFBD
b29raWVTdG9yYWdlICpzdG9yYWdlID0gc2hvdWxkQmxvY2sgPyBzdGF0ZWxlc3NDb29raWVTdG9y
YWdlKCk6IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkubnNDb29raWVTdG9yYWdl
KCk7Ci0gICAgW21fdGFzayBwZXJmb3JtU2VsZWN0b3I6TlNTZWxlY3RvckZyb21TdHJpbmcoQCJf
c2V0RXhwbGljaXRDb29raWVTdG9yYWdlOiIpIHdpdGhPYmplY3Q6KE5TT2JqZWN0KilzdG9yYWdl
Ll9jb29raWVTdG9yYWdlXTsKKyAgICBOU0hUVFBDb29raWVTdG9yYWdlICpzdG9yYWdlID0gc2hv
dWxkQmxvY2sgPyBzdGF0ZWxlc3NDb29raWVTdG9yYWdlKCkgOiBtX3Nlc3Npb24tPm5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpLm5zQ29va2llU3RvcmFnZSgpOworICAgIFttX3Rhc2sgX3NldEV4cGxp
Y2l0Q29va2llU3RvcmFnZTpzdG9yYWdlLl9jb29raWVTdG9yYWdlXTsKICAgICBtX2hhc0JlZW5T
ZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgPSBzaG91bGRCbG9jazsKIH0KKwogI2VuZGlm
CiAKIGJvb2wgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmlzVGhpcmRQYXJ0eVJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDdlYzA0YmNmZWQ1
ODMyNmM2NjM1M2VlMzVlOGIxYjc1Y2UxMTliZmEuLmMzMTIwYmI1OWEwYTU0YjY5ODcwOTJmYWY1
NjkyZDQyNDE1M2U2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQ1Myw4ICs0NTMsOCBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90
aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCkud2luZG93SGlkZGVuKFtub3Rp
ZmljYXRpb24gb2JqZWN0XSk7IH1dOwogCiAgICAgLy8gTGVhayB0aGUgdHdvIG9ic2VydmVycyBz
byB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl
IHByb2Nlc3MuCi0gICAgQ0ZSZXRhaW4ob3JkZXJPblNjcmVlbk9ic2VydmVyKTsKLSAgICBDRlJl
dGFpbihvcmRlck9mZlNjcmVlbk9ic2VydmVyKTsKKyAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZU
eXBlUmVmKW9yZGVyT25TY3JlZW5PYnNlcnZlcik7CisgICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENG
VHlwZVJlZilvcmRlck9mZlNjcmVlbk9ic2VydmVyKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNz
OjpzZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhib29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbQppbmRleCA2ZjBiOWIyZWNiNDExOWZlMTJlNDBjZmQyNTUxOTM3OTJiNTYzYjIxLi44ZDFm
MWFjMThmYjZhZDRjZTc2NDU5Y2U4ZjdjOGZhNGIyYmI1NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMzg1
LDcgKzM4NSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1JlbW90ZU9iamVjdERlY29kZXIgewogICAg
IGNvbnN0IEFQSTo6QXJyYXkqIF9vYmplY3RTdHJlYW07CiAgICAgc2l6ZV90IF9vYmplY3RTdHJl
YW1Qb3NpdGlvbjsKIAotICAgIGNvbnN0IEhhc2hTZXQ8Q2xhc3M+KiBfYWxsb3dlZENsYXNzZXM7
CisgICAgY29uc3QgSGFzaFNldDxDRlR5cGVSZWY+KiBfYWxsb3dlZENsYXNzZXM7CiB9CiAKIC0g
KGlkKWluaXRXaXRoSW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKilpbnRlcmZh
Y2Ugcm9vdE9iamVjdERpY3Rpb25hcnk6KGNvbnN0IEFQSTo6RGljdGlvbmFyeSopcm9vdE9iamVj
dERpY3Rpb25hcnkgcmVwbHlUb1NlbGVjdG9yOihTRUwpcmVwbHlUb1NlbGVjdG9yCkBAIC00MTAs
NyArNDEwLDcgQEAgLSAodm9pZClkZWNvZGVWYWx1ZU9mT2JqQ1R5cGU6KGNvbnN0IGNoYXIgKil0
eXBlIGF0Oih2b2lkICopZGF0YQogICAgIHN3aXRjaCAoKnR5cGUpIHsKICAgICAvLyBpbnQKICAg
ICBjYXNlICdpJzoKLSAgICAgICAgKnN0YXRpY19jYXN0PGludCo+KGRhdGEpID0gW2RlY29kZU9i
amVjdEZyb21PYmplY3RTdHJlYW0oc2VsZiwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGludFZhbHVl
XTsKKyAgICAgICAgKnN0YXRpY19jYXN0PGludCo+KGRhdGEpID0gW2RlY29kZU9iamVjdEZyb21P
YmplY3RTdHJlYW0oc2VsZiwgeyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10g
fSkgaW50VmFsdWVdOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBAIC00MzMsOSAr
NDMzLDkgQEAgLSAoaWQpZGVjb2RlT2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtleQogICAgIHJl
dHVybiBbc2VsZiBkZWNvZGVPYmplY3RPZkNsYXNzZXM6bmlsIGZvcktleTprZXldOwogfQogCi1z
dGF0aWMgaWQgZGVjb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqLCBjb25zdCBBUEk6
OkRpY3Rpb25hcnkqLCBjb25zdCBIYXNoU2V0PENsYXNzPiYgYWxsb3dlZENsYXNzZXMpOworc3Rh
dGljIGlkIGRlY29kZU9iamVjdChXS1JlbW90ZU9iamVjdERlY29kZXIgKiwgY29uc3QgQVBJOjpE
aWN0aW9uYXJ5KiwgY29uc3QgSGFzaFNldDxDRlR5cGVSZWY+JiBhbGxvd2VkQ2xhc3Nlcyk7CiAK
LXN0YXRpYyBpZCBkZWNvZGVPYmplY3RGcm9tT2JqZWN0U3RyZWFtKFdLUmVtb3RlT2JqZWN0RGVj
b2RlciAqZGVjb2RlciwgY29uc3QgSGFzaFNldDxDbGFzcz4mIGFsbG93ZWRDbGFzc2VzKQorc3Rh
dGljIGlkIGRlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oV0tSZW1vdGVPYmplY3REZWNvZGVy
ICpkZWNvZGVyLCBjb25zdCBIYXNoU2V0PENGVHlwZVJlZj4mIGFsbG93ZWRDbGFzc2VzKQogewog
ICAgIGlmICghZGVjb2Rlci0+X29iamVjdFN0cmVhbSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAg
LTQ1NCwxMSArNDU0LDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrSWZDbGFzc0lzQWxsb3dlZChXS1Jl
bW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIENsYXNzIG9iamVjdENsCiAgICAgaWYgKCFhbGxv
d2VkQ2xhc3NlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFsbG93ZWRDbGFzc2VzLT5j
b250YWlucyhvYmplY3RDbGFzcykpCisgICAgaWYgKGFsbG93ZWRDbGFzc2VzLT5jb250YWlucygo
X19icmlkZ2UgQ0ZUeXBlUmVmKW9iamVjdENsYXNzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChDbGFzcyBzdXBlcmNsYXNzID0gY2xhc3NfZ2V0U3VwZXJjbGFzcyhvYmplY3RDbGFzcyk7
IHN1cGVyY2xhc3M7IHN1cGVyY2xhc3MgPSBjbGFzc19nZXRTdXBlcmNsYXNzKHN1cGVyY2xhc3Mp
KSB7Ci0gICAgICAgIGlmIChhbGxvd2VkQ2xhc3Nlcy0+Y29udGFpbnMoc3VwZXJjbGFzcykpCisg
ICAgICAgIGlmIChhbGxvd2VkQ2xhc3Nlcy0+Y29udGFpbnMoKF9fYnJpZGdlIENGVHlwZVJlZilz
dXBlcmNsYXNzKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3OCw3ICs0Nzgs
NyBAQCBzdGF0aWMgdm9pZCB2YWxpZGF0ZUNsYXNzKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVj
b2RlciwgQ2xhc3Mgb2JqZWN0Q2xhc3MpCiAgICAgW2RlY29kZXIgdmFsaWRhdGVDbGFzc1N1cHBv
cnRzU2VjdXJlQ29kaW5nOm9iamVjdENsYXNzXTsKIH0KIAotc3RhdGljIHZvaWQgZGVjb2RlSW52
b2NhdGlvbkFyZ3VtZW50cyhXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIE5TSW52b2Nh
dGlvbiAqaW52b2NhdGlvbiwgY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiYgYWxsb3dlZEFy
Z3VtZW50Q2xhc3NlcywgTlNVSW50ZWdlciBmaXJzdEFyZ3VtZW50KQorc3RhdGljIHZvaWQgZGVj
b2RlSW52b2NhdGlvbkFyZ3VtZW50cyhXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiwgY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4m
IGFsbG93ZWRBcmd1bWVudENsYXNzZXMsIE5TVUludGVnZXIgZmlyc3RBcmd1bWVudCkKIHsKICAg
ICBOU01ldGhvZFNpZ25hdHVyZSAqbWV0aG9kU2lnbmF0dXJlID0gaW52b2NhdGlvbi5tZXRob2RT
aWduYXR1cmU7CiAgICAgTlNVSW50ZWdlciBhcmd1bWVudENvdW50ID0gbWV0aG9kU2lnbmF0dXJl
Lm51bWJlck9mQXJndW1lbnRzOwpAQCAtNDkxLDU2ICs0OTEsNTYgQEAgc3RhdGljIHZvaWQgZGVj
b2RlSW52b2NhdGlvbkFyZ3VtZW50cyhXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIsIE5T
SW52b2NhdGkKICAgICAgICAgc3dpdGNoICgqdHlwZSkgewogICAgICAgICAvLyBkb3VibGUKICAg
ICAgICAgY2FzZSAnZCc6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IFtkZWNvZGVPYmpl
Y3RGcm9tT2JqZWN0U3RyZWFtKGRlY29kZXIsIHsgW05TTnVtYmVyIGNsYXNzXSB9KSBkb3VibGVW
YWx1ZV07CisgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVj
dFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSB9
KSBkb3VibGVWYWx1ZV07CiAgICAgICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFs
dWUgYXRJbmRleDppXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gZmxvYXQKICAgICAgICAgY2FzZSAnZic6IHsKLSAgICAgICAgICAgIGZsb2F0IHZhbHVlID0g
W2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3Nd
IH0pIGZsb2F0VmFsdWVdOworICAgICAgICAgICAgZmxvYXQgdmFsdWUgPSBbZGVjb2RlT2JqZWN0
RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVy
IGNsYXNzXSB9KSBmbG9hdFZhbHVlXTsKICAgICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3Vt
ZW50OiZ2YWx1ZSBhdEluZGV4OmldOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBpbnQKICAgICAgICAgY2FzZSAnaSc6IHsKLSAgICAgICAgICAgIGludCB2YWx1
ZSA9IFtkZWNvZGVPYmplY3RGcm9tT2JqZWN0U3RyZWFtKGRlY29kZXIsIHsgW05TTnVtYmVyIGNs
YXNzXSB9KSBpbnRWYWx1ZV07CisgICAgICAgICAgICBpbnQgdmFsdWUgPSBbZGVjb2RlT2JqZWN0
RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVy
IGNsYXNzXSB9KSBpbnRWYWx1ZV07CiAgICAgICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVu
dDomdmFsdWUgYXRJbmRleDppXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gdW5zaWduZWQKICAgICAgICAgY2FzZSAnSSc6IHsKLSAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNO
dW1iZXIgY2xhc3NdIH0pIHVuc2lnbmVkSW50VmFsdWVdOworICAgICAgICAgICAgdW5zaWduZWQg
dmFsdWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRn
ZSBDRlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSB9KSB1bnNpZ25lZEludFZhbHVlXTsKICAgICAg
ICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmldOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjaGFyCiAgICAgICAgIGNhc2Ug
J2MnOiB7Ci0gICAgICAgICAgICBjaGFyIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RT
dHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGNoYXJWYWx1ZV07CisgICAgICAg
ICAgICBjaGFyIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2Rlciwg
eyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgY2hhclZhbHVlXTsKICAg
ICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmldOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBib29sCiAgICAgICAgIGNh
c2UgJ0InOiB7Ci0gICAgICAgICAgICBib29sIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmpl
Y3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGJvb2xWYWx1ZV07CisgICAg
ICAgICAgICBib29sIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2Rl
ciwgeyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgYm9vbFZhbHVlXTsK
ICAgICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmldOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBsb25nCiAgICAgICAg
IGNhc2UgJ3EnOiB7Ci0gICAgICAgICAgICBsb25nIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21P
YmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGxvbmdWYWx1ZV07Cisg
ICAgICAgICAgICBsb25nIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVj
b2RlciwgeyAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgbG9uZ1ZhbHVl
XTsKICAgICAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4Omld
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB1bnNpZ25lZCBs
b25nCiAgICAgICAgIGNhc2UgJ1EnOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVl
ID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyBbTlNOdW1iZXIgY2xh
c3NdIH0pIHVuc2lnbmVkTG9uZ1ZhbHVlXTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFs
dWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7IChfX2JyaWRnZSBD
RlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSB9KSB1bnNpZ25lZExvbmdWYWx1ZV07CiAgICAgICAg
ICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRleDppXTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NTksMTMgKzU1OSwxMyBAQCBzdGF0aWMgdm9pZCBk
ZWNvZGVJbnZvY2F0aW9uQXJndW1lbnRzKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2Rlciwg
TlNJbnZvY2F0aQogICAgICAgICAvLyBzdHJ1Y3QKICAgICAgICAgY2FzZSAneyc6CiAgICAgICAg
ICAgICBpZiAoIXN0cmNtcCh0eXBlLCBAZW5jb2RlKE5TUmFuZ2UpKSkgewotICAgICAgICAgICAg
ICAgIE5TUmFuZ2UgdmFsdWUgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVy
LCB7IFtOU1ZhbHVlIGNsYXNzXSB9KSByYW5nZVZhbHVlXTsKKyAgICAgICAgICAgICAgICBOU1Jh
bmdlIHZhbHVlID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyAoX19i
cmlkZ2UgQ0ZUeXBlUmVmKVtOU1ZhbHVlIGNsYXNzXSB9KSByYW5nZVZhbHVlXTsKICAgICAgICAg
ICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRleDppXTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcCh0eXBlLCBA
ZW5jb2RlKENHU2l6ZSkpKSB7CiAgICAgICAgICAgICAgICAgQ0dTaXplIHZhbHVlOwotICAgICAg
ICAgICAgICAgIHZhbHVlLndpZHRoID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVj
b2RlciwgeyBbTlNOdW1iZXIgY2xhc3NdIH0pIGRvdWJsZVZhbHVlXTsKLSAgICAgICAgICAgICAg
ICB2YWx1ZS5oZWlnaHQgPSBbZGVjb2RlT2JqZWN0RnJvbU9iamVjdFN0cmVhbShkZWNvZGVyLCB7
IFtOU051bWJlciBjbGFzc10gfSkgZG91YmxlVmFsdWVdOworICAgICAgICAgICAgICAgIHZhbHVl
LndpZHRoID0gW2RlY29kZU9iamVjdEZyb21PYmplY3RTdHJlYW0oZGVjb2RlciwgeyAoX19icmlk
Z2UgQ0ZUeXBlUmVmKVtOU051bWJlciBjbGFzc10gfSkgZG91YmxlVmFsdWVdOworICAgICAgICAg
ICAgICAgIHZhbHVlLmhlaWdodCA9IFtkZWNvZGVPYmplY3RGcm9tT2JqZWN0U3RyZWFtKGRlY29k
ZXIsIHsgKF9fYnJpZGdlIENGVHlwZVJlZilbTlNOdW1iZXIgY2xhc3NdIH0pIGRvdWJsZVZhbHVl
XTsKICAgICAgICAgICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFsdWUgYXRJbmRl
eDppXTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTY3NSw3ICs2
NzUsNyBAQCBzdGF0aWMgaWQgZGVjb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVj
b2RlcikKICAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07CiB9CiAKLXN0YXRpYyBpZCBk
ZWNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyLCBjb25zdCBBUEk6OkRp
Y3Rpb25hcnkqIGRpY3Rpb25hcnksIGNvbnN0IEhhc2hTZXQ8Q2xhc3M+JiBhbGxvd2VkQ2xhc3Nl
cykKK3N0YXRpYyBpZCBkZWNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVy
LCBjb25zdCBBUEk6OkRpY3Rpb25hcnkqIGRpY3Rpb25hcnksIGNvbnN0IEhhc2hTZXQ8Q0ZUeXBl
UmVmPiYgYWxsb3dlZENsYXNzZXMpCiB7CiAgICAgaWYgKCFkaWN0aW9uYXJ5KQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtNjg2LDcgKzY4Niw3IEBAIHN0YXRpYyBpZCBkZWNvZGVPYmplY3QoV0tS
ZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyLCBjb25zdCBBUEk6OkRpY3Rpb25hcnkqIGRpCiAg
ICAgaWYgKGFsbG93ZWRDbGFzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGRlY29kZU9i
amVjdChkZWNvZGVyKTsKIAotICAgIFNldEZvclNjb3BlPGNvbnN0IEhhc2hTZXQ8Q2xhc3M+Kj4g
YWxsb3dlZENsYXNzZXNDaGFuZ2UoZGVjb2Rlci0+X2FsbG93ZWRDbGFzc2VzLCAmYWxsb3dlZENs
YXNzZXMpOworICAgIFNldEZvclNjb3BlPGNvbnN0IEhhc2hTZXQ8Q0ZUeXBlUmVmPio+IGFsbG93
ZWRDbGFzc2VzQ2hhbmdlKGRlY29kZXItPl9hbGxvd2VkQ2xhc3NlcywgJmFsbG93ZWRDbGFzc2Vz
KTsKICAgICByZXR1cm4gZGVjb2RlT2JqZWN0KGRlY29kZXIpOwogfQogCkBAIC03NjIsOSArNzYy
LDkgQEAgLSAoQk9PTClyZXF1aXJlc1NlY3VyZUNvZGluZwogCiAtIChpZClkZWNvZGVPYmplY3RP
ZkNsYXNzZXM6KE5TU2V0ICopY2xhc3NlcyBmb3JLZXk6KE5TU3RyaW5nICopa2V5CiB7Ci0gICAg
SGFzaFNldDxDbGFzcz4gYWxsb3dlZENsYXNzZXM7CisgICAgSGFzaFNldDxDRlR5cGVSZWY+IGFs
bG93ZWRDbGFzc2VzOwogICAgIGZvciAoQ2xhc3MgYWxsb3dlZENsYXNzIGluIGNsYXNzZXMpCi0g
ICAgICAgIGFsbG93ZWRDbGFzc2VzLmFkZChhbGxvd2VkQ2xhc3MpOworICAgICAgICBhbGxvd2Vk
Q2xhc3Nlcy5hZGQoKF9fYnJpZGdlIENGVHlwZVJlZilhbGxvd2VkQ2xhc3MpOwogCiAgICAgcmV0
dXJuIGRlY29kZU9iamVjdChzZWxmLCBfY3VycmVudERpY3Rpb25hcnktPmdldDxBUEk6OkRpY3Rp
b25hcnk+KGVzY2FwZUtleShrZXkpKSwgYWxsb3dlZENsYXNzZXMpOwogfQpAQCAtNzc1LDggKzc3
NSw4IEBAIC0gKE5TU2V0ICopYWxsb3dlZENsYXNzZXMKICAgICAgICAgcmV0dXJuIFtOU1NldCBz
ZXRdOwogCiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBp
bml0XSk7Ci0gICAgZm9yIChDbGFzcyBhbGxvd2VkQ2xhc3MgOiAqX2FsbG93ZWRDbGFzc2VzKQot
ICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDphbGxvd2VkQ2xhc3NdOworICAgIGZvciAoYXV0byBh
bGxvd2VkQ2xhc3MgOiAqX2FsbG93ZWRDbGFzc2VzKQorICAgICAgICBbcmVzdWx0IGFkZE9iamVj
dDooX19icmlkZ2UgQ2xhc3MpYWxsb3dlZENsYXNzXTsKIAogICAgIHJldHVybiByZXN1bHQuYXV0
b3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCmluZGV4IGMxMzcxNDA4OGFjMTI3OWRk
Mjk4ZGJiMjU2ZGY5Yjg2ZGNjNDUwNTQuLjYzNDQ2Yjc2ODAzNzk0Mjk0YzViYmZmNDM0ZTFkNjc0
MmJlNmEzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQpAQCAtNDYsMTIgKzQ2LDEyIEBAIC0gKE5T
U3RyaW5nICopX3R5cGVTdHJpbmc7CiBAZW5kCiAKIHN0cnVjdCBNZXRob2RJbmZvIHsKLSAgICBW
ZWN0b3I8SGFzaFNldDxDbGFzcz4+IGFsbG93ZWRBcmd1bWVudENsYXNzZXM7CisgICAgVmVjdG9y
PEhhc2hTZXQ8Q0ZUeXBlUmVmPj4gYWxsb3dlZEFyZ3VtZW50Q2xhc3NlczsKIAogICAgIHN0cnVj
dCBSZXBseUluZm8gewogICAgICAgICBOU1VJbnRlZ2VyIHJlcGx5UG9zaXRpb247CiAgICAgICAg
IENTdHJpbmcgcmVwbHlTaWduYXR1cmU7Ci0gICAgICAgIFZlY3RvcjxIYXNoU2V0PENsYXNzPj4g
YWxsb3dlZFJlcGx5Q2xhc3NlczsKKyAgICAgICAgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4g
YWxsb3dlZFJlcGx5Q2xhc3NlczsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVwbHlJbmZv
PiByZXBseUluZm87CiB9OwpAQCAtNzAsMTIgKzcwLDE1IEBAIHN0YXRpYyBib29sIGlzQ29udGFp
bmVyQ2xhc3MoQ2xhc3Mgb2JqZWN0Q2xhc3MpCiAgICAgcmV0dXJuIG9iamVjdENsYXNzID09IGFy
cmF5Q2xhc3MgfHwgb2JqZWN0Q2xhc3MgPT0gZGljdGlvbmFyeUNsYXNzOwogfQogCi1zdGF0aWMg
SGFzaFNldDxDbGFzcz4mIHByb3BlcnR5TGlzdENsYXNzZXMoKQorc3RhdGljIEhhc2hTZXQ8Q0ZU
eXBlUmVmPiYgcHJvcGVydHlMaXN0Q2xhc3NlcygpCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PENsYXNzPj4gcHJvcGVydHlMaXN0Q2xhc3NlczsKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4gcHJvcGVydHlMaXN0Q2xhc3Nl
czsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHByb3BlcnR5TGlzdENsYXNzZXMuY29uc3RydWN0
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDbGFzcz4geyBbTlNBcnJheSBjbGFzc10sIFtOU0RpY3Rp
b25hcnkgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdIH0pOworICAg
ICAgICBwcm9wZXJ0eUxpc3RDbGFzc2VzLmNvbnN0cnVjdChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
Q0ZUeXBlUmVmPiB7CisgICAgICAgICAgICAoX19icmlkZ2UgQ0ZUeXBlUmVmKVtOU0FycmF5IGNs
YXNzXSwgKF9fYnJpZGdlIENGVHlwZVJlZilbTlNEaWN0aW9uYXJ5IGNsYXNzXSwKKyAgICAgICAg
ICAgIChfX2JyaWRnZSBDRlR5cGVSZWYpW05TTnVtYmVyIGNsYXNzXSwgKF9fYnJpZGdlIENGVHlw
ZVJlZilbTlNTdHJpbmcgY2xhc3NdCisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgcmV0dXJu
IHByb3BlcnR5TGlzdENsYXNzZXM7CkBAIC04Myw3ICs4Niw3IEBAIHN0YXRpYyBIYXNoU2V0PENs
YXNzPiYgcHJvcGVydHlMaXN0Q2xhc3NlcygpCiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNZXRo
b2QoTWV0aG9kSW5mbyYgbWV0aG9kSW5mbywgUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0
b3IsIE5TTWV0aG9kU2lnbmF0dXJlICptZXRob2RTaWduYXR1cmUsIGJvb2wgZm9yUmVwbHlCbG9j
aykKIHsKLSAgICBWZWN0b3I8SGFzaFNldDxDbGFzcz4+IGFsbG93ZWRDbGFzc2VzOworICAgIFZl
Y3RvcjxIYXNoU2V0PENGVHlwZVJlZj4+IGFsbG93ZWRDbGFzc2VzOwogCiAgICAgTlNVSW50ZWdl
ciBmaXJzdEFyZ3VtZW50ID0gZm9yUmVwbHlCbG9jayA/IDEgOiAyOwogICAgIE5TVUludGVnZXIg
YXJndW1lbnRDb3VudCA9IG1ldGhvZFNpZ25hdHVyZS5udW1iZXJPZkFyZ3VtZW50czsKQEAgLTEy
Nyw3ICsxMzAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTWV0aG9kKE1ldGhvZEluZm8mIG1l
dGhvZEluZm8sIFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbAogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBhbGxvd2VkQ2xhc3Nlcy5hcHBlbmQoeyBvYmplY3RD
bGFzcyB9KTsKKyAgICAgICAgYWxsb3dlZENsYXNzZXMuYXBwZW5kKHsgKF9fYnJpZGdlIENGVHlw
ZVJlZilvYmplY3RDbGFzcyB9KTsKICAgICB9CiAKICAgICBpZiAoZm9yUmVwbHlCbG9jaykKQEAg
LTIxMiw4ICsyMTUsOCBAQCAtIChOU1N0cmluZyAqKWRlYnVnRGVzY3JpcHRpb24KICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6QCJ7Il0pOwogCiAgICAgICAgICAgICBhdXRvIG9yZGVyZWRBcmd1bWVudENsYXNz
ZXMgPSBjb3B5VG9WZWN0b3IoYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcyk7Ci0gICAgICAgICAgICBz
dGQ6OnNvcnQob3JkZXJlZEFyZ3VtZW50Q2xhc3Nlcy5iZWdpbigpLCBvcmRlcmVkQXJndW1lbnRD
bGFzc2VzLmVuZCgpLCBbXShDbGFzcyBhLCBDbGFzcyBiKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIENTdHJpbmcoY2xhc3NfZ2V0TmFtZShhKSkgPCBDU3RyaW5nKGNsYXNzX2dldE5hbWUoYikp
OworICAgICAgICAgICAgc3RkOjpzb3J0KG9yZGVyZWRBcmd1bWVudENsYXNzZXMuYmVnaW4oKSwg
b3JkZXJlZEFyZ3VtZW50Q2xhc3Nlcy5lbmQoKSwgW10oQ0ZUeXBlUmVmIGEsIENGVHlwZVJlZiBi
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoY2xhc3NfZ2V0TmFtZSgoX19icmlk
Z2UgQ2xhc3MpYSkpIDwgQ1N0cmluZyhjbGFzc19nZXROYW1lKChfX2JyaWRnZSBDbGFzcyliKSk7
CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgYm9vbCBuZWVkc0NvbW1hID0gZmFsc2U7
CkBAIC0yMjEsNyArMjI0LDcgQEAgLSAoTlNTdHJpbmcgKilkZWJ1Z0Rlc2NyaXB0aW9uCiAgICAg
ICAgICAgICAgICAgaWYgKG5lZWRzQ29tbWEpCiAgICAgICAgICAgICAgICAgICAgIFtyZXN1bHQg
YXBwZW5kU3RyaW5nOkAiLCAiXTsKIAotICAgICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kRm9y
bWF0OkAiJXMiLCBjbGFzc19nZXROYW1lKGFyZ3VtZW50Q2xhc3MpXTsKKyAgICAgICAgICAgICAg
ICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiVzIiwgY2xhc3NfZ2V0TmFtZSgoX19icmlkZ2UgQ2xh
c3MpYXJndW1lbnRDbGFzcyldOwogICAgICAgICAgICAgICAgIG5lZWRzQ29tbWEgPSB0cnVlOwog
ICAgICAgICAgICAgfQogCkBAIC0yNTIsNyArMjU1LDcgQEAgLSAoTlNTdHJpbmcgKilkZWJ1Z0Rl
c2NyaXB0aW9uCiAgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCi1zdGF0aWMg
SGFzaFNldDxDbGFzcz4mIGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KF9XS1JlbW90ZU9iamVj
dEludGVyZmFjZSAqaW50ZXJmYWNlLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYXJndW1lbnRJ
bmRleCwgYm9vbCByZXBseUJsb2NrKQorc3RhdGljIEhhc2hTZXQ8Q0ZUeXBlUmVmPiYgY2xhc3Nl
c0ZvclNlbGVjdG9yQXJndW1lbnQoX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZhY2Us
IFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBhcmd1bWVudEluZGV4LCBib29sIHJlcGx5QmxvY2sp
CiB7CiAgICAgYXV0byBpdCA9IGludGVyZmFjZS0+X21ldGhvZHMuZmluZChzZWxlY3Rvcik7CiAg
ICAgaWYgKGl0ID09IGludGVyZmFjZS0+X21ldGhvZHMuZW5kKCkpCkBAIC0yODAsMTYgKzI4Mywx
NiBAQCAtIChOU1NldCAqKWNsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yIGFyZ3VtZW50
SW5kZXg6KE5TVUludGVnZXIpYXJndW1lbnRJbgogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhb
W05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwogCiAgICAgZm9yIChhdXRvIGFsbG93ZWRDbGFz
cyA6IGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KHNlbGYsIHNlbGVjdG9yLCBhcmd1bWVudElu
ZGV4LCBvZlJlcGx5KSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6YWxsb3dlZENsYXNzXTsK
KyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6KF9fYnJpZGdlIENsYXNzKWFsbG93ZWRDbGFzc107
CiAKICAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0Q2xh
c3NlczooTlNTZXQgKiljbGFzc2VzIGZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IgYXJndW1lbnRJ
bmRleDooTlNVSW50ZWdlcilhcmd1bWVudEluZGV4IG9mUmVwbHk6KEJPT0wpb2ZSZXBseQogewot
ICAgIEhhc2hTZXQ8Q2xhc3M+IGFsbG93ZWRDbGFzc2VzOworICAgIEhhc2hTZXQ8Q0ZUeXBlUmVm
PiBhbGxvd2VkQ2xhc3NlczsKICAgICBmb3IgKENsYXNzIGFsbG93ZWRDbGFzcyBpbiBjbGFzc2Vz
KQotICAgICAgICBhbGxvd2VkQ2xhc3Nlcy5hZGQoYWxsb3dlZENsYXNzKTsKKyAgICAgICAgYWxs
b3dlZENsYXNzZXMuYWRkKChfX2JyaWRnZSBDRlR5cGVSZWYpYWxsb3dlZENsYXNzKTsKIAogICAg
IGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KHNlbGYsIHNlbGVjdG9yLCBhcmd1bWVudEluZGV4
LCBvZlJlcGx5KSA9IFdURk1vdmUoYWxsb3dlZENsYXNzZXMpOwogfQpAQCAtMzQ0LDE0ICszNDcs
MTQgQEAgLSAoTlNNZXRob2RTaWduYXR1cmUgKilfbWV0aG9kU2lnbmF0dXJlRm9yUmVwbHlCbG9j
a09mU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogICAgIHJldHVybiBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RJbmZvLnJlcGx5SW5mby0+cmVwbHlTaWduYXR1
cmUuZGF0YSgpXTsKIH0KIAotLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiYpX2FsbG93
ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yCistIChjb25zdCBWZWN0
b3I8SGFzaFNldDxDRlR5cGVSZWY+PiYpX2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3Rv
cjooU0VMKXNlbGVjdG9yCiB7CiAgICAgQVNTRVJUKF9tZXRob2RzLmNvbnRhaW5zKHNlbGVjdG9y
KSk7CiAKICAgICByZXR1cm4gX21ldGhvZHMuZmluZChzZWxlY3RvciktPnZhbHVlLmFsbG93ZWRB
cmd1bWVudENsYXNzZXM7CiB9CiAKLS0gKGNvbnN0IFZlY3RvcjxIYXNoU2V0PENsYXNzPj4mKV9h
bGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yUmVwbHlCbG9ja09mU2VsZWN0b3I6KFNFTClzZWxlY3Rv
cgorLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBlUmVmPj4mKV9hbGxvd2VkQXJndW1lbnRD
bGFzc2VzRm9yUmVwbHlCbG9ja09mU2VsZWN0b3I6KFNFTClzZWxlY3RvcgogewogICAgIEFTU0VS
VChfbWV0aG9kcy5jb250YWlucyhzZWxlY3RvcikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJ
bnRlcm5hbC5oCmluZGV4IDE3MDY0MmNlZDM1MGY2MWQ1MWE2NWJmM2IxMDI2MjY1YTJlMjljYzku
LjQ1ZWYwYTdiZDJmMGRmN2JhOTMyNjk4NzYyNmU5NTVkZTg4MTEwM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2VJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmpl
Y3RJbnRlcmZhY2VJbnRlcm5hbC5oCkBAIC0zNSw4ICszNSw4IEBACiAKIC0gKE5TTWV0aG9kU2ln
bmF0dXJlICopX21ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3I7CiAtIChO
U01ldGhvZFNpZ25hdHVyZSAqKV9tZXRob2RTaWduYXR1cmVGb3JSZXBseUJsb2NrT2ZTZWxlY3Rv
cjooU0VMKXNlbGVjdG9yOwotLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiYpX2FsbG93
ZWRBcmd1bWVudENsYXNzZXNGb3JTZWxlY3RvcjooU0VMKXNlbGVjdG9yOwotLSAoY29uc3QgVmVj
dG9yPEhhc2hTZXQ8Q2xhc3M+PiYpX2FsbG93ZWRBcmd1bWVudENsYXNzZXNGb3JSZXBseUJsb2Nr
T2ZTZWxlY3RvcjooU0VMKXNlbGVjdG9yOworLSAoY29uc3QgVmVjdG9yPEhhc2hTZXQ8Q0ZUeXBl
UmVmPj4mKV9hbGxvd2VkQXJndW1lbnRDbGFzc2VzRm9yU2VsZWN0b3I6KFNFTClzZWxlY3RvcjsK
Ky0gKGNvbnN0IFZlY3RvcjxIYXNoU2V0PENGVHlwZVJlZj4+JilfYWxsb3dlZEFyZ3VtZW50Q2xh
c3Nlc0ZvclJlcGx5QmxvY2tPZlNlbGVjdG9yOihTRUwpc2VsZWN0b3I7CiAKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KaW5kZXggNjFkMWQ0N2I3
ZmUzMGE4MDk0MjlmMmFlYjFkM2E5MTRmMGE1NWQ3MS4uOThkN2ZhOWY4Njk4MmNjMTI1ZmVjOTQw
ZWI4NWRkYjNiMGQ2YWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tTdHJpbmdDRi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0
cmluZ0NGLm1tCkBAIC01MCw4ICs1MCwxMCBAQCBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZyhDRlN0cmluZ1JlZiBjZlN0cmluZykKIHsKICNpZiBXS19BUElfRU5BQkxFRAog
ICAgIC8vIFNpbmNlIFdLTlNTdHJpbmcgaXMgYW4gaW50ZXJuYWwgY2xhc3Mgd2l0aCBubyBzdWJj
bGFzc2VzLCB3ZSBjYW4gZG8gYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2suCi0gICAgaWYgKG9iamVj
dF9nZXRDbGFzcygoX19icmlkZ2UgTlNTdHJpbmcgKiljZlN0cmluZykgPT0gd2tOU1N0cmluZ0Ns
YXNzKCkpCi0gICAgICAgIHJldHVybiB0b0FQSShzdGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KCZb
KFdLTlNTdHJpbmcgKilbKE5TU3RyaW5nICopY2ZTdHJpbmcgcmV0YWluXSBfYXBpT2JqZWN0XSkp
OworICAgIGlmIChvYmplY3RfZ2V0Q2xhc3MoKF9fYnJpZGdlIE5TU3RyaW5nICopY2ZTdHJpbmcp
ID09IHdrTlNTdHJpbmdDbGFzcygpKSB7CisgICAgICAgIENGUmV0YWluKGNmU3RyaW5nKTsKKyAg
ICAgICAgcmV0dXJuIHRvQVBJKHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oJlsoV0tOU1N0cmlu
ZyAqKShfX2JyaWRnZSBOU1N0cmluZyAqKWNmU3RyaW5nIF9hcGlPYmplY3RdKSk7CisgICAgfQog
I2VuZGlmCiAgICAgU3RyaW5nIHN0cmluZyhjZlN0cmluZyk7CiAgICAgcmV0dXJuIHRvQ29waWVk
QVBJKHN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9X
S1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRl
eCBlZTYyN2IzY2ExNWExN2I4ZjYyNGU0ZThmYjJhNDU5NTNiYzM3YWFlLi5mNDNlMWRmMmNjNDcy
ZGQ2ZDg4NTJkMmRkMDRmYjM1NTEzMTA0MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NmL1dLVVJMQ0YubW0KQEAgLTU0LDggKzU0LDEwIEBAIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0
aENGVVJMKENGVVJMUmVmIGNmVVJMKQogCiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICAvLyBTaW5j
ZSBXS05TVVJMIGlzIGFuIGludGVybmFsIGNsYXNzIHdpdGggbm8gc3ViY2xhc3Nlcywgd2UgY2Fu
IGRvIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrLgotICAgIGlmIChvYmplY3RfZ2V0Q2xhc3MoKF9f
YnJpZGdlIE5TVVJMICopY2ZVUkwpID09IHdrTlNVUkxDbGFzcygpKQotICAgICAgICByZXR1cm4g
dG9BUEkoc3RhdGljX2Nhc3Q8QVBJOjpVUkwqPigmWyhXS05TVVJMICopWyhOU1VSTCAqKWNmVVJM
IHJldGFpbl0gX2FwaU9iamVjdF0pKTsKKyAgICBpZiAob2JqZWN0X2dldENsYXNzKChfX2JyaWRn
ZSBOU1VSTCAqKWNmVVJMKSA9PSB3a05TVVJMQ2xhc3MoKSkgeworICAgICAgICBDRlJldGFpbihj
ZlVSTCk7CisgICAgICAgIHJldHVybiB0b0FQSShzdGF0aWNfY2FzdDxBUEk6OlVSTCo+KCZbKFdL
TlNVUkwgKikoX19icmlkZ2UgTlNVUkwgKiljZlVSTCBfYXBpT2JqZWN0XSkpOworICAgIH0KICNl
bmRpZgogCiAgICAgQ1N0cmluZyB1cmxCeXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQppbmRleCA2ZjNkMjg0ZmQ4MGRmYTU5MmNlNWNlYTgzMDE3YjAwYjE2NzE5MzQ2
Li40NDhmZmQyOGFjYTdiOGYwZDkxMWQ3YzNjMmJkNzQ0ZjIyZjg0N2Y3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC05NSwxNyArOTUsMTcgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIHZvaWQgT2JqZWN0OjpyZWYoKQogewotICAgIENGUmV0YWluKHdyYXBwZXIoKSk7
CisgICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZil3cmFwcGVyKCkpOwogfQogCiB2b2lk
IE9iamVjdDo6ZGVyZWYoKQogewotICAgIENGUmVsZWFzZSh3cmFwcGVyKCkpOworICAgIENGUmVs
ZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXdyYXBwZXIoKSk7CiB9CiAKIHN0YXRpYyBpZCA8V0tP
YmplY3Q+IGFsbG9jYXRlV0tPYmplY3QoQ2xhc3MgY2xzLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gTlNBbGxvY2F0ZU9iamVjdChjbHMsIHNpemUgKyBtYXhpbXVtRXh0cmFTcGFjZUZvckFs
aWdubWVudCwgbnVsbHB0cik7CisgICAgcmV0dXJuIGNsYXNzX2NyZWF0ZUluc3RhbmNlKGNscywg
c2l6ZSArIG1heGltdW1FeHRyYVNwYWNlRm9yQWxpZ25tZW50KTsKIH0KIAogQVBJOjpPYmplY3Qm
IE9iamVjdDo6ZnJvbVdLT2JqZWN0RXh0cmFTcGFjZShpZCA8V0tPYmplY3Q+IG9iaikKQEAgLTM3
Miw3ICszNzIsNyBAQCB2b2lkKiBPYmplY3Q6OndyYXAoQVBJOjpPYmplY3QqIG9iamVjdCkKICAg
ICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dm9pZCo+KG9iamVjdC0+d3JhcHBlcigpKTsKKyAgICByZXR1cm4gKF9fYnJpZGdl
IHZvaWQqKW9iamVjdC0+d3JhcHBlcigpOwogfQogCiBBUEk6Ok9iamVjdCogT2JqZWN0Ojp1bndy
YXAodm9pZCogb2JqZWN0KQpAQCAtMzgwLDcgKzM4MCw3IEBAIEFQSTo6T2JqZWN0KiBPYmplY3Q6
OnVud3JhcCh2b2lkKiBvYmplY3QpCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuICZzdGF0aWNfY2FzdDxpZCA8V0tPYmplY3Q+PihvYmplY3Qp
Ll9hcGlPYmplY3Q7CisgICAgcmV0dXJuICYoKF9fYnJpZGdlIGlkIDxXS09iamVjdD4pb2JqZWN0
KS5fYXBpT2JqZWN0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVQcm9wZXJ0eUFwcGxpZXIuaAppbmRleCAzMDFiYTkxMDhmYTVjZjRjOTc4ZTgzM2Y1ZmJh
NWEzMTIwYzIyZThlLi4wN2IzN2U5ODAyMTkxY2RkZTlkNTUzMTM0MGMzMGQ0YWQxYWVhMDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oCkBAIC0zNSw3ICszNSw3
IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZUhvc3Q7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgTGF5ZXJPclZpZXcgKj4gUmVsYXRlZExheWVy
TWFwOworICAgIHVzaW5nIFJlbGF0ZWRMYXllck1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBDRlR5cGVSZWY+OwogICAgIHN0YXRpYyB2b2lkIGFw
cGx5UHJvcGVydGllcyhDQUxheWVyICosIFJlbW90ZUxheWVyVHJlZUhvc3QqLCBjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3QgUmVsYXRlZExh
eWVyTWFwJiwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkxheWVyQ29udGVudHNUeXBlKTsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKFVJVmlldyAq
LCBSZW1vdGVMYXllclRyZWVIb3N0KiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyUHJvcGVydGllcyYsIGNvbnN0IFJlbGF0ZWRMYXllck1hcCYsIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpMYXllckNvbnRlbnRzVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5tbQppbmRleCA3MjZhNWI3MTNmM2IwOGExMGM2MGNiMDQ0NGM2ODljMzA0
ZmI5ODNkLi4xZDU1MTAyODkwOTA5ZWYxZDIzZTAyYTVjOWZhYTcwOTdhNjZhMmQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KQEAgLTI2Myw3ICsyNjMsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKENB
TGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllcgogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGNoaWxkcmVuID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OnByb3BlcnRpZXMuY2hpbGRyZW4uc2l6ZSgpXSk7CiAgICAgICAgIGZvciAoYXV0byYg
Y2hpbGQgOiBwcm9wZXJ0aWVzLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBBU1NFUlQocmVsYXRl
ZExheWVycy5nZXQoY2hpbGQpKTsKLSAgICAgICAgICAgIFtjaGlsZHJlbiBhZGRPYmplY3Q6cmVs
YXRlZExheWVycy5nZXQoY2hpbGQpXTsKKyAgICAgICAgICAgIFtjaGlsZHJlbiBhZGRPYmplY3Q6
KF9fYnJpZGdlIGlkKXJlbGF0ZWRMYXllcnMuZ2V0KGNoaWxkKV07CiAgICAgICAgIH0KIAogICAg
ICAgICBsYXllci5zdWJsYXllcnMgPSBjaGlsZHJlbi5nZXQoKTsKQEAgLTI3NCwxMyArMjc0LDEz
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMo
Q0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWVyCiAgICAgICAgICAgICBsYXllci5tYXNrID0gbnVs
bHB0cjsKICAgICAgICAgZWxzZSB7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAgICAgVUlW
aWV3ICptYXNrVmlldyA9IHJlbGF0ZWRMYXllcnMuZ2V0KHByb3BlcnRpZXMubWFza0xheWVySUQp
OworICAgICAgICAgICAgVUlWaWV3ICptYXNrVmlldyA9IChfX2JyaWRnZSBVSVZpZXcgKilyZWxh
dGVkTGF5ZXJzLmdldChwcm9wZXJ0aWVzLm1hc2tMYXllcklEKTsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIG1hc2sgdmlldyBpcyBrZXB0IGFsaXZlLgogICAg
ICAgICAgICAgQVNTRVJUKCFtYXNrVmlldy5sYXllci5zdXBlcmxheWVyKTsKICAgICAgICAgICAg
IGlmICghbWFza1ZpZXcubGF5ZXIuc3VwZXJsYXllcikKICAgICAgICAgICAgICAgICBsYXllci5t
YXNrID0gbWFza1ZpZXcubGF5ZXI7CiAjZWxzZQotICAgICAgICAgICAgQ0FMYXllciAqbWFza0xh
eWVyID0gcmVsYXRlZExheWVycy5nZXQocHJvcGVydGllcy5tYXNrTGF5ZXJJRCk7CisgICAgICAg
ICAgICBDQUxheWVyICptYXNrTGF5ZXIgPSAoX19icmlkZ2UgQ0FMYXllciAqKXJlbGF0ZWRMYXll
cnMuZ2V0KHByb3BlcnRpZXMubWFza0xheWVySUQpOwogICAgICAgICAgICAgQVNTRVJUKCFtYXNr
TGF5ZXIuc3VwZXJsYXllcik7CiAgICAgICAgICAgICBpZiAoIW1hc2tMYXllci5zdXBlcmxheWVy
KQogICAgICAgICAgICAgICAgIGxheWVyLm1hc2sgPSBtYXNrTGF5ZXI7CkBAIC0zMDAsNyArMzAw
LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGll
cyhVSVZpZXcgKnZpZXcsIFJlbW90ZUxheWVyVHIKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBjaGlsZHJlbiA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpwcm9wZXJ0aWVzLmNoaWxkcmVuLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1
dG8mIGNoaWxkIDogcHJvcGVydGllcy5jaGlsZHJlbikgewogICAgICAgICAgICAgQVNTRVJUKHJl
bGF0ZWRMYXllcnMuZ2V0KGNoaWxkKSk7Ci0gICAgICAgICAgICBbY2hpbGRyZW4gYWRkT2JqZWN0
OnJlbGF0ZWRMYXllcnMuZ2V0KGNoaWxkKV07CisgICAgICAgICAgICBbY2hpbGRyZW4gYWRkT2Jq
ZWN0OihfX2JyaWRnZSBpZClyZWxhdGVkTGF5ZXJzLmdldChjaGlsZCldOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHByb3BlcnRpZXMuY3VzdG9tQXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVy
OjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wIHx8IHByb3BlcnRpZXMuY3VzdG9tQXBw
ZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpEYXJrQmFja2Ryb3Ap
IHsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
cjo6YXBwbHlQcm9wZXJ0aWVzKFVJVmlldyAqdmlldywgUmVtb3RlTGF5ZXJUcgogICAgICAgICBp
ZiAoIXByb3BlcnRpZXMubWFza0xheWVySUQpCiAgICAgICAgICAgICBtYXNrT3duZXJMYXllci5t
YXNrID0gbnVsbHB0cjsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBVSVZpZXcgKm1hc2tW
aWV3ID0gcmVsYXRlZExheWVycy5nZXQocHJvcGVydGllcy5tYXNrTGF5ZXJJRCk7CisgICAgICAg
ICAgICBVSVZpZXcgKm1hc2tWaWV3ID0gKF9fYnJpZGdlIFVJVmlldyAqKXJlbGF0ZWRMYXllcnMu
Z2V0KHByb3BlcnRpZXMubWFza0xheWVySUQpOwogICAgICAgICAgICAgLy8gRklYTUU6IG5lZWQg
dG8gY2hlY2sgdGhhdCB0aGUgbWFzayB2aWV3IGlzIGtlcHQgYWxpdmUuCiAgICAgICAgICAgICBB
U1NFUlQoIW1hc2tWaWV3LmxheWVyLnN1cGVybGF5ZXIpOwogICAgICAgICAgICAgaWYgKCFtYXNr
Vmlldy5sYXllci5zdXBlcmxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5k
ZXggZTZlZWZjZGYwZmY3ZWUwYzcwZTIzYWIyM2MwODk2OWRhOTNmOGIxMy4uZDYyNGFhNDFjNWIx
YTU1ZmU2ZGE0NTJhNjlkMThkZWZjMjVjMmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tCkBAIC04Myw5ICs4Myw5IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgewogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlPj4gX3BvbGljeURlbGVnYXRlOwogfQogCi1zdGF0aWMgSGFzaE1hcDxXZWJQYWdl
UHJveHkqLCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKj4mIGJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJNYXAoKQorc3RhdGljIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgX191bnNhZmVfdW5y
ZXRhaW5lZCBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKj4mIGJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYlBh
Z2VQcm94eSosIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqPj4gYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlck1hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJQYWdl
UHJveHkqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
Pj4gYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcDsKICAgICByZXR1cm4gYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlck1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KaW5kZXggY2UyM2QwZWM4YTMyZDY3MWZkMzA2NjMzMTlh
M2EyYzFiNmM1ZmIwZi4uYWJlNDM0ODNjZTlmZWI2ZDFkYzNlYzIzZDEwNzUwMGMyNDYzMzdjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9u
Lm1tCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQ29u
bmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlCiAgICAgaWYgKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbm5lY3Rpb246ZGlkUmVjZWl2
ZU1lc3NhZ2VXaXRoTmFtZTpib2R5OildKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbnNNZXNzYWdlTmFtZSA9IGFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbWVzc2FnZU5hbWUpKTsKICAgICAgICAgUmV0YWluUHRyPGlkPiBuc01lc3Nh
Z2VCb2R5ID0gc3RhdGljX2Nhc3Q8T2JqQ09iamVjdEdyYXBoKj4odG9JbXBsKG1lc3NhZ2VCb2R5
KSktPnJvb3RPYmplY3QoKTsKLSAgICAgICAgW2RlbGVnYXRlIGNvbm5lY3Rpb246Y29ubmVjdGlv
biBkaWRSZWNlaXZlTWVzc2FnZVdpdGhOYW1lOihOU1N0cmluZyAqKW5zTWVzc2FnZU5hbWUuZ2V0
KCkgYm9keTpuc01lc3NhZ2VCb2R5LmdldCgpXTsKKyAgICAgICAgW2RlbGVnYXRlIGNvbm5lY3Rp
b246Y29ubmVjdGlvbiBkaWRSZWNlaXZlTWVzc2FnZVdpdGhOYW1lOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKW5zTWVzc2FnZU5hbWUuZ2V0KCkgYm9keTpuc01lc3NhZ2VCb2R5LmdldCgpXTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggNGI0MWI0Mzk2OGMyZThiMDA1OWFhNTFk
NDM4YWUzYTMzY2JlN2JiYS4uYmE3NDJhZTU4ZmUyNzVhYmY0NGM1Y2QwZmFiMWEyNTdkYTU2ZmQy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVu
dFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTc0LDI3ICs3NCw3IEBAICsgKGluc3RhbmNl
dHlwZSlzdG9yZVdpdGhVUkw6KE5TVVJMICopdXJsCiAKIC0gKHZvaWQpY29tcGlsZUNvbnRlbnRS
dWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVu
dFJ1bGVMaXN0OihOU1N0cmluZyAqKWVuY29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBbc2VsZiBfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZp
ZXI6aWRlbnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OmVuY29kZWRDb250ZW50UnVsZUxp
c3QgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIgcmVsZWFzZXNBcmd1bWVudDpO
T107Ci19Ci0KLS0gKHZvaWQpX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOihO
U1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDooTlNTdHJpbmcgKill
bmNvZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRl
bnRSdWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyIHJlbGVhc2VzQXJndW1l
bnQ6KEJPT0wpcmVsZWFzZXNBcmd1bWVudAotewotICAgIFN0cmluZyBqc29uKGVuY29kZWRDb250
ZW50UnVsZUxpc3QpOwotICAgIGlmIChyZWxlYXNlc0FyZ3VtZW50KSB7Ci0gICAgICAgIFtlbmNv
ZGVkQ29udGVudFJ1bGVMaXN0IHJlbGVhc2VdOwotICAgICAgICBlbmNvZGVkQ29udGVudFJ1bGVM
aXN0ID0gbmlsOwotICAgIH0KLQotICAgIF9jb250ZW50UnVsZUxpc3RTdG9yZS0+Y29tcGlsZUNv
bnRlbnRSdWxlTGlzdChpZGVudGlmaWVyLCBXVEZNb3ZlKGpzb24pLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8QVBJOjpDb250ZW50
UnVsZUxpc3Q+IGNvbnRlbnRSdWxlTGlzdCwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7Ci0gICAg
ICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxwQW5j
aG9yRXJyb3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiUnVsZSBsaXN0IGNvbXBp
bGF0aW9uIGZhaWxlZDogJXMiLCBlcnJvci5tZXNzYWdlKCkuY19zdHIoKV19OwotCi0gICAgICAg
ICAgICAvLyBlcnJvci52YWx1ZSgpIGNvdWxkIGhhdmUgYSBzcGVjaWZpYyBjb21waWxlciBlcnJv
ciB0aGF0IGlzIG5vdCBlcXVhbCB0byBXS0Vycm9yQ29udGVudFJ1bGVMaXN0U3RvcmVDb21waWxl
RmFpbGVkLgotICAgICAgICAgICAgLy8gV2Ugd2FudCB0byB1c2UgZXJyb3IubWVzc2FnZSwgYnV0
IGhlcmUgd2Ugd2FudCB0byBvbmx5IHBhc3Mgb24gQ29tcGlsZUZhaWxlZCB3aXRoIHVzZXJJbmZv
IGZyb20gdGhlIHN0ZDo6ZXJyb3JfY29kZS4KLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6
V0tFcnJvckNvbnRlbnRSdWxlTGlzdFN0b3JlQ29tcGlsZUZhaWxlZCB1c2VySW5mbzp1c2VySW5m
b10pOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoKmNvbnRl
bnRSdWxlTGlzdCksIG5pbCk7Ci0gICAgfSk7CisgICAgW3NlbGYgX2NvbXBpbGVDb250ZW50UnVs
ZUxpc3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDpbZW5j
b2RlZENvbnRlbnRSdWxlTGlzdCByZXRhaW5dIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKIH0KIAogLSAodm9pZClsb29rVXBDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29u
dGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKQEAgLTE3MCwxMCAr
MTUwLDIyIEBAIC0gKHZvaWQpX2dldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZvcklkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uCiB9CiAKIC8vIE5TX1JFTEVBU0VTX0FS
R1VNRU5UIHRvIGtlZXAgcGVhayBtZW1vcnkgdXNhZ2UgbG93LgotCi0tICh2b2lkKV9jb21waWxl
Q29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29k
ZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50
aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0
cmluZyAqKSBOU19SRUxFQVNFU19BUkdVTUVOVCBlbmNvZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJ
ZGVudGlmaWVyOmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDplbmNvZGVkQ29udGVu
dFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIHJlbGVhc2VzQXJn
dW1lbnQ6WUVTXTsKKyAgICBTdHJpbmcganNvbihlbmNvZGVkQ29udGVudFJ1bGVMaXN0KTsKKyAg
ICBbZW5jb2RlZENvbnRlbnRSdWxlTGlzdCByZWxlYXNlXTsKKyAgICBlbmNvZGVkQ29udGVudFJ1
bGVMaXN0ID0gbmlsOworCisgICAgX2NvbnRlbnRSdWxlTGlzdFN0b3JlLT5jb21waWxlQ29udGVu
dFJ1bGVMaXN0KGlkZW50aWZpZXIsIFdURk1vdmUoanNvbiksIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxl
TGlzdD4gY29udGVudFJ1bGVMaXN0LCBzdGQ6OmVycm9yX2NvZGUgZXJyb3IpIHsKKyAgICAgICAg
aWYgKGVycm9yKSB7CisgICAgICAgICAgICBhdXRvIHVzZXJJbmZvID0gQHtOU0hlbHBBbmNob3JF
cnJvcktleTogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJSdWxlIGxpc3QgY29tcGlsYXRp
b24gZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07CisKKyAgICAgICAgICAg
IC8vIGVycm9yLnZhbHVlKCkgY291bGQgaGF2ZSBhIHNwZWNpZmljIGNvbXBpbGVyIGVycm9yIHRo
YXQgaXMgbm90IGVxdWFsIHRvIFdLRXJyb3JDb250ZW50UnVsZUxpc3RTdG9yZUNvbXBpbGVGYWls
ZWQuCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIHVzZSBlcnJvci5tZXNzYWdlLCBidXQgaGVy
ZSB3ZSB3YW50IHRvIG9ubHkgcGFzcyBvbiBDb21waWxlRmFpbGVkIHdpdGggdXNlckluZm8gZnJv
bSB0aGUgc3RkOjplcnJvcl9jb2RlLgorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yQ29udGVudFJ1bGVMaXN0U3RvcmVDb21waWxlRmFpbGVkIHVzZXJJbmZvOnVzZXJJbmZvXSk7
CisgICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqY29udGVudFJ1
bGVMaXN0KSwgbmlsKTsKKyAgICB9KTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9y
ZVdpdGhMZWdhY3lGaWxlbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDU1MzI0YTFiNmI4NGM0NzE2YWNj
ZTQ3YzE2ZmU0NzQyM2Q3NWM1OGMuLmE4MDZiZGVjMmUyZDQ4MjNiMmYxZTkyZWQxMzNlNzEzNjVk
ZWY2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hU
VFBDb29raWVTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKIH07CiAKIEBp
bXBsZW1lbnRhdGlvbiBXS0hUVFBDb29raWVTdG9yZSB7Ci0gICAgSGFzaE1hcDxpZDxXS0hUVFBD
b29raWVTdG9yZU9ic2VydmVyPiwgc3RkOjp1bmlxdWVfcHRyPFdLSFRUUENvb2tpZVN0b3JlT2Jz
ZXJ2ZXI+PiBfb2JzZXJ2ZXJzOworICAgIEhhc2hNYXA8Q0ZUeXBlUmVmLCBzdGQ6OnVuaXF1ZV9w
dHI8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4+IF9vYnNlcnZlcnM7CiB9CiAKIC0gKHZvaWQp
ZGVhbGxvYwpAQCAtMTA1LDcgKzEwNSw3IEBAIC0gKHZvaWQpZGVsZXRlQ29va2llOihOU0hUVFBD
b29raWUgKiljb29raWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvCiAKIC0g
KHZvaWQpYWRkT2JzZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVy
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBfb2JzZXJ2ZXJzLmFkZChvYnNlcnZlciwgbnVsbHB0cik7
CisgICAgYXV0byByZXN1bHQgPSBfb2JzZXJ2ZXJzLmFkZCgoX19icmlkZ2UgQ0ZUeXBlUmVmKW9i
c2VydmVyLCBudWxscHRyKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTExNSw3ICsxMTUsNyBAQCAtICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hU
VFBDb29raWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogCiAtICh2b2lkKXJlbW92ZU9ic2VydmVy
OihpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogewotICAgIGF1dG8gcmVz
dWx0ID0gX29ic2VydmVycy50YWtlKG9ic2VydmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IF9vYnNl
cnZlcnMudGFrZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKW9ic2VydmVyKTsKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KaW5kZXggNDdiN2M0Y2E1YTE0OWY1MTg5ODYyYjM3
ODg3NGFjOTA1ZTU4MTBjZi4uNGQ0MTdiNTQzYzBlZDg2MjI5OTQyMjIyNmJhMGZhNTczMzFmNTlk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c0dyb3VwLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NHcm91cC5tbQpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCBzZXRVcENvbm5lY3Rpb25D
bGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250ZXh0UmVmIGNvbgogICAg
IG1lbXNldCgmY29ubmVjdGlvbkNsaWVudCwgMCwgc2l6ZW9mKGNvbm5lY3Rpb25DbGllbnQpKTsK
IAogICAgIGNvbm5lY3Rpb25DbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBjb25uZWN0aW9u
Q2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHByb2Nlc3NHcm91cDsKKyAgICBjb25uZWN0aW9uQ2xp
ZW50LmJhc2UuY2xpZW50SW5mbyA9IChfX2JyaWRnZSBDRlR5cGVSZWYpcHJvY2Vzc0dyb3VwOwog
ICAgIGNvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbiA9IGRpZENyZWF0ZUNvbm5l
Y3Rpb247CiAKICAgICBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KGNvbnRleHRSZWYsICZj
b25uZWN0aW9uQ2xpZW50LmJhc2UpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyB2b2lkIHNl
dFVwSGlzdG9yeUNsaWVudChXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwLCBXS0NvbnRleHRS
ZWYgY29udGV4CiAgICAgbWVtc2V0KCZoaXN0b3J5Q2xpZW50LCAwLCBzaXplb2YoaGlzdG9yeUNs
aWVudCkpOwogCiAgICAgaGlzdG9yeUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGhpc3Rv
cnlDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gcHJvY2Vzc0dyb3VwOworICAgIGhpc3RvcnlDbGll
bnQuYmFzZS5jbGllbnRJbmZvID0gKF9fYnJpZGdlIENGVHlwZVJlZilwcm9jZXNzR3JvdXA7CiAg
ICAgaGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhOwogICAgIGhpc3RvcnlDbGllbnQuZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0ID0gZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0OwogICAgIGhpc3RvcnlDbGllbnQu
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0ID0gZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKaW5k
ZXggM2UxN2MwZmE0MTZmOTVmOWI5OTNkZjcwZjRjNGM1ZWM5YmY5NzA3Yy4uZmU4OTZiYzZiNTRl
Nzg2YTI3YjQ1NGVjN2Y4Nzk3N2FkNGUzOGZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW1w
b3J0IDxXZWJLaXQvV0tWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLT3ZlcmxheVNjcm9sbGJh
clN0eWxlLmg+CiAKK0BjbGFzcyBfV0tMaW5rSWNvblBhcmFtZXRlcnM7CisKIEBpbnRlcmZhY2Ug
V0tWaWV3IChQcml2YXRlKQogCiAvKiBDIFNQSSBzdXBwb3J0LiAqLwpAQCAtMTQ2LDQgKzE0OCwx
MSBAQAogCiBAZW5kCiAKK0BpbnRlcmZhY2UgV0tWaWV3IChQcml2YXRlRm9yU3ViY2xhc3NUb0Rl
ZmluZSkKKworLy8gVGhpcyBhIG1ldGhvZCB0aGF0IHN1YmNsYXNzZXMgY2FuIGRlZmluZSBhbmQg
V0tWaWV3IGl0c2VsZiBkb2VzIG5vdCBkZWZpbmUuIFdLVmlldyB3aWxsIGNhbGwgdGhlIG1ldGhv
ZCBpZiBpdCBpcyBwcmVzZW50LgorLSAodm9pZClfc2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVy
czooX1dLTGlua0ljb25QYXJhbWV0ZXJzICopcGFyYW1ldGVycyBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikodm9pZCAoXikoTlNEYXRhICopKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAor
CiAjZW5kaWYgLy8gIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAwM2ExOTM1NzNlYjhiZDJjZjQ5YjMzNzdj
M2ZjODYyYmVlMWYxODMuLjMzOWEyYmIxZGJiYWQxYzM5NDRhN2YxZjNiODkxODBkYjdlNjY0YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMjA5LDkgKzIwOSw5IEBAIEBlbmQKIAogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgV0tXZWJWaWV3ICo+JiBwYWdlVG9WaWV3TWFwKCkKK3N0YXRpYyBI
YXNoTWFwPFdlYktpdDo6V2ViUGFnZVByb3h5KiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS1dlYlZp
ZXcgKj4mIHBhZ2VUb1ZpZXdNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
TWFwPFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV0tXZWJWaWV3ICo+PiBtYXA7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBfX3Vuc2FmZV91
bnJldGFpbmVkIFdLV2ViVmlldyAqPj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKQEAgLTMx
NTEsMTAgKzMxNTEsMTEgQEAgLSAoQk9PTClfaGF2ZVNldE9ic2N1cmVkSW5zZXRzCiAjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfRVZFTlRTKQorCiBz
dGF0aWMgdm9pZCBhY2Nlc3NpYmlsaXR5RXZlbnRzRW5hYmxlZENoYW5nZWRDYWxsYmFjayhDRk5v
dGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmLCBjb25zdCB2
b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewogICAgIEFTU0VSVChvYnNlcnZlcik7Ci0gICAgV0tX
ZWJWaWV3KiB3ZWJ2aWV3ID0gc3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4ob2JzZXJ2ZXIpOworICAg
IFdLV2ViVmlldyAqd2VidmlldyA9IChfX2JyaWRnZSBXS1dlYlZpZXcgKilvYnNlcnZlcjsKICAg
ICBbd2VidmlldyBfdXBkYXRlQWNjZXNzaWJpbGl0eUV2ZW50c0VuYWJsZWRdOwogfQogCkBAIC0z
MTYzLDYgKzMxNjQsNyBAQCAtICh2b2lkKV91cGRhdGVBY2Nlc3NpYmlsaXR5RXZlbnRzRW5hYmxl
ZAogICAgIGlmICghaXNOdWxsRnVuY3Rpb25Qb2ludGVyKF9BWFNXZWJBY2Nlc3NpYmlsaXR5RXZl
bnRzRW5hYmxlZCkpCiAgICAgICAgIF9wYWdlLT51cGRhdGVBY2Nlc3NpYmlsaXR5RXZlbnRzRW5h
YmxlZChfQVhTV2ViQWNjZXNzaWJpbGl0eUV2ZW50c0VuYWJsZWQoKSk7CiB9CisKICNlbmRpZgog
CiAjcHJhZ21hIG1hcmsgT1MgWC1zcGVjaWZpYyBtZXRob2RzCkBAIC00MjM2LDcgKzQyMzgsNyBA
QCAtIChXS05hdmlnYXRpb24gKilfbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
c2hvdWxkT3BlbkV4dGVybmFsVVJMczooQgogLSAoTlNBcnJheSAqKV9jZXJ0aWZpY2F0ZUNoYWlu
CiB7CiAgICAgaWYgKFdlYktpdDo6V2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gX3BhZ2UtPm1h
aW5GcmFtZSgpKQotICAgICAgICByZXR1cm4gbWFpbkZyYW1lLT5jZXJ0aWZpY2F0ZUluZm8oKSA/
IChOU0FycmF5ICopbWFpbkZyYW1lLT5jZXJ0aWZpY2F0ZUluZm8oKS0+Y2VydGlmaWNhdGVJbmZv
KCkuY2VydGlmaWNhdGVDaGFpbigpIDogbmlsOworICAgICAgICByZXR1cm4gbWFpbkZyYW1lLT5j
ZXJ0aWZpY2F0ZUluZm8oKSA/IChfX2JyaWRnZSBOU0FycmF5ICopbWFpbkZyYW1lLT5jZXJ0aWZp
Y2F0ZUluZm8oKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpIDogbmlsOwog
CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTY2MTIsNyArNjYxNCw3IEBAIC0gKE5TQXJyYXkgKilj
ZXJ0aWZpY2F0ZUNoYWluCiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgIHJldHVy
biBAWyBdOwogCi0gICAgcmV0dXJuIChOU0FycmF5ICopY2VydGlmaWNhdGVJbmZvLT5jZXJ0aWZp
Y2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkgPzogQFsgXTsKKyAgICByZXR1cm4gKF9fYnJp
ZGdlIE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUluZm8tPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmlj
YXRlQ2hhaW4oKSA/OiBAWyBdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IGY0OTVjNzE0Y2M0YTc0YmM2
ZmUyNDhhMDYxNmQ4MGM0ZDVlMGRkMmQuLjRlZDU1ZjFjMzRlZTNmOTIyODRlODcxZmI5OGMwOGFj
MWE1YjY4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdHRhY2htZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdHRhY2htZW50Lm1tCkBAIC05Niw3ICs5Niw3IEBAIC0gKE5TU3RyaW5nICopZmlsZVBhdGgK
IAogc3RhdGljIEJPT0wgaXNEZWNsYXJlZE9yRHluYW1pY1R5cGVJZGVudGlmaWVyKE5TU3RyaW5n
ICp0eXBlKQogewotICAgIHJldHVybiBVVFR5cGVJc0RlY2xhcmVkKChDRlN0cmluZ1JlZil0eXBl
KSB8fCBVVFR5cGVJc0R5bmFtaWMoKENGU3RyaW5nUmVmKXR5cGUpOworICAgIHJldHVybiBVVFR5
cGVJc0RlY2xhcmVkKChfX2JyaWRnZSBDRlN0cmluZ1JlZil0eXBlKSB8fCBVVFR5cGVJc0R5bmFt
aWMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXR5cGUpOwogfQogCiAtIChOU1N0cmluZyAqKV90eXBl
SWRlbnRpZmllckZyb21QYXRoRXh0ZW5zaW9uCkBAIC0xMTksOCArMTE5LDcgQEAgLSAoTlNTdHJp
bmcgKiltaW1lVHlwZQogICAgIGlmICghaXNEZWNsYXJlZE9yRHluYW1pY1R5cGVJZGVudGlmaWVy
KGNvbnRlbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGNvbnRlbnRUeXBlOwogCi0gICAgYXV0byBt
aW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcygoQ0ZTdHJp
bmdSZWYpY29udGVudFR5cGUsIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICByZXR1cm4gKE5T
U3RyaW5nICopbWltZVR5cGUuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZiljb250ZW50
VHlwZSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoTlNTdHJpbmcgKil1dGlUeXBlCkBAIC0xMjksOCArMTI4LDcgQEAgLSAoTlNTdHJpbmcgKil1
dGlUeXBlCiAgICAgaWYgKGlzRGVjbGFyZWRPckR5bmFtaWNUeXBlSWRlbnRpZmllcihjb250ZW50
VHlwZSkpCiAgICAgICAgIHJldHVybiBjb250ZW50VHlwZTsKIAotICAgIGF1dG8gdXRpVHlwZSA9
IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFz
c01JTUVUeXBlLCAoQ0ZTdHJpbmdSZWYpY29udGVudFR5cGUsIG5pbCkpOwotICAgIHJldHVybiAo
TlNTdHJpbmcgKil1dGlUeXBlLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRU
eXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpY29udGVudFR5cGUsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBmNzc2ZmRjZTQ4MDFiMzZkYTgx
OWEyZTk2NTQxMGNlYjZlZDMxMjhmLi4yNmQ3ZmZiN2FhM2FlODVjMjE4YzFlOTA5MGNhOWQ0NTY5
MWMyNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAt
ODg0LDcgKzg4NCw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKIAog
ICAgICAgICBzdGF0aWMgU0VMIGRlbGVnYXRlU2VsZWN0b3IoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsX3JlZ2lzdGVyTmFtZSgiX3Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRl
cnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CisgICAgICAgICAgICByZXR1cm4gQHNlbGVjdG9yKF9z
aG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOmNvbXBsZXRpb25IYW5kbGVyOik7CiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6CkBAIC04OTQsNyArODk0LDcgQEAgLSAodm9pZCltYXliZUluc3Rh
bGxJY29uTG9hZGluZ0NsaWVudAogICAgICAgICB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8X1dL
TGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJY29uUGFy
YW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKIAotICAgICAgICAg
ICAgW21fd2tWaWV3IHBlcmZvcm1TZWxlY3RvcjpkZWxlZ2F0ZVNlbGVjdG9yKCkgd2l0aE9iamVj
dDpwYXJhbWV0ZXJzLmdldCgpIHdpdGhPYmplY3Q6QmxvY2tQdHI8dm9pZChJY29uTG9hZENvbXBs
ZXRpb25IYW5kbGVyKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oSWNvbkxvYWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxl
dGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICAgICAgW21fd2tWaWV3IF9zaG91bGRMb2Fk
SWNvbldpdGhQYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Qmxv
Y2tQdHI8dm9pZChJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKT46OmZyb21DYWxsYWJsZShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSWNvbkxvYWRDb21w
bGV0aW9uSGFuZGxlciBsb2FkQ29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGxv
YWRDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihbbG9hZENvbXBsZXRpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9pZCAoTlNEYXRhICopPihs
b2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM0NDAxZGUzYmRmNTAxNmYzMmQ0YmI2ZmYxNmRmZDU5
MTM3YTk4MTkuLjVlMjc2NDljYWRjYjQ3ODkwNTQ3OTA4NTJlY2Y3ZGM3OTFkM2YwY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAg
LTk3OCwxMSArOTc4LDggQEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVAKICAgICBpZiAoIW5hdmln
YXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBkYXRhID0gW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107Ci0KLSAgICByZXR1cm4gQVBJOjpEYXRh
OjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopW2RhdGEgYnl0ZXNd
LCBbZGF0YSBsZW5ndGhdLCBbXSAodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpIHsK
LSAgICAgICAgWyhOU0RhdGEgKilkYXRhIHJlbGVhc2VdOwotICAgIH0sIGRhdGEubGVha1JlZigp
KTsKKyAgICBOU0RhdGEgKmRhdGEgPSBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYkNyeXB0b01hc3Rlcktl
eUZvcldlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3XTsKKyAgICByZXR1cm4gQVBJ
OjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAogUmVmUHRyPEFQSTo6U3Ry
aW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDA0OThkMDg4ZWRhZTcwZTZkY2JhY2I0MGUxOTJl
ZDA3ZDlkNjRiYjMuLmQxNmY1ODUyZGRmODRhNGQ1OTJiOWYzM2U3OGViMzJkYTkyMGIxMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQpAQCAtMjI2LDEyICsyMjYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAg
ICAgICB9CiAKICNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEyMDApCi0gICAgICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihrZXllZEFy
Y2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKKyAgICAgICAgYXV0byBkYXRhID0ga2V5ZWRBcmNo
aXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKICNlbmRpZgogCi0gICAgICAgIHBhcmFtZXRlcnMuYnVu
ZGxlUGFyYW1ldGVyRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSwgW10gKHVuc2lnbmVk
IGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKSB7Ci0gICAgICAgICAgICBbKE5TRGF0YSAqKWRhdGEg
cmVsZWFzZV07Ci0gICAgICAgIH0sIGRhdGEubGVha1JlZigpKTsKKyAgICAgICAgcGFyYW1ldGVy
cy5idW5kbGVQYXJhbWV0ZXJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhX
VEZNb3ZlKGRhdGEpKTsKICAgICB9CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dCA9
IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlBVFNDb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCBhNzc4YjlhN2M3NzA1MDI3MDQzOTc2
MGE2NGViNjE1ZGZiY2QzY2M3Li4zMjdmYTQ5ZDdiNGMxYzgxZDNjN2UxMWVlNDkwZTcwMmFmNjA0
YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAg
LTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlRm9yRGljdGlvbmFyeUxv
b2t1cCgpOwogICAgIHZvaWQgc2V0QWxsb3dzTGlua1ByZXZpZXcoYm9vbCk7CiAgICAgYm9vbCBh
bGxvd3NMaW5rUHJldmlldygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTGlua1ByZXZpZXc7IH0K
LSAgICB2b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJl
c3VsdChBUEk6OkhpdFRlc3RSZXN1bHQqLCB1aW50MzJfdCB0eXBlLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpOworICAgIE5TT2JqZWN0ICppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVy
Rm9ySGl0VGVzdFJlc3VsdChBUEk6OkhpdFRlc3RSZXN1bHQqLCB1aW50MzJfdCB0eXBlLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpOwogICAgIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhp
dFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50c0Rl
ZmF1bHQsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSk7CiAgICAgdm9pZCBwcmVwYXJlRm9ySW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBjYW5jZWxJbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggNmVkODZjZjE3ZDQxZjJjNTU5NjQyYzU4NDg2ZDdkMzczN2ZmYmNlMS4uNGE1NzMwYWEx
M2NmNGQxN2M1ZWEwMzZhMmU0OTE4MjcwOWM0MWFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTIwNTAsNyArMjA1MCw4IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmFjY2VwdHNGaXJzdE1vdXNlKE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJl
J3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0
ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVs
ZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAv
LyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0g
aW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIENG
QXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7CiAKICAgICBpZiAoIVttX3Zp
ZXcgaGl0VGVzdDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjA2OSw3ICsyMDcwLDggQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5k
b3dPcmRlcmluZ0ZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJlJ3MgYSBjaGFu
Y2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQg
bG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUg
b2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3Vy
cmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdl
YktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIENGQXV0b3JlbGVh
c2UoKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0VGVz
dDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzMx
OSw3ICszMzIxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWxsb3dzTGlua1ByZXZpZXcoYm9v
bCBhbGxvd3NMaW5rUHJldmlldykKICAgICAgICAgW21fdmlldyBhZGRHZXN0dXJlUmVjb2duaXpl
cjppbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyXTsKIH0KIAotdm9pZCogV2ViVmlld0ltcGw6Omlt
bWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KEFQSTo6SGl0
VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgdWludDMyX3QgdHlwZSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQorTlNPYmplY3QgKldlYlZpZXdJbXBsOjppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25D
b250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChBUEk6OkhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1
bHQsIHVpbnQzMl90IHR5cGUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICByZXR1cm4g
W21fdmlldyBfd2ViX2ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0
UmVzdWx0SW50ZXJuYWw6aGl0VGVzdFJlc3VsdCB3aXRoVHlwZTp0eXBlIHVzZXJEYXRhOnVzZXJE
YXRhXTsKIH0KQEAgLTQ4ODMsNyArNDg4NSw4IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1L
ZXlFcXVpdmFsZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhh
dCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwg
YW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9u
ZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBl
dmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBv
ciBBcHBLaXQgY29kZS4KLSAgICBbW2V2ZW50IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIENG
UmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIENGQXV0b3JlbGVhc2UoKF9f
YnJpZGdlIENGVHlwZVJlZilldmVudCk7CiAKICAgICAvLyBXZSBnZXQgRXNjIGtleSBoZXJlIGFm
dGVyIHByb2Nlc3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9kLiBUaGUgZm9ybWVyIHN0YXJ0
cyBhcyBhIGtleURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBhcyBhIGtleSBlcXVpdmFsZW50
LAogICAgIC8vIGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBhIGNhbmNlbE9wZXJhdGlvbjog
Y29tbWFuZCwgZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mga2V5IGV2ZW50IHRvIC1wZXJm
b3JtS2V5RXF1aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXgg
MjY4M2ZjOGRkYjZmMTkxN2U5YTc3ZTNlMjUyNWVjMGE0MjU0NTFlNS4uMmQ3MDljZjFlMzc2NzA2
NzcxMWIzNDBlYWRmNTQ1ZjA3NDcxMjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaApAQCAtMzk5LDExICszOTksMTAgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBX
ZWJIaXRUZXN0UmVzdWx0RGF0YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgQVBJOjpP
YmplY3QqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1
aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0PikgPSAwOwotCisgICAgdmlydHVhbCBOU09iamVj
dCAqaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVm
UHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4sIHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpPYmplY3Q+KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkgPSAwOwog
I2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoUHJvY2Vzc2luZ0FsbFBlbmRpbmdN
b3VzZUV2ZW50cygpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB2aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA4ZmY1NGIy
ZjhiZTNiOWNhYmE1ZmFkMGI0Nzc0YzI1MDg3Mjg4MTIwLi40ZWZlMDgwYTZjMGIxZDJkNjIyNDQ2
NGFmZThkMDYyMTZmOGE0MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMTA0
LDExICsxMDQsMTEgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUo
Y29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW4KICAgICAgICAgUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpSZWxhdGVkTGF5ZXJNYXAgcmVsYXRlZExheWVyczsKICAg
ICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6Q2hpbGRyZW5DaGFuZ2VkKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNo
aWxkIDogcHJvcGVydGllcy5jaGlsZHJlbikKLSAgICAgICAgICAgICAgICByZWxhdGVkTGF5ZXJz
LnNldChjaGlsZCwgZ2V0TGF5ZXIoY2hpbGQpKTsKKyAgICAgICAgICAgICAgICByZWxhdGVkTGF5
ZXJzLnNldChjaGlsZCwgKF9fYnJpZGdlIENGVHlwZVJlZilnZXRMYXllcihjaGlsZCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TWFza0xheWVyQ2hhbmdlZCAmJiBwcm9wZXJ0aWVzLm1h
c2tMYXllcklEKQotICAgICAgICAgICAgcmVsYXRlZExheWVycy5zZXQocHJvcGVydGllcy5tYXNr
TGF5ZXJJRCwgZ2V0TGF5ZXIocHJvcGVydGllcy5tYXNrTGF5ZXJJRCkpOworICAgICAgICAgICAg
cmVsYXRlZExheWVycy5zZXQocHJvcGVydGllcy5tYXNrTGF5ZXJJRCwgKF9fYnJpZGdlIENGVHlw
ZVJlZilnZXRMYXllcihwcm9wZXJ0aWVzLm1hc2tMYXllcklEKSk7CiAKICAgICAgICAgaWYgKHBy
b3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Q2xvbmVkQ29udGVudHNDaGFuZ2VkICYmIHByb3BlcnRpZXMuY2xvbmVkTGF5ZXJJRCkKICAgICAg
ICAgICAgIGNsb25lc1RvVXBkYXRlLmFwcGVuZChMYXllcklEUGFpcihsYXllcklELCBwcm9wZXJ0
aWVzLmNsb25lZExheWVySUQpKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZUhvc3Q6OmRldGFjaFJvb3RMYXllcigpCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiBzdGF0aWMg
dm9pZCByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZShDQUxheWVyICpsYXllcikK
IHsKLSAgICBpZiAobGF5ZXIuY29udGVudHMgJiYgQ0ZHZXRUeXBlSUQobGF5ZXIuY29udGVudHMp
ID09IENBTWFjaFBvcnRHZXRUeXBlSUQoKSkgeworICAgIGlmIChsYXllci5jb250ZW50cyAmJiBD
RkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9PSBDQU1hY2hQ
b3J0R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTWFjaFNlbmRSaWdodCBwb3J0ID0gTWFjaFNlbmRS
aWdodDo6Y3JlYXRlKENBTWFjaFBvcnRHZXRQb3J0KChfX2JyaWRnZSBDQU1hY2hQb3J0UmVmKWxh
eWVyLmNvbnRlbnRzKSk7CiAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBzUkdCQ29sb3JTcGFjZVJlZigp
KTsKICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNv
bnRlbnRzKCkgOiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBlMDcyYmMyMWJkNjk4MWRiMTBlNDA3ZjY1YWVhOGJiZDQyNDMxYjNjLi40YjU5ZWY3ZWNk
ODJjMzVjZDBhYjA4MWEzNzFiMDJiZTBkODk3MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTczMjYsNyArNzMyNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYKICAgICBtX3BhZ2VDbGllbnQuZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Qo
cmVzdWx0LCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAotdm9pZCogV2ViUGFn
ZVByb3h5OjppbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3Vs
dChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0LCB1aW50NjRfdCB0eXBl
LCBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhKQorTlNPYmplY3QgKldlYlBhZ2VQcm94eTo6
aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRy
PEFQSTo6SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCwgdWludDY0X3QgdHlwZSwgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YSkKIHsKICAgICByZXR1cm4gbV9wYWdlQ2xpZW50LmltbWVk
aWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1
bHQsIHR5cGUsIHVzZXJEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggZDY5MzRkNGE5Y2Y2Mjg3ODkwNWI0ZGRmZDdhYjhiYWEyNTkyYWViZi4uMmFiYzc5
Y2VmMWE0MDgzYTRhM2JkZjA0MzM5ZTI0NWMyY2Q2ZTIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMDQsNyArMTIwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlk
Q29tcGxldGUoKTsKIAotICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xs
ZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwg
UmVmUHRyPEFQSTo6T2JqZWN0Pik7CisgICAgTlNPYmplY3QgKmltbWVkaWF0ZUFjdGlvbkFuaW1h
dGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+
LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pik7CiAKICAgICB2b2lkIGluc3RhbGxBY3Rp
dml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aAppbmRleCBjODg0ZmEyYmJhOWY4ZmFlYzk3NjZiMjIzMjFlMWYzY2U1ZTg1ZDEzLi42NzIwZjdj
MDgxNDBmZWM5NGI0Nzc0ZGM4ZmMwMTQyMzliYWViZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25I
aXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNE
ZWZhdWx0LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlv
bkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RS
ZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pikgb3ZlcnJpZGU7CisgICAgTlNP
YmplY3QgKmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0
KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0
Pikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQppbmRleCBhMGJjOWViZTc5ODY5YTc0ZmRhZTM5NTZhYWQ4MGY3YTEzNTJmN2VmLi5i
M2Y1NDIxOWQzMTFkOWNlMjQzNTc5N2JkMTIzMGQ5NzNjZjZhZTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC04MjcsNyArODI3
LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRl
c3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEKICAgICBtX2ltcGwtPmRpZFBlcmZvcm1JbW1l
ZGlhdGVBY3Rpb25IaXRUZXN0KHJlc3VsdCwgY29udGVudFByZXZlbnRzRGVmYXVsdCwgdXNlckRh
dGEpOwogfQogCi12b2lkKiBQYWdlQ2xpZW50SW1wbDo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gaGl0
VGVzdFJlc3VsdCwgdWludDY0X3QgdHlwZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YSkK
K05TT2JqZWN0ICpQYWdlQ2xpZW50SW1wbDo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJv
bGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJl
c3VsdCwgdWludDY0X3QgdHlwZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YSkKIHsKICAg
ICByZXR1cm4gbV9pbXBsLT5pbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0
VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0LmdldCgpLCB0eXBlLCB1c2VyRGF0YS5nZXQoKSk7CiB9
CkBAIC04NTYsMTIgKzg1NiwxMiBAQCBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBQ
YWdlQ2xpZW50SW1wbDo6bWVkaWFTZXNzaW9uTWFuYWdlcigpCiAKIHZvaWQgUGFnZUNsaWVudElt
cGw6OnJlZlZpZXcoKQogewotICAgIENGUmV0YWluKG1fdmlldyk7CisgICAgQ0ZSZXRhaW4oKF9f
YnJpZGdlIENGVHlwZVJlZiltX3ZpZXcpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkZXJl
ZlZpZXcoKQogewotICAgIENGUmVsZWFzZShtX3ZpZXcpOworICAgIENGUmVsZWFzZSgoX19icmlk
Z2UgQ0ZUeXBlUmVmKW1fdmlldyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0V2lu
ZG93RHJhZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2Vydmlj
ZXNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29u
dHJvbGxlci5tbQppbmRleCBiYjZmYjc1MTNlOTUzYmMzZjVkZjUwM2M5ZGU3OWNhM2U0YzAxNWE3
Li4zYzhiYzY0MmFmODFjZWNhNDJiMTcwNTQ2YTUzZjhjNTYzYTA5MTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0KQEAgLTk3LDI3
ICs5NywyNyBAQCB2b2lkIFNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4aXN0aW5nU2Vydmlj
ZXMoYm9vbCByZWZyZXNoSW1tZWRpYXRlbHkpCiAgICAgZGlzcGF0Y2hfYWZ0ZXIocmVmcmVzaFRp
bWUsIG1fcmVmcmVzaFF1ZXVlLCBeewogICAgICAgICBhdXRvIHNlcnZpY2VMb29rdXBHcm91cCA9
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpOwogCi0gICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxOU0ltYWdlICo+IGltYWdlKFtbTlNJbWFnZSBhbGxvY10gaW5pdF0p
OworICAgICAgICBzdGF0aWMgTlNJbWFnZSAqaW1hZ2UgeyBbW05TSW1hZ2UgYWxsb2NdIGluaXRd
IH07CiAgICAgICAgIGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKHNlcnZpY2VMb29rdXBH
cm91cC5nZXQoKSwgQFsgaW1hZ2UgXSwgW3RoaXNdIChib29sIGhhc1NlcnZpY2VzKSB7CiAgICAg
ICAgICAgICBtX2hhc0ltYWdlU2VydmljZXMgPSBoYXNTZXJ2aWNlczsKICAgICAgICAgfSk7CiAK
LSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5TQXR0cmlidXRlZFN0cmluZyAqPiBhdHRy
aWJ1dGVkU3RyaW5nKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpA
ImEiXSk7CisgICAgICAgIHN0YXRpYyBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmcgeyBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJhIl0gfTsK
ICAgICAgICAgaGFzQ29tcGF0aWJsZVNlcnZpY2VzRm9ySXRlbXMoc2VydmljZUxvb2t1cEdyb3Vw
LmdldCgpLCBAWyBhdHRyaWJ1dGVkU3RyaW5nIF0sIFt0aGlzXSAoYm9vbCBoYXNTZXJ2aWNlcykg
ewogICAgICAgICAgICAgbV9oYXNTZWxlY3Rpb25TZXJ2aWNlcyA9IGhhc1NlcnZpY2VzOwogICAg
ICAgICB9KTsKIAotICAgICAgICBzdGF0aWMgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nV2l0aFJpY2hDb250ZW50OwotICAgICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmdXaXRo
UmljaENvbnRlbnQpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXiB7CisgICAgICAgIHN0YXRpYyBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJp
YnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQgPSBbXSB7CisgICAgICAgICAgICBOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nICpyaWNoU3RyaW5nOworICAgICAgICAgICAgZGlzcGF0Y2hfc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbJnJpY2hTdHJpbmddIHsKICAgICAgICAgICAgICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5p
dF0pOwotICAgICAgICAgICAgICAgIGF1dG8gY2VsbCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2ht
ZW50Q2VsbCBhbGxvY10gaW5pdEltYWdlQ2VsbDppbWFnZS5nZXQoKV0pOworICAgICAgICAgICAg
ICAgIGF1dG8gY2VsbCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50Q2VsbCBhbGxvY10gaW5p
dEltYWdlQ2VsbDppbWFnZV0pOwogICAgICAgICAgICAgICAgIFthdHRhY2htZW50IHNldEF0dGFj
aG1lbnRDZWxsOmNlbGwuZ2V0KCldOwotICAgICAgICAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKnJpY2hTdHJpbmcgPSAoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqKVtOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmdXaXRoQXR0YWNobWVudDphdHRh
Y2htZW50LmdldCgpXTsKKyAgICAgICAgICAgICAgICByaWNoU3RyaW5nID0gW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnQuZ2V0KCld
IG11dGFibGVDb3B5XTsKICAgICAgICAgICAgICAgICBbcmljaFN0cmluZyBhcHBlbmRBdHRyaWJ1
dGVkU3RyaW5nOmF0dHJpYnV0ZWRTdHJpbmddOwotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZWRT
dHJpbmdXaXRoUmljaENvbnRlbnQgPSBbcmljaFN0cmluZyByZXRhaW5dOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByaWNoU3RyaW5nOworICAgICAgICB9
KCk7CiAKICAgICAgICAgaGFzQ29tcGF0aWJsZVNlcnZpY2VzRm9ySXRlbXMoc2VydmljZUxvb2t1
cEdyb3VwLmdldCgpLCBAWyBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50IF0sIFt0aGlz
XSAoYm9vbCBoYXNTZXJ2aWNlcykgewogICAgICAgICAgICAgbV9oYXNSaWNoQ29udGVudFNlcnZp
Y2VzID0gaGFzU2VydmljZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCA4Y2VhZGMxZDljMjNj
MmQ4MDQ0ZWRjMzEwY2VmNDZjY2Q1MmM5NjMzLi5mODcyMDcwNjRjN2JlNTFlYWViYjI3YTAzMWQ0
OTA1MTEyYjM4OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTMyOCw3ICszMjgsNyBAQCAt
ICh2b2lkKV91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtCiAgICAgfQogCiAgICAgUmVmUHRyPEFQ
STo6SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IFtzZWxmIF93ZWJIaXRUZXN0UmVzdWx0
XTsKLSAgICBpZCBjdXN0b21DbGllbnRBbmltYXRpb25Db250cm9sbGVyID0gKGlkKShfcGFnZS0+
aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoaGl0VGVz
dFJlc3VsdCwgX3R5cGUsIF91c2VyRGF0YSkpOworICAgIGlkIGN1c3RvbUNsaWVudEFuaW1hdGlv
bkNvbnRyb2xsZXIgPSBfcGFnZS0+aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZv
ckhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgX3R5cGUsIF91c2VyRGF0YSk7CiAgICAgaWYg
KGN1c3RvbUNsaWVudEFuaW1hdGlvbkNvbnRyb2xsZXIgPT0gW05TTnVsbCBudWxsXSkgewogICAg
ICAgICBbc2VsZiBfY2FuY2VsSW1tZWRpYXRlQWN0aW9uXTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4IDdiMGIz
OGI3NDU0NDYxYzdhMjc5YTc1MzczZTY1ODllZGUxNjM1MmEuLjFmZGE3ZGJlNWRmMWZmN2RiMTc3
MGNhZmIxNDBkZmY1NjBmNWEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0KQEAgLTYzLDggKzYzLDEwIEBAIC0gKGlkKWluaXRXaXRoRnJhbWVQ
cm94eTooV2ViS2l0OjpXZWJGcmFtZVByb3h5JilmcmFtZSB2aWV3OihOU1ZpZXcgKil3a1ZpZXcK
IAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9j
YXRlT25NYWluVGhyZWFkKFtXS1ByaW50aW5nVmlldyBjbGFzc10sIHNlbGYpKQotICAgICAgICBy
ZXR1cm47CisgICAgY2FsbE9uTWFpblRocmVhZChbZnJhbWUgPSBXVEZNb3ZlKF93ZWJGcmFtZSks
IHByZXZpZXdzID0gV1RGTW92ZShfcGFnZVByZXZpZXdzKV0geworICAgICAgICAvLyBEZWFsbG9j
YXRlIHRoZXNlIG9uIHRoZSBtYWluIHRocmVhZCwgbm90IHRoZSBjdXJyZW50IHRocmVhZCwgc2lu
Y2UgdGhlCisgICAgICAgIC8vIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgdGhlIGRlc3RydWN0b3Jz
IGFyZW4ndCB0aHJlYWRzYWZlLgorICAgIH0pOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpA
QCAtNDMxLDkgKzQzMyw5IEBAIC0gKHVuc2lnbmVkKV9wYWdlRm9yUmVjdDooTlNSZWN0KXJlY3QK
ICAgICByZXR1cm4gMDsgLy8gSW52YWxpZCBwYWdlIG51bWJlci4KIH0KIAotc3RhdGljIENGU3Ry
aW5nUmVmIGxpbmtEZXN0aW5hdGlvbk5hbWUoUERGRG9jdW1lbnQgKmRvY3VtZW50LCBQREZEZXN0
aW5hdGlvbiAqZGVzdGluYXRpb24pCitzdGF0aWMgTlNTdHJpbmcgKmxpbmtEZXN0aW5hdGlvbk5h
bWUoUERGRG9jdW1lbnQgKmRvY3VtZW50LCBQREZEZXN0aW5hdGlvbiAqZGVzdGluYXRpb24pCiB7
Ci0gICAgcmV0dXJuIChDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVs
dS0lZi0lZiIsICh1bnNpZ25lZCBsb25nKVtkb2N1bWVudCBpbmRleEZvclBhZ2U6ZGVzdGluYXRp
b24ucGFnZV0sIGRlc3RpbmF0aW9uLnBvaW50LngsIGRlc3RpbmF0aW9uLnBvaW50LnldOworICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVsdS0lZi0lZiIsICh1bnNpZ25l
ZCBsb25nKVtkb2N1bWVudCBpbmRleEZvclBhZ2U6ZGVzdGluYXRpb24ucGFnZV0sIGRlc3RpbmF0
aW9uLnBvaW50LngsIGRlc3RpbmF0aW9uLnBvaW50LnldOwogfQogCiAtICh2b2lkKV9kcmF3UERG
RG9jdW1lbnQ6KFBERkRvY3VtZW50ICopcGRmRG9jdW1lbnQgcGFnZToodW5zaWduZWQpcGFnZSBh
dFBvaW50OihOU1BvaW50KXBvaW50CkBAIC00NzAsNyArNDcyLDcgQEAgLSAodm9pZClfZHJhd1BE
RkRvY3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3VtZW50IHBhZ2U6KHVuc2lnbmVkKXBhZ2Ug
YXRQb2ludDoKIAogICAgIGZvciAoY29uc3QgYXV0byYgZGVzdGluYXRpb24gOiBfbGlua0Rlc3Rp
bmF0aW9uc1BlclBhZ2VbcGFnZV0pIHsKICAgICAgICAgQ0dQb2ludCBkZXN0aW5hdGlvblBvaW50
ID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKE5TUG9pbnRUb0NHUG9pbnQoW2Rlc3RpbmF0
aW9uIHBvaW50XSksIHRyYW5zZm9ybSk7Ci0gICAgICAgIENHUERGQ29udGV4dEFkZERlc3RpbmF0
aW9uQXRQb2ludChjb250ZXh0LCBsaW5rRGVzdGluYXRpb25OYW1lKHBkZkRvY3VtZW50LCBkZXN0
aW5hdGlvbi5nZXQoKSksIGRlc3RpbmF0aW9uUG9pbnQpOworICAgICAgICBDR1BERkNvbnRleHRB
ZGREZXN0aW5hdGlvbkF0UG9pbnQoY29udGV4dCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKWxpbmtE
ZXN0aW5hdGlvbk5hbWUocGRmRG9jdW1lbnQsIGRlc3RpbmF0aW9uLmdldCgpKSwgZGVzdGluYXRp
b25Qb2ludCk7CiAgICAgfQogCiAgICAgZm9yIChQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uIGlu
IFtwZGZQYWdlIGFubm90YXRpb25zXSkgewpAQCAtNDg4LDggKzQ5MCw3IEBAIC0gKHZvaWQpX2Ry
YXdQREZEb2N1bWVudDooUERGRG9jdW1lbnQgKilwZGZEb2N1bWVudCBwYWdlOih1bnNpZ25lZClw
YWdlIGF0UG9pbnQ6CiAgICAgICAgICAgICBQREZEZXN0aW5hdGlvbiAqZGVzdGluYXRpb24gPSBb
bGlua0Fubm90YXRpb24gZGVzdGluYXRpb25dOwogICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlv
bikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENHUERGQ29udGV4dFNl
dERlc3RpbmF0aW9uRm9yUmVjdChjb250ZXh0LCBsaW5rRGVzdGluYXRpb25OYW1lKHBkZkRvY3Vt
ZW50LCBkZXN0aW5hdGlvbiksIHRyYW5zZm9ybWVkUmVjdCk7Ci0KKyAgICAgICAgICAgIENHUERG
Q29udGV4dFNldERlc3RpbmF0aW9uRm9yUmVjdChjb250ZXh0LCAoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpbGlua0Rlc3RpbmF0aW9uTmFtZShwZGZEb2N1bWVudCwgZGVzdGluYXRpb24pLCB0cmFuc2Zv
cm1lZFJlY3QpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NSW50ZXJuYWxzLmgKaW5kZXggMjg5MTMxODY1MWFkOTJkNTZkMDc2YzViNTVlZWVk
YTQ2MmZhMGRmMS4uYzllYjA1YTdjZDliNDVhNjg2MDUwODU4YTllY2E3ZDMxZjVjMWNjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5oCkBAIC04OSw4ICs4OSw4IEBAIHByaXZhdGU6
CiAKIC8vIC0tIENhY2hlcyAtLQogCi1ET01DYWNoZTxXZWJDb3JlOjpOb2RlKiwgV0tET01Ob2Rl
ICo+JiBXS0RPTU5vZGVDYWNoZSgpOwotRE9NQ2FjaGU8V2ViQ29yZTo6UmFuZ2UqLCBXS0RPTVJh
bmdlICo+JiBXS0RPTVJhbmdlQ2FjaGUoKTsKK0RPTUNhY2hlPFdlYkNvcmU6Ok5vZGUqLCBfX3Vu
c2FmZV91bnJldGFpbmVkIFdLRE9NTm9kZSAqPiYgV0tET01Ob2RlQ2FjaGUoKTsKK0RPTUNhY2hl
PFdlYkNvcmU6OlJhbmdlKiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS0RPTVJhbmdlICo+JiBXS0RP
TVJhbmdlQ2FjaGUoKTsKIAogLy8gLS0gTm9kZSBhbmQgY2xhc3NlcyBkZXJpdmVkIGZyb20gTm9k
ZS4gLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQppbmRleCA2NTBmZDQ3M2Nj
ZmVhMTAzNTMyYWViNDAzYWYwZDM4ZmJmYzMxOGUxLi5hZjBmZTYzMmFiYzdjOWJjNTU3NmY0NDIw
Yzc0NDgxNzNhNzE1N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQpAQCAt
NTEsMTUgKzUxLDE1IEBAIHN0YXRpYyBXS0RPTVR5cGUgdG9XS0RPTVR5cGUoV2ViQ29yZVR5cGUg
aW1wbCwgRE9NQ2FjaGU8V2ViQ29yZVR5cGUsIFdLRE9NVHlwZT4mCiAKIC8vIC0tIENhY2hlcyAt
LSAKIAotRE9NQ2FjaGU8V2ViQ29yZTo6Tm9kZSosIFdLRE9NTm9kZSAqPiYgV0tET01Ob2RlQ2Fj
aGUoKQorRE9NQ2FjaGU8V2ViQ29yZTo6Tm9kZSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tET01O
b2RlICo+JiBXS0RPTU5vZGVDYWNoZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERP
TUNhY2hlPFdlYkNvcmU6Ok5vZGUqLCBXS0RPTU5vZGUgKj4+IGNhY2hlOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxET01DYWNoZTxXZWJDb3JlOjpOb2RlKiwgX191bnNhZmVfdW5yZXRhaW5l
ZCBXS0RPTU5vZGUgKj4+IGNhY2hlOwogICAgIHJldHVybiBjYWNoZTsKIH0KIAotRE9NQ2FjaGU8
V2ViQ29yZTo6UmFuZ2UqLCBXS0RPTVJhbmdlICo+JiBXS0RPTVJhbmdlQ2FjaGUoKQorRE9NQ2Fj
aGU8V2ViQ29yZTo6UmFuZ2UqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLRE9NUmFuZ2UgKj4mIFdL
RE9NUmFuZ2VDYWNoZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTUNhY2hlPFdl
YkNvcmU6OlJhbmdlKiwgV0tET01SYW5nZSAqPj4gY2FjaGU7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPERPTUNhY2hlPFdlYkNvcmU6OlJhbmdlKiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS0RP
TVJhbmdlICo+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKQEAgLTk4LDcgKzk4LDcg
QEAgV2ViQ29yZTo6Tm9kZSogdG9XZWJDb3JlTm9kZShXS0RPTU5vZGUgKndyYXBwZXIpCiAKIFdL
RE9NTm9kZSAqdG9XS0RPTU5vZGUoV2ViQ29yZTo6Tm9kZSogaW1wbCkKIHsKLSAgICByZXR1cm4g
dG9XS0RPTVR5cGU8V2ViQ29yZTo6Tm9kZSosIFdLRE9NTm9kZSAqPihpbXBsLCBXS0RPTU5vZGVD
YWNoZSgpKTsKKyAgICByZXR1cm4gdG9XS0RPTVR5cGU8V2ViQ29yZTo6Tm9kZSosIF9fdW5zYWZl
X3VucmV0YWluZWQgV0tET01Ob2RlICo+KGltcGwsIFdLRE9NTm9kZUNhY2hlKCkpOwogfQogCiBX
ZWJDb3JlOjpFbGVtZW50KiB0b1dlYkNvcmVFbGVtZW50KFdLRE9NRWxlbWVudCAqd3JhcHBlcikK
QEAgLTE0NSw3ICsxNDUsNyBAQCBXZWJDb3JlOjpSYW5nZSogdG9XZWJDb3JlUmFuZ2UoV0tET01S
YW5nZSAqIHdyYXBwZXIpCiAKIFdLRE9NUmFuZ2UgKnRvV0tET01SYW5nZShXZWJDb3JlOjpSYW5n
ZSogaW1wbCkKIHsKLSAgICByZXR1cm4gdG9XS0RPTVR5cGU8V2ViQ29yZTo6UmFuZ2UqLCBXS0RP
TVJhbmdlICo+KGltcGwsIFdLRE9NUmFuZ2VDYWNoZSgpKTsKKyAgICByZXR1cm4gdG9XS0RPTVR5
cGU8V2ViQ29yZTo6UmFuZ2UqLCBfX3Vuc2FmZV91bnJldGFpbmVkIFdLRE9NUmFuZ2UgKj4oaW1w
bCwgV0tET01SYW5nZUNhY2hlKCkpOwogfQogCiAvLyAtLSBIZWxwZXJzIC0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQ
bHVnaW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9t
YWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5kZXggOGVjNmI4MjU5MTUwOTJhYjg0NjkzNjRmZDJi
NTVhNmE1MzA0ZmI1ZS4uZWRjZjUzMmM4NWFhZjhjNmIzYTUwYWUzZDY0YmUwNmU5YWEwZTM0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQpAQCAtMjA0LDkgKzIwNCwxMCBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUoKQogICAgICAgICAv
LyBQYXRjaCAtW05TRXhjZXB0aW9uIHJlbGVhc2VdIHRvIG5vdCByZWxlYXNlIHRoZSBvYmplY3Qu
CiAgICAgICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKICAgICAgICAgZGlzcGF0Y2hf
b25jZSgmb25jZSwgXnsKLSAgICAgICAgICAgIENsYXNzIGV4Y2VwdGlvbkNsYXNzID0gW05TRXhj
ZXB0aW9uIGNsYXNzXTsKLSAgICAgICAgICAgIE1ldGhvZCBleGNlcHRpb25SZWxlYXNlTWV0aG9k
ID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoZXhjZXB0aW9uQ2xhc3MsIEBzZWxlY3RvcihyZWxl
YXNlKSk7Ci0gICAgICAgICAgICBjbGFzc19yZXBsYWNlTWV0aG9kKGV4Y2VwdGlvbkNsYXNzLCBA
c2VsZWN0b3IocmVsZWFzZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihOU0V4Y2VwdGlvbl9yZWxl
YXNlKSwgbWV0aG9kX2dldFR5cGVFbmNvZGluZyhleGNlcHRpb25SZWxlYXNlTWV0aG9kKSk7Cisg
ICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkNsYXNzID0gW05TRXhjZXB0aW9uIGNsYXNzXTsKKyAg
ICAgICAgICAgIGF1dG8gcmVsZWFzZVNlbGVjdG9yID0gc2VsX3JlZ2lzdGVyTmFtZSgicmVsZWFz
ZSIpOworICAgICAgICAgICAgYXV0byBleGNlcHRpb25SZWxlYXNlTWV0aG9kID0gY2xhc3NfZ2V0
SW5zdGFuY2VNZXRob2QoZXhjZXB0aW9uQ2xhc3MsIHJlbGVhc2VTZWxlY3Rvcik7CisgICAgICAg
ICAgICBjbGFzc19yZXBsYWNlTWV0aG9kKGV4Y2VwdGlvbkNsYXNzLCByZWxlYXNlU2VsZWN0b3Is
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihOU0V4Y2VwdGlvbl9yZWxlYXNlKSwgbWV0aG9kX2dldFR5
cGVFbmNvZGluZyhleGNlcHRpb25SZWxlYXNlTWV0aG9kKSk7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KQEAgLTExNTksOSArMTE2MCw5IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnVwZGF0ZVBsdWdp
bkxheWVyKCkKICAgICAvLyBiZSByZXR1cm5lZCBieSB1c2luZyBOUE5fR2V0VmFsdWUgYW5kIHBh
c3MgdGhlIFdLTlZFeHBlY3RzTm9ucmV0YWluZWRMYXllciBwYXJhbWV0ZXIuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MjgyIGRlc2NyaWJlcyB0aGUg
YnVnIHdoZXJlIFdlYktpdCBleHBlY3RzIHJldGFpbmVkIGxheWVycy4KICAgICBpZiAobV9wbHVn
aW5SZXR1cm5zTm9ucmV0YWluZWRMYXllcikKLSAgICAgICAgbV9wbHVnaW5MYXllciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Q0FMYXllciAqPih2YWx1ZSk7CisgICAgICAgIG1fcGx1Z2luTGF5ZXIgPSAo
X19icmlkZ2UgQ0FMYXllciAqKXZhbHVlOwogICAgIGVsc2UKLSAgICAgICAgbV9wbHVnaW5MYXll
ciA9IGFkb3B0TlMocmVpbnRlcnByZXRfY2FzdDxDQUxheWVyICo+KHZhbHVlKSk7CisgICAgICAg
IG1fcGx1Z2luTGF5ZXIgPSBhZG9wdE5TKChfX2JyaWRnZSBDQUxheWVyICopdmFsdWUpOwogCiAg
ICAgaWYgKG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWly
a3M6Ok1ha2VPcGFxdWVVbmxlc3NUcmFuc3BhcmVudFNpbHZlcmxpZ2h0QmFja2dyb3VuZEF0dHJp
YnV0ZUV4aXN0cykgJiYKICAgICAgICAgIW1faXNUcmFuc3BhcmVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDVjMmUwNjY5
MmJmYTc3YTI1OGUyNDRlYzM4Y2E2ZGVjYTFlYTgwYjYuLjUzMDdlMjZhNzYzN2U4YTY5YjA0NWFi
YjkyODc5ZjNmOGM2NTg2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNjksNiArNjksNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUERGRG9jdW1lbnRJbWFnZS5oPgpAQCAtODEsMTUgKzgyLDEyIEBACiAj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbEFuaW1hdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9s
bGJhclRoZW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1doZWVsRXZlbnRUZXN0VHJpZ2dlci5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TTWVudVNQSS5oPgogI2ltcG9ydCA8d3Rm
L1VVSUQuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogLy8gU2V0IG92ZXJmbG93OiBoaWRkZW4gb24gdGhlIGFubm90YXRpb24gY29udGFpbmVy
IHNvIDxpbnB1dD4gZWxlbWVudHMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgZG9uJ3Qgc2hvdwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
ZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCBiZmFiNjBhNmRhZTdkNDVmMDYwMjFl
Zjc0MzU0MmE3N2ZlYmVkNzllLi4xZjkwYzRhNTc0MGY0MTUwOWQ4ZTg1YjE5ZDRhMDdlODAwNDNh
MjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAtNjMsNyArNjMsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoYW5nZVdvcmRD
YXNlKFdlYlBhZ2UqIHBhZ2UsIFNFTCBzZWxlY3RvcikKK3N0YXRpYyB2b2lkIGNoYW5nZVdvcmRD
YXNlKFdlYlBhZ2UqIHBhZ2UsIE5TU3RyaW5nICooKmNoYW5nZUNhc2UpKE5TU3RyaW5nICopKQog
ewogICAgIEZyYW1lJiBmcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuY2FuRWRpdCgp
KQpAQCAtNzIsMjIgKzcyLDI4IEBAIHN0YXRpYyB2b2lkIGNoYW5nZVdvcmRDYXNlKFdlYlBhZ2Uq
IHBhZ2UsIFNFTCBzZWxlY3RvcikKICAgICBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJzZWxlY3RX
b3JkIikuZXhlY3V0ZSgpOwogCiAgICAgTlNTdHJpbmcgKnNlbGVjdGVkU3RyaW5nID0gZnJhbWUu
ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKSk7Ci0gICAgcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KCZmcmFtZSwgW3NlbGVj
dGVkU3RyaW5nIHBlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl0pOworICAgIHBhZ2UtPnJlcGxhY2VT
ZWxlY3Rpb25XaXRoVGV4dCgmZnJhbWUsIGNoYW5nZUNhc2Uoc2VsZWN0ZWRTdHJpbmcpKTsKIH0K
IAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwcGVyY2FzZVdvcmQoKQogewotICAgIGNoYW5nZVdv
cmRDYXNlKG1fcGFnZSwgQHNlbGVjdG9yKHVwcGVyY2FzZVN0cmluZykpOworICAgIGNoYW5nZVdv
cmRDYXNlKG1fcGFnZSwgW10gKE5TU3RyaW5nICpzdHJpbmcpIHsKKyAgICAgICAgcmV0dXJuIFtz
dHJpbmcgdXBwZXJjYXNlU3RyaW5nXTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGll
bnQ6Omxvd2VyY2FzZVdvcmQoKQogewotICAgIGNoYW5nZVdvcmRDYXNlKG1fcGFnZSwgQHNlbGVj
dG9yKGxvd2VyY2FzZVN0cmluZykpOworICAgIGNoYW5nZVdvcmRDYXNlKG1fcGFnZSwgW10gKE5T
U3RyaW5nICpzdHJpbmcpIHsKKyAgICAgICAgcmV0dXJuIFtzdHJpbmcgbG93ZXJjYXNlU3RyaW5n
XTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNhcGl0YWxpemVXb3JkKCkK
IHsKLSAgICBjaGFuZ2VXb3JkQ2FzZShtX3BhZ2UsIEBzZWxlY3RvcihjYXBpdGFsaXplZFN0cmlu
ZykpOworICAgIGNoYW5nZVdvcmRDYXNlKG1fcGFnZSwgW10gKE5TU3RyaW5nICpzdHJpbmcpIHsK
KyAgICAgICAgcmV0dXJuIFtzdHJpbmcgY2FwaXRhbGl6ZWRTdHJpbmddOworICAgIH0pOwogfQog
CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZTQzZTI5ZDNhNTNk
NGYwYzkxOTQ3NGRjNWI0NTI0NDYxNzFmMDRiMC4uMTdjZmIzNGRlMDRlODNlY2NhZWYzNDMxMjU5
OTc4MTY0MGU5ODc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCkBAIC03MywxOSArNzMsMjIgQEAKICNpbXBvcnQgPHN0ZGlvLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0SU9TLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFjY2Vzc2liaWxpdHkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvaW9zL0dyYXBoaWNzU2VydmljZXNTUEkuaD4KKyNlbmRpZgogCi0jaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKKyNpZiBQTEFURk9STShJT1MpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCiAjaW1wb3J0IDxBWFJ1bnRpbWUvQVhEZWZpbmVzLmg+CiAjaW1wb3J0IDxBWFJ1bnRpbWUv
QVhOb3RpZmljYXRpb25Db25zdGFudHMuaD4KLSNlbHNlCi0jZGVmaW5lIGtBWFBpZFN0YXR1c0No
YW5nZWROb3RpZmljYXRpb24gMAogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpICYmICFVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2RlZmluZSBrQVhQaWRTdGF0dXNDaGFuZ2VkTm90aWZpY2F0
aW9uIDAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQorI2ltcG9ydCAiV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdE1hYy5oIgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQz
RE1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWVNYWMuaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL05TU2Nyb2xsZXJJbXBTUEkuaD4K
</data>
<flag name="review"
          id="365784"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>