<?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>209265</bug_id>
          
          <creation_ts>2020-03-18 18:58:04 -0700</creation_ts>
          <short_desc>Implement web-share v2 for files</short_desc>
          <delta_ts>2020-05-08 13:47:17 -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>
          
          
          <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>
          
          <blocked>198606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikos Mouchtaris">nmouchtaris</reporter>
          <assigned_to name="Nikos Mouchtaris">nmouchtaris</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1631489</commentid>
    <comment_count>0</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-18 18:58:04 -0700</bug_when>
    <thetext>add to existing progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631521</commentid>
    <comment_count>1</comment_count>
      <attachid>393942</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-18 20:39:10 -0700</bug_when>
    <thetext>Created attachment 393942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631535</commentid>
    <comment_count>2</comment_count>
      <attachid>393946</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-18 21:24:41 -0700</bug_when>
    <thetext>Created attachment 393946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631786</commentid>
    <comment_count>3</comment_count>
      <attachid>394009</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-19 13:09:39 -0700</bug_when>
    <thetext>Created attachment 394009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632263</commentid>
    <comment_count>4</comment_count>
      <attachid>394009</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-20 13:57:37 -0700</bug_when>
    <thetext>Comment on attachment 394009
Patch

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

&gt; Source/WebCore/page/Navigator.cpp:40
&gt; +#include &quot;ReadShareDataAsync.hpp&quot;

We don&apos;t use the hpp extension in the WebKit project; C++ headers are just .h like C.

Also, I don&apos;t love the file name at first glance. Maybe I&apos;ll have a suggestion once I read the rest of the patch.

&gt; Source/WebCore/page/Navigator.cpp:121
&gt; +#if ENABLE(FILE_SHARE)
&gt; +            return true;
&gt; +#endif
&gt;              return false;

Stick the `return false;` in an #else, it&apos;s weird to have two sequential return statements if ENABLE(FILE_SHARE) is true.

&gt; Source/WebCore/page/Navigator.cpp:165
&gt; +        m_shareData = WTFMove(shareData);
&gt; +        m_promise = WTFMove(promise);
&gt; +        
&gt; +        m_loader = ReadShareDataAsync::create(*this, context);
&gt; +        m_loader-&gt;start(m_shareData);

It seems wrong to store m_shareData and friends on Navigator. Navigator is page-global; what happens if you get multiple calls to share()? A better design might make use of C++ lambdas or something (or only allow one at a time and cancel the old one?) to store the state (in a completion handler passed to the to-be-renamed &quot;ReadShareDataAsync&quot; class).

&gt; Source/WebCore/page/Navigator.cpp:189
&gt; +    auto* frame = this-&gt;frame();

Should figure out how to share this with the code above. Maybe the aforementioned completion lambda always does these things, and you just call it synchronously from share() if you have no files?

&gt; Source/WebCore/page/Navigator.h:55
&gt; +    void finishedLoad(ExceptionOr&lt;void&gt; ret);

in this case I think you can elide the parameter name, but we generally prefer whole words instead of abbreviations like &quot;ret&quot;

&gt; Source/WebCore/page/Navigator.h:73
&gt; +    ShareDataWithParsedURL m_shareData;
&gt; +    RefPtr&lt;DeferredPromise&gt; m_promise;
&gt; +    RefPtr&lt;ReadShareDataAsync&gt; m_loader;
&gt; +    

As previously mentioned, I&apos;m a bit wary of adding this state to Navigator. At most, perhaps a vector of pending share-data-reading operations?

&gt; Source/WebCore/page/ReadShareDataAsync.cpp:1
&gt; +// Copyright Â© 2020 ___ORGANIZATIONNAME___ All rights reserved.

This is definitely not the right copyright header :)

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:1
&gt; +// Copyright Â© 2020 ___ORGANIZATIONNAME___ All rights reserved.

Again with the copyright header

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:4
&gt; +#pragma once
&gt; +#ifndef ReadShareDataAsync_hpp
&gt; +#define ReadShareDataAsync_hpp

You don&apos;t need #ifdefs if you have #pragma once

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:6
&gt; +#include &lt;stdio.h&gt;

This is surprising!

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:17
&gt; +class ReadShareDataAsync: private FileReaderLoaderClient, public RefCounted&lt;ReadShareDataAsync&gt;{

There&apos;s a bunch of style problems with this line, check out https://webkit.org/code-style-guidelines/#classes

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:32
&gt; +    Navigator* m_client;

If we do the lambda-as-completion-handler thing we can avoid knowing about Navigator, which seems preferable

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:36
&gt; +    String m_currentFileLoad;

What is this, a path? A filename? The variable name could be more clear.

&gt; Source/WebCore/page/ReadShareDataAsync.hpp:37
&gt; +    size_t m_doneSoFar = 0;

It should be more clear by the name what units this is in. Maybe something like m_loadedBytes or something?

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.h:129
&gt; +class File;
&gt;  struct ShareDataWithParsedURL;
&gt; +struct RawFile;

These are both sorted wrong :) classes should be together up above, everything should be alphabetized

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.h:561
&gt; +template&lt;&gt; struct ArgumentCoder&lt;Vector&lt;WebCore::RawFile&gt;&gt; {
&gt; +    static void encode(Encoder&amp;, const Vector&lt;WebCore::RawFile&gt;&amp;);
&gt; +    static bool decode(Decoder&amp;, Vector&lt;WebCore::RawFile&gt;&amp;);
&gt; +};

We tend to try to avoid putting encoders here now, is it possible this can go in WebCore proper? (Not always possible, if you depend on another encoder that&apos;s only available in WebKit)

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.h:1
&gt; +// Copyright Â© 2020 ___ORGANIZATIONNAME___ All rights reserved.

Nope

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.h:8
&gt; +@interface WKShareableFileWrite : NSObject

The part of speech for this class name is odd. I can see a &quot;WKShareableFileWrite*r*&quot;, though I kind of wonder if this needs to be ObjC at all? (no super strong opinions about that part at the moment). Also, not sure it even needs to be factored into its own class, since it doesn&apos;t seem very reusable by anything other than WKShareSheet.

Also, the filename should match the class name.

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.mm:12
&gt; +@implementation WKShareableFileWrite

This file has lots of odd style, check out the style guide I linked above.

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.mm:19
&gt; +    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
&gt; +    if (!paths || ![paths firstObject])
&gt; +        return nil;
&gt; +    
&gt; +    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder

Is this where we agreed was safest to put the files? I thought we were going to put it in a subdirectory of one of the WebKit data directories, not in the user&apos;s documents directory (which is user-owned and a very odd place to put temporary things).

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.mm:30
&gt; +

All of this code that touches the disk, after another round or two, will need careful review by a few other people. You should add Alex and Brady at least, but probably others too. Chris and Jessie, maybe?

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.mm:31
&gt; ++(NSString *)getFileDirectoryForSharing {

the &quot;get&quot; prefix usually indicates the existence of an out-argument in WebKit code. Perhaps just drop it?

&gt; Source/WebKit/UIProcess/Cocoa/ShareableFileWrite.mm:66
&gt; +    NSMutableDictionary *quarantineProperties = [[NSMutableDictionary alloc] init];

This allocation leaks

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:111
&gt; +        NSURL *fileURL = [WKShareableFileWrite writeFileToShareableURL:file.fileName data:file.fileData-&gt;createNSData().get()];

This is doing disk I/O synchronously on the main thread, which is not a good practice for responsiveness&apos; sake. Likely you want to start all of the writes on a secondary queue, and (asynchronously) wait for them all to complete before continuing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632266</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-20 13:59:43 -0700</bug_when>
    <thetext>Also, the GTK/WPE errors are real. Here they are:

lib/libWebCore.a(lib/../Source/WebCore/CMakeFiles/WebCore.dir/__/__/DerivedSources/WebCore/unified-sources/UnifiedSource-767013ce-6.cpp.o):UnifiedSource-767013ce-6.cpp:function WebCore::Navigator::share(WebCore::ScriptExecutionContext&amp;, WebCore::ShareData const&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;): error: undefined reference to &apos;WebCore::ReadShareDataAsync::ReadShareDataAsync(WebCore::Navigator&amp;, WebCore::ScriptExecutionContext&amp;)&apos;
lib/libWebCore.a(lib/../Source/WebCore/CMakeFiles/WebCore.dir/__/__/DerivedSources/WebCore/unified-sources/UnifiedSource-767013ce-6.cpp.o):UnifiedSource-767013ce-6.cpp:function WebCore::Navigator::share(WebCore::ScriptExecutionContext&amp;, WebCore::ShareData const&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;): error: undefined reference to &apos;WebCore::ReadShareDataAsync::start(WebCore::ShareDataWithParsedURL&amp;)&apos;


I think you may have forgotten to add your new file to Sources.txt, and instead added it to the Xcode target. You should add it to Sources.txt and then uncheck it in the target in Xcode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634720</commentid>
    <comment_count>6</comment_count>
      <attachid>394699</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-26 20:10:48 -0700</bug_when>
    <thetext>Created attachment 394699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634723</commentid>
    <comment_count>7</comment_count>
      <attachid>394699</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-26 20:47:07 -0700</bug_when>
    <thetext>Comment on attachment 394699
Patch

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

&gt; Source/WebCore/page/Navigator.cpp:174
&gt; +void Navigator::presentShareSheet(ExceptionOr&lt;ShareDataWithParsedURL&amp;&gt; readData, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)

This very Apple-platform-UI-focused name is not ideal for Navigator, which is very platform-independent. I don&apos;t have a proposal at the moment, but I think we can do better!

&gt; Source/WebCore/page/Navigator.cpp:-153
&gt; -    frame-&gt;page()-&gt;chrome().showShareSheet(shareData, [promise = WTFMove(promise)] (bool completed) {

This existing name is not great either (I guess that&apos;s where you got it from!), since Chrome is also cross-platform. At least it is /closer/ to the UI layer tho :P

&gt; Source/WebCore/page/Navigator.h:55
&gt; +    void finishedLoad(ExceptionOr&lt;void&gt; ret);

Get rid of the &quot;ret&quot;

&gt; Source/WebCore/page/ReadShareDataAsync.cpp:57
&gt; +//    m_shareData = nullptr;

Commented out?

&gt; Source/WebCore/page/ReadShareDataAsync.h:33
&gt; +namespace WebCore {

Should be a newline before this line

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2042
&gt; +

Extraneous newline. There are a few of these throughout the patch. Take a peek and see if you find the others, I&apos;m just going to mention this one.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.h:43
&gt; +- (void)presentWithShareDataArray:(NSArray *)shareDataArray inRect:(WTF::Optional&lt;WebCore::FloatRect&gt;)rect;

If this is internal to the class it shouldn&apos;t need to be mentioned here (ObjC is weird)

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:114
&gt; +        NSMutableArray *fileData = [[NSMutableArray alloc] init];

An alternative way (IDK if better, but I think so) to write this would be with dispatch_group, submitting a block per file in parallel. That would also let you avoid these arrays, because you could do it from this thread, capturing the NSData and filename in the block, no need to slap them into two parallel arrays. Then dispatch_group_notify to find out when they&apos;re all done.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:118
&gt; +            [fileData addObject: file.fileData-&gt;createNSData().get()];

No spaces after :s in objc messages

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:121
&gt; +        dispatch_async( dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {

I wonder if we want to make a queue for this purpose, or if this global one is right, or what! (I&apos;m not sure, peek around and see what other parts of WebKit do).

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:126
&gt; +                    [fileData release];
&gt; +                    [fileNames release];

No way, use RetainPtr instead.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:144
&gt; +- (void)presentWithShareDataArray:(NSArray *)shareDataArray inRect:(WTF::Optional&lt;WebCore::FloatRect&gt;)rect {

I think the parameter (and first part of the selector name) should be &quot;sharing items&quot; or &quot;items&quot; or something, similar to the share sheet API.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:340
&gt; ++ (NSString *)getSharingDirectoryPath

This should not be a get-, because it doesn&apos;t have an out argument.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:345
&gt; +#if PLATFORM(MAC)
&gt; +    NSString *cacheDirectory = cacheDataVaultParentDirectory();
&gt; +#else
&gt; +    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

In both cases this is writing in places that will not be deleted if someone uses the &quot;reset Safari&quot; button or WKWebView data deletion APIs, as far as I can tell, so I think you&apos;ve still not /quite/ found the right place. I highly recommend talking to Chris/Brady/Alex (unless you did and there is something I am missing here).

I am expecting (but I could be wrong!) in the end that this will somehow interact with WebsiteDataStore and friends.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:386
&gt; +    NSString *fileNameConcat = [NSString stringWithFormat:@&quot;%@/%@&quot;, getTempDirectory, sanitizedFilename];

This is not the best way to concatenate path components. Check out NSString -stringByAppendingPathComponent: (we probably have something in WTF too, but I think it&apos;s fine to use Foundation stuff here)

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:392
&gt; +    NSString *file = [WKShareSheet createFilename: fileName];

Extraneous spaces again :) You&apos;ve got a lot of them, maybe find some way to search for them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634730</commentid>
    <comment_count>8</comment_count>
      <attachid>394701</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-26 21:23:53 -0700</bug_when>
    <thetext>Created attachment 394701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634754</commentid>
    <comment_count>9</comment_count>
      <attachid>394708</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-26 23:37:31 -0700</bug_when>
    <thetext>Created attachment 394708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635078</commentid>
    <comment_count>10</comment_count>
      <attachid>394775</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-03-27 18:05:32 -0700</bug_when>
    <thetext>Created attachment 394775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639267</commentid>
    <comment_count>11</comment_count>
      <attachid>394775</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-04-08 13:31:56 -0700</bug_when>
    <thetext>Comment on attachment 394775
Patch

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

I&apos;ll spend more time later, but did have a few quick comments now.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:54
&gt; +    NSString *_tempFileShareDirectory;

This should be a RetainPtr.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:115
&gt; +        _tempFileShareDirectory = [[WKShareSheet createTempSharingDirectory] copy];

adoptNS([[WKShareSheet createTempSharingDirectory] copy])

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:226
&gt; +    _tempFileShareDirectory = nil;

This only releases _tempFileShareDirectory if it&apos;s a RetainPtr.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:272
&gt; +    NSMutableDictionary *quarantineProperties = [[NSMutableDictionary alloc] init];

auto quarantineProperties = adoptNS([[NSMutableDictionary alloc] init]);

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:283
&gt; +    [quarantineProperties release];

No need for this if you use RetainPtr above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639298</commentid>
    <comment_count>12</comment_count>
      <attachid>394775</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 14:39:23 -0700</bug_when>
    <thetext>Comment on attachment 394775
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:359
&gt; ++ (NSURL *)writeFileToShareableURL:(NSString *)fileName data:(NSData *) fileData tempDirectory:(NSString *) tempDirectory

This should have ASSERT(!RunLoop::isMain()) in it to make sure we don&apos;t add spins.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:368
&gt; +    NSString *sanitizedFilename = WebCore::ResourceResponseBase::sanitizeSuggestedFilename(fileName);

I think we should move this call to sanitizeSuggestedFilename closer to where the string is received from the web process to prevent us from doing anything else with it in the future.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:374
&gt; +    [fileData writeToURL:fileURL options:NSDataWritingAtomic error:&amp;error];

Who is responsible for deleting this file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639975</commentid>
    <comment_count>13</comment_count>
      <attachid>396028</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-09 17:27:11 -0700</bug_when>
    <thetext>Created attachment 396028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642857</commentid>
    <comment_count>14</comment_count>
      <attachid>396028</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-17 15:01:37 -0700</bug_when>
    <thetext>Comment on attachment 396028
Patch

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

&gt; Source/WebCore/page/Navigator.cpp:174
&gt; +void Navigator::presentShareSheet(ExceptionOr&lt;ShareDataWithParsedURL&amp;&gt; readData, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)

My previous comments about the odd platform-specificness of this name still stand

&gt; Source/WebCore/page/Navigator.h:70
&gt; +    std::atomic&lt;bool&gt; m_isPresentingShareSheet = false;

who&apos;s interacting with this from a secondary thread? can they not?

if your completion handler is on a secondary thread, you should probably bounce back to the main thread before doing anything, it seems likely wrong to resolve a promise on a non-main-thread too. and then you can avoid this odd atomic

&gt; Source/WebCore/page/ReadShareDataAsync.cpp:104
&gt; +        completionHandler(Exception { AbortError, &quot;Abort due to fail of reading files.&quot;_s });

The grammar in this error message seems nonideal.

&gt; Source/WebCore/page/ReadShareDataAsync.h:40
&gt; +class ReadShareDataAsync: private FileReaderLoaderClient, public RefCounted&lt;ReadShareDataAsync&gt; {

This class name is still very weird. Maybe ShareDataReader? I don&apos;t think the asynchronousness needs to be in the name

&gt; Source/WebCore/page/ReadShareDataAsync.h:57
&gt; +    ScriptExecutionContext* m_context;

Is it OK for us to hold this bare pointer? What happens if we&apos;re still doing things and the ScriptExecutionContext is deleted?

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2070
&gt;  bool ArgumentCoder&lt;ShareDataWithParsedURL&gt;::decode(Decoder&amp; decoder, ShareDataWithParsedURL&amp; settings)

Not your fault, but how did we end up with the argument name &apos;settings&apos; in all of these methods?!

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:115
&gt; +        _tempFileShareDirectory = adoptNS([[WKShareSheet createTempSharingDirectory] copy]);

All &quot;temp&quot;s should be written out, not abbreviated.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:118
&gt; +        __block bool isSuccesful = true;

drop the is- prefix. Also successful has three &apos;s&apos;es

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:119
&gt; +        auto queue = dispatch_queue_create(&quot;Write Shareable Files To Disk&quot;, DISPATCH_QUEUE_SERIAL);

This should be globally identifiable, and clear it&apos;s WebKit&apos;s. Maybe &quot;com.apple.WebKit.WKShareSheet.FileWriter&quot; or something? Look at others.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:134
&gt; +        dispatch_group_notify(fileWriteGroup, queue, ^{
&gt; +            dispatch_async(dispatch_get_main_queue(), ^{

you don&apos;t need two bounces here, can just write these two lines as one:

dispatch_group_notify(fileWriteGroup, dispatch_get_main_queue(), ^{

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:270
&gt; +    // Workaround &lt;rdar://problem/21735412&gt;: NSURLDownload will automatically attach NSURLQuarantineProperties
&gt; +    // to files we download if they are already quarantined. This adds a quarantine history item that the code
&gt; +    // below will shadow. Since Safari needs to be able to remove all traces of download history, we need to
&gt; +    // delete that entry before ours renders it inaccessible.

This comment seems irrelevant in WebKit

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:274
&gt; +    auto quarantineProperties = adoptNS([[NSMutableDictionary alloc] init]);
&gt; +    quarantineProperties.get()[(__bridge NSString *)kLSQuarantineTypeKey] = (__bridge NSString *)kLSQuarantineTypeWebDownload;
&gt; +    quarantineProperties.get()[(__bridge NSString *)kLSQuarantineAgentBundleIdentifierKey] = WebCore::applicationBundleIdentifier();

IMO this would be better written:

auto quarantineProperties = @{
    (__bridge NSString *)kLSQuarantineTypeKey: (__bridge NSString *)kLSQuarantineTypeWebDownload,
    (__bridge NSString *)kLSQuarantineAgentBundleIdentifierKey]: WebCore::applicationBundleIdentifier()
};

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:314
&gt; ++ (BOOL)removeTempSharingDirector:(NSString *)directoryPath

&quot;director&quot;! Also another &quot;temp&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643941</commentid>
    <comment_count>15</comment_count>
      <attachid>397098</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-21 11:37:52 -0700</bug_when>
    <thetext>Created attachment 397098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645001</commentid>
    <comment_count>16</comment_count>
      <attachid>397395</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-23 16:14:41 -0700</bug_when>
    <thetext>Created attachment 397395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646176</commentid>
    <comment_count>17</comment_count>
      <attachid>397395</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-04-27 13:42:12 -0700</bug_when>
    <thetext>Comment on attachment 397395
Patch

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

&gt; Source/WebCore/page/FileReaderLoaderWrapper.h:39
&gt; +class Navigator;
&gt; +class Blob;
&gt; +class FileReaderLoader;
&gt; +class ScriptExecutionContext;

Nit - forward declarations such as these are usually sorted in alphabetical order.

&gt; Source/WebCore/page/FileReaderLoaderWrapper.h:41
&gt; +class FileReaderLoaderWrapper: private FileReaderLoaderClient, public RefCounted&lt;FileReaderLoaderWrapper&gt; {

Nit - space after FileReaderLoaderWrapper

&gt; Source/WebCore/page/FileReaderLoaderWrapper.h:48
&gt; +    String fileName() { return m_fileName; }

Nit - const?

&gt; Source/WebCore/page/Navigator.cpp:163
&gt; +            m_loader = nullptr;

Do you need to null it out here? It looks like we&apos;ll set it soon afterwards anyways, which should destroy the preexisting one. (But perhaps it’s important that the old ShareDataReader is destroyed before the new one is created?)

&gt; Source/WebCore/page/Navigator.cpp:171
&gt; +    this-&gt;showShareData(shareData, WTFMove(promise));

Nit - I don’t think you need the &quot;this-&gt;” here.

&gt; Source/WebCore/page/Navigator.cpp:184
&gt; +    frame-&gt;page()-&gt;chrome().showShareSheet(shareData, [promise = WTFMove(promise), this] (bool completed) {

Is there anything that guarantees frame and page exist here?

&gt; Source/WebCore/page/Navigator.h:71
&gt; +    bool m_isPresentingShareSheet = false;

Nit - we commonly write default initializers in WebKit like `bool m_isPresentingShareSheet { false };`.

The member variables should also be moved further down, below these private methods, to where the other private members.

&gt; Source/WebCore/page/Navigator.h:-73
&gt; -

Nit - looks like a stray whitespace change?

&gt; Source/WebCore/page/ShareDataReader.cpp:47
&gt; +void ShareDataReader::start(ScriptExecutionContext&amp; context, ShareDataWithParsedURL shareData)

shareData should be a ShareDataWithParsedURL&amp;&amp; if you’re going to WTFMove it below.

&gt; Source/WebCore/page/ShareDataReader.cpp:51
&gt; +    int count = 0;

It would be slightly more efficient here to use `m_pendingFileLoads.reserveInitialCapacity()` here and `uncheckedAppend` below.

&gt; Source/WebCore/page/ShareDataReader.cpp:60
&gt; +    m_shareData.shareData.files.reserveCapacity(m_shareData.shareData.files.size());

Is this line necessary?

&gt; Source/WebCore/page/ShareDataReader.cpp:75
&gt; +    file.fileName = ResourceResponseBase::sanitizeSuggestedFilename(fileLoad-&gt;fileName());

Hm...I’m a tiny bit wary of this, since the web content process could be compromised. Is it possible to push the raw filename over IPC and do the file name sanitization in the UI process instead before attempting to use it?

&gt; Source/WebCore/page/ShareDataReader.cpp:77
&gt; +    file.fileData = WTFMove(sharedBuffer);

Nit - I think just `file.fileData = fileLoad-&gt;readBuffer();` would be clearer.

&gt; Source/WebCore/page/ShareDataReader.cpp:81
&gt; +    if (m_filesReadSoFar == (int)m_pendingFileLoads.size()) {

Nit - we commonly use static_cast instead of regular cast.

&gt; Source/WebCore/page/ShareDataReader.h:40
&gt; +class ShareDataReader: public RefCounted&lt;ShareDataReader&gt; {

Nit - space after the first ShareDataReader.

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2035
&gt; +    uint64_t dataSize;

Nit - I would suggest naming this “numberOfFiles” or “fileCount” instead.

Another option is to implement encode/decode templates on the RawFile struct — then you can have the Vector&lt;&gt; encoder template do its thing with the RawFiles.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:350
&gt; ++ (NSURL *)writeFileToShareableURL:(NSString *)fileName data:(NSData *) fileData temporaryDirectory:(NSString *) temporaryDirectory

Nit - extra spaces before some of these argument names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646612</commentid>
    <comment_count>18</comment_count>
      <attachid>397869</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-04-28 12:30:08 -0700</bug_when>
    <thetext>Created attachment 397869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647113</commentid>
    <comment_count>19</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-04-29 12:53:31 -0700</bug_when>
    <thetext>Hm..the test failures on the Windows bot don’t look related to this patch.

&gt; fast/dom/beforeload/video-before-load.html, imported/blink/fast/dom/Window/open-window-features-fuzz.html, fast/dom/focus-shift-crash.html, security/contentSecurityPolicy/blocks-video.html, fast/dom/beforeload/remove-video-in-beforeload-listener.html, http/tests/security/contentSecurityPolicy/media-src-blocked.html, http/tests/navigation/page-cache-video.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649410</commentid>
    <comment_count>20</comment_count>
      <attachid>397869</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-05 15:36:45 -0700</bug_when>
    <thetext>Comment on attachment 397869
Patch

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

&gt; Source/WebCore/page/FileReaderLoaderWrapper.h:41
&gt; +class FileReaderLoaderWrapper : private FileReaderLoaderClient, public RefCounted&lt;FileReaderLoaderWrapper&gt; {

Since this is in both patches, maybe we should peel it out and get it reviewed and landed, because a lot of the comments and concerns are shared between the two patches.

&gt; Source/WebCore/page/Navigator.cpp:118
&gt; +#if ENABLE(FILE_SHARE)

Is this ENABLE flag introduced somewhere?

(maybe it happened in an earlier patch)

&gt; Source/WebCore/page/ShareDataReader.cpp:49
&gt; +    m_filesReadSoFar = 0;

Do we actually need this member, or is it implicitly the length of m_shareData.files?

&gt; Source/WebCore/page/ShareDataReader.cpp:59
&gt; +        count += 1;

All these += 1s should just be post-increment `count++` (same below for m_filesReadSoFar)

&gt; Source/WebCore/page/ShareDataReader.cpp:66
&gt; +        if (auto completionHandler = WTFMove(m_completionHandler))

Should we clear m_pendingFileLoads in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649413</commentid>
    <comment_count>21</comment_count>
      <attachid>397869</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-05 15:51:04 -0700</bug_when>
    <thetext>Comment on attachment 397869
Patch

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

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2024
&gt; +void ArgumentCoder&lt;Vector&lt;RawFile&gt;&gt;::encode(Encoder&amp; encoder, const Vector&lt;RawFile&gt;&amp; files)

I&apos;m pretty sure you just have to implement coders for RawFile, not Vector&lt;RawFile&gt;, and then VectorArgumentCoder will Do The Right Thing for the vector, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650240</commentid>
    <comment_count>22</comment_count>
      <attachid>398768</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-05-07 11:29:49 -0700</bug_when>
    <thetext>Created attachment 398768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650265</commentid>
    <comment_count>23</comment_count>
      <attachid>398768</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-07 11:58:23 -0700</bug_when>
    <thetext>Comment on attachment 398768
Patch

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

&gt; Source/WebCore/page/Navigator.cpp:149
&gt; +    if (!window || !window-&gt;consumeTransientActivation() || m_isPresentingShareSheet) {

I still (as in comment #7) object to the Cocoa-platform-specific &quot;share sheet&quot; terminology in cross-platform code. Maybe &quot;has{Outstanding|Pending}Share&quot; or something?

&gt; Source/WebCore/page/Navigator.h:35
&gt; +class FileReaderLoader;

I think this needs to be removed now?

&gt; Source/WebCore/page/ShareDataReader.cpp:75
&gt; +    m_filesReadSoFar++;

Like I asked in comment #20, do we need m_filesReadSoFar? Extra state to keep in sync is always annoying if avoidable.

&gt; Source/WebCore/page/ShareDataReader.h:51
&gt; +    ShareDataWithParsedURL m_shareData;

Should be a empty newline between private methods and members.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:114
&gt; +        _temporaryFileShareDirectory = adoptNS([[WKShareSheet createTemporarySharingDirectory] copy]);

No need for the copy or adopt, just assign the autoreleased result of -createTemporarySharingDirectory to the RetainPtr member variable.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:118
&gt; +        auto queue = dispatch_queue_create(&quot;com.apple.WebKit.WKShareSheet.ShareableFileWriter&quot;, DISPATCH_QUEUE_SERIAL);

I believe this queue leaks. You should use OSObjectPtr (like RetainPtr) and adoptOSObject.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:369
&gt; +    if (![WKShareSheet setQuarantineInformationForFilePath:file])
&gt; +        return nil;

If we wrote the file and then this fails, should we delete the file? (Maybe we already will?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650278</commentid>
    <comment_count>24</comment_count>
      <attachid>398768</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-05-07 12:14:54 -0700</bug_when>
    <thetext>Comment on attachment 398768
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:53
&gt; +    RetainPtr&lt;NSString&gt; _temporaryFileShareDirectory;

I think this should be an NSURL.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:313
&gt; +    if (![[NSFileManager defaultManager] fileExistsAtPath:directoryPath])
&gt; +        return [[NSFileManager defaultManager] removeItemAtPath:directoryPath error:nil];

Don’t you mean to remove the directory if it exists, not if it doesn’t?

I think it’s ok to just unconditionally call -removeItemAtPath:error:. If the item doesn’t exist, NO will be returned.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:318
&gt; ++ (NSString *)createTemporarySharingDirectory

I think this should return an NSURL.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:329
&gt; +    if (![[NSFileManager defaultManager] fileExistsAtPath:temporaryDirectory]) {
&gt; +        [[NSFileManager defaultManager] createDirectoryAtPath:temporaryDirectory withIntermediateDirectories:NO attributes:nil error:&amp;error];
&gt; +        if (error)
&gt; +            return nil;
&gt; +    }

FileSystem::createTemporaryDirectory actually creates a temporary directory, not just a name to a temporary directory. Why do we need to check if it exists then try to create it again? Wouldn’t the second attempt fail as well?

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:333
&gt; ++ (NSString *)createRandomSharingDirectoryForFile:(NSString *)temporaryDirectory

I think this should return an NSURL.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:338
&gt; +    NSString *dataPath = [temporaryDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@&quot;/%@&quot;, randomDirectory]];

-stringByAppendingPathComponent: will handle inserting a ‘/‘, so you don’t need to specify ‘/‘ in your format string. You end up with ‘//‘ in your path here, which is ok, but we should avoid doing this.

But really you should use -URLByAppendingPathComponent:.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:346
&gt; +    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) {
&gt; +        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&amp;error];
&gt; +        if (error)
&gt; +            return nil;
&gt; +    }
&gt; +    return dataPath;

So if a directory matching this UUID happens to already exist then we’ll just reuse it? Is that ok? What if another file by the same was already written into that directory?

Seems like we should be using createTemporaryDirectory() here too, which mostly guarantees to create a directory that didn’t previously exist (I say mostly because I think it does suffer from a time-of-use-time-of-check bug, but so does your solution).

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:355
&gt; +    NSString *temporaryDirectoryForFile = [WKShareSheet createRandomSharingDirectoryForFile:temporaryDirectory];

Can you explain why we have two levels of temporary directories (temporaryDirectory and temporaryDirectoryForFile)? I guess it’s possible for more than one file to have the same name, and it’s easier to keep track of one top-level temporary directory rather than `n` different per-file temporary directories?

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:361
&gt; +    NSString *file = [temporaryDirectoryForFile stringByAppendingPathComponent:fileName];
&gt; +
&gt; +    NSURL *fileURL = [NSURL fileURLWithPath:file];

I’d use -URLByAppendingPathComponent then not worry about converting from a string to a URL.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:366
&gt; +    NSError *error = nil;
&gt; +    [fileData writeToURL:fileURL options:NSDataWritingAtomic error:&amp;error];
&gt; +    if (error)
&gt; +        return nil;

The canonical way to check for failure here is to check the return value of -writeToURL:error:, not whether error is non-nil.

Unless you plan to do something with `error` (like log it? maybe you should log here), you should just pass NULL for the error: parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650281</commentid>
    <comment_count>25</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-05-07 12:18:55 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #24)
&gt; Comment on attachment 398768 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398768&amp;action=review
&gt; it does suffer from a time-of-use-time-of-check bug,
&gt; but so does your solution).

time-of-check time-of-use, that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650466</commentid>
    <comment_count>26</comment_count>
      <attachid>398827</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-05-07 19:18:09 -0700</bug_when>
    <thetext>Created attachment 398827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650477</commentid>
    <comment_count>27</comment_count>
      <attachid>398827</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-05-07 19:59:59 -0700</bug_when>
    <thetext>Comment on attachment 398827
Patch

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

&gt; Source/WebCore/page/ShareDataReader.cpp:63
&gt; +        if (auto completionHandler = WTFMove(m_completionHandler))

if (auto completionHandler = std::exchange(m_completionHandler, {}))

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:231
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +    [[NSFileManager defaultManager] removeItemAtURL:_temporaryFileShareDirectory.get() error:nil];
&gt; +#endif

For the failure case, surely it’s ok to delete the temp directory.

For the success case, I think this deserves at least a comment, and probably a bug about how NSSharingServiceDelegate doesn’t have a callback to let us know when the temp file can be deleted.

I also think we need to decide if it’s ok to let these files accumulate in the temporary directory on Mac. Maybe it’s ok because we assume they’ll be cleaned up at some point, but maybe we need to disable the feature on Mac until we have the API we need to delete things safely (not advocating for that, per se, but it’s worth discussing).

I’m curious what other folks think about this.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:284
&gt; +    int quarantineError = qtn_file_init_with_path(fq, fileURL.fileSystemRepresentation);

Nit: You can use makeScopeExit() to avoid having to call qtn_file_free() in a bunch of places.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:316
&gt; +    NSString *randomDirectory = [prefix stringByAppendingString: createCanonicalUUIDString()];

Nit: no space after the colon.

And I’m not sure about the prefix. It looks like the prefix is an index number converted to a string, so you’ll get directory names like “1&lt;UUID&gt;”. Since you’ve already created a unique temporary parent directory, I think you can either use just a UUID, or just an index, but I don’t think you need both.

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:319
&gt; +    NSURL *dataPath = [temporaryDirectory URLByAppendingPathComponent: randomDirectory];

Ditto.

&gt; LayoutTests/imported/w3c/ChangeLog:12
&gt; +        * web-platform-tests/web-share/canShare-files.https-expected.txt:
&gt; +        * web-platform-tests/web-share/canShare.https-expected.txt:
&gt; +

I don’t see these files in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650702</commentid>
    <comment_count>28</comment_count>
      <attachid>398880</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2020-05-08 12:03:28 -0700</bug_when>
    <thetext>Created attachment 398880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650715</commentid>
    <comment_count>29</comment_count>
      <attachid>398880</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2020-05-08 12:42:43 -0700</bug_when>
    <thetext>Comment on attachment 398880
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:305
&gt; +    quarantineError = qtn_file_apply_to_path(fq, fileURL.fileSystemRepresentation);

Do we need to return NO if this fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650746</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-08 13:46:14 -0700</bug_when>
    <thetext>Committed r261412: &lt;https://trac.webkit.org/changeset/261412&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398880.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650747</commentid>
    <comment_count>31</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-08 13:47:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63034560&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393942</attachid>
            <date>2020-03-18 20:39:10 -0700</date>
            <delta_ts>2020-03-18 21:24:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200318203909.patch</filename>
            <type>text/plain</type>
            <size>41468</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY2YzE4OTMxYzViNTg0
NTRlYWNlZGI0ZThkZjFiZGJjMWI3NmZkYy4uM2I2MTg1N2NiNzlmMmZiZDQ3MTY4MTQ0MjIzYjA3
OTlkNjA1MjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0xOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUgc2hvdWxkIGNoZWNrIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4gYmVmb3JlIGFsbG9jYXRpbmcgYnVmZmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4MDQ4ZmFlYWNjMjAwZDQxZDNmNzAzZWVmZjdjYWNhNzk0ODg1OWQyLi4yMjlkMjYwODFmMzgx
MzNkZWZmMjJmODg3OTg1ZDE4MmEwZGVlNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQWRkIEhUVFAzIGFzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUz
ZjdlNDkxZDkxMWZhNjk5ODY0YTllOWIxZjRjOWVhY2RmNWU3My4uZWIzZTQwODQwMTI5ODc4MjJi
MzlhZDUwMDAzYjZmNDMzNzY1MThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTkwLDYgKzU5MCw4IEBACiAJCTFBRTk2QThG
MUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBN0YxRDFBMEE4MDAwQjg2NzY4IC8q
IEpTQXBwbGVQYXlTZXNzaW9uLmggKi87IH07CiAJCTFBRTk2QTkxMUQxQTBEREQwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBODExRDFBMEE4MDAwQjg2NzY4
IC8qIEpTQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggKi87IH07CiAJCTFB
RTk2QTkzMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUU5NkE4MzFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0
ZWRFdmVudC5oICovOyB9OworCQkxQUVFNTcxNjI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJl
RGF0YUFzeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBRUU1NzE0MjQwODZGNTkwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICov
OyB9OworCQkxQUVFNTcxNzI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmhw
cCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUU1NzE1
MjQwODZGNUEwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuaHBwICovOyB9OwogCQkxQUVG
NEU2NzE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5
IC8qIENhY2hlZEZvbnRDbGllbnQuaCAqLzsgfTsKIAkJMUFFRjRFNjkxNzBFMTc0ODAwQUIyNzk5
IC8qIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGNEU2ODE3MEUxNzQ4MDBBQjI3OTkgLyogQ2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQUYzMjY3OTBENzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUYzMjY3NzBENzhC
OTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY0ODAsNiArNjQ4Miw4IEBACiAJCTFBRTk2QTg0MUQx
QTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU5NkE4NjFEMUEw
Q0VCMDBCODY3NjggLyogUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFOTZBODcxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1l
bnRNZXJjaGFudFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5
bWVudE1lcmNoYW50U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUVF
NTcxNDI0MDg2RjU5MDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRTaGFyZURhdGFBc3luYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzE1MjQwODZGNUEwMDIwMDVENiAvKiBSZWFk
U2hhcmVEYXRhQXN5bmMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IFJl
YWRTaGFyZURhdGFBc3luYy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUY0
RTY2MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZvbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFFRjRFNjgxNzBFMTc0ODAwQUIyNzk5IC8qIENhY2hlZFNWR0RvY3VtZW50
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0RvY3Vt
ZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjMyNjc3MEQ3OEI5
NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3
Miw2ICsyMDk3Niw4IEBACiAJCQkJRTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NX
YXJtaW5nLmggKi8sCiAJCQkJQ0Q5QTg3RjkyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAg
Ki8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAorCQkJCTFB
RUU1NzE0MjQwODZGNTkwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICovLAorCQkJ
CTFBRUU1NzE1MjQwODZGNUEwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuaHBwICovLAog
CQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAog
CQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJ
CQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAqLywKQEAg
LTMyMjY2LDYgKzMyMjcyLDcgQEAKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOUM5
QUYxRjU5Q0Y1QjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQUVFNTcxNzI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJl
RGF0YUFzeW5jLmhwcCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1
OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3
OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwOTEsNiArMzQwOTgsNyBAQAogCQkJ
CUUxRUU4QjcwMjQxMkIyQTgwMEU3OTRENiAvKiBQbGF0Zm9ybVhSLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQUVF
NTcxNjI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOTI0MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5
MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzUx
MTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFl
NTljMzE5MTRhY2MzNjFlMjc0Li5kNTBkMDY4NzhmODdlN2E2NGM1ZGMzODQzYjZhMGUyODFmNDNl
MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNywxMiArMzcsMTQgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1ZGUgIlJlYWRTaGFyZURhdGFBc3luYy5ocHAiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZURhdGEu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTExMiw4ICsxMTQsMTIgQEAgYm9vbCBOYXZpZ2F0b3I6OmNhblNoYXJlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSkKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGRhdGEudGl0bGUuaXNOdWxsKCkgJiYgZGF0YS51cmwuaXNOdWxsKCkgJiYgZGF0YS50
ZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpCisgICAg
ICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TSEFSRSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ3LDgg
KzE1MywyMCBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCisgICAgICAg
IHsgfSwKICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgCisgICAgICAgIG1fc2hhcmVEYXRhID0gV1RGTW92ZShzaGFyZURhdGEpOworICAgICAg
ICBtX3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgICAgICAKKyAgICAgICAgbV9sb2Fk
ZXIgPSBSZWFkU2hhcmVEYXRhQXN5bmM6OmNyZWF0ZSgqdGhpcywgY29udGV4dCk7CisgICAgICAg
IG1fbG9hZGVyLT5zdGFydChtX3NoYXJlRGF0YSk7CisgICAgICAgIAorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBmcmFt
ZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgY29tcGxldGVkKSB7CiAgICAgICAgIGlmIChjb21wbGV0
ZWQpIHsKQEAgLTE1OSw2ICsxNzcsMjUgQEAgdm9pZCBOYXZpZ2F0b3I6OnNoYXJlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSwgUmUKICAgICB9
KTsKIH0KIAordm9pZCBOYXZpZ2F0b3I6OmZpbmlzaGVkTG9hZChFeGNlcHRpb25Pcjx2b2lkPiBy
ZXQpCit7CisgICAgYXV0byBwcm9taXNlID0gV1RGTW92ZSh0aGlzLT5tX3Byb21pc2UpOworICAg
IAorICAgIGlmIChyZXQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJldC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBmcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS5zaG93U2hhcmVTaGVldChtX3NoYXJlRGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRlZCkgeworICAgICAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnQg
ZHVlIHRvIGNhbmNlbGxhdGlvbiBvZiBzaGFyZS4iX3MgfSk7CisgICAgfSk7Cit9CisKIERPTVBs
dWdpbkFycmF5JiBOYXZpZ2F0b3I6OnBsdWdpbnMoKQogewogICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4
YTg4NjQ3ZjgyZGQuLmY0YTZjY2U2OWJiY2JlNGY5Y2M2ODY4ZGE1ZTc0Njg5MjUzMDcyOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERP
TU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7
CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUmVhZFNoYXJlRGF0YUFzeW5jOwogCiBj
bGFzcyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpA
QCAtNDksNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGNhblNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURh
dGEmKTsKICAgICB2b2lkIHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFy
ZURhdGEmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZChF
eGNlcHRpb25Pcjx2b2lkPiByZXQpOwogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYm9vbCBzdGFuZGFsb25lKCkgY29uc3Q7CkBAIC02Myw2ICs2NywxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKKyAgICBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIG1fc2hhcmVEYXRh
OworICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBSZWZQdHI8UmVh
ZFNoYXJlRGF0YUFzeW5jPiBtX2xvYWRlcjsKKyAgICAKICAgICBleHBsaWNpdCBOYXZpZ2F0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRvdyYpOwogCiAgICAgbXV0YWJsZSBSZWZQ
dHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVhZFNo
YXJlRGF0YUFzeW5jLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTg4MjAzNDRlN2VlMTJlMzhjNWE3NThjMDdk
OTgyNTc3NGI3MDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFk
U2hhcmVEYXRhQXN5bmMuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8vIENvcHlyaWdodCDCqSAyMDIw
IF9fX09SR0FOSVpBVElPTk5BTUVfX18gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZWFkU2hhcmVEYXRhQXN5bmMuaHBwIgorCisjaW5jbHVkZSAi
RmlsZVJlYWRlckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVhZFNo
YXJlRGF0YUFzeW5jOjpyZWFkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgQmxvYiYgYmxvYikKK3sKKyAgICBtX2Jsb2IgPSAmYmxvYjsKKworICAgIG1fbG9hZGVyID0g
bWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlciwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAg
ICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOworICAgIG1fbG9hZGVyLT5z
dGFydCgmY29udGV4dCwgYmxvYik7Cit9CisKK1JlYWRTaGFyZURhdGFBc3luYzo6UmVhZFNoYXJl
RGF0YUFzeW5jKE5hdmlnYXRvciYgY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQorICAgIDogbV9jbGllbnQoJmNsaWVudCkKKyAgICAsIG1fY29udGV4dCgmY29udGV4dCkK
KyAgICAsIG1fZG9uZVNvRmFyKDApCit7CisgICAgCit9CisKK1JlYWRTaGFyZURhdGFBc3luYzo6
flJlYWRTaGFyZURhdGFBc3luYygpCit7CisgICAgbV9jbGllbnQgPSBudWxscHRyOworICAgIG1f
c2hhcmVEYXRhID0gbnVsbHB0cjsKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworICAgIAorfQor
Cit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6c3RhcnQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYg
c2hhcmVEYXRhKQoreworICAgIG1fc2hhcmVEYXRhID0gJnNoYXJlRGF0YTsKKyAgICByZWFkSW50
ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLT5zaGFyZURhdGEuZmlsZXNbbV9kb25lU29G
YXJdKTsKKyAgICAKKyAgICBtX2N1cnJlbnRGaWxlTG9hZCA9IG1fc2hhcmVEYXRhLT5zaGFyZURh
dGEuZmlsZXNbbV9kb25lU29GYXJdLT5uYW1lKCk7CisgICAgbV9kb25lU29GYXIgKz0gMTsKKyAg
ICBtX3NoYXJlRGF0YS0+c2hhcmVEYXRhLmZpbGVzLnJlc2VydmVDYXBhY2l0eShtX3NoYXJlRGF0
YS0+c2hhcmVEYXRhLmZpbGVzLnNpemUoKSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICAKKyAgICBSYXdGaWxlIGZpbGU7CisgICAgZmls
ZS5maWxlTmFtZSA9IG1fY3VycmVudEZpbGVMb2FkOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJh
eUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5m
aWxlRGF0YSA9IFdURk1vdmUoc2hhcmVkQnVmZmVyKTsKKyAgICBtX3NoYXJlRGF0YS0+ZmlsZXMu
YXBwZW5kKFdURk1vdmUoZmlsZSkpOworICAgIAorICAgIGlmIChtX3NoYXJlRGF0YS0+c2hhcmVE
YXRhLmZpbGVzLnNpemUoKSAhPSBtX2RvbmVTb0ZhcikgeworICAgICAgICByZWFkSW50ZXJuYWwo
Km1fY29udGV4dCwgKm1fc2hhcmVEYXRhLT5zaGFyZURhdGEuZmlsZXNbbV9kb25lU29GYXJdKTsK
KyAgICAgICAgbV9jdXJyZW50RmlsZUxvYWQgPSBtX3NoYXJlRGF0YS0+c2hhcmVEYXRhLmZpbGVz
W21fZG9uZVNvRmFyXS0+bmFtZSgpOworICAgICAgICBtX2RvbmVTb0ZhciArPSAxOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fY2xpZW50LT5maW5pc2hlZExvYWQoeyB9KTsK
KworfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkUmVjZWl2ZURhdGEoKQoreworICAg
IAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkU3RhcnRMb2FkaW5nKCkKK3sKKyAg
ICAKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwoaW50IGVycm9yQ29kZSkK
K3sKKyAgICBlcnJvckNvZGUgPSAxOworICAgIG1fY2xpZW50LT5maW5pc2hlZExvYWQoRXhjZXB0
aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0IGR1ZSB0byBmaWxlIHJlYWQgZXJyb3IuIl9zIH0pOwor
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMu
aHBwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5NmMyZGE4Y2VjMjk5YTIxNDA1NjAyYWQ2MTZhM2QzZWEzZWJhNjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5ocHAKQEAgLTAs
MCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFUSU9OTkFNRV9fXyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorI3ByYWdtYSBvbmNlCisjaWZuZGVmIFJlYWRTaGFyZURhdGFB
c3luY19ocHAKKyNkZWZpbmUgUmVhZFNoYXJlRGF0YUFzeW5jX2hwcAorCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVSZWFk
ZXJMb2FkZXI7CitzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFJlYWRTaGFyZURhdGFBc3luYzogcHJpdmF0ZSBGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkU2hhcmVEYXRhQXN5bmM+
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhZFNoYXJlRGF0YUFzeW5jPiBjcmVhdGUoTmF2
aWdhdG9yJiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVhZFNoYXJlRGF0YUFzeW5jKGNsaWVudCwgY29udGV4dCkpOyB9Cisg
ICAgCisgICAgflJlYWRTaGFyZURhdGFBc3luYygpOworICAgIHZvaWQgc3RhcnQoU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYpOworICAgIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFkU2hhcmVE
YXRhQXN5bmMoTmF2aWdhdG9yJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZvaWQg
cmVhZEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iJik7CisgICAgdm9pZCBk
aWRTdGFydExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgZmluYWw7
CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKGlu
dCBlcnJvckNvZGUpIGZpbmFsOworICAgIAorICAgIE5hdmlnYXRvciogbV9jbGllbnQ7CisgICAg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCogbV9zaGFyZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAgU3RyaW5n
IG1fY3VycmVudEZpbGVMb2FkOworICAgIHNpemVfdCBtX2RvbmVTb0ZhciA9IDA7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworICAgIAorfTsKKworfQor
CisKKyNlbmRpZiAvKiBSZWFkU2hhcmVEYXRhQXN5bmNfaHBwICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaAppbmRleCA1YzM5MDdjMTA3NTgwNDlkODg3YzA0NjMxZGI0ZjljMDNmZjFhZjc5Li5hYWMx
Njg2YWU3NzU0Njc1ZTEyYWQ4YjlkYjIyZDcyNDhlOWIyMThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiBzdHJ1Y3QgU2hhcmVEYXRhIHsKQEAgLTM1LDEwICszNiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRh
IHsKICAgICBTdHJpbmcgdXJsOwogICAgIFZlY3RvcjxSZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsK
Kworc3RydWN0IFJhd0ZpbGUgeworICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaWxlRGF0YTsKK307CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCB7CiAgICAgU2hhcmVEYXRhIHNoYXJlRGF0YTsKICAgICBPcHRpb25hbDxVUkw+IHVybDsK
KyAgICBWZWN0b3I8UmF3RmlsZT4gZmlsZXM7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZWM2YWE2Y2E4OTM0YmY2
ZDFiOTI1NjI5ODg0NWY5Mjk2M2VkZWQwOS4uNmQ0MTdkNTNjOGMzYWNmYTJhNGRlYWZkZDY2NWEx
YTg0MmFlZGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRUcmFja2luZ1JlZ2lvbnMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJh
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgpAQCAtMjAxMyw2
ICsyMDE0LDMxIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxGaWxlQ2hvb3NlclNldHRpbmdzPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIEZpbGVDaG9vc2VyU2V0CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KKwordm9pZCBBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8UmF3RmlsZT4mIGZpbGVzKQoreworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBm
aWxlIDogZmlsZXMpIHsKKyAgICAgICAgZW5jb2RlciA8PCBmaWxlLmZpbGVOYW1lOworICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgZmlsZS5maWxlRGF0YS5nZXQoKSk7CisgICAg
fQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxSYXdGaWxlPiYgZmlsZXMpCit7CisgICAgdWludDY0X3QgZGF0
YVNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhU2l6ZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGZpbGVzLnJlc2l6ZShkYXRhU2l6ZSk7CisgICAgZm9yIChhdXRvJiBm
aWxlIDogZmlsZXMpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWxlLmZpbGVOYW1l
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGZpbGUuZmlsZURhdGEpOworCisgICAgfQorICAgIHJldHVybiB0cnVlOworfQog
ICAgIAogdm9pZCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTaGFyZURhdGEmIHNldHRpbmdzKQogewpAQCAtMjAzNiw2ICsyMDYyLDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2hhcmUKIHsKICAgICBlbmNvZGVyIDw8IHNldHRpbmdzLnNoYXJl
RGF0YTsKICAgICBlbmNvZGVyIDw8IHNldHRpbmdzLnVybDsKKyAgICBlbmNvZGVyIDw8IHNldHRp
bmdzLmZpbGVzOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVS
TD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzZXR0
aW5ncykKQEAgLTIwNDQsNiArMjA3MSw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFX
aXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdzLnVybCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdz
LmZpbGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3
NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0YTIxNmU4NGYwMTcuLmI5ZGY2NzEwMmMxNWM2NDM3ODA1
MDE5YmMzNTEyN2Q5YmJjZTRhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC0xMjQsNyArMTI0LDkgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFp
bHM7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsK
IHN0cnVjdCBTaGFyZURhdGE7CitjbGFzcyBGaWxlOwogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkw7CitzdHJ1Y3QgUmF3RmlsZTsKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgR3JhbW1hckRl
dGFpbDsKIHN0cnVjdCBNaW1lQ2xhc3NJbmZvOwpAQCAtNTUzLDYgKzU1NSwxMSBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M+IHsK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MmKTsKIH07CiAgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFZlY3Rv
cjxXZWJDb3JlOjpSYXdGaWxlPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4mKTsKK307CisKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRhPiB7CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTaGFyZURhdGEmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlNoYXJlRGF0YSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZGZiYzVhZWMyMWFmODViMWNhYjY4NDBhMGNlZjMyOGI2NTc0NWI5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRl
LmgKQEAgLTAsMCArMSwxNiBAQAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFUSU9O
TkFNRV9fXyBBbGwgcmlnaHRzIHJlc2VydmVkLgorI2ltcG9ydCAiV0tBUElDYXN0LmgiCisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAaW50ZXJmYWNlIFdLU2hhcmVhYmxlRmlsZVdyaXRlIDogTlNPYmplY3QKKworKyhCT09M
KXJlbW92ZUZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nOworCisrKE5TVVJMICopd3JpdGVGaWxlVG9T
aGFyZWFibGVVUkw6IChOU1N0cmluZyAqKWZpbGVOYW1lIGRhdGE6KE5TRGF0YSAqKSBmaWxlRGF0
YTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjg2
NmI5YTY1NjQ2ZTk0MmMzNGUyOTNlNjZmMDQxMmM3MGZiN2NhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tCkBAIC0w
LDAgKzEsMTM1IEBACisvLyBDb3B5cmlnaHQgwqkgMjAyMCBfX19PUkdBTklaQVRJT05OQU1FX19f
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJT
aGFyZWFibGVGaWxlV3JpdGUuaCIKKworI2ltcG9ydCAiUXVhcmFudGluZVNQSS5oIgorCisjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8d3RmL1VV
SUQuaD4KKworQGltcGxlbWVudGF0aW9uIFdLU2hhcmVhYmxlRmlsZVdyaXRlCisKKysoTlNTdHJp
bmcgKilnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aCB7CisgICAgTlNBcnJheSAqcGF0aHMgPSBOU1Nl
YXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0RvY3VtZW50RGlyZWN0b3J5LCBOU1Vz
ZXJEb21haW5NYXNrLCBZRVMpOworICAgIGlmICghcGF0aHMgfHwgIVtwYXRocyBmaXJzdE9iamVj
dF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgTlNTdHJpbmcgKmRvY3VtZW50c0Rp
cmVjdG9yeSA9IFtwYXRocyBvYmplY3RBdEluZGV4OjBdOyAvLyBHZXQgZG9jdW1lbnRzIGZvbGRl
cgorICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFtkb2N1bWVudHNEaXJlY3Rvcnkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiL1dLRmlsZVNoYXJlIl07CisgICAgCisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6ZGF0YVBhdGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4g
ZGF0YVBhdGg7Cit9CisKKysoTlNTdHJpbmcgKilnZXRGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZyB7
CisgICAgTlNTdHJpbmcgKnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKTsKKyAgICBOU1N0cmluZyAqZGF0YVBhdGggPSBbW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGdl
dFNoYXJpbmdEaXJlY3RvcnlQYXRoXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIvJUAiLCByYW5kb21EaXJlY3RvcnldXTsKKyAgICBp
ZiAoIWRhdGFQYXRoKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmRhdGFQYXRoXSkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpkYXRhUGF0aCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGRhdGFQ
YXRoOworfQorCisrKEJPT0wpcmVtb3ZlRmlsZURpcmVjdG9yeUZvclNoYXJpbmcgeworICAgIE5T
U3RyaW5nICpkYXRhUGF0aCA9IFtXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGlyZWN0
b3J5UGF0aF07CisgICAgaWYgKCFkYXRhUGF0aCkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAor
ICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmRhdGFQYXRoXSkKKyAgICAgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gcmVtb3ZlSXRlbUF0UGF0aDogZGF0YVBhdGggZXJyb3I6bmlsXTsKKyAgICByZXR1cm4gWUVT
OworfQorCisjaWYgUExBVEZPUk0oTUFDKQorKyAoQk9PTClzZXRRdWFyYW50aW5lSW5mb3JtYXRp
b25Gb3JGaWxlUGF0aDooTlNTdHJpbmcgKilmaWxlUGF0aAoreworICAgIE5TVVJMICpmaWxlVVJM
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlUGF0aF07CisKKyAgICAvLyBXb3JrYXJvdW5k
IDxyZGFyOi8vcHJvYmxlbS8yMTczNTQxMj46IE5TVVJMRG93bmxvYWQgd2lsbCBhdXRvbWF0aWNh
bGx5IGF0dGFjaCBOU1VSTFF1YXJhbnRpbmVQcm9wZXJ0aWVzCisgICAgLy8gdG8gZmlsZXMgd2Ug
ZG93bmxvYWQgaWYgdGhleSBhcmUgYWxyZWFkeSBxdWFyYW50aW5lZC4gVGhpcyBhZGRzIGEgcXVh
cmFudGluZSBoaXN0b3J5IGl0ZW0gdGhhdCB0aGUgY29kZQorICAgIC8vIGJlbG93IHdpbGwgc2hh
ZG93LiBTaW5jZSBTYWZhcmkgbmVlZHMgdG8gYmUgYWJsZSB0byByZW1vdmUgYWxsIHRyYWNlcyBv
ZiBkb3dubG9hZCBoaXN0b3J5LCB3ZSBuZWVkIHRvCisgICAgLy8gZGVsZXRlIHRoYXQgZW50cnkg
YmVmb3JlIG91cnMgcmVuZGVycyBpdCBpbmFjY2Vzc2libGUuCisKKyAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpxdWFyYW50aW5lUHJvcGVydGllcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF07CisgICAgcXVhcmFudGluZVByb3BlcnRpZXNbKF9fYnJpZGdlIE5TU3RyaW5nICop
a0xTUXVhcmFudGluZVR5cGVLZXldID0gKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGlu
ZVR5cGVXZWJEb3dubG9hZDsKKyAgICBxdWFyYW50aW5lUHJvcGVydGllc1soX19icmlkZ2UgTlNT
dHJpbmcgKilrTFNRdWFyYW50aW5lQWdlbnRCdW5kbGVJZGVudGlmaWVyS2V5XSA9IFdlYkNvcmU6
OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOworCisKKyAgICBOU0Vycm9yICplcnJvcjsK
KyAgICBpZiAoIVtmaWxlVVJMIHNldFJlc291cmNlVmFsdWU6cXVhcmFudGluZVByb3BlcnRpZXMg
Zm9yS2V5Ok5TVVJMUXVhcmFudGluZVByb3BlcnRpZXNLZXkgZXJyb3I6JmVycm9yXSkgeworICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBpbmZvcm1hdGlvbiBmb3Ig
ZmlsZSBwYXRoOiAlQDogJUAiLCBmaWxlUGF0aCwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87
CisgICAgfQorCisgICAgLy8gV2hldGhlciB0aGUgZmlsZSB3YXMgZG93bmxvYWRlZCBieSBzYW5k
Ym94ZWQgV2ViUHJvY2VzcyBvciBub3QsIExTU2V0SXRlbUF0dHJpYnV0ZSByZXNldHMgdGhlIGZs
YWdzIHRvIDAgKGFkdmlzb3J5IFFUTl9GTEFHX0RPV05MT0FELAorICAgIC8vIHdoaWNoIGNhbiBi
ZSB0aGVuIHJlbW92ZWQgYnkgV2ViUHJvY2VzcykuIFJlcGxhY2UgdGhlIGZsYWdzIHdpdGggc2Fu
ZGJveCBxdWFyYW50aW5lIG9uZXMsIHdoaWNoIGNhbm5vdCBiZSByZW1vdmVkIGJ5IHNhbmRib3hl
ZCBwcm9jZXNzZXMuCisgICAgcmV0dXJuIFtXS1NoYXJlYWJsZUZpbGVXcml0ZSBhcHBseVF1YXJh
bnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDpmaWxlUGF0aF07Cit9CisK
KysgKEJPT0wpYXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBh
dGg6KE5TU3RyaW5nICopZmlsZVBhdGgKK3sKKyAgICBxdG5fZmlsZV90IGZxID0gcXRuX2ZpbGVf
YWxsb2MoKTsKKyAgICBpbnQgcXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVfaW5pdF93aXRoX3Bh
dGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1YXJh
bnRpbmVFcnJvcikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZXRyaWV2ZSBxdWFy
YW50aW5lIGZsYWdzIGZvciBmaWxlIHBhdGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVF
cnJvcik7CisgICAgICAgIHF0bl9maWxlX2ZyZWUoZnEpOworICAgICAgICByZXR1cm4gTk87Cisg
ICAgfQorCisgICAgcXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVfc2V0X2ZsYWdzKGZxLCBRVE5f
RkxBR19TQU5EQk9YIHwgUVROX0ZMQUdfRE9XTkxPQUQpOworICAgIGlmIChxdWFyYW50aW5lRXJy
b3IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qgc2V0IHF1YXJhbnRpbmUgZmxhZ3Mg
aW4gcXRuX2ZpbGVfdCBzdHJ1Y3R1cmUgZm9yIGZpbGUgcGF0aCAlQDogJWQiLCBmaWxlUGF0aCwg
cXVhcmFudGluZUVycm9yKTsKKyAgICAgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisgICAgICAgIHJl
dHVybiBOTzsKKyAgICB9CisKKyAgICBxdWFyYW50aW5lRXJyb3IgPSBxdG5fZmlsZV9hcHBseV90
b19wYXRoKGZxLCBmaWxlUGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOworICAgIGlmIChx
dWFyYW50aW5lRXJyb3IpCisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGFwcGx5IHF1YXJh
bnRpbmUgZmxhZ3MgdG8gZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJy
b3IpOworCisgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisKKyAgICByZXR1cm4gWUVTOworfQorI2Vu
ZGlmCisKKysoTlNTdHJpbmcgKiljcmVhdGVGaWxlbmFtZTogKE5TU3RyaW5nICopZmlsZU5hbWUg
eworICAgIE5TU3RyaW5nICpnZXRUZW1wRGlyZWN0b3J5ID0gW1dLU2hhcmVhYmxlRmlsZVdyaXRl
IGdldEZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nXTsKKyAgICBpZiAoZ2V0VGVtcERpcmVjdG9yeSA9
PSBuaWwpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNTdHJpbmcgKnNhbml0aXplZEZpbGVu
YW1lID0gV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmls
ZW5hbWUoZmlsZU5hbWUpOworICAgIE5TU3RyaW5nICpmaWxlTmFtZUNvbmNhdCA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAvJUAiLCBnZXRUZW1wRGlyZWN0b3J5LCBzYW5pdGl6ZWRG
aWxlbmFtZV07CisgICAgcmV0dXJuIGZpbGVOYW1lQ29uY2F0OworfQorCisrKE5TVVJMICopd3Jp
dGVGaWxlVG9TaGFyZWFibGVVUkw6IChOU1N0cmluZyAqKWZpbGVOYW1lIGRhdGE6KE5TRGF0YSAq
KSBmaWxlRGF0YSB7CisgICAgTlNTdHJpbmcgKmZpbGUgPSBbV0tTaGFyZWFibGVGaWxlV3JpdGUg
Y3JlYXRlRmlsZW5hbWU6IGZpbGVOYW1lXTsKKyAgICBpZiAoIWZpbGVOYW1lKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIE5TVVJMICpmaWxlVVJMID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpmaWxlXTsKKyAgICAKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBbZmlsZURh
dGEgd3JpdGVUb1VSTDpmaWxlVVJMIG9wdGlvbnM6TlNEYXRhV3JpdGluZ0F0b21pYyBlcnJvcjog
JmVycm9yXTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGlmICghW1dLU2hhcmVhYmxlRmlsZVdyaXRlIHNldFF1YXJhbnRpbmVJbmZv
cm1hdGlvbkZvckZpbGVQYXRoOmZpbGVdKQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisg
ICAgcmV0dXJuIGZpbGVVUkw7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1NoYXJlU2hlZXQubW0KaW5kZXggYjAyNDMzYzMwM2E2ZjkzOWRiNDJhN2ZjNDA0OWU5
ZWFjNTQxYjAwNi4uNWU3MDdmMWY0OWY0NjJhMzZkZjljYmM2MmQ5ZjFkY2ZkYmZlNzE1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXQVRDSE9TKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikKIAorI2ltcG9ydCAiU2hhcmVhYmxlRmlsZVdyaXRlLmgiCiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgpAQCAtMTA2LDYgKzEwNywxNiBAQCAtICh2b2lk
KXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCAmKWRhdGEgaW5SZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGZvciAo
YXV0byBmaWxlIDogZGF0YS5maWxlcykgeworICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtXS1No
YXJlYWJsZUZpbGVXcml0ZSB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpmaWxlLmZpbGVOYW1lIGRh
dGE6ZmlsZS5maWxlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgICAgICBpZiAoIWZp
bGVVUkwpIHsKKyAgICAgICAgICAgIFtzZWxmIF9kaWRDb21wbGV0ZVdpdGhTdWNjZXNzOk5PXTsK
KyAgICAgICAgICAgIFtzZWxmIGRpc21pc3NdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIFtzaGFyZURhdGFBcnJheSBhZGRPYmplY3Q6ZmlsZVVSTF07CisgICAgfQor
ICAgIAogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxlYXNlZCgp
OwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE4MCw2ICsxOTEsNyBAQCAtICh2b2lkKXNo
YXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJ
dGVtczooTlNBcnJheQogCiAtICh2b2lkKV9kaWRDb21wbGV0ZVdpdGhTdWNjZXNzOihCT09MKXN1
Y2Nlc3MKIHsKKyAgICBbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9yeUZv
clNoYXJpbmddOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKF9jb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGQwNzA5ZTRjY2NjMzk1M2EyOTgxYzg0Y2I1MTcyY2M3OThm
MGQ2OTMuLmY4NGE0ZTUyODk2MDg4MzhjN2I3YThiMzFhZGI2YzY3YzkxOTA3OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYxLDYg
KzI2MSw4IEBACiAJCTFBN0MwREY3MUI3RDFGMTAwMEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVz
UmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTdD
MERGNTFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBN0UzNzc1MThFNEEzM0Ew
MDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTdFMzc3NDE4RTRBMzNBMDAzRDBGRkYgLyogV0tT
Y3JpcHRNZXNzYWdlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJMUE3RTM3NzkxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2Fn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3RTM3
NzcxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJMUE4MEYxRUYyNDIyRTk5OTAwNzA2NDgz
IC8qIFNoYXJlYWJsZUZpbGVXcml0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE4MEYxRUQyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZpbGVX
cml0ZS5oICovOyB9OworCQkxQTgwRjFGMDI0MjJFOTk5MDA3MDY0ODMgLyogU2hhcmVhYmxlRmls
ZVdyaXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4MEYxRUUyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZpbGVXcml0ZS5tbSAqLzsgfTsK
IAkJMUE4MUIzODExOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODFCMzdGMThCRDY2
QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE4MUIzODUxOEJENjczQTAwMDdGREFDIC8q
IF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MUIzODQxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0
ZWRMaW5rU3RvcmVJbnRlcm5hbC5oICovOyB9OwogCQkxQTg1RTQ3MjFFMzAzRjM3MDA5MTQ1OTkg
LyogV2ViS2l0LmFwaW5vdGVzIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE4NUU0NzAxRTMwM0YyNDAwOTE0NTk5IC8qIFdlYktpdC5hcGlub3RlcyAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0yNDQ5LDYgKzI0
NTEsOCBAQAogCQkxQTdFMzc3NDE4RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlSGFu
ZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBN0UzNzc2MThFNEE0RkUw
MDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1NjcmlwdE1lc3NhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBN0UzNzc3MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBODBGMUVEMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFi
bGVGaWxlV3JpdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVhYmxlRmlsZVdyaXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBODBGMUVFMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFy
ZWFibGVGaWxlV3JpdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWFibGVGaWxlV3Jp
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBODFCMzdFMThCRDY2QUQwMDA3
RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gX1dLVmlzaXRlZExpbmtTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE4MUIzN0YxOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3Rv
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVmlzaXRlZExpbmtTdG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTgxQjM4NDE4QkQ2NzNBMDAwN0ZE
QUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjI5OCw2ICs2MzAyLDggQEAKIAkJCQk1Q0E5ODU0QjIxMEJFQjcz
MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovLAogCQkJCTFBMDAyRDQ3
MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKIAkJCQkxQTAwMkQ0
NjE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLm1tICovLAorCQkJCTFBODBG
MUVEMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFibGVGaWxlV3JpdGUuaCAqLywKKwkJCQkxQTgw
RjFFRTI0MjJFOTk5MDA3MDY0ODMgLyogU2hhcmVhYmxlRmlsZVdyaXRlLm1tICovLAogCQkJCTMx
NTcxMzVDMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
ICovLAogCQkJCTJEMENGNjRDMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9s
bGVyLmggKi8sCiAJCQkJMkQwQ0Y2NEIyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0Nv
bnRyb2xsZXIubW0gKi8sCkBAIC0xMTAwNyw2ICsxMTAxMyw3IEBACiAJCQkJMUEwMDJENDkxOTZC
MzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDZCRUI2REYyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTY0MjBFNTEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0
bWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTgwRjFFRjI0MjJFOTk5MDA3MDY0ODMgLyogU2hh
cmVhYmxlRmlsZVdyaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIxNzQ2MTE2NEMyMEUzMDAz
N0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjRCRUQ1
MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NEI0RDlEMUU3NjVFMDAwMEQyNzA5MiAvKiBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMjY5Myw2ICsxMjcwMCw3IEBACiAJCQkJRTE4RTY5MTcxNjlCNjY3QjAw
OUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDFERTdDNkMyMjI3OEYxRTAwNTMyQjY1IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNo
YXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQTgwRjFGMDI0MjJFOTk5MDA3
MDY0ODMgLyogU2hhcmVhYmxlRmlsZVdyaXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFBREFG
QjYyMzY4RTZBODAwOUNCNzc2IC8qIFNoYXJlZE1lbW9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1NzVCMUJCOTIzQ0U5QzBCMDAyMDYzOUEgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGY5NWMyYzNkZjI5NDU5NjBkOTRkMGZiNjM1ZTUyN2Y1NjE1MTQxMDEuLmExODIyYTg1
ZDE3NGVkZjQxMjc0YTZhNmZhZjE5NGIyNTg2NjU0NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVz
ZSB1cmwgb2YgaW1hZ2UuCisKKyAgICAgICAgKiBmYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZp
bGVzLmh0bWw6CisKIDIwMjAtMDMtMTggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBzdmcvY3VzdG9tL2FuaW1hdGUtaW5pdGlhbC1wYXVzZS11
bnBhdXNlLmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGI1
ZWE3MGNlMzk0MDAwNDQ0YmJjNzlkYTI2NTgwMjFhMDFkMGM5OTIuLmMxYmY3Y2E0OWRiYWVhZTk5
MDFjOGFhMDQ0MTQzOTAyNWRhMTUwNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFy
aXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IHRlc3QgZXhwZWN0YXRpb25zIGZvciBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLWZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLmh0dHBzLWV4
cGVjdGVkLnR4dDoKKwogMjAyMC0wMy0xOCAgRnJhbmsgWWFuZyAgPGd1b3dlaV95YW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ1NTIFdyaXRpbmcgTW9kZXNdIEltcG9ydCBjc3MvY3NzLXdyaXRp
bmctbW9kZXMgZnJvbSBXUFQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJl
L3NoYXJlLXdpdGgtZmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJl
LXdpdGgtZmlsZXMuaHRtbAppbmRleCA4NTZlZDI0NDE4ODcxODhkYjY0OThkM2RiMTcwODA3MTQ5
MGY1Yzg2Li45Yjg5MGQ0YzFiMTM0N2QwOWNiNjFjYTI2MjQyMzJkMzUwYzA2OTkxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCkBAIC0y
LDYgKzIsNyBAQAogCiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0
aWFsLXNjYWxlPTUsIHdpZHRoPWRldmljZS13aWR0aCI+CisKIDxoZWFkPgogCiAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtMTYsMTAg
KzE3LDEyIEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydoZWxsbyddLCAnaGVsbG8udHh0Jywg
e3R5cGU6J3RleHQvcGxhaW4nfSk7CisKKyAgICAgICAgICAgIHZhciBibG9iID0gdGhpcy5yZXNw
b25zZTsKKyAgICAgICAgICAgIGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydUaGlzIGlzIGEg
dGV4dCBmaWxlJ10sICdUZXh0RmlsZS50eHQnLCB7dHlwZTondGV4dC9odG1sJ30pOwogICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgKCkgPT4gewotICAgICAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDog
InNhZGYiLCBmaWxlczogW3RleHRGaWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAg
ICAgICAgICAgICB3cml0ZSgiUEFTUzogU2hhcmUgc2hlZXQgaW52b2tlZC4iKTsKKyAgICAgICAg
ICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDogIlRoaXMgaXMgYSB0ZXh0IGZpbGUiLCBmaWxlczog
W3RleHRGaWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgIHdyaXRlKCJQ
QVNTOiBTaGFyZSBzaGVldCBpbnZva2VkLiIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9KTsgICAgCiAgICAgICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViLXNoYXJlL2NhblNoYXJlLWZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLWZp
bGVzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBlNjhiMzA3ZjAzODViYzE5MzI3ZWZlNTFiYTQ2
MmQzMThjNzM3ZDA1Li4yZDk5YzkyMDllMWE5MTBkNmNlN2VhNmFhOWVkZDQxZTc3NDU4ZWUwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
Yi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmls
ZXMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogCiBQQVNTIGNhblNoYXJlIHdp
dGggc2luZ2xlIGZpbGUgCi1GQUlMIGNhblNoYXJlIHdpdGggZW1wdHkgZmlsZSBsaXN0IG5hdmln
YXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUo
e2ZpbGVzOiBbXX0pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBj
YW5TaGFyZSB3aXRoIHNpbmdsZSBmaWxlIGxpc3QgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7ZmlsZXM6IFtlbXB0eUZpbGVdfSkn
LCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGgg
ZmlsZSBsaXN0IG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZp
Z2F0b3IuY2FuU2hhcmUoe2ZpbGVzOiBbdGV4dEZpbGUsIGVtcHR5RmlsZV19KScsICduYXZpZ2F0
b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCByZXBlYXRlZCBm
aWxlIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3Iu
Y2FuU2hhcmUoe2ZpbGVzOiBbdGV4dEZpbGUsIGVtcHR5RmlsZSwgdGV4dEZpbGVdfSknLCAnbmF2
aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggZmlsZSBs
aXN0IGFuZCB1cmwgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25h
dmlnYXRvci5jYW5TaGFyZSh7dXJsOiAnaHR0cHM6Ly9leGFtcGxlLmNvbS8nLCBmaWxlczogW3Rl
eHRGaWxlLCBlbXB0eUZpbGVdfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQp
CitQQVNTIGNhblNoYXJlIHdpdGggZW1wdHkgZmlsZSBsaXN0IAorRkFJTCBjYW5TaGFyZSB3aXRo
IHNpbmdsZSBmaWxlIGxpc3QgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZh
bHNlCitGQUlMIGNhblNoYXJlIHdpdGggZmlsZSBsaXN0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQorRkFJTCBjYW5TaGFyZSB3aXRoIHJlcGVhdGVkIGZpbGUgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCitQQVNTIGNhblNoYXJlIHdp
dGggZmlsZSBsaXN0IGFuZCB1cmwgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNo
YXJlL2NhblNoYXJlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBjYzZhNDQzYmUwYWIxZjNhODNm
NmE2N2QxMmY4NDVhMGZiNjU5NmIwLi4zZDFmYjUxMzZhZDZiNjE1MDlhNmVlYTA2ZWE0NzA5Y2M0
NmI2NGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDE5ICsxLDE5IEBACiAKLUZBSUwgY2FuU2hhcmUgd2l0
aCBubyBhcmd1bWVudHMgKHNhbWUgYXMgZW1wdHkgZGljdGlvbmFyeSkgbmF2aWdhdG9yLmNhblNo
YXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSgpJywgJ25hdmln
YXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGFuIGVtcHR5
IGRpY3Rpb25hcnkgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25h
dmlnYXRvci5jYW5TaGFyZSh7fSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIGNhblNoYXJlIHdpdGggYSB1bmRlZmluZWQgYXJndW1lbnQgKHNhbWUgYXMgZW1wdHkg
ZGljdGlvbmFyeSkgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25h
dmlnYXRvci5jYW5TaGFyZSh1bmRlZmluZWQpJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5k
ZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGEgbnVsbCBhcmd1bWVudCAoc2FtZSBhcyBlbXB0
eSBkaWN0aW9uYXJ5KSBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
bmF2aWdhdG9yLmNhblNoYXJlKG51bGwpJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZp
bmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGEgZGljdGlvbmFyeSBjb250YWluaW5nIG9ubHkgc3Vy
cGx1cyBmaWVsZHMgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25h
dmlnYXRvci5jYW5TaGFyZSh7dW51c2VkOiAndW5leHBlY3RlZCBmaWVsZCd9KScsICduYXZpZ2F0
b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBhbiBpbnZhbGlk
IFVSTCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9y
LmNhblNoYXJlKHt1cmx9KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZB
SUwgY2FuU2hhcmUgd2l0aCBhdHRyaWJ1dGUgdW5kZWZpbmVkIGlzIGVxdWl2YWxlbnQgdG8gb21p
dHRpbmcgdGhlIGF0dHJpYnV0ZSBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt0aXRsZTogdW5kZWZpbmVkfSknLCAnbmF2aWdhdG9y
LmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggdGl0bGUgbmF2aWdh
dG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7
dGl0bGU6ICdzdWJqZWN0J30pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQot
RkFJTCBjYW5TaGFyZSB3aXRoIHRleHQgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dGV4dDogJ2JvZHknfSknLCAnbmF2aWdhdG9y
LmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggVVJMIG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3Vy
bDogJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tL3NvbWUvcGF0aD9zb21lX3F1ZXJ5I3NvbWVfZnJh
Z21lbnQnfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNo
YXJlIHdpdGggbnVsbCBhdHRyaWJ1dGUgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dGl0bGU6IG51bGx9KScsICduYXZpZ2F0b3Iu
Y2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBudW1iZXIgbmF2aWdh
dG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7
dGV4dDogMTIzfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNh
blNoYXJlIHdpdGggb2JqZWN0IG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3VybDoge3RvU3RyaW5nKCkgeyByZXR1cm4gJ2h0dHBz
Oi8vZXhhbXBsZS5jb20vJzsgfX19KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5l
ZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCB1bmV4cGVjdGVkIGZpZWxkIG5hdmlnYXRvci5jYW5TaGFy
ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3RpdGxlOiAnc3Vi
amVjdCcsIHRleHQ6ICdib2R5JywgdXJsOiAnaHR0cHM6Ly9leGFtcGxlLmNvbS8nLCB1bnVzZWQ6
ICd1bmV4cGVjdGVkIGZpZWxkJ30pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVk
KQotRkFJTCBjYW5TaGFyZSB3aXRoIGRhdGEgVVJMIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3VybDogJ2RhdGE6dGhlIHVybCd9
KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0
aCBlbXB0eSBVUkwgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25h
dmlnYXRvci5jYW5TaGFyZSh7dXJsOiAnJ30pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5k
ZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIFVSTCBoYXZpbmcgbm8gc2NoZW1lIG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3Vy
bDogJy8vd3d3LmV4YW1wbGUuY29tL3NvbWUvcGF0aD9zb21lX3F1ZXJ5I3NvbWVfZnJhZ21lbnQn
fSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCitQQVNTIGNhblNoYXJlIHdp
dGggbm8gYXJndW1lbnRzIChzYW1lIGFzIGVtcHR5IGRpY3Rpb25hcnkpIAorUEFTUyBjYW5TaGFy
ZSB3aXRoIGFuIGVtcHR5IGRpY3Rpb25hcnkgCitQQVNTIGNhblNoYXJlIHdpdGggYSB1bmRlZmlu
ZWQgYXJndW1lbnQgKHNhbWUgYXMgZW1wdHkgZGljdGlvbmFyeSkgCitQQVNTIGNhblNoYXJlIHdp
dGggYSBudWxsIGFyZ3VtZW50IChzYW1lIGFzIGVtcHR5IGRpY3Rpb25hcnkpIAorUEFTUyBjYW5T
aGFyZSB3aXRoIGEgZGljdGlvbmFyeSBjb250YWluaW5nIG9ubHkgc3VycGx1cyBmaWVsZHMgCitQ
QVNTIGNhblNoYXJlIHdpdGggYW4gaW52YWxpZCBVUkwgCitQQVNTIGNhblNoYXJlIHdpdGggYXR0
cmlidXRlIHVuZGVmaW5lZCBpcyBlcXVpdmFsZW50IHRvIG9taXR0aW5nIHRoZSBhdHRyaWJ1dGUg
CitQQVNTIGNhblNoYXJlIHdpdGggdGl0bGUgCitQQVNTIGNhblNoYXJlIHdpdGggdGV4dCAKK1BB
U1MgY2FuU2hhcmUgd2l0aCBVUkwgCitQQVNTIGNhblNoYXJlIHdpdGggbnVsbCBhdHRyaWJ1dGUg
CitQQVNTIGNhblNoYXJlIHdpdGggbnVtYmVyIAorUEFTUyBjYW5TaGFyZSB3aXRoIG9iamVjdCAK
K1BBU1MgY2FuU2hhcmUgd2l0aCB1bmV4cGVjdGVkIGZpZWxkIAorUEFTUyBjYW5TaGFyZSB3aXRo
IGRhdGEgVVJMIAorUEFTUyBjYW5TaGFyZSB3aXRoIGVtcHR5IFVSTCAKK1BBU1MgY2FuU2hhcmUg
d2l0aCBVUkwgaGF2aW5nIG5vIHNjaGVtZSAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393946</attachid>
            <date>2020-03-18 21:24:41 -0700</date>
            <delta_ts>2020-03-19 13:09:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200318212440.patch</filename>
            <type>text/plain</type>
            <size>41464</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY2YzE4OTMxYzViNTg0
NTRlYWNlZGI0ZThkZjFiZGJjMWI3NmZkYy4uM2I2MTg1N2NiNzlmMmZiZDQ3MTY4MTQ0MjIzYjA3
OTlkNjA1MjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0xOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUgc2hvdWxkIGNoZWNrIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4gYmVmb3JlIGFsbG9jYXRpbmcgYnVmZmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4MDQ4ZmFlYWNjMjAwZDQxZDNmNzAzZWVmZjdjYWNhNzk0ODg1OWQyLi4yMjlkMjYwODFmMzgx
MzNkZWZmMjJmODg3OTg1ZDE4MmEwZGVlNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQWRkIEhUVFAzIGFzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUz
ZjdlNDkxZDkxMWZhNjk5ODY0YTllOWIxZjRjOWVhY2RmNWU3My4uZWIzZTQwODQwMTI5ODc4MjJi
MzlhZDUwMDAzYjZmNDMzNzY1MThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTkwLDYgKzU5MCw4IEBACiAJCTFBRTk2QThG
MUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBN0YxRDFBMEE4MDAwQjg2NzY4IC8q
IEpTQXBwbGVQYXlTZXNzaW9uLmggKi87IH07CiAJCTFBRTk2QTkxMUQxQTBEREQwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBODExRDFBMEE4MDAwQjg2NzY4
IC8qIEpTQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggKi87IH07CiAJCTFB
RTk2QTkzMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUU5NkE4MzFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0
ZWRFdmVudC5oICovOyB9OworCQkxQUVFNTcxNjI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJl
RGF0YUFzeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBRUU1NzE0MjQwODZGNTkwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICov
OyB9OworCQkxQUVFNTcxNzI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmhw
cCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUU1NzE1
MjQwODZGNUEwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuaHBwICovOyB9OwogCQkxQUVG
NEU2NzE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5
IC8qIENhY2hlZEZvbnRDbGllbnQuaCAqLzsgfTsKIAkJMUFFRjRFNjkxNzBFMTc0ODAwQUIyNzk5
IC8qIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGNEU2ODE3MEUxNzQ4MDBBQjI3OTkgLyogQ2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQUYzMjY3OTBENzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUYzMjY3NzBENzhC
OTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY0ODAsNiArNjQ4Miw4IEBACiAJCTFBRTk2QTg0MUQx
QTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU5NkE4NjFEMUEw
Q0VCMDBCODY3NjggLyogUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFOTZBODcxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1l
bnRNZXJjaGFudFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5
bWVudE1lcmNoYW50U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUVF
NTcxNDI0MDg2RjU5MDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRTaGFyZURhdGFBc3luYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzE1MjQwODZGNUEwMDIwMDVENiAvKiBSZWFk
U2hhcmVEYXRhQXN5bmMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IFJl
YWRTaGFyZURhdGFBc3luYy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUY0
RTY2MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZvbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFFRjRFNjgxNzBFMTc0ODAwQUIyNzk5IC8qIENhY2hlZFNWR0RvY3VtZW50
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0RvY3Vt
ZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjMyNjc3MEQ3OEI5
NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3
Miw2ICsyMDk3Niw4IEBACiAJCQkJRTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NX
YXJtaW5nLmggKi8sCiAJCQkJQ0Q5QTg3RjkyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAg
Ki8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAorCQkJCTFB
RUU1NzE0MjQwODZGNTkwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICovLAorCQkJ
CTFBRUU1NzE1MjQwODZGNUEwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuaHBwICovLAog
CQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAog
CQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJ
CQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAqLywKQEAg
LTMyMjY2LDYgKzMyMjcyLDcgQEAKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOUM5
QUYxRjU5Q0Y1QjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQUVFNTcxNzI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJl
RGF0YUFzeW5jLmhwcCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1
OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3
OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwOTEsNiArMzQwOTgsNyBAQAogCQkJ
CUUxRUU4QjcwMjQxMkIyQTgwMEU3OTRENiAvKiBQbGF0Zm9ybVhSLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQUVF
NTcxNjI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOTI0MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5
MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzUx
MTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFl
NTljMzE5MTRhY2MzNjFlMjc0Li5kNTBkMDY4NzhmODdlN2E2NGM1ZGMzODQzYjZhMGUyODFmNDNl
MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNywxMiArMzcsMTQgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1ZGUgIlJlYWRTaGFyZURhdGFBc3luYy5ocHAiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZURhdGEu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTExMiw4ICsxMTQsMTIgQEAgYm9vbCBOYXZpZ2F0b3I6OmNhblNoYXJlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSkKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGRhdGEudGl0bGUuaXNOdWxsKCkgJiYgZGF0YS51cmwuaXNOdWxsKCkgJiYgZGF0YS50
ZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpCisgICAg
ICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TSEFSRSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ3LDgg
KzE1MywyMCBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCisgICAgICAg
IHsgfSwKICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgCisgICAgICAgIG1fc2hhcmVEYXRhID0gV1RGTW92ZShzaGFyZURhdGEpOworICAgICAg
ICBtX3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgICAgICAKKyAgICAgICAgbV9sb2Fk
ZXIgPSBSZWFkU2hhcmVEYXRhQXN5bmM6OmNyZWF0ZSgqdGhpcywgY29udGV4dCk7CisgICAgICAg
IG1fbG9hZGVyLT5zdGFydChtX3NoYXJlRGF0YSk7CisgICAgICAgIAorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBmcmFt
ZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgY29tcGxldGVkKSB7CiAgICAgICAgIGlmIChjb21wbGV0
ZWQpIHsKQEAgLTE1OSw2ICsxNzcsMjUgQEAgdm9pZCBOYXZpZ2F0b3I6OnNoYXJlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSwgUmUKICAgICB9
KTsKIH0KIAordm9pZCBOYXZpZ2F0b3I6OmZpbmlzaGVkTG9hZChFeGNlcHRpb25Pcjx2b2lkPiBy
ZXQpCit7CisgICAgYXV0byBwcm9taXNlID0gV1RGTW92ZSh0aGlzLT5tX3Byb21pc2UpOworICAg
IAorICAgIGlmIChyZXQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJldC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBmcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS5zaG93U2hhcmVTaGVldChtX3NoYXJlRGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRlZCkgeworICAgICAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnQg
ZHVlIHRvIGNhbmNlbGxhdGlvbiBvZiBzaGFyZS4iX3MgfSk7CisgICAgfSk7Cit9CisKIERPTVBs
dWdpbkFycmF5JiBOYXZpZ2F0b3I6OnBsdWdpbnMoKQogewogICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4
YTg4NjQ3ZjgyZGQuLmY0YTZjY2U2OWJiY2JlNGY5Y2M2ODY4ZGE1ZTc0Njg5MjUzMDcyOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERP
TU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7
CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUmVhZFNoYXJlRGF0YUFzeW5jOwogCiBj
bGFzcyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpA
QCAtNDksNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGNhblNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURh
dGEmKTsKICAgICB2b2lkIHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFy
ZURhdGEmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZChF
eGNlcHRpb25Pcjx2b2lkPiByZXQpOwogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYm9vbCBzdGFuZGFsb25lKCkgY29uc3Q7CkBAIC02Myw2ICs2NywxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKKyAgICBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIG1fc2hhcmVEYXRh
OworICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBSZWZQdHI8UmVh
ZFNoYXJlRGF0YUFzeW5jPiBtX2xvYWRlcjsKKyAgICAKICAgICBleHBsaWNpdCBOYXZpZ2F0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRvdyYpOwogCiAgICAgbXV0YWJsZSBSZWZQ
dHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVhZFNo
YXJlRGF0YUFzeW5jLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTg4MjAzNDRlN2VlMTJlMzhjNWE3NThjMDdk
OTgyNTc3NGI3MDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFk
U2hhcmVEYXRhQXN5bmMuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8vIENvcHlyaWdodCDCqSAyMDIw
IF9fX09SR0FOSVpBVElPTk5BTUVfX18gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZWFkU2hhcmVEYXRhQXN5bmMuaHBwIgorCisjaW5jbHVkZSAi
RmlsZVJlYWRlckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVhZFNo
YXJlRGF0YUFzeW5jOjpyZWFkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgQmxvYiYgYmxvYikKK3sKKyAgICBtX2Jsb2IgPSAmYmxvYjsKKworICAgIG1fbG9hZGVyID0g
bWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlciwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAg
ICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOworICAgIG1fbG9hZGVyLT5z
dGFydCgmY29udGV4dCwgYmxvYik7Cit9CisKK1JlYWRTaGFyZURhdGFBc3luYzo6UmVhZFNoYXJl
RGF0YUFzeW5jKE5hdmlnYXRvciYgY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQorICAgIDogbV9jbGllbnQoJmNsaWVudCkKKyAgICAsIG1fY29udGV4dCgmY29udGV4dCkK
KyAgICAsIG1fZG9uZVNvRmFyKDApCit7CisgICAgCit9CisKK1JlYWRTaGFyZURhdGFBc3luYzo6
flJlYWRTaGFyZURhdGFBc3luYygpCit7CisgICAgbV9jbGllbnQgPSBudWxscHRyOworICAgIG1f
c2hhcmVEYXRhID0gbnVsbHB0cjsKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworICAgIAorfQor
Cit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6c3RhcnQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYg
c2hhcmVEYXRhKQoreworICAgIG1fc2hhcmVEYXRhID0gJnNoYXJlRGF0YTsKKyAgICByZWFkSW50
ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLT5zaGFyZURhdGEuZmlsZXNbbV9kb25lU29G
YXJdKTsKKyAgICAKKyAgICBtX2N1cnJlbnRGaWxlTG9hZCA9IG1fc2hhcmVEYXRhLT5zaGFyZURh
dGEuZmlsZXNbbV9kb25lU29GYXJdLT5uYW1lKCk7CisgICAgbV9kb25lU29GYXIgKz0gMTsKKyAg
ICBtX3NoYXJlRGF0YS0+c2hhcmVEYXRhLmZpbGVzLnJlc2VydmVDYXBhY2l0eShtX3NoYXJlRGF0
YS0+c2hhcmVEYXRhLmZpbGVzLnNpemUoKSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICAKKyAgICBSYXdGaWxlIGZpbGU7CisgICAgZmls
ZS5maWxlTmFtZSA9IG1fY3VycmVudEZpbGVMb2FkOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJh
eUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5m
aWxlRGF0YSA9IFdURk1vdmUoc2hhcmVkQnVmZmVyKTsKKyAgICBtX3NoYXJlRGF0YS0+ZmlsZXMu
YXBwZW5kKFdURk1vdmUoZmlsZSkpOworICAgIAorICAgIGlmIChtX3NoYXJlRGF0YS0+c2hhcmVE
YXRhLmZpbGVzLnNpemUoKSAhPSBtX2RvbmVTb0ZhcikgeworICAgICAgICByZWFkSW50ZXJuYWwo
Km1fY29udGV4dCwgKm1fc2hhcmVEYXRhLT5zaGFyZURhdGEuZmlsZXNbbV9kb25lU29GYXJdKTsK
KyAgICAgICAgbV9jdXJyZW50RmlsZUxvYWQgPSBtX3NoYXJlRGF0YS0+c2hhcmVEYXRhLmZpbGVz
W21fZG9uZVNvRmFyXS0+bmFtZSgpOworICAgICAgICBtX2RvbmVTb0ZhciArPSAxOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fY2xpZW50LT5maW5pc2hlZExvYWQoeyB9KTsK
KworfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkUmVjZWl2ZURhdGEoKQoreworICAg
IAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkU3RhcnRMb2FkaW5nKCkKK3sKKyAg
ICAKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwoaW50IGVycm9yQ29kZSkK
K3sKKyAgICBlcnJvckNvZGUgPSAxOworICAgIG1fY2xpZW50LT5maW5pc2hlZExvYWQoRXhjZXB0
aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0IGR1ZSB0byBmaWxlIHJlYWQgZXJyb3IuIl9zIH0pOwor
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMu
aHBwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5NmMyZGE4Y2VjMjk5YTIxNDA1NjAyYWQ2MTZhM2QzZWEzZWJhNjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5ocHAKQEAgLTAs
MCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFUSU9OTkFNRV9fXyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorI3ByYWdtYSBvbmNlCisjaWZuZGVmIFJlYWRTaGFyZURhdGFB
c3luY19ocHAKKyNkZWZpbmUgUmVhZFNoYXJlRGF0YUFzeW5jX2hwcAorCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVSZWFk
ZXJMb2FkZXI7CitzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFJlYWRTaGFyZURhdGFBc3luYzogcHJpdmF0ZSBGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkU2hhcmVEYXRhQXN5bmM+
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhZFNoYXJlRGF0YUFzeW5jPiBjcmVhdGUoTmF2
aWdhdG9yJiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVhZFNoYXJlRGF0YUFzeW5jKGNsaWVudCwgY29udGV4dCkpOyB9Cisg
ICAgCisgICAgflJlYWRTaGFyZURhdGFBc3luYygpOworICAgIHZvaWQgc3RhcnQoU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYpOworICAgIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFkU2hhcmVE
YXRhQXN5bmMoTmF2aWdhdG9yJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZvaWQg
cmVhZEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iJik7CisgICAgdm9pZCBk
aWRTdGFydExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgZmluYWw7
CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKGlu
dCBlcnJvckNvZGUpIGZpbmFsOworICAgIAorICAgIE5hdmlnYXRvciogbV9jbGllbnQ7CisgICAg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCogbV9zaGFyZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAgU3RyaW5n
IG1fY3VycmVudEZpbGVMb2FkOworICAgIHNpemVfdCBtX2RvbmVTb0ZhciA9IDA7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworICAgIAorfTsKKworfQor
CisKKyNlbmRpZiAvKiBSZWFkU2hhcmVEYXRhQXN5bmNfaHBwICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaAppbmRleCA1YzM5MDdjMTA3NTgwNDlkODg3YzA0NjMxZGI0ZjljMDNmZjFhZjc5Li5mZWU2
Yjk5ZTNmYTVlMDQ4ZTZiMThhMDQ5YjQyZGE2NGFjYmYzMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAjaW5jbHVkZSAiRmlsZS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTAgKzM2LDE2IEBAIHN0cnVjdCBTaGFyZURhdGEgewog
ICAgIFN0cmluZyB1cmw7CiAgICAgVmVjdG9yPFJlZlB0cjxGaWxlPj4gZmlsZXM7CiB9OworCitz
dHJ1Y3QgUmF3RmlsZSB7CisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGZpbGVEYXRhOworfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJM
IHsKICAgICBTaGFyZURhdGEgc2hhcmVEYXRhOwogICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAg
IFZlY3RvcjxSYXdGaWxlPiBmaWxlczsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYzZhYTZjYTg5MzRiZjZkMWI5
MjU2Mjk4ODQ1ZjkyOTYzZWRlZDA5Li42ZDQxN2Q1M2M4YzNhY2ZhMmE0ZGVhZmRkNjY1YTFhODQy
YWVkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5nUmVnaW9ucy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CkBAIC0yMDEzLDYgKzIw
MTQsMzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZpbGVDaG9vc2VyU2V0dGluZ3M+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgRmlsZUNob29zZXJTZXQKIAogICAgIHJldHVybiB0cnVlOwogfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFZlY3RvcjxSYXdGaWxlPiYgZmlsZXMpCit7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZmlsZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGZpbGUg
OiBmaWxlcykgeworICAgICAgICBlbmNvZGVyIDw8IGZpbGUuZmlsZU5hbWU7CisgICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBmaWxlLmZpbGVEYXRhLmdldCgpKTsKKyAgICB9Cit9
CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgVmVjdG9yPFJhd0ZpbGU+JiBmaWxlcykKK3sKKyAgICB1aW50NjRfdCBkYXRhU2l6
ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZmlsZXMucmVzaXplKGRhdGFTaXplKTsKKyAgICBmb3IgKGF1dG8mIGZpbGUg
OiBmaWxlcykgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbGUuZmlsZU5hbWUpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgZmlsZS5maWxlRGF0YSk7CisKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAgICAg
CiB2b2lkIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNoYXJlRGF0YSYgc2V0dGluZ3MpCiB7CkBAIC0yMDM2LDYgKzIwNjIsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTaGFyZQogewogICAgIGVuY29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRh
OwogICAgIGVuY29kZXIgPDwgc2V0dGluZ3MudXJsOworICAgIGVuY29kZXIgPDwgc2V0dGluZ3Mu
ZmlsZXM7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdz
KQpAQCAtMjA0NCw2ICsyMDcxLDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MudXJsKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MuZmls
ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOGY0ODc2MGRm
NmRkYWMwZGM0ZDVjZWYxNzNlYTRhMjE2ZTg0ZjAxNy4uYjlkZjY3MTAyYzE1YzY0Mzc4MDUwMTli
YzM1MTI3ZDliYmNlNGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTEyNCw3ICsxMjQsOSBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsK
IHN0cnVjdCBGb250QXR0cmlidXRlczsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogc3Ry
dWN0IFNoYXJlRGF0YTsKK2NsYXNzIEZpbGU7CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVS
TDsKK3N0cnVjdCBSYXdGaWxlOwogc3RydWN0IExlbmd0aDsKIHN0cnVjdCBHcmFtbWFyRGV0YWls
Owogc3RydWN0IE1pbWVDbGFzc0luZm87CkBAIC01NTMsNiArNTU1LDExIEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAg
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5n
cyYpOwogfTsKICAgICAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8VmVjdG9yPFdl
YkNvcmU6OlJhd0ZpbGU+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxlPiYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTaGFyZURhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YSYpOwogICAgIHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2hhcmVEYXRhJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkZmJjNWFlYzIxYWY4NWIxY2FiNjg0MGEwY2VmMzI4YjY1NzQ1YjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUuaApA
QCAtMCwwICsxLDE2IEBACisvLyBDb3B5cmlnaHQgwqkgMjAyMCBfX19PUkdBTklaQVRJT05OQU1F
X19fIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKworI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisK
K0BpbnRlcmZhY2UgV0tTaGFyZWFibGVGaWxlV3JpdGUgOiBOU09iamVjdAorCisrKEJPT0wpcmVt
b3ZlRmlsZURpcmVjdG9yeUZvclNoYXJpbmc7CisKKysoTlNVUkwgKil3cml0ZUZpbGVUb1NoYXJl
YWJsZVVSTDogKE5TU3RyaW5nICopZmlsZU5hbWUgZGF0YTooTlNEYXRhICopIGZpbGVEYXRhOwor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmODY2Yjlh
NjU2NDZlOTQyYzM0ZTI5M2U2NmYwNDEyYzcwZmI3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUubW0KQEAgLTAsMCAr
MSwxMzUgQEAKKy8vIENvcHlyaWdodCDCqSAyMDIwIF9fX09SR0FOSVpBVElPTk5BTUVfX18gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNoYXJl
YWJsZUZpbGVXcml0ZS5oIgorCisjaW1wb3J0ICJRdWFyYW50aW5lU1BJLmgiCisKKyNpbXBvcnQg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5o
PgorCitAaW1wbGVtZW50YXRpb24gV0tTaGFyZWFibGVGaWxlV3JpdGUKKworKyhOU1N0cmluZyAq
KWdldFNoYXJpbmdEaXJlY3RvcnlQYXRoIHsKKyAgICBOU0FycmF5ICpwYXRocyA9IE5TU2VhcmNo
UGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TRG9jdW1lbnREaXJlY3RvcnksIE5TVXNlckRv
bWFpbk1hc2ssIFlFUyk7CisgICAgaWYgKCFwYXRocyB8fCAhW3BhdGhzIGZpcnN0T2JqZWN0XSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU1N0cmluZyAqZG9jdW1lbnRzRGlyZWN0
b3J5ID0gW3BhdGhzIG9iamVjdEF0SW5kZXg6MF07IC8vIEdldCBkb2N1bWVudHMgZm9sZGVyCisg
ICAgTlNTdHJpbmcgKmRhdGFQYXRoID0gW2RvY3VtZW50c0RpcmVjdG9yeSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCIvV0tGaWxlU2hhcmUiXTsKKyAgICAKKyAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpkYXRhUGF0aF0pIHsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6ZGF0YVBhdGggd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBkYXRh
UGF0aDsKK30KKworKyhOU1N0cmluZyAqKWdldEZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nIHsKKyAg
ICBOU1N0cmluZyAqcmFuZG9tRGlyZWN0b3J5ID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
OworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hh
cmluZ0RpcmVjdG9yeVBhdGhdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lQCIsIHJhbmRvbURpcmVjdG9yeV1dOworICAgIGlmICgh
ZGF0YVBhdGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6ZGF0YVBhdGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gZGF0YVBhdGg7
Cit9CisKKysoQk9PTClyZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZyB7CisgICAgTlNTdHJp
bmcgKmRhdGFQYXRoID0gW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGdldFNoYXJpbmdEaXJlY3RvcnlQ
YXRoXTsKKyAgICBpZiAoIWRhdGFQYXRoKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0
YVBhdGhdKQorICAgICAgICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBy
ZW1vdmVJdGVtQXRQYXRoOiBkYXRhUGF0aCBlcnJvcjpuaWxdOworICAgIHJldHVybiBZRVM7Cit9
CisKKyNpZiBQTEFURk9STShNQUMpCisrIChCT09MKXNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZv
ckZpbGVQYXRoOihOU1N0cmluZyAqKWZpbGVQYXRoCit7CisgICAgTlNVUkwgKmZpbGVVUkwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVQYXRoXTsKKworICAgIC8vIFdvcmthcm91bmQgPHJk
YXI6Ly9wcm9ibGVtLzIxNzM1NDEyPjogTlNVUkxEb3dubG9hZCB3aWxsIGF1dG9tYXRpY2FsbHkg
YXR0YWNoIE5TVVJMUXVhcmFudGluZVByb3BlcnRpZXMKKyAgICAvLyB0byBmaWxlcyB3ZSBkb3du
bG9hZCBpZiB0aGV5IGFyZSBhbHJlYWR5IHF1YXJhbnRpbmVkLiBUaGlzIGFkZHMgYSBxdWFyYW50
aW5lIGhpc3RvcnkgaXRlbSB0aGF0IHRoZSBjb2RlCisgICAgLy8gYmVsb3cgd2lsbCBzaGFkb3cu
IFNpbmNlIFNhZmFyaSBuZWVkcyB0byBiZSBhYmxlIHRvIHJlbW92ZSBhbGwgdHJhY2VzIG9mIGRv
d25sb2FkIGhpc3RvcnksIHdlIG5lZWQgdG8KKyAgICAvLyBkZWxldGUgdGhhdCBlbnRyeSBiZWZv
cmUgb3VycyByZW5kZXJzIGl0IGluYWNjZXNzaWJsZS4KKworICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnF1YXJhbnRpbmVQcm9wZXJ0aWVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XTsKKyAgICBxdWFyYW50aW5lUHJvcGVydGllc1soX19icmlkZ2UgTlNTdHJpbmcgKilrTFNR
dWFyYW50aW5lVHlwZUtleV0gPSAoX19icmlkZ2UgTlNTdHJpbmcgKilrTFNRdWFyYW50aW5lVHlw
ZVdlYkRvd25sb2FkOworICAgIHF1YXJhbnRpbmVQcm9wZXJ0aWVzWyhfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtMU1F1YXJhbnRpbmVBZ2VudEJ1bmRsZUlkZW50aWZpZXJLZXldID0gV2ViQ29yZTo6YXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisKKworICAgIE5TRXJyb3IgKmVycm9yOworICAg
IGlmICghW2ZpbGVVUkwgc2V0UmVzb3VyY2VWYWx1ZTpxdWFyYW50aW5lUHJvcGVydGllcyBmb3JL
ZXk6TlNVUkxRdWFyYW50aW5lUHJvcGVydGllc0tleSBlcnJvcjomZXJyb3JdKSB7CisgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IHNldCBxdWFyYW50aW5lIGluZm9ybWF0aW9uIGZvciBmaWxl
IHBhdGg6ICVAOiAlQCIsIGZpbGVQYXRoLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAg
ICB9CisKKyAgICAvLyBXaGV0aGVyIHRoZSBmaWxlIHdhcyBkb3dubG9hZGVkIGJ5IHNhbmRib3hl
ZCBXZWJQcm9jZXNzIG9yIG5vdCwgTFNTZXRJdGVtQXR0cmlidXRlIHJlc2V0cyB0aGUgZmxhZ3Mg
dG8gMCAoYWR2aXNvcnkgUVROX0ZMQUdfRE9XTkxPQUQsCisgICAgLy8gd2hpY2ggY2FuIGJlIHRo
ZW4gcmVtb3ZlZCBieSBXZWJQcm9jZXNzKS4gUmVwbGFjZSB0aGUgZmxhZ3Mgd2l0aCBzYW5kYm94
IHF1YXJhbnRpbmUgb25lcywgd2hpY2ggY2Fubm90IGJlIHJlbW92ZWQgYnkgc2FuZGJveGVkIHBy
b2Nlc3Nlcy4KKyAgICByZXR1cm4gW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGFwcGx5UXVhcmFudGlu
ZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRoOmZpbGVQYXRoXTsKK30KKworKyAo
Qk9PTClhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDoo
TlNTdHJpbmcgKilmaWxlUGF0aAoreworICAgIHF0bl9maWxlX3QgZnEgPSBxdG5fZmlsZV9hbGxv
YygpOworICAgIGludCBxdWFyYW50aW5lRXJyb3IgPSBxdG5fZmlsZV9pbml0X3dpdGhfcGF0aChm
cSwgZmlsZVBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKKyAgICBpZiAocXVhcmFudGlu
ZUVycm9yKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHJldHJpZXZlIHF1YXJhbnRp
bmUgZmxhZ3MgZm9yIGZpbGUgcGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9y
KTsKKyAgICAgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9
CisKKyAgICBxdWFyYW50aW5lRXJyb3IgPSBxdG5fZmlsZV9zZXRfZmxhZ3MoZnEsIFFUTl9GTEFH
X1NBTkRCT1ggfCBRVE5fRkxBR19ET1dOTE9BRCk7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikg
eworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBmbGFncyBpbiBx
dG5fZmlsZV90IHN0cnVjdHVyZSBmb3IgZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFy
YW50aW5lRXJyb3IpOworICAgICAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0dXJu
IE5POworICAgIH0KKworICAgIHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2FwcGx5X3RvX3Bh
dGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1YXJh
bnRpbmVFcnJvcikKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYXBwbHkgcXVhcmFudGlu
ZSBmbGFncyB0byBmaWxlIHBhdGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7
CisKKyAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKworICAgIHJldHVybiBZRVM7Cit9CisjZW5kaWYK
KworKyhOU1N0cmluZyAqKWNyZWF0ZUZpbGVuYW1lOiAoTlNTdHJpbmcgKilmaWxlTmFtZSB7Cisg
ICAgTlNTdHJpbmcgKmdldFRlbXBEaXJlY3RvcnkgPSBbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0
RmlsZURpcmVjdG9yeUZvclNoYXJpbmddOworICAgIGlmIChnZXRUZW1wRGlyZWN0b3J5ID09IG5p
bCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBOU1N0cmluZyAqc2FuaXRpemVkRmlsZW5hbWUg
PSBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFt
ZShmaWxlTmFtZSk7CisgICAgTlNTdHJpbmcgKmZpbGVOYW1lQ29uY2F0ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlQC8lQCIsIGdldFRlbXBEaXJlY3RvcnksIHNhbml0aXplZEZpbGVu
YW1lXTsKKyAgICByZXR1cm4gZmlsZU5hbWVDb25jYXQ7Cit9CisKKysoTlNVUkwgKil3cml0ZUZp
bGVUb1NoYXJlYWJsZVVSTDogKE5TU3RyaW5nICopZmlsZU5hbWUgZGF0YTooTlNEYXRhICopIGZp
bGVEYXRhIHsKKyAgICBOU1N0cmluZyAqZmlsZSA9IFtXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVh
dGVGaWxlbmFtZTogZmlsZU5hbWVdOworICAgIGlmICghZmlsZU5hbWUpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgTlNVUkwgKmZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OmZpbGVdOworICAgIAorICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIFtmaWxlRGF0YSB3
cml0ZVRvVVJMOmZpbGVVUkwgb3B0aW9uczpOU0RhdGFXcml0aW5nQXRvbWljIGVycm9yOiAmZXJy
b3JdOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNpZiBQTEFURk9STShN
QUMpCisgICAgaWYgKCFbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFudGluZUluZm9ybWF0
aW9uRm9yRmlsZVBhdGg6ZmlsZV0pCisgICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYKKyAgICBy
ZXR1cm4gZmlsZVVSTDsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLU2hhcmVTaGVldC5tbQppbmRleCBiMDI0MzNjMzAzYTZmOTM5ZGI0MmE3ZmM0MDQ5ZTllYWM1
NDFiMDA2Li41ZTcwN2YxZjQ5ZjQ2MmEzNmRmOWNiYzYyZDlmMWRjZmRiZmU3MTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQogCisjaW1wb3J0ICJTaGFyZWFibGVGaWxlV3JpdGUuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBv
cnQgPFdlYkNvcmUvU2hhcmVEYXRhLmg+CkBAIC0xMDYsNiArMTA3LDE2IEBAIC0gKHZvaWQpcHJl
c2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJM
ICYpZGF0YSBpblJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgZm9yIChhdXRv
IGZpbGUgOiBkYXRhLmZpbGVzKSB7CisgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1dLU2hhcmVh
YmxlRmlsZVdyaXRlIHdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOmZpbGUuZmlsZU5hbWUgZGF0YTpm
aWxlLmZpbGVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgICAgIGlmICghZmlsZVVS
TCkgeworICAgICAgICAgICAgW3NlbGYgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6Tk9dOworICAg
ICAgICAgICAgW3NlbGYgZGlzbWlzc107CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgW3NoYXJlRGF0YUFycmF5IGFkZE9iamVjdDpmaWxlVVJMXTsKKyAgICB9CisgICAg
CiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAg
ICAgCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTgwLDYgKzE5MSw3IEBAIC0gKHZvaWQpc2hhcmlu
Z1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFyZUl0ZW1z
OihOU0FycmF5CiAKIC0gKHZvaWQpX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6KEJPT0wpc3VjY2Vz
cwogeworICAgIFtXS1NoYXJlYWJsZUZpbGVXcml0ZSByZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hh
cmluZ107CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoX2NvbXBsZXRpb25I
YW5kbGVyKTsKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZDA3MDllNGNjY2MzOTUzYTI5ODFjODRjYjUxNzJjYzc5OGYwZDY5
My4uZjg0YTRlNTI4OTYwODgzOGM3YjdhOGIzMWFkYjZjNjdjOTE5MDc5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjEsNiArMjYx
LDggQEAKIAkJMUE3QzBERjcxQjdEMUYxMDAwQTlCODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBN0MwREY1
MUI3RDFGMTAwMEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE3RTM3NzUxOEU0QTMzQTAwM0Qw
RkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBN0UzNzc0MThFNEEzM0EwMDNEMEZGRiAvKiBXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OwogCQkxQTdFMzc3OTE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTdFMzc3NzE4
RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQkxQTgwRjFFRjI0MjJFOTk5MDA3MDY0ODMgLyog
U2hhcmVhYmxlRmlsZVdyaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTgwRjFFRDI0MjJFOTk5MDA3MDY0ODMgLyogU2hhcmVhYmxlRmlsZVdyaXRl
LmggKi87IH07CisJCTFBODBGMUYwMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFibGVGaWxlV3Jp
dGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTgw
RjFFRTI0MjJFOTk5MDA3MDY0ODMgLyogU2hhcmVhYmxlRmlsZVdyaXRlLm1tICovOyB9OwogCQkx
QTgxQjM4MTE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MUIzN0YxOEJENjZBRDAw
MDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTgxQjM4NTE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dL
VmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTgxQjM4NDE4QkQ2NzNBMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExp
bmtTdG9yZUludGVybmFsLmggKi87IH07CiAJCTFBODVFNDcyMUUzMDNGMzcwMDkxNDU5OSAvKiBX
ZWJLaXQuYXBpbm90ZXMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTg1RTQ3MDFFMzAzRjI0MDA5MTQ1OTkgLyogV2ViS2l0LmFwaW5vdGVzICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTI0NDksNiArMjQ1MSw4
IEBACiAJCTFBN0UzNzc0MThFNEEzM0EwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE3RTM3NzYxOEU0QTRGRTAwM0Qw
RkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUE3RTM3NzcxOEU0QTRGRTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NjcmlwdE1lc3NhZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUE4MEYxRUQyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZp
bGVXcml0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWFibGVGaWxlV3JpdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE4MEYxRUUyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJs
ZUZpbGVXcml0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlYWJsZUZpbGVXcml0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4MUIzN0UxOEJENjZBRDAwMDdGREFD
IC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBfV0tWaXNpdGVkTGlua1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tWaXNpdGVkTGlua1N0b3JlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRBQyAv
KiBfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02Mjk4LDYgKzYzMDIsOCBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3
RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcxOTZC
MzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2MTk2
QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJMUE4MEYxRUQy
NDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZpbGVXcml0ZS5oICovLAorCQkJCTFBODBGMUVF
MjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFibGVGaWxlV3JpdGUubW0gKi8sCiAJCQkJMzE1NzEz
NUMyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gKi8s
CiAJCQkJMkQwQ0Y2NEMyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0NvbnRyb2xsZXIu
aCAqLywKIAkJCQkyRDBDRjY0QjIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJv
bGxlci5tbSAqLywKQEAgLTExMDA3LDYgKzExMDEzLDcgQEAKIAkJCQkxQTAwMkQ0OTE5NkIzNDVE
MDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJF
QjZERjIyRkJCMTZCMDAyNjk4NjcgLyogU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNjQyMEU1MTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFBODBGMUVGMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFi
bGVGaWxlV3JpdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjE3NDYxMTY0QzIwRTMwMDM3QTVD
MSAvKiBTaGFyZWFibGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNEJFRDUxMjA4
OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q0QjRE
OUQxRTc2NUUwMDAwRDI3MDkyIC8qIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyNjkzLDYgKzEyNzAwLDcgQEAKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2
NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MURFN0M2QzIyMjc4RjFFMDA1MzJCNjUgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4NzIxMkI2QUIxMDBGNDkzRkQgLyogU2hhcmVh
YmxlQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBODBGMUYwMjQyMkU5OTkwMDcwNjQ4
MyAvKiBTaGFyZWFibGVGaWxlV3JpdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMUFEQUZCNjIz
NjhFNkE4MDA5Q0I3NzYgLyogU2hhcmVkTWVtb3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3
NUIxQkI5MjNDRTlDMEIwMDIwNjM5QSAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZjk1YzJjM2RmMjk0NTk2MGQ5NGQwZmI2MzVlNTI3ZjU2MTUxNDEwMS4uYTE4MjJhODVkMTc0
ZWRmNDEyNzRhNmE2ZmFmMTk0YjI1ODY2NTQ0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCB0byBubyBsb25nZXIgdXNlIHVy
bCBvZiBpbWFnZS4KKworICAgICAgICAqIGZhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMu
aHRtbDoKKwogMjAyMC0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCiAgICAgICAgIHN2Zy9jdXN0b20vYW5pbWF0ZS1pbml0aWFsLXBhdXNlLXVucGF1
c2UuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYjVlYTcw
Y2UzOTQwMDA0NDRiYmM3OWRhMjY1ODAyMWEwMWQwYzk5Mi4uYzFiZjdjYTQ5ZGJhZWFlOTkwMWM4
YWEwNDQxNDM5MDI1ZGExNTA1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVz
dCBleHBlY3RhdGlvbnMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUuaHR0cHMtZXhwZWN0
ZWQudHh0OgorCiAyMDIwLTAzLTE4ICBGcmFuayBZYW5nICA8Z3Vvd2VpX3lhbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDU1MgV3JpdGluZyBNb2Rlc10gSW1wb3J0IGNzcy9jc3Mtd3JpdGluZy1t
b2RlcyBmcm9tIFdQVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hh
cmUtd2l0aC1maWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0
aC1maWxlcy5odG1sCmluZGV4IDg1NmVkMjQ0MTg4NzE4OGRiNjQ5OGQzZGIxNzA4MDcxNDkwZjVj
ODYuLjliODkwZDRjMWIxMzQ3ZDA5Y2I2MWNhMjYyNDIzMmQzNTBjMDY5OTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKQEAgLTIsNiAr
Miw3IEBACiAKIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwt
c2NhbGU9NSwgd2lkdGg9ZGV2aWNlLXdpZHRoIj4KKwogPGhlYWQ+CiAKICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CkBAIC0xNiwxMCArMTcs
MTIgQEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ2hlbGxvJ10sICdoZWxsby50eHQnLCB7dHlw
ZTondGV4dC9wbGFpbid9KTsKKworICAgICAgICAgICAgdmFyIGJsb2IgPSB0aGlzLnJlc3BvbnNl
OworICAgICAgICAgICAgY29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ1RoaXMgaXMgYSB0ZXh0
IGZpbGUnXSwgJ1RleHRGaWxlLnR4dCcsIHt0eXBlOid0ZXh0L2h0bWwnfSk7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAic2Fk
ZiIsIGZpbGVzOiBbdGV4dEZpbGVdfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgIHdyaXRlKCJQQVNTOiBTaGFyZSBzaGVldCBpbnZva2VkLiIpOworICAgICAgICAgICAg
bmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAiVGhpcyBpcyBhIHRleHQgZmlsZSIsIGZpbGVzOiBbdGV4
dEZpbGVdfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlBBU1M6
IFNoYXJlIHNoZWV0IGludm9rZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH0pOyAgICAKICAgICAgICAgICAgIH0pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMu
aHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGU2OGIzMDdmMDM4NWJjMTkzMjdlZmU1MWJhNDYyZDMx
OGM3MzdkMDUuLjJkOTljOTIwOWUxYTkxMGQ2Y2U3ZWE2YWE5ZWRkNDFlNzc0NThlZTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNo
YXJlL2NhblNoYXJlLWZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiAKIFBBU1MgY2FuU2hhcmUgd2l0aCBz
aW5nbGUgZmlsZSAKLUZBSUwgY2FuU2hhcmUgd2l0aCBlbXB0eSBmaWxlIGxpc3QgbmF2aWdhdG9y
LmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7Zmls
ZXM6IFtdfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNo
YXJlIHdpdGggc2luZ2xlIGZpbGUgbGlzdCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHtmaWxlczogW2VtcHR5RmlsZV19KScsICdu
YXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBmaWxl
IGxpc3QgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRv
ci5jYW5TaGFyZSh7ZmlsZXM6IFt0ZXh0RmlsZSwgZW1wdHlGaWxlXX0pJywgJ25hdmlnYXRvci5j
YW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIHJlcGVhdGVkIGZpbGUg
bmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5T
aGFyZSh7ZmlsZXM6IFt0ZXh0RmlsZSwgZW1wdHlGaWxlLCB0ZXh0RmlsZV19KScsICduYXZpZ2F0
b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBmaWxlIGxpc3Qg
YW5kIHVybCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdh
dG9yLmNhblNoYXJlKHt1cmw6ICdodHRwczovL2V4YW1wbGUuY29tLycsIGZpbGVzOiBbdGV4dEZp
bGUsIGVtcHR5RmlsZV19KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKK1BB
U1MgY2FuU2hhcmUgd2l0aCBlbXB0eSBmaWxlIGxpc3QgCitGQUlMIGNhblNoYXJlIHdpdGggc2lu
Z2xlIGZpbGUgbGlzdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
K0ZBSUwgY2FuU2hhcmUgd2l0aCBmaWxlIGxpc3QgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1
ZSBidXQgZ290IGZhbHNlCitGQUlMIGNhblNoYXJlIHdpdGggcmVwZWF0ZWQgZmlsZSBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1MgY2FuU2hhcmUgd2l0aCBm
aWxlIGxpc3QgYW5kIHVybCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUv
Y2FuU2hhcmUuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGNjNmE0NDNiZTBhYjFmM2E4M2Y2YTY3
ZDEyZjg0NWEwZmI2NTk2YjAuLjNkMWZiNTEzNmFkNmI2MTUwOWE2ZWVhMDZlYTQ3MDljYzQ2YjY0
YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViLXNoYXJlL2NhblNoYXJlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTEsMTkgKzEsMTkgQEAKIAotRkFJTCBjYW5TaGFyZSB3aXRoIG5v
IGFyZ3VtZW50cyAoc2FtZSBhcyBlbXB0eSBkaWN0aW9uYXJ5KSBuYXZpZ2F0b3IuY2FuU2hhcmUg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKCknLCAnbmF2aWdhdG9y
LmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggYW4gZW1wdHkgZGlj
dGlvbmFyeSBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdh
dG9yLmNhblNoYXJlKHt9KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZB
SUwgY2FuU2hhcmUgd2l0aCBhIHVuZGVmaW5lZCBhcmd1bWVudCAoc2FtZSBhcyBlbXB0eSBkaWN0
aW9uYXJ5KSBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdh
dG9yLmNhblNoYXJlKHVuZGVmaW5lZCknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmlu
ZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggYSBudWxsIGFyZ3VtZW50IChzYW1lIGFzIGVtcHR5IGRp
Y3Rpb25hcnkpIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZp
Z2F0b3IuY2FuU2hhcmUobnVsbCknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIGNhblNoYXJlIHdpdGggYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgb25seSBzdXJwbHVz
IGZpZWxkcyBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdh
dG9yLmNhblNoYXJlKHt1bnVzZWQ6ICd1bmV4cGVjdGVkIGZpZWxkJ30pJywgJ25hdmlnYXRvci5j
YW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGFuIGludmFsaWQgVVJM
IG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2Fu
U2hhcmUoe3VybH0pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBj
YW5TaGFyZSB3aXRoIGF0dHJpYnV0ZSB1bmRlZmluZWQgaXMgZXF1aXZhbGVudCB0byBvbWl0dGlu
ZyB0aGUgYXR0cmlidXRlIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICduYXZpZ2F0b3IuY2FuU2hhcmUoe3RpdGxlOiB1bmRlZmluZWR9KScsICduYXZpZ2F0b3IuY2Fu
U2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCB0aXRsZSBuYXZpZ2F0b3Iu
Y2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt0aXRs
ZTogJ3N1YmplY3QnfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlM
IGNhblNoYXJlIHdpdGggdGV4dCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt0ZXh0OiAnYm9keSd9KScsICduYXZpZ2F0b3IuY2Fu
U2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBVUkwgbmF2aWdhdG9yLmNh
blNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dXJsOiAn
aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vc29tZS9wYXRoP3NvbWVfcXVlcnkjc29tZV9mcmFnbWVu
dCd9KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUg
d2l0aCBudWxsIGF0dHJpYnV0ZSBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt0aXRsZTogbnVsbH0pJywgJ25hdmlnYXRvci5jYW5T
aGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIG51bWJlciBuYXZpZ2F0b3Iu
Y2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt0ZXh0
OiAxMjN9KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hh
cmUgd2l0aCBvYmplY3QgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J25hdmlnYXRvci5jYW5TaGFyZSh7dXJsOiB7dG9TdHJpbmcoKSB7IHJldHVybiAnaHR0cHM6Ly9l
eGFtcGxlLmNvbS8nOyB9fX0pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQot
RkFJTCBjYW5TaGFyZSB3aXRoIHVuZXhwZWN0ZWQgZmllbGQgbmF2aWdhdG9yLmNhblNoYXJlIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dGl0bGU6ICdzdWJqZWN0
JywgdGV4dDogJ2JvZHknLCB1cmw6ICdodHRwczovL2V4YW1wbGUuY29tLycsIHVudXNlZDogJ3Vu
ZXhwZWN0ZWQgZmllbGQnfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1G
QUlMIGNhblNoYXJlIHdpdGggZGF0YSBVUkwgbmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dXJsOiAnZGF0YTp0aGUgdXJsJ30pJywg
J25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGVt
cHR5IFVSTCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdh
dG9yLmNhblNoYXJlKHt1cmw6ICcnfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmlu
ZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggVVJMIGhhdmluZyBubyBzY2hlbWUgbmF2aWdhdG9yLmNh
blNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dXJsOiAn
Ly93d3cuZXhhbXBsZS5jb20vc29tZS9wYXRoP3NvbWVfcXVlcnkjc29tZV9mcmFnbWVudCd9KScs
ICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKK1BBU1MgY2FuU2hhcmUgd2l0aCBu
byBhcmd1bWVudHMgKHNhbWUgYXMgZW1wdHkgZGljdGlvbmFyeSkgCitQQVNTIGNhblNoYXJlIHdp
dGggYW4gZW1wdHkgZGljdGlvbmFyeSAKK1BBU1MgY2FuU2hhcmUgd2l0aCBhIHVuZGVmaW5lZCBh
cmd1bWVudCAoc2FtZSBhcyBlbXB0eSBkaWN0aW9uYXJ5KSAKK1BBU1MgY2FuU2hhcmUgd2l0aCBh
IG51bGwgYXJndW1lbnQgKHNhbWUgYXMgZW1wdHkgZGljdGlvbmFyeSkgCitQQVNTIGNhblNoYXJl
IHdpdGggYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgb25seSBzdXJwbHVzIGZpZWxkcyAKK1BBU1Mg
Y2FuU2hhcmUgd2l0aCBhbiBpbnZhbGlkIFVSTCAKK1BBU1MgY2FuU2hhcmUgd2l0aCBhdHRyaWJ1
dGUgdW5kZWZpbmVkIGlzIGVxdWl2YWxlbnQgdG8gb21pdHRpbmcgdGhlIGF0dHJpYnV0ZSAKK1BB
U1MgY2FuU2hhcmUgd2l0aCB0aXRsZSAKK1BBU1MgY2FuU2hhcmUgd2l0aCB0ZXh0IAorUEFTUyBj
YW5TaGFyZSB3aXRoIFVSTCAKK1BBU1MgY2FuU2hhcmUgd2l0aCBudWxsIGF0dHJpYnV0ZSAKK1BB
U1MgY2FuU2hhcmUgd2l0aCBudW1iZXIgCitQQVNTIGNhblNoYXJlIHdpdGggb2JqZWN0IAorUEFT
UyBjYW5TaGFyZSB3aXRoIHVuZXhwZWN0ZWQgZmllbGQgCitQQVNTIGNhblNoYXJlIHdpdGggZGF0
YSBVUkwgCitQQVNTIGNhblNoYXJlIHdpdGggZW1wdHkgVVJMIAorUEFTUyBjYW5TaGFyZSB3aXRo
IFVSTCBoYXZpbmcgbm8gc2NoZW1lIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394009</attachid>
            <date>2020-03-19 13:09:39 -0700</date>
            <delta_ts>2020-03-26 20:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200319130938.patch</filename>
            <type>text/plain</type>
            <size>42873</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY2YzE4OTMxYzViNTg0
NTRlYWNlZGI0ZThkZjFiZGJjMWI3NmZkYy4uM2I2MTg1N2NiNzlmMmZiZDQ3MTY4MTQ0MjIzYjA3
OTlkNjA1MjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0xOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBBdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhOjpkZWNvZGUgc2hvdWxkIGNoZWNrIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4gYmVmb3JlIGFsbG9jYXRpbmcgYnVmZmVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4MDQ4ZmFlYWNjMjAwZDQxZDNmNzAzZWVmZjdjYWNhNzk0ODg1OWQyLi4yMjlkMjYwODFmMzgx
MzNkZWZmMjJmODg3OTg1ZDE4MmEwZGVlNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQWRkIEhUVFAzIGFzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzUz
ZjdlNDkxZDkxMWZhNjk5ODY0YTllOWIxZjRjOWVhY2RmNWU3My4uZWIzZTQwODQwMTI5ODc4MjJi
MzlhZDUwMDAzYjZmNDMzNzY1MThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTkwLDYgKzU5MCw4IEBACiAJCTFBRTk2QThG
MUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBN0YxRDFBMEE4MDAwQjg2NzY4IC8q
IEpTQXBwbGVQYXlTZXNzaW9uLmggKi87IH07CiAJCTFBRTk2QTkxMUQxQTBEREQwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBODExRDFBMEE4MDAwQjg2NzY4
IC8qIEpTQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggKi87IH07CiAJCTFB
RTk2QTkzMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUU5NkE4MzFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0
ZWRFdmVudC5oICovOyB9OworCQkxQUVFNTcxNjI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJl
RGF0YUFzeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBRUU1NzE0MjQwODZGNTkwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICov
OyB9OworCQkxQUVFNTcxNzI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmhw
cCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUU1NzE1
MjQwODZGNUEwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuaHBwICovOyB9OwogCQkxQUVG
NEU2NzE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFRjRFNjYxNzBFMTYwMzAwQUIyNzk5
IC8qIENhY2hlZEZvbnRDbGllbnQuaCAqLzsgfTsKIAkJMUFFRjRFNjkxNzBFMTc0ODAwQUIyNzk5
IC8qIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUVGNEU2ODE3MEUxNzQ4MDBBQjI3OTkgLyogQ2FjaGVkU1ZH
RG9jdW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQUYzMjY3OTBENzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUYzMjY3NzBENzhC
OTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY0ODAsNiArNjQ4Miw4IEBACiAJCTFBRTk2QTg0MUQx
QTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU5NkE4NjFEMUEw
Q0VCMDBCODY3NjggLyogUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFOTZBODcxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1l
bnRNZXJjaGFudFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5
bWVudE1lcmNoYW50U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUVF
NTcxNDI0MDg2RjU5MDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRTaGFyZURhdGFBc3luYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRUU1NzE1MjQwODZGNUEwMDIwMDVENiAvKiBSZWFk
U2hhcmVEYXRhQXN5bmMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IFJl
YWRTaGFyZURhdGFBc3luYy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUY0
RTY2MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRGb250Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZvbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFFRjRFNjgxNzBFMTc0ODAwQUIyNzk5IC8qIENhY2hlZFNWR0RvY3VtZW50
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0RvY3Vt
ZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRjMyNjc3MEQ3OEI5
NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3
Miw2ICsyMDk3Niw4IEBACiAJCQkJRTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NX
YXJtaW5nLmggKi8sCiAJCQkJQ0Q5QTg3RjkyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAg
Ki8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAorCQkJCTFB
RUU1NzE0MjQwODZGNTkwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICovLAorCQkJ
CTFBRUU1NzE1MjQwODZGNUEwMDIwMDVENiAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuaHBwICovLAog
CQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAog
CQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJ
CQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAqLywKQEAg
LTMyMjY2LDYgKzMyMjcyLDcgQEAKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOUM5
QUYxRjU5Q0Y1QjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQUVFNTcxNzI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJl
RGF0YUFzeW5jLmhwcCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1
OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3
OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwOTEsNiArMzQwOTgsNyBAQAogCQkJ
CUUxRUU4QjcwMjQxMkIyQTgwMEU3OTRENiAvKiBQbGF0Zm9ybVhSLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQUVF
NTcxNjI0MDg2RjVCMDAyMDA1RDYgLyogUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxOTI0MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5
MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzUx
MTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFl
NTljMzE5MTRhY2MzNjFlMjc0Li5kNTBkMDY4NzhmODdlN2E2NGM1ZGMzODQzYjZhMGUyODFmNDNl
MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zNywxMiArMzcsMTQgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1ZGUgIlJlYWRTaGFyZURhdGFBc3luYy5ocHAiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZURhdGEu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTExMiw4ICsxMTQsMTIgQEAgYm9vbCBOYXZpZ2F0b3I6OmNhblNoYXJlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSkKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGRhdGEudGl0bGUuaXNOdWxsKCkgJiYgZGF0YS51cmwuaXNOdWxsKCkgJiYgZGF0YS50
ZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpCisgICAg
ICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TSEFSRSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQ3LDgg
KzE1MywyMCBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCisgICAgICAg
IHsgfSwKICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgCisgICAgICAgIG1fc2hhcmVEYXRhID0gV1RGTW92ZShzaGFyZURhdGEpOworICAgICAg
ICBtX3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworICAgICAgICAKKyAgICAgICAgbV9sb2Fk
ZXIgPSBSZWFkU2hhcmVEYXRhQXN5bmM6OmNyZWF0ZSgqdGhpcywgY29udGV4dCk7CisgICAgICAg
IG1fbG9hZGVyLT5zdGFydChtX3NoYXJlRGF0YSk7CisgICAgICAgIAorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBmcmFt
ZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgY29tcGxldGVkKSB7CiAgICAgICAgIGlmIChjb21wbGV0
ZWQpIHsKQEAgLTE1OSw2ICsxNzcsMjUgQEAgdm9pZCBOYXZpZ2F0b3I6OnNoYXJlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSwgUmUKICAgICB9
KTsKIH0KIAordm9pZCBOYXZpZ2F0b3I6OmZpbmlzaGVkTG9hZChFeGNlcHRpb25Pcjx2b2lkPiBy
ZXQpCit7CisgICAgYXV0byBwcm9taXNlID0gV1RGTW92ZSh0aGlzLT5tX3Byb21pc2UpOworICAg
IAorICAgIGlmIChyZXQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJldC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBmcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS5zaG93U2hhcmVTaGVldChtX3NoYXJlRGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRlZCkgeworICAgICAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnQg
ZHVlIHRvIGNhbmNlbGxhdGlvbiBvZiBzaGFyZS4iX3MgfSk7CisgICAgfSk7Cit9CisKIERPTVBs
dWdpbkFycmF5JiBOYXZpZ2F0b3I6OnBsdWdpbnMoKQogewogICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4
YTg4NjQ3ZjgyZGQuLmY0YTZjY2U2OWJiY2JlNGY5Y2M2ODY4ZGE1ZTc0Njg5MjUzMDcyOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3Vw
cGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERP
TU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7
CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUmVhZFNoYXJlRGF0YUFzeW5jOwogCiBj
bGFzcyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpA
QCAtNDksNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGNhblNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURh
dGEmKTsKICAgICB2b2lkIHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFy
ZURhdGEmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZChF
eGNlcHRpb25Pcjx2b2lkPiByZXQpOwogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgYm9vbCBzdGFuZGFsb25lKCkgY29uc3Q7CkBAIC02Myw2ICs2NywxMCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKKyAgICBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIG1fc2hhcmVEYXRh
OworICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBSZWZQdHI8UmVh
ZFNoYXJlRGF0YUFzeW5jPiBtX2xvYWRlcjsKKyAgICAKICAgICBleHBsaWNpdCBOYXZpZ2F0b3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRvdyYpOwogCiAgICAgbXV0YWJsZSBSZWZQ
dHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVhZFNo
YXJlRGF0YUFzeW5jLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTg4MjAzNDRlN2VlMTJlMzhjNWE3NThjMDdk
OTgyNTc3NGI3MDI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFk
U2hhcmVEYXRhQXN5bmMuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8vIENvcHlyaWdodCDCqSAyMDIw
IF9fX09SR0FOSVpBVElPTk5BTUVfX18gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZWFkU2hhcmVEYXRhQXN5bmMuaHBwIgorCisjaW5jbHVkZSAi
RmlsZVJlYWRlckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVhZFNo
YXJlRGF0YUFzeW5jOjpyZWFkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgQmxvYiYgYmxvYikKK3sKKyAgICBtX2Jsb2IgPSAmYmxvYjsKKworICAgIG1fbG9hZGVyID0g
bWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlciwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAg
ICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOworICAgIG1fbG9hZGVyLT5z
dGFydCgmY29udGV4dCwgYmxvYik7Cit9CisKK1JlYWRTaGFyZURhdGFBc3luYzo6UmVhZFNoYXJl
RGF0YUFzeW5jKE5hdmlnYXRvciYgY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQorICAgIDogbV9jbGllbnQoJmNsaWVudCkKKyAgICAsIG1fY29udGV4dCgmY29udGV4dCkK
KyAgICAsIG1fZG9uZVNvRmFyKDApCit7CisgICAgCit9CisKK1JlYWRTaGFyZURhdGFBc3luYzo6
flJlYWRTaGFyZURhdGFBc3luYygpCit7CisgICAgbV9jbGllbnQgPSBudWxscHRyOworICAgIG1f
c2hhcmVEYXRhID0gbnVsbHB0cjsKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworICAgIAorfQor
Cit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6c3RhcnQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYg
c2hhcmVEYXRhKQoreworICAgIG1fc2hhcmVEYXRhID0gJnNoYXJlRGF0YTsKKyAgICByZWFkSW50
ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLT5zaGFyZURhdGEuZmlsZXNbbV9kb25lU29G
YXJdKTsKKyAgICAKKyAgICBtX2N1cnJlbnRGaWxlTG9hZCA9IG1fc2hhcmVEYXRhLT5zaGFyZURh
dGEuZmlsZXNbbV9kb25lU29GYXJdLT5uYW1lKCk7CisgICAgbV9kb25lU29GYXIgKz0gMTsKKyAg
ICBtX3NoYXJlRGF0YS0+c2hhcmVEYXRhLmZpbGVzLnJlc2VydmVDYXBhY2l0eShtX3NoYXJlRGF0
YS0+c2hhcmVEYXRhLmZpbGVzLnNpemUoKSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRGaW5pc2hMb2FkaW5nKCkKK3sKKyAgICAKKyAgICBSYXdGaWxlIGZpbGU7CisgICAgZmls
ZS5maWxlTmFtZSA9IG1fY3VycmVudEZpbGVMb2FkOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBt
X2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJh
eUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5m
aWxlRGF0YSA9IFdURk1vdmUoc2hhcmVkQnVmZmVyKTsKKyAgICBtX3NoYXJlRGF0YS0+ZmlsZXMu
YXBwZW5kKFdURk1vdmUoZmlsZSkpOworICAgIAorICAgIGlmIChtX3NoYXJlRGF0YS0+c2hhcmVE
YXRhLmZpbGVzLnNpemUoKSAhPSBtX2RvbmVTb0ZhcikgeworICAgICAgICByZWFkSW50ZXJuYWwo
Km1fY29udGV4dCwgKm1fc2hhcmVEYXRhLT5zaGFyZURhdGEuZmlsZXNbbV9kb25lU29GYXJdKTsK
KyAgICAgICAgbV9jdXJyZW50RmlsZUxvYWQgPSBtX3NoYXJlRGF0YS0+c2hhcmVEYXRhLmZpbGVz
W21fZG9uZVNvRmFyXS0+bmFtZSgpOworICAgICAgICBtX2RvbmVTb0ZhciArPSAxOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fY2xpZW50LT5maW5pc2hlZExvYWQoeyB9KTsK
KworfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkUmVjZWl2ZURhdGEoKQoreworICAg
IAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkU3RhcnRMb2FkaW5nKCkKK3sKKyAg
ICAKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwoaW50IGVycm9yQ29kZSkK
K3sKKyAgICBlcnJvckNvZGUgPSAxOworICAgIG1fY2xpZW50LT5maW5pc2hlZExvYWQoRXhjZXB0
aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0IGR1ZSB0byBmaWxlIHJlYWQgZXJyb3IuIl9zIH0pOwor
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMu
aHBwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5NmMyZGE4Y2VjMjk5YTIxNDA1NjAyYWQ2MTZhM2QzZWEzZWJhNjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5ocHAKQEAgLTAs
MCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFUSU9OTkFNRV9fXyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorI3ByYWdtYSBvbmNlCisjaWZuZGVmIFJlYWRTaGFyZURhdGFB
c3luY19ocHAKKyNkZWZpbmUgUmVhZFNoYXJlRGF0YUFzeW5jX2hwcAorCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVSZWFk
ZXJMb2FkZXI7CitzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFJlYWRTaGFyZURhdGFBc3luYzogcHJpdmF0ZSBGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkU2hhcmVEYXRhQXN5bmM+
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhZFNoYXJlRGF0YUFzeW5jPiBjcmVhdGUoTmF2
aWdhdG9yJiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVhZFNoYXJlRGF0YUFzeW5jKGNsaWVudCwgY29udGV4dCkpOyB9Cisg
ICAgCisgICAgflJlYWRTaGFyZURhdGFBc3luYygpOworICAgIHZvaWQgc3RhcnQoU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYpOworICAgIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFkU2hhcmVE
YXRhQXN5bmMoTmF2aWdhdG9yJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZvaWQg
cmVhZEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iJik7CisgICAgdm9pZCBk
aWRTdGFydExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgZmluYWw7
CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKGlu
dCBlcnJvckNvZGUpIGZpbmFsOworICAgIAorICAgIE5hdmlnYXRvciogbV9jbGllbnQ7CisgICAg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCogbV9zaGFyZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAgU3RyaW5n
IG1fY3VycmVudEZpbGVMb2FkOworICAgIHNpemVfdCBtX2RvbmVTb0ZhciA9IDA7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworICAgIAorfTsKKworfQor
CisKKyNlbmRpZiAvKiBSZWFkU2hhcmVEYXRhQXN5bmNfaHBwICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaAppbmRleCA1YzM5MDdjMTA3NTgwNDlkODg3YzA0NjMxZGI0ZjljMDNmZjFhZjc5Li5mZWU2
Yjk5ZTNmYTVlMDQ4ZTZiMThhMDQ5YjQyZGE2NGFjYmYzMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAjaW5jbHVkZSAiRmlsZS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTAgKzM2LDE2IEBAIHN0cnVjdCBTaGFyZURhdGEgewog
ICAgIFN0cmluZyB1cmw7CiAgICAgVmVjdG9yPFJlZlB0cjxGaWxlPj4gZmlsZXM7CiB9OworCitz
dHJ1Y3QgUmF3RmlsZSB7CisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGZpbGVEYXRhOworfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJM
IHsKICAgICBTaGFyZURhdGEgc2hhcmVEYXRhOwogICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAg
IFZlY3RvcjxSYXdGaWxlPiBmaWxlczsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaAppbmRleCA5NDA0NzQ0MzVmOGRkM2Q1ZTgz
NTI3N2I2NmQzMmQ4ZmYzMWJiMmMyLi4wYmYxMDNkNGE5ZWJkOWZkZmNjOTFjMDNiNjkzZWQzYTgz
ZTczNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFu
dGluZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5l
U1BJLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNlbHNlCiAKIGVudW0gcXRuX2ZsYWdzIHsKKyAgICBR
VE5fRkxBR19ET1dOTE9BRCA9IDB4MDAwMSwKICAgICBRVE5fRkxBR19TQU5EQk9YID0gMHgwMDAy
LAogfTsKIApAQCAtNDMsMTAgKzQ0LDE1IEBAIGVudW0gcXRuX2ZsYWdzIHsKICNkZWZpbmUgcXRu
X3Byb2NfaW5pdCBfcXRuX3Byb2NfaW5pdAogI2RlZmluZSBxdG5fcHJvY19pbml0X3dpdGhfc2Vs
ZiBfcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYKICNkZWZpbmUgcXRuX3Byb2Nfc2V0X2ZsYWdzIF9x
dG5fcHJvY19zZXRfZmxhZ3MKLQorI2RlZmluZSBxdG5fZmlsZV9hbGxvYyBfcXRuX2ZpbGVfYWxs
b2MKKyNkZWZpbmUgcXRuX2ZpbGVfaW5pdF93aXRoX3BhdGggX3F0bl9maWxlX2luaXRfd2l0aF9w
YXRoCisjZGVmaW5lIHF0bl9maWxlX2ZyZWUgX3F0bl9maWxlX2ZyZWUKKyNkZWZpbmUgcXRuX2Zp
bGVfYXBwbHlfdG9fcGF0aCBfcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aAorI2RlZmluZSBxdG5fZmls
ZV9zZXRfZmxhZ3MgX3F0bl9maWxlX3NldF9mbGFncwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0
IF9xdG5fcHJvYyAqcXRuX3Byb2NfdDsKK3R5cGVkZWYgc3RydWN0IF9xdG5fZmlsZSAqcXRuX2Zp
bGVfdDsKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKQEAgLTU2LDYgKzYyLDExIEBAIGludCBxdG5f
cHJvY19pbml0X3dpdGhfc2VsZihxdG5fcHJvY190KTsKIGludCBxdG5fcHJvY19zZXRfZmxhZ3Mo
cXRuX3Byb2NfdCwgdWludDMyX3QgZmxhZ3MpOwogcXRuX3Byb2NfdCBxdG5fcHJvY19hbGxvYygp
Owogdm9pZCBxdG5fcHJvY19mcmVlKHF0bl9wcm9jX3QpOworcXRuX2ZpbGVfdCBxdG5fZmlsZV9h
bGxvYyh2b2lkKTsKK3ZvaWQgcXRuX2ZpbGVfZnJlZShxdG5fZmlsZV90IHFmKTsKK2ludCBxdG5f
ZmlsZV9zZXRfZmxhZ3MocXRuX2ZpbGVfdCBxZiwgdWludDMyX3QgZmxhZ3MpOworaW50IHF0bl9m
aWxlX2FwcGx5X3RvX3BhdGgocXRuX2ZpbGVfdCBxZiwgY29uc3QgY2hhciAqcGF0aCk7CitpbnQg
cXRuX2ZpbGVfaW5pdF93aXRoX3BhdGgocXRuX2ZpbGVfdCBxZiwgY29uc3QgY2hhciAqcGF0aCk7
CiAKIFdURl9FWFRFUk5fQ19FTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggZWM2YWE2Y2E4OTM0YmY2ZDFiOTI1NjI5ODg0NWY5Mjk2
M2VkZWQwOS4uNmQ0MTdkNTNjOGMzYWNmYTJhNGRlYWZkZDY2NWExYTg0MmFlZGY2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00Nyw2
ICs0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnRUcmFja2luZ1JlZ2lvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9u
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNo
b29zZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgpAQCAtMjAxMyw2ICsyMDE0LDMxIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxGaWxlQ2hvb3NlclNldHRpbmdzPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIEZpbGVDaG9vc2VyU2V0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwordm9pZCBBcmd1bWVu
dENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8UmF3RmlsZT4mIGZpbGVzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGZpbGVzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZXMpIHsKKyAg
ICAgICAgZW5jb2RlciA8PCBmaWxlLmZpbGVOYW1lOworICAgICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgZmlsZS5maWxlRGF0YS5nZXQoKSk7CisgICAgfQorfQorCitib29sIEFyZ3Vt
ZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxSYXdGaWxlPiYgZmlsZXMpCit7CisgICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZp
bGVzLnJlc2l6ZShkYXRhU2l6ZSk7CisgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZXMpIHsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWxlLmZpbGVOYW1lKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGZpbGUuZmls
ZURhdGEpOworCisgICAgfQorICAgIHJldHVybiB0cnVlOworfQogICAgIAogdm9pZCBBcmd1bWVu
dENvZGVyPFNoYXJlRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZURh
dGEmIHNldHRpbmdzKQogewpAQCAtMjAzNiw2ICsyMDYyLDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2hhcmUKIHsKICAgICBlbmNvZGVyIDw8IHNldHRpbmdzLnNoYXJlRGF0YTsKICAgICBlbmNvZGVy
IDw8IHNldHRpbmdzLnVybDsKKyAgICBlbmNvZGVyIDw8IHNldHRpbmdzLmZpbGVzOwogfQogCiBi
b29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzZXR0aW5ncykKQEAgLTIwNDQsNiAr
MjA3MSw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdzLnVybCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdzLmZpbGVzKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2Vm
MTczZWE0YTIxNmU4NGYwMTcuLmI5ZGY2NzEwMmMxNWM2NDM3ODA1MDE5YmMzNTEyN2Q5YmJjZTRh
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0xMjQsNyArMTI0LDkgQEAgc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRm9udEF0
dHJpYnV0ZXM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKIHN0cnVjdCBTaGFyZURhdGE7
CitjbGFzcyBGaWxlOwogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CitzdHJ1Y3QgUmF3
RmlsZTsKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKIHN0cnVjdCBNaW1l
Q2xhc3NJbmZvOwpAQCAtNTUzLDYgKzU1NSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIH07CiAgICAg
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxl
Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlJhd0ZpbGU+Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBWZWN0b3I8
V2ViQ29yZTo6UmF3RmlsZT4mKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2hhcmVEYXRhPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTaGFyZURhdGEmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdlYkNvcmU6OlNoYXJlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGZiYzVhZWMyMWFm
ODViMWNhYjY4NDBhMGNlZjMyOGI2NTc0NWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmgKQEAgLTAsMCArMSwxNiBA
QAorLy8gQ29weXJpZ2h0IMKpIDIwMjAgX19fT1JHQU5JWkFUSU9OTkFNRV9fXyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorI2ltcG9ydCAiV0tBUElDYXN0LmgiCisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdL
U2hhcmVhYmxlRmlsZVdyaXRlIDogTlNPYmplY3QKKworKyhCT09MKXJlbW92ZUZpbGVEaXJlY3Rv
cnlGb3JTaGFyaW5nOworCisrKE5TVVJMICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6IChOU1N0
cmluZyAqKWZpbGVOYW1lIGRhdGE6KE5TRGF0YSAqKSBmaWxlRGF0YTsKKworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NoYXJlYWJsZUZpbGVXcml0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NoYXJlYWJsZUZpbGVXcml0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTM3MmNkYjc3OWI5ZGU4ZDRiOTQ1
YjliOTlmNTlkNTM3ODI4OWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tCkBAIC0wLDAgKzEsMTM0IEBACisvLyBD
b3B5cmlnaHQgwqkgMjAyMCBfX19PUkdBTklaQVRJT05OQU1FX19fIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTaGFyZWFibGVGaWxlV3JpdGUu
aCIKKworI2ltcG9ydCAiUXVhcmFudGluZVNQSS5oIgorCisjaW1wb3J0IDxXZWJDb3JlL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KKworQGltcGxlbWVu
dGF0aW9uIFdLU2hhcmVhYmxlRmlsZVdyaXRlCisKKysoTlNTdHJpbmcgKilnZXRTaGFyaW5nRGly
ZWN0b3J5UGF0aCB7CisgICAgTlNBcnJheSAqcGF0aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rv
cmllc0luRG9tYWlucyhOU0RvY3VtZW50RGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMp
OworICAgIGlmICghcGF0aHMgfHwgIVtwYXRocyBmaXJzdE9iamVjdF0pCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgTlNTdHJpbmcgKmRvY3VtZW50c0RpcmVjdG9yeSA9IFtwYXRocyBv
YmplY3RBdEluZGV4OjBdOyAvLyBHZXQgZG9jdW1lbnRzIGZvbGRlcgorICAgIE5TU3RyaW5nICpk
YXRhUGF0aCA9IFtkb2N1bWVudHNEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiL1dLRmlsZVNoYXJlIl07CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
ZGF0YVBhdGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3Jl
YXRlRGlyZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpO
TyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gZGF0YVBhdGg7Cit9CisKKyso
TlNTdHJpbmcgKilnZXRGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZyB7CisgICAgTlNTdHJpbmcgKnJh
bmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBOU1N0cmlu
ZyAqZGF0YVBhdGggPSBbW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGdldFNoYXJpbmdEaXJlY3RvcnlQ
YXRoXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIvJUAiLCByYW5kb21EaXJlY3RvcnldXTsKKyAgICBpZiAoIWRhdGFQYXRoKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGlm
ICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFQ
YXRoXSkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURp
cmVjdG9yeUF0UGF0aDpkYXRhUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6Tk8gYXR0
cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGRhdGFQYXRoOworfQorCisrKEJPT0wp
cmVtb3ZlRmlsZURpcmVjdG9yeUZvclNoYXJpbmcgeworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9
IFtXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aF07CisgICAgaWYg
KCFkYXRhUGF0aCkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIGlmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFQYXRoXSkKKyAgICAg
ICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0
aDogZGF0YVBhdGggZXJyb3I6bmlsXTsKKyAgICByZXR1cm4gWUVTOworfQorCisjaWYgUExBVEZP
Uk0oTUFDKQorKyAoQk9PTClzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDooTlNT
dHJpbmcgKilmaWxlUGF0aAoreworICAgIE5TVVJMICpmaWxlVVJMID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpmaWxlUGF0aF07CisKKyAgICAvLyBXb3JrYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS8y
MTczNTQxMj46IE5TVVJMRG93bmxvYWQgd2lsbCBhdXRvbWF0aWNhbGx5IGF0dGFjaCBOU1VSTFF1
YXJhbnRpbmVQcm9wZXJ0aWVzCisgICAgLy8gdG8gZmlsZXMgd2UgZG93bmxvYWQgaWYgdGhleSBh
cmUgYWxyZWFkeSBxdWFyYW50aW5lZC4gVGhpcyBhZGRzIGEgcXVhcmFudGluZSBoaXN0b3J5IGl0
ZW0gdGhhdCB0aGUgY29kZQorICAgIC8vIGJlbG93IHdpbGwgc2hhZG93LiBTaW5jZSBTYWZhcmkg
bmVlZHMgdG8gYmUgYWJsZSB0byByZW1vdmUgYWxsIHRyYWNlcyBvZiBkb3dubG9hZCBoaXN0b3J5
LCB3ZSBuZWVkIHRvCisgICAgLy8gZGVsZXRlIHRoYXQgZW50cnkgYmVmb3JlIG91cnMgcmVuZGVy
cyBpdCBpbmFjY2Vzc2libGUuCisKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpxdWFyYW50aW5l
UHJvcGVydGllcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgcXVh
cmFudGluZVByb3BlcnRpZXNbKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZVR5cGVL
ZXldID0gKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZVR5cGVXZWJEb3dubG9hZDsK
KyAgICBxdWFyYW50aW5lUHJvcGVydGllc1soX19icmlkZ2UgTlNTdHJpbmcgKilrTFNRdWFyYW50
aW5lQWdlbnRCdW5kbGVJZGVudGlmaWVyS2V5XSA9IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpOworCisKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBpZiAoIVtmaWxlVVJM
IHNldFJlc291cmNlVmFsdWU6cXVhcmFudGluZVByb3BlcnRpZXMgZm9yS2V5Ok5TVVJMUXVhcmFu
dGluZVByb3BlcnRpZXNLZXkgZXJyb3I6JmVycm9yXSkgeworICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCBzZXQgcXVhcmFudGluZSBpbmZvcm1hdGlvbiBmb3IgZmlsZSBwYXRoOiAlQDogJUAi
LCBmaWxlUGF0aCwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgLy8g
V2hldGhlciB0aGUgZmlsZSB3YXMgZG93bmxvYWRlZCBieSBzYW5kYm94ZWQgV2ViUHJvY2VzcyBv
ciBub3QsIExTU2V0SXRlbUF0dHJpYnV0ZSByZXNldHMgdGhlIGZsYWdzIHRvIDAgKGFkdmlzb3J5
IFFUTl9GTEFHX0RPV05MT0FELAorICAgIC8vIHdoaWNoIGNhbiBiZSB0aGVuIHJlbW92ZWQgYnkg
V2ViUHJvY2VzcykuIFJlcGxhY2UgdGhlIGZsYWdzIHdpdGggc2FuZGJveCBxdWFyYW50aW5lIG9u
ZXMsIHdoaWNoIGNhbm5vdCBiZSByZW1vdmVkIGJ5IHNhbmRib3hlZCBwcm9jZXNzZXMuCisgICAg
cmV0dXJuIFtXS1NoYXJlYWJsZUZpbGVXcml0ZSBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93
bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDpmaWxlUGF0aF07Cit9CisrIChCT09MKWFwcGx5UXVhcmFu
dGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRoOihOU1N0cmluZyAqKWZpbGVQ
YXRoCit7CisgICAgcXRuX2ZpbGVfdCBmcSA9IHF0bl9maWxlX2FsbG9jKCk7CisgICAgaW50IHF1
YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKGZxLCBmaWxlUGF0aC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOworICAgIGlmIChxdWFyYW50aW5lRXJyb3IpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcmV0cmlldmUgcXVhcmFudGluZSBmbGFncyBmb3IgZmls
ZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJyb3IpOworICAgICAgICBxdG5f
ZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAgIHF1YXJhbnRp
bmVFcnJvciA9IHF0bl9maWxlX3NldF9mbGFncyhmcSwgUVROX0ZMQUdfU0FOREJPWCB8IFFUTl9G
TEFHX0RPV05MT0FEKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKSB7CisgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IHNldCBxdWFyYW50aW5lIGZsYWdzIGluIHF0bl9maWxlX3Qgc3RydWN0
dXJlIGZvciBmaWxlIHBhdGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7Cisg
ICAgICAgIHF0bl9maWxlX2ZyZWUoZnEpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisg
ICAgcXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aChmcSwgZmlsZVBhdGgu
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKQorICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhcHBseSBxdWFyYW50aW5lIGZsYWdzIHRvIGZpbGUg
cGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKworICAgIHF0bl9maWxl
X2ZyZWUoZnEpOworCisgICAgcmV0dXJuIFlFUzsKK30KKyNlbmRpZgorCisrKE5TU3RyaW5nICop
Y3JlYXRlRmlsZW5hbWU6IChOU1N0cmluZyAqKWZpbGVOYW1lIHsKKyAgICBOU1N0cmluZyAqZ2V0
VGVtcERpcmVjdG9yeSA9IFtXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRGaWxlRGlyZWN0b3J5Rm9y
U2hhcmluZ107CisgICAgaWYgKGdldFRlbXBEaXJlY3RvcnkgPT0gbmlsKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIE5TU3RyaW5nICpzYW5pdGl6ZWRGaWxlbmFtZSA9IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVOYW1lKTsKKyAg
ICBOU1N0cmluZyAqZmlsZU5hbWVDb25jYXQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVALyVAIiwgZ2V0VGVtcERpcmVjdG9yeSwgc2FuaXRpemVkRmlsZW5hbWVdOworICAgIHJldHVy
biBmaWxlTmFtZUNvbmNhdDsKK30KKworKyhOU1VSTCAqKXdyaXRlRmlsZVRvU2hhcmVhYmxlVVJM
OiAoTlNTdHJpbmcgKilmaWxlTmFtZSBkYXRhOihOU0RhdGEgKikgZmlsZURhdGEgeworICAgIE5T
U3RyaW5nICpmaWxlID0gW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGNyZWF0ZUZpbGVuYW1lOiBmaWxl
TmFtZV07CisgICAgaWYgKCFmaWxlTmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZV07CisgICAgCisg
ICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW2ZpbGVEYXRhIHdyaXRlVG9VUkw6ZmlsZVVS
TCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMgZXJyb3I6ICZlcnJvcl07CisgICAgaWYgKGVy
cm9yKQorICAgICAgICByZXR1cm4gbmlsOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVtX
S1NoYXJlYWJsZUZpbGVXcml0ZSBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDpm
aWxlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIHJldHVybiBmaWxlVVJMOwor
fQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFy
ZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1t
CmluZGV4IGIwMjQzM2MzMDNhNmY5MzlkYjQyYTdmYzQwNDllOWVhYzU0MWIwMDYuLjVlNzA3ZjFm
NDlmNDYyYTM2ZGY5Y2JjNjJkOWYxZGNmZGJmZTcxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CiAKKyNpbXBvcnQgIlNoYXJlYWJsZUZpbGVXcml0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9TaGFy
ZURhdGEuaD4KQEAgLTEwNiw2ICsxMDcsMTYgQEAgLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRl
cnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgJilkYXRhIGluUmUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBmb3IgKGF1dG8gZmlsZSA6IGRhdGEuZmls
ZXMpIHsKKyAgICAgICAgTlNVUkwgKmZpbGVVUkwgPSBbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3Jp
dGVGaWxlVG9TaGFyZWFibGVVUkw6ZmlsZS5maWxlTmFtZSBkYXRhOmZpbGUuZmlsZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICAgICAgaWYgKCFmaWxlVVJMKSB7CisgICAgICAgICAg
ICBbc2VsZiBfZGlkQ29tcGxldGVXaXRoU3VjY2VzczpOT107CisgICAgICAgICAgICBbc2VsZiBk
aXNtaXNzXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBbc2hhcmVE
YXRhQXJyYXkgYWRkT2JqZWN0OmZpbGVVUkxdOworICAgIH0KKyAgICAKICAgICBXS1dlYlZpZXcg
KndlYlZpZXcgPSBfd2ViVmlldy5nZXRBdXRvcmVsZWFzZWQoKTsKICAgICAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xODAsNiArMTkxLDcgQEAgLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFy
aW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkKIAogLSAo
dm9pZClfZGlkQ29tcGxldGVXaXRoU3VjY2VzczooQk9PTClzdWNjZXNzCiB7CisgICAgW1dLU2hh
cmVhYmxlRmlsZVdyaXRlIHJlbW92ZUZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nXTsKICAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShfY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlm
IChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkMDcwOWU0Y2NjYzM5NTNhMjk4MWM4NGNiNTE3MmNjNzk4ZjBkNjkzLi5mODRhNGU1Mjg5NjA4
ODM4YzdiN2E4YjMxYWRiNmM2N2M5MTkwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2MSw2ICsyNjEsOCBAQAogCQkxQTdDMERG
NzFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3QzBERjUxQjdEMUYxMDAwQTlCODQ4
IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxQTdFMzc3NTE4RTRBMzNBMDAzRDBGRkYgLyogV0tTY3JpcHRN
ZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE3RTM3NzQxOEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFBN0Uz
Nzc5MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBN0UzNzc3MThFNEE0RkUwMDNEMEZGRiAv
KiBXS1NjcmlwdE1lc3NhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CisJCTFBODBGMUVGMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFibGVGaWxlV3Jp
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODBG
MUVEMjQyMkU5OTkwMDcwNjQ4MyAvKiBTaGFyZWFibGVGaWxlV3JpdGUuaCAqLzsgfTsKKwkJMUE4
MEYxRjAyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZpbGVXcml0ZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODBGMUVFMjQyMkU5OTkwMDcw
NjQ4MyAvKiBTaGFyZWFibGVGaWxlV3JpdGUubW0gKi87IH07CiAJCTFBODFCMzgxMThCRDY2QUQw
MDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlz
aXRlZExpbmtTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBODFCMzg1MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3Jl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBODFCMzg0MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwu
aCAqLzsgfTsKIAkJMUE4NUU0NzIxRTMwM0YzNzAwOTE0NTk5IC8qIFdlYktpdC5hcGlub3RlcyBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODVFNDcwMUUz
MDNGMjQwMDkxNDU5OSAvKiBXZWJLaXQuYXBpbm90ZXMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMjQ0OSw2ICsyNDUxLDggQEAKIAkJMUE3RTM3NzQx
OEU0QTMzQTAwM0QwRkZGIC8qIFdLU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTY3JpcHRNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTdFMzc3NjE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3JpcHRN
ZXNzYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTY3Jp
cHRNZXNzYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTdFMzc3NzE4RTRB
NEZFMDAzRDBGRkYgLyogV0tTY3JpcHRNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLU2NyaXB0TWVzc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQTgwRjFFRDI0MjJFOTk5MDA3MDY0ODMgLyogU2hhcmVhYmxlRmlsZVdyaXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNoYXJlYWJsZUZpbGVXcml0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQTgwRjFFRTI0MjJFOTk5MDA3MDY0ODMgLyogU2hhcmVhYmxlRmlsZVdyaXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVhYmxlRmlsZVdyaXRlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTgxQjM3RTE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExp
bmtTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Zp
c2l0ZWRMaW5rU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBODFCMzdG
MThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Zpc2l0ZWRMaW5rU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUE4MUIzODQxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5r
U3RvcmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tWaXNp
dGVkTGlua1N0b3JlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
OTgsNiArNjMwMiw4IEBACiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNhZmVCcm93
c2luZ1dhcm5pbmdDb2NvYS5tbSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIzNDVEMDBCOUFENDQgLyog
U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCiAJCQkJMUEwMDJENDYxOTZCMzQ1RDAwQjlBRDQ0IC8q
IFNlc3Npb25TdGF0ZUNvZGluZy5tbSAqLywKKwkJCQkxQTgwRjFFRDI0MjJFOTk5MDA3MDY0ODMg
LyogU2hhcmVhYmxlRmlsZVdyaXRlLmggKi8sCisJCQkJMUE4MEYxRUUyNDIyRTk5OTAwNzA2NDgz
IC8qIFNoYXJlYWJsZUZpbGVXcml0ZS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5
Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIx
RjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENG
NjRCMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAt
MTEwMDcsNiArMTEwMTMsNyBAQAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNz
aW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2
OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2
NDIwRTUxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMUE4MEYxRUYyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZpbGVXcml0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyMTc0NjExNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJl
c291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QkVENTEyMDg5NEQxMDBGQkIwNTkgLyog
U2hhcmVkTWVtb3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDRCNEQ5RDFFNzY1RTAwMDBEMjcw
OTIgLyogU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTI2OTMs
NiArMTI3MDAsNyBAQAogCQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hp
bVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREU3QzZDMjIy
NzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUE4MEYxRjAyNDIyRTk5OTAwNzA2NDgzIC8qIFNoYXJlYWJsZUZp
bGVXcml0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExQURBRkI2MjM2OEU2QTgwMDlDQjc3NiAv
KiBTaGFyZWRNZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc1QjFCQjkyM0NFOUMwQjAw
MjA2MzlBIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmOTVjMmMzZGYyOTQ1
OTYwZDk0ZDBmYjYzNWU1MjdmNTYxNTE0MTAxLi5hMTgyMmE4NWQxNzRlZGY0MTI3NGE2YTZmYWYx
OTRiMjU4NjY1NDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1v
dWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdl
Yi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vZGlmaWVkIHRvIG5vIGxvbmdlciB1c2UgdXJsIG9mIGltYWdlLgorCisg
ICAgICAgICogZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sOgorCiAyMDIwLTAz
LTE4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgc3ZnL2N1c3RvbS9hbmltYXRlLWluaXRpYWwtcGF1c2UtdW5wYXVzZS5odG1sIGlzIGZsYWt5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiNWVhNzBjZTM5NDAwMDQ0NGJiYzc5
ZGEyNjU4MDIxYTAxZDBjOTkyLi5jMWJmN2NhNDlkYmFlYWU5OTAxYzhhYTA0NDE0MzkwMjVkYTE1
MDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBm
b3IgbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFy
ZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjAt
MDMtMTggIEZyYW5rIFlhbmcgIDxndW93ZWlfeWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NT
UyBXcml0aW5nIE1vZGVzXSBJbXBvcnQgY3NzL2Nzcy13cml0aW5nLW1vZGVzIGZyb20gV1BUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKaW5k
ZXggODU2ZWQyNDQxODg3MTg4ZGI2NDk4ZDNkYjE3MDgwNzE0OTBmNWM4Ni4uOWI4OTBkNGMxYjEz
NDdkMDljYjYxY2EyNjI0MjMyZDM1MGMwNjk5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbApAQCAtMiw2ICsyLDcgQEAKIAogPGh0bWw+
CiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT01LCB3aWR0aD1k
ZXZpY2Utd2lkdGgiPgorCiA8aGVhZD4KIAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KQEAgLTE2LDEwICsxNywxMiBAQAogCiAgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB0ZXh0Rmls
ZSA9IG5ldyBGaWxlKFsnaGVsbG8nXSwgJ2hlbGxvLnR4dCcsIHt0eXBlOid0ZXh0L3BsYWluJ30p
OworCisgICAgICAgICAgICB2YXIgYmxvYiA9IHRoaXMucmVzcG9uc2U7CisgICAgICAgICAgICBj
b25zdCB0ZXh0RmlsZSA9IG5ldyBGaWxlKFsnVGhpcyBpcyBhIHRleHQgZmlsZSddLCAnVGV4dEZp
bGUudHh0Jywge3R5cGU6J3RleHQvaHRtbCd9KTsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKLSAg
ICAgICAgICAgICAgICBuYXZpZ2F0b3Iuc2hhcmUoe3RleHQ6ICJzYWRmIiwgZmlsZXM6IFt0ZXh0
RmlsZV19KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoIlBB
U1M6IFNoYXJlIHNoZWV0IGludm9rZWQuIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iuc2hhcmUo
e3RleHQ6ICJUaGlzIGlzIGEgdGV4dCBmaWxlIiwgZmlsZXM6IFt0ZXh0RmlsZV19KS50aGVuKChy
ZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiUEFTUzogU2hhcmUgc2hlZXQgaW52
b2tlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgICAgICAgICAgfSk7ICAgIAogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFy
ZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggZTY4YjMwN2YwMzg1YmMxOTMyN2VmZTUxYmE0NjJkMzE4YzczN2QwNS4uMmQ5OWM5
MjA5ZTFhOTEwZDZjZTdlYTZhYTllZGQ0MWU3NzQ1OGVlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmls
ZXMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLWZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMSw4ICsxLDggQEAKIAogUEFTUyBjYW5TaGFyZSB3aXRoIHNpbmdsZSBmaWxlIAotRkFJ
TCBjYW5TaGFyZSB3aXRoIGVtcHR5IGZpbGUgbGlzdCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHtmaWxlczogW119KScsICduYXZp
Z2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBzaW5nbGUg
ZmlsZSBsaXN0IG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZp
Z2F0b3IuY2FuU2hhcmUoe2ZpbGVzOiBbZW1wdHlGaWxlXX0pJywgJ25hdmlnYXRvci5jYW5TaGFy
ZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGZpbGUgbGlzdCBuYXZpZ2F0b3Iu
Y2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHtmaWxl
czogW3RleHRGaWxlLCBlbXB0eUZpbGVdfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRl
ZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggcmVwZWF0ZWQgZmlsZSBuYXZpZ2F0b3IuY2FuU2hh
cmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHtmaWxlczogW3Rl
eHRGaWxlLCBlbXB0eUZpbGUsIHRleHRGaWxlXX0pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMg
dW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIGZpbGUgbGlzdCBhbmQgdXJsIG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3Vy
bDogJ2h0dHBzOi8vZXhhbXBsZS5jb20vJywgZmlsZXM6IFt0ZXh0RmlsZSwgZW1wdHlGaWxlXX0p
JywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQorUEFTUyBjYW5TaGFyZSB3aXRo
IGVtcHR5IGZpbGUgbGlzdCAKK0ZBSUwgY2FuU2hhcmUgd2l0aCBzaW5nbGUgZmlsZSBsaXN0IGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorRkFJTCBjYW5TaGFyZSB3
aXRoIGZpbGUgbGlzdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
K0ZBSUwgY2FuU2hhcmUgd2l0aCByZXBlYXRlZCBmaWxlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBjYW5TaGFyZSB3aXRoIGZpbGUgbGlzdCBhbmQgdXJs
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggY2M2YTQ0M2JlMGFiMWYzYTgzZjZhNjdkMTJmODQ1YTBmYjY1OTZi
MC4uM2QxZmI1MTM2YWQ2YjYxNTA5YTZlZWEwNmVhNDcwOWNjNDZiNjRiOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2Fu
U2hhcmUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMSwxOSArMSwxOSBAQAogCi1GQUlMIGNhblNoYXJlIHdpdGggbm8gYXJndW1lbnRzIChzYW1l
IGFzIGVtcHR5IGRpY3Rpb25hcnkpIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoKScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVu
ZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCBhbiBlbXB0eSBkaWN0aW9uYXJ5IG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe30p
JywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRo
IGEgdW5kZWZpbmVkIGFyZ3VtZW50IChzYW1lIGFzIGVtcHR5IGRpY3Rpb25hcnkpIG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUodW5k
ZWZpbmVkKScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hh
cmUgd2l0aCBhIG51bGwgYXJndW1lbnQgKHNhbWUgYXMgZW1wdHkgZGljdGlvbmFyeSkgbmF2aWdh
dG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZShu
dWxsKScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUg
d2l0aCBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBvbmx5IHN1cnBsdXMgZmllbGRzIG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3Vu
dXNlZDogJ3VuZXhwZWN0ZWQgZmllbGQnfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRl
ZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggYW4gaW52YWxpZCBVUkwgbmF2aWdhdG9yLmNhblNo
YXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5TaGFyZSh7dXJsfSknLCAn
bmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggYXR0
cmlidXRlIHVuZGVmaW5lZCBpcyBlcXVpdmFsZW50IHRvIG9taXR0aW5nIHRoZSBhdHRyaWJ1dGUg
bmF2aWdhdG9yLmNhblNoYXJlIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5jYW5T
aGFyZSh7dGl0bGU6IHVuZGVmaW5lZH0pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZp
bmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIHRpdGxlIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3RpdGxlOiAnc3ViamVjdCd9KScs
ICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0aCB0
ZXh0IG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3Iu
Y2FuU2hhcmUoe3RleHQ6ICdib2R5J30pJywgJ25hdmlnYXRvci5jYW5TaGFyZScgaXMgdW5kZWZp
bmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIFVSTCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt1cmw6ICdodHRwczovL3d3dy5leGFt
cGxlLmNvbS9zb21lL3BhdGg/c29tZV9xdWVyeSNzb21lX2ZyYWdtZW50J30pJywgJ25hdmlnYXRv
ci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIG51bGwgYXR0cmli
dXRlIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3Iu
Y2FuU2hhcmUoe3RpdGxlOiBudWxsfSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmlu
ZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggbnVtYmVyIG5hdmlnYXRvci5jYW5TaGFyZSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3RleHQ6IDEyM30pJywgJ25hdmln
YXRvci5jYW5TaGFyZScgaXMgdW5kZWZpbmVkKQotRkFJTCBjYW5TaGFyZSB3aXRoIG9iamVjdCBu
YXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNo
YXJlKHt1cmw6IHt0b1N0cmluZygpIHsgcmV0dXJuICdodHRwczovL2V4YW1wbGUuY29tLyc7IH19
fSknLCAnbmF2aWdhdG9yLmNhblNoYXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdp
dGggdW5leHBlY3RlZCBmaWVsZCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt0aXRsZTogJ3N1YmplY3QnLCB0ZXh0OiAnYm9keScs
IHVybDogJ2h0dHBzOi8vZXhhbXBsZS5jb20vJywgdW51c2VkOiAndW5leHBlY3RlZCBmaWVsZCd9
KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hhcmUgd2l0
aCBkYXRhIFVSTCBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2
aWdhdG9yLmNhblNoYXJlKHt1cmw6ICdkYXRhOnRoZSB1cmwnfSknLCAnbmF2aWdhdG9yLmNhblNo
YXJlJyBpcyB1bmRlZmluZWQpCi1GQUlMIGNhblNoYXJlIHdpdGggZW1wdHkgVVJMIG5hdmlnYXRv
ci5jYW5TaGFyZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IuY2FuU2hhcmUoe3Vy
bDogJyd9KScsICduYXZpZ2F0b3IuY2FuU2hhcmUnIGlzIHVuZGVmaW5lZCkKLUZBSUwgY2FuU2hh
cmUgd2l0aCBVUkwgaGF2aW5nIG5vIHNjaGVtZSBuYXZpZ2F0b3IuY2FuU2hhcmUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLmNhblNoYXJlKHt1cmw6ICcvL3d3dy5leGFtcGxlLmNv
bS9zb21lL3BhdGg/c29tZV9xdWVyeSNzb21lX2ZyYWdtZW50J30pJywgJ25hdmlnYXRvci5jYW5T
aGFyZScgaXMgdW5kZWZpbmVkKQorUEFTUyBjYW5TaGFyZSB3aXRoIG5vIGFyZ3VtZW50cyAoc2Ft
ZSBhcyBlbXB0eSBkaWN0aW9uYXJ5KSAKK1BBU1MgY2FuU2hhcmUgd2l0aCBhbiBlbXB0eSBkaWN0
aW9uYXJ5IAorUEFTUyBjYW5TaGFyZSB3aXRoIGEgdW5kZWZpbmVkIGFyZ3VtZW50IChzYW1lIGFz
IGVtcHR5IGRpY3Rpb25hcnkpIAorUEFTUyBjYW5TaGFyZSB3aXRoIGEgbnVsbCBhcmd1bWVudCAo
c2FtZSBhcyBlbXB0eSBkaWN0aW9uYXJ5KSAKK1BBU1MgY2FuU2hhcmUgd2l0aCBhIGRpY3Rpb25h
cnkgY29udGFpbmluZyBvbmx5IHN1cnBsdXMgZmllbGRzIAorUEFTUyBjYW5TaGFyZSB3aXRoIGFu
IGludmFsaWQgVVJMIAorUEFTUyBjYW5TaGFyZSB3aXRoIGF0dHJpYnV0ZSB1bmRlZmluZWQgaXMg
ZXF1aXZhbGVudCB0byBvbWl0dGluZyB0aGUgYXR0cmlidXRlIAorUEFTUyBjYW5TaGFyZSB3aXRo
IHRpdGxlIAorUEFTUyBjYW5TaGFyZSB3aXRoIHRleHQgCitQQVNTIGNhblNoYXJlIHdpdGggVVJM
IAorUEFTUyBjYW5TaGFyZSB3aXRoIG51bGwgYXR0cmlidXRlIAorUEFTUyBjYW5TaGFyZSB3aXRo
IG51bWJlciAKK1BBU1MgY2FuU2hhcmUgd2l0aCBvYmplY3QgCitQQVNTIGNhblNoYXJlIHdpdGgg
dW5leHBlY3RlZCBmaWVsZCAKK1BBU1MgY2FuU2hhcmUgd2l0aCBkYXRhIFVSTCAKK1BBU1MgY2Fu
U2hhcmUgd2l0aCBlbXB0eSBVUkwgCitQQVNTIGNhblNoYXJlIHdpdGggVVJMIGhhdmluZyBubyBz
Y2hlbWUgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394699</attachid>
            <date>2020-03-26 20:10:48 -0700</date>
            <delta_ts>2020-03-26 21:23:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200326231047.patch</filename>
            <type>text/plain</type>
            <size>36372</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZlMmVlZWY2ZWQzMzYz
YzUwNzkxMjE5NWU1NjVkYjIxOGE0ZDAzMS4uMTcwNGYyYWYyYTlmNmUwNTRkYWNhY2QyZTAzMDBm
NDc0MmQ4NjY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAg
ICBbR1RLXSBBbGxvdyBkaXN0cmlidXRvcnMgdG8gYnJhbmQgdXNlciBhZ2VudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3NzQ5YmYzZDUxOGEzMGNkNDI3OGM4NTI0NGE4ZDlmOGI0MGMzZTgwLi4zOGZkYWE2MWZhMjZm
YzAzMGRmZjYzYmZlMzUwM2ZlNDFjYjE2ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTIzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGluc2VydGluZyB0ZXh0IG9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSBieSBzaW11
bGF0aW5nIGtleWJvYXJkIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGNmNTU1NmEzYTcwZDRhYjll
YzhkYTYxZmE2NjUxNDAxODQyZTFkMDMuLjU0MGZkYjE5ZjAyODk2ZWYwMjU3NWJiYTU4N2E1ZjM5
MTVhNjgxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNjcwLDYgKzE2NzAsNyBAQCBwYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogcGFnZS9Qcm9jZXNz
V2FybWluZy5jcHAKIHBhZ2UvUXVpcmtzLmNwcAorcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3Bw
CiBwYWdlL1JlbW90ZURPTVdpbmRvdy5jcHAKIHBhZ2UvUmVtb3RlRnJhbWUuY3BwCiBwYWdlL1Jl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkY2E1NWE0MWU5MWZmZGYxNmU5ZTUzOGY2
ZjYzZDMzZWUxNzU2NWVjLi4zZGJiYzFiMGI3MWIwNGQzODJjN2JhZmM2YWNjY2ZiOGM5OWQ0Njlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02MTY2LDYgKzYxNjYsOCBAQAogCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyog
UHJvZ3Jlc3NUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9n
cmVzc1RyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTYwREMy
QTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTcwREMyQTNCMTAwQTIwRDlBIC8qIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFJlYWRTaGFyZURhdGFBc3lu
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkU2hhcmVEYXRhQXN5bmMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3Jp
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUF1dGhv
cml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM1ODZERDE1MjY0QzQ1
MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3MSw2ICsyMDk3Myw4IEBACiAJCQkJRTQyMDUwMTQyMTQx
OTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi8sCiAJCQkJQ0Q5QTg3RjkyMTVENkNG
MzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1
IC8qIFF1aXJrcy5oICovLAorCQkJCTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBSZWFkU2hh
cmVEYXRhQXN5bmMuY3BwICovLAorCQkJCTFBMkM2NjczMjQyQUZFRjgwMDMwNTVFQyAvKiBSZWFk
U2hhcmVEYXRhQXN5bmMuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmNwcCAqLywKIAkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmggKi8sCiAJCQkJNDZCQ0JCQzMyMDg1MDBBNzAwNzEwNjM4IC8qIFJlbW90
ZURPTVdpbmRvdy5pZGwgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggY2FjYzJh
MTMzNjk5MjZiZmQ2OWQxZTU5YzMxOTE0YWNjMzYxZTI3NC4uOGI1NzhiNGZmNzkyN2QwNzZhNjU2
NzY0YjNmYThmZDYzYjc5ZjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzcs
MTIgKzM3LDE0IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRlICJSZWFkU2hhcmVEYXRh
QXN5bmMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYXJlRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzExNCwxMyBAQCBib29sIE5hdmlnYXRv
cjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVE
YXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051bGwoKSAmJiBkYXRhLnVybC5pc051
bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlz
RW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkgeworI2lmIEVOQUJM
RShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAg
ICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93KCk7CiAgICAgLy8gTm90ZSB0aGF0
IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRlIHdlIHNob3VsZCBjb25zdW1lIHVz
ZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkgc3RyaWN0ZXIgaGVyZS4KLSAgICBp
ZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0aXZhdGlvbigpKSB7Cisg
ICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVudEFjdGl2YXRpb24oKSB8
fCBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDcsMTAgKzE1NCwz
NSBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCisgICAgICAgIHsgfSwK
ICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKG1fbG9hZGVyKSB7CisgICAgICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CisgICAgICAg
ICAgICBtX2xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgbV9sb2FkZXIgPSBS
ZWFkU2hhcmVEYXRhQXN5bmM6OmNyZWF0ZShjb250ZXh0LCBbdGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldIChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4gcmVhZERh
dGEpIG11dGFibGUgeworICAgICAgICAgICAgdGhpcy0+cHJlc2VudFNoYXJlU2hlZXQocmVhZERh
dGEsIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICB9KTsKKyAgICAgICAgbV9sb2FkZXItPnN0
YXJ0KHNoYXJlRGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGhpcy0+cHJlc2Vu
dFNoYXJlU2hlZXQoc2hhcmVEYXRhLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBOYXZp
Z2F0b3I6OnByZXNlbnRTaGFyZVNoZWV0KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPiByZWFkRGF0YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGlm
IChyZWFkRGF0YS5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QocmVh
ZERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChib29sIGNvbXBsZXRlZCkgeworICAgIG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCA9IHRy
dWU7CisgICAgYXV0byBzaGFyZURhdGEgPSByZWFkRGF0YS5yZXR1cm5WYWx1ZSgpOworICAgIGZy
YW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCB0aGlzXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAgICAgbV9p
c1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gZmFsc2U7CiAgICAgICAgIGlmIChjb21wbGV0ZWQpIHsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4YTg4
NjQ3ZjgyZGQuLmRiNDc2YWNlY2NiNTc1ZjRiNjMyMGY0ODA0NTAxZTI1YTU1Y2U3OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTU1p
bWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7Citj
bGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUmVhZFNoYXJlRGF0YUFzeW5jOwogCiBjbGFz
cyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8
TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpAQCAt
NDksNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGNhblNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURhdGEm
KTsKICAgICB2b2lkIHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURh
dGEmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLSAgICAKKyAgICB2b2lkIGZpbmlzaGVkTG9h
ZChFeGNlcHRpb25Pcjx2b2lkPiByZXQpOworICAgIHZvaWQgcHJlc2VudFNoYXJlU2hlZXQoRXhj
ZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgc3RhbmRhbG9uZSgpIGNvbnN0
OwogI2VuZGlmCkBAIC02Myw2ICs2Nyw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgor
ICAgIFJlZlB0cjxSZWFkU2hhcmVEYXRhQXN5bmM+IG1fbG9hZGVyOworICAgIHN0ZDo6YXRvbWlj
PGJvb2w+IG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCA9IGZhbHNlOworICAgIAogICAgIGV4cGxp
Y2l0IE5hdmlnYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRE9NV2luZG93Jik7CiAKICAg
ICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVnaW5zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExZWZhNTAwNTg2YzJi
YTVhYzhiZGUyMmM1ODI2NGRlMmQ1NGM3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlYWRTaGFyZURhdGFBc3luYy5oIgorCisjaW5jbHVkZSAiRmlsZVJl
YWRlckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6cmVhZEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJsb2ImIGJsb2IpCit7CisgICAgbV9jdXJyZW50
TG9hZGluZ0ZpbGVOYW1lID0gbV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzW21fZmlsZXNSZWFk
U29GYXJdLT5uYW1lKCk7CisgICAgbV9maWxlc1JlYWRTb0ZhciArPSAxOworICAgIG1fYmxvYiA9
ICZibG9iOworCisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZp
bGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVy
TG9hZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2It
PnR5cGUoKSk7CisgICAgbV9sb2FkZXItPnN0YXJ0KCZjb250ZXh0LCBibG9iKTsKK30KKworUmVh
ZFNoYXJlRGF0YUFzeW5jOjpSZWFkU2hhcmVEYXRhQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDogbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fY29udGV4dCgmY29u
dGV4dCkKKyAgICAsIG1fZmlsZXNSZWFkU29GYXIoMCkKK3sKKyAgICAKK30KKworUmVhZFNoYXJl
RGF0YUFzeW5jOjp+UmVhZFNoYXJlRGF0YUFzeW5jKCkKK3sKKy8vICAgIG1fc2hhcmVEYXRhID0g
bnVsbHB0cjsKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworICAgIG1fYmxvYiA9IG51bGxwdHI7
CisgICAgY2FuY2VsKCk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydChTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YSkKK3sKKyAgICBtX2ZpbGVzUmVhZFNvRmFyID0g
MDsKKyAgICBtX3NoYXJlRGF0YSA9IFdURk1vdmUoc2hhcmVEYXRhKTsKKyAgICByZWFkSW50ZXJu
YWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlc1ttX2ZpbGVzUmVhZFNv
RmFyXSk7CisgICAgbV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzLnJlc2VydmVDYXBhY2l0eSht
X3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMuc2l6ZSgpKTsKK30KKwordm9pZCBSZWFkU2hhcmVE
YXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcoKQoreworICAgIAorICAgIFJhd0ZpbGUgZmlsZTsK
KyAgICBmaWxlLmZpbGVOYW1lID0gbV9jdXJyZW50TG9hZGluZ0ZpbGVOYW1lOworICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKKyAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFdURk1vdmUoc2hhcmVkQnVmZmVyKTsKKyAgICBtX3No
YXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CisgICAgCisgICAgaWYgKG1fc2hh
cmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkgIT0gbV9maWxlc1JlYWRTb0ZhcikgeworICAg
ICAgICByZWFkSW50ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxl
c1ttX2ZpbGVzUmVhZFNvRmFyXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7Cisg
ICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX3No
YXJlRGF0YSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSgp
Cit7CisgICAgCit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRTdGFydExvYWRpbmco
KQoreworICAgIAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkRmFpbChpbnQgZXJy
b3JDb2RlKQoreworICAgIFVOVVNFRF9QQVJBTShlcnJvckNvZGUpOworICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpOworICAgIGlmIChjb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgQWJv
cnRFcnJvciwgIkFib3J0IGR1ZSB0byBmYWlsIG9mIHJlYWRpbmcgZmlsZXMuIl9zIH0pOworfQor
dm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmNhbmNlbCgpCit7CisgICAgaWYgKG1fbG9hZGVyKSB7
CisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgbV9sb2FkZXIgPSBudWxscHRy
OworICAgIH0KK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVhZFNoYXJl
RGF0YUFzeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5Mzg2MWJjZGEzMDBhYjU4NTQ2ZmRhYmI3NTFhZWI2YjFlMjM3Y2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoK
KyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbk9y
Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKK2NsYXNzIEJsb2I7CitjbGFzcyBGaWxlUmVhZGVyTG9h
ZGVyOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgUmVhZFNoYXJlRGF0
YUFzeW5jOiBwcml2YXRlIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVk
PFJlYWRTaGFyZURhdGFBc3luYz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhZFNoYXJl
RGF0YUFzeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRTaGFyZURhdGFB
c3luYyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGV4dCkpOyB9CisgICAgCisgICAg
flJlYWRTaGFyZURhdGFBc3luYygpOworICAgIHZvaWQgc3RhcnQoU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCk7CisgICAgdm9pZCBjYW5jZWwoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFk
U2hhcmVEYXRhQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJj4pPiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgdm9p
ZCByZWFkSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJsb2ImKTsKKyAgICB2b2lk
IGRpZFN0YXJ0TG9hZGluZygpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoKSBmaW5h
bDsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwo
aW50IGVycm9yQ29kZSkgZmluYWw7CisgICAgCisgICAgCisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgbV9zaGFyZURhdGE7CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7
CisgICAgU3RyaW5nIG1fY3VycmVudExvYWRpbmdGaWxlTmFtZTsKKyAgICBzaXplX3QgbV9maWxl
c1JlYWRTb0ZhciA9IDA7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1f
bG9hZGVyOworICAgIAorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNWMzOTA3
YzEwNzU4MDQ5ZDg4N2MwNDYzMWRiNGY5YzAzZmYxYWY3OS4uZmVlNmI5OWUzZmE1ZTA0OGU2YjE4
YTA0OWI0MmRhNjRhY2JmMzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM1LDEwICszNiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKICAgICBTdHJpbmcgdXJsOwog
ICAgIFZlY3RvcjxSZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsKKworc3RydWN0IFJhd0ZpbGUgewor
ICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsK
K307CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CiAgICAgU2hhcmVEYXRh
IHNoYXJlRGF0YTsKICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICBWZWN0b3I8UmF3RmlsZT4g
ZmlsZXM7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvbWFjL1F1YXJhbnRpbmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9R
dWFyYW50aW5lU1BJLmgKaW5kZXggOTQwNDc0NDM1ZjhkZDNkNWU4MzUyNzdiNjZkMzJkOGZmMzFi
YjJjMi4uMGJmMTAzZDRhOWViZDlmZGZjYzkxYzAzYjY5M2VkM2E4M2U3MzZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjZWxzZQogCiBlbnVtIHF0bl9mbGFncyB7CisgICAgUVROX0ZMQUdfRE9XTkxPQUQg
PSAweDAwMDEsCiAgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwKIH07CiAKQEAgLTQzLDEw
ICs0NCwxNSBAQCBlbnVtIHF0bl9mbGFncyB7CiAjZGVmaW5lIHF0bl9wcm9jX2luaXQgX3F0bl9w
cm9jX2luaXQKICNkZWZpbmUgcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYgX3F0bl9wcm9jX2luaXRf
d2l0aF9zZWxmCiAjZGVmaW5lIHF0bl9wcm9jX3NldF9mbGFncyBfcXRuX3Byb2Nfc2V0X2ZsYWdz
Ci0KKyNkZWZpbmUgcXRuX2ZpbGVfYWxsb2MgX3F0bl9maWxlX2FsbG9jCisjZGVmaW5lIHF0bl9m
aWxlX2luaXRfd2l0aF9wYXRoIF9xdG5fZmlsZV9pbml0X3dpdGhfcGF0aAorI2RlZmluZSBxdG5f
ZmlsZV9mcmVlIF9xdG5fZmlsZV9mcmVlCisjZGVmaW5lIHF0bl9maWxlX2FwcGx5X3RvX3BhdGgg
X3F0bl9maWxlX2FwcGx5X3RvX3BhdGgKKyNkZWZpbmUgcXRuX2ZpbGVfc2V0X2ZsYWdzIF9xdG5f
ZmlsZV9zZXRfZmxhZ3MKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCBfcXRuX3Byb2MgKnF0bl9w
cm9jX3Q7Cit0eXBlZGVmIHN0cnVjdCBfcXRuX2ZpbGUgKnF0bl9maWxlX3Q7CiAKIFdURl9FWFRF
Uk5fQ19CRUdJTgogCkBAIC01Niw2ICs2MiwxMSBAQCBpbnQgcXRuX3Byb2NfaW5pdF93aXRoX3Nl
bGYocXRuX3Byb2NfdCk7CiBpbnQgcXRuX3Byb2Nfc2V0X2ZsYWdzKHF0bl9wcm9jX3QsIHVpbnQz
Ml90IGZsYWdzKTsKIHF0bl9wcm9jX3QgcXRuX3Byb2NfYWxsb2MoKTsKIHZvaWQgcXRuX3Byb2Nf
ZnJlZShxdG5fcHJvY190KTsKK3F0bl9maWxlX3QgcXRuX2ZpbGVfYWxsb2Modm9pZCk7Cit2b2lk
IHF0bl9maWxlX2ZyZWUocXRuX2ZpbGVfdCBxZik7CitpbnQgcXRuX2ZpbGVfc2V0X2ZsYWdzKHF0
bl9maWxlX3QgcWYsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBxdG5fZmlsZV9hcHBseV90b19wYXRo
KHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOworaW50IHF0bl9maWxlX2luaXRfd2l0
aF9wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOwogCiBXVEZfRVhURVJOX0Nf
RU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkwNDE4ZWJlODFhYmMxYTkxODAuLjczYjIyZjkz
MjFiMDVlM2EwMGNhOWM3YmI2ZWZlNDM0NTk5MTZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50VHJhY2tpbmdS
ZWdpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9w
ZXJhdGlvbnMuaD4KQEAgLTIwMTcsNiArMjAxOCwzMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Rmls
ZUNob29zZXJTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGaWxlQ2hvb3NlclNl
dAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3
RmlsZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFJhd0ZpbGU+JiBm
aWxlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihmaWxlcy5zaXpl
KCkpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAgICAgIGVuY29kZXIgPDwg
ZmlsZS5maWxlTmFtZTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGZpbGUu
ZmlsZURhdGEuZ2V0KCkpOworICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFZlY3RvcjxS
YXdGaWxlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8UmF3RmlsZT4mIGZpbGVz
KQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaWxlcy5yZXNpemUoZGF0YVNp
emUpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZmlsZS5maWxlTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBmaWxlLmZpbGVEYXRhKTsKKworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KICAgICAKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGE+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVEYXRhJiBzZXR0aW5ncykKIHsK
QEAgLTIwNDAsNiArMjA2Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFy
c2VkVVJMPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlCiB7CiAgICAgZW5j
b2RlciA8PCBzZXR0aW5ncy5zaGFyZURhdGE7CiAgICAgZW5jb2RlciA8PCBzZXR0aW5ncy51cmw7
CisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5maWxlczsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCYgc2V0dGluZ3MpCkBAIC0yMDQ4LDYgKzIwNzUsOCBAQCBib29sIEFy
Z3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBTaGFyZURhdGFXaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzZXR0aW5ncy51cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzZXR0aW5ncy5maWxlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCA4ZjQ4NzYwZGY2ZGRhYzBkYzRkNWNlZjE3M2VhNGEyMTZlODRmMDE3
Li4wMDM0NTNiMGExYzI5NDE5ZjliMTYyNmNkNDVjMGVlZDc1ZmI0ZWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODAsNiArODAsNyBAQCBj
bGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRGF0
YWJhc2VEZXRhaWxzOwogY2xhc3MgRHJhZ0RhdGE7CitjbGFzcyBGaWxlOwogY2xhc3MgRmlsdGVy
T3BlcmF0aW9uOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBA
IC0xMjMsNiArMTI0LDcgQEAgc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25zOwogc3RydWN0IEV4
Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgRmlsZUNob29z
ZXJTZXR0aW5nczsKK3N0cnVjdCBSYXdGaWxlOwogc3RydWN0IFNoYXJlRGF0YTsKIHN0cnVjdCBT
aGFyZURhdGFXaXRoUGFyc2VkVVJMOwogc3RydWN0IExlbmd0aDsKQEAgLTU1Myw2ICs1NTUsMTEg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpGaWxl
Q2hvb3NlclNldHRpbmdzJik7CiB9OwogICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxlPiYpOworICAgIHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiwgVmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+Jik7Cit9OworCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNoYXJlRGF0YT4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhJik7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTaGFyZURhdGEmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKaW5kZXggNGFj
ZGJiNjlhNGIyYWJlMWFjMGZlNDViMzRlZWQxYzZhYWE3MWNhMS4uZjg5OWMyMmYzMTVkMmQ3Yzhl
YmQ0OGQxODYwNzU5YjgwYWE2NjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTaGFyZVNoZWV0LmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkw7CiAKIC0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3Jl
OjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGlzbWlzczsK
Ky0gKHZvaWQpcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTooTlNBcnJheSAqKXNoYXJlRGF0YUFy
cmF5IGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3Q7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tTaGFyZVNoZWV0RGVsZWdhdGU+IGRlbGVn
YXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJl
U2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0K
aW5kZXggYjAyNDMzYzMwM2E2ZjkzOWRiNDJhN2ZjNDA0OWU5ZWFjNTQxYjAwNi4uZTdmNWI3OWMy
YTQxNTNhOTk1NTU5ZDZmOWE3ZjM0NjEwYjBjOGNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtMjgsNiArMjgsMTAgQEAKIAogI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CiAKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL1NoYXJlRGF0YS5oPgpAQCAtMTA2LDEwICsxMTAsNDMgQEAgLSAodm9pZClwcmVzZW50V2l0
aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgJilkYXRh
IGluUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBpZiAoIWRhdGEuZmlsZXMu
c2l6ZSgpKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpmaWxlRGF0YSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdOworICAgICAgICBOU011dGFibGVBcnJheSAqZmlsZU5hbWVzID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisKKyAgICAgICAgZm9yIChhdXRvIGZpbGUg
OiBkYXRhLmZpbGVzKSB7CisgICAgICAgICAgICBbZmlsZURhdGEgYWRkT2JqZWN0OiBmaWxlLmZp
bGVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgICAgICAgICBbZmlsZU5hbWVzIGFk
ZE9iamVjdDpmaWxlLmZpbGVOYW1lXTsKKyAgICAgICAgfQorICAgICAgICBkaXNwYXRjaF9hc3lu
YyggZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZSggRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVG
QVVMVCwgMCksIF4odm9pZCkgeworICAgICAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgZmlsZURhdGEuY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIE5TVVJMICpmaWxlVVJM
ID0gW1dLU2hhcmVTaGVldCB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpmaWxlTmFtZXNbaV0gZGF0
YTpmaWxlRGF0YVtpXV07CisgICAgICAgICAgICAgICAgaWYgKCFmaWxlVVJMKSB7CisgICAgICAg
ICAgICAgICAgICAgIFtmaWxlRGF0YSByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgW2Zp
bGVOYW1lcyByZWxlYXNlXTsKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYgX2RpZENvbXBsZXRl
V2l0aFN1Y2Nlc3M6Tk9dOworICAgICAgICAgICAgICAgICAgICBbc2VsZiBkaXNtaXNzXTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBbc2hhcmVEYXRhQXJyYXkgYWRkT2JqZWN0OmZpbGVVUkxdOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgW2ZpbGVEYXRhIHJlbGVhc2VdOworICAgICAgICAgICAgW2ZpbGVOYW1lcyBy
ZWxlYXNlXTsKKyAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF4odm9pZCkgeworICAgICAgICAgICAgICAgIFtzZWxmIHByZXNlbnRXaXRoU2hhcmVE
YXRhQXJyYXk6IHNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBbc2VsZiBwcmVz
ZW50V2l0aFNoYXJlRGF0YUFycmF5OiBzaGFyZURhdGFBcnJheS5nZXQoKSBpblJlY3Q6cmVjdF07
Cit9CisKKy0gKHZvaWQpcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTooTlNBcnJheSAqKXNoYXJl
RGF0YUFycmF5IGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3Qg
eworCiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7
CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFk
b3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJl
RGF0YUFycmF5LmdldCgpXSk7CisgICAgX3NoYXJpbmdTZXJ2aWNlUGlja2VyID0gYWRvcHROUyhb
W05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6c2hhcmVEYXRhQXJy
YXldKTsKICAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIuZ2V0KCkuZGVsZWdhdGUgPSBzZWxmOwog
ICAgIAogICAgIC8vIFdLU2hhcmVTaGVldCBjYW4gYmUgcmVsZWFzZWQgdW5kZXIgTlNTaGFyaW5n
U2VydmljZVBpY2tlciBkZWxlZ2F0ZSBjYWxsYmFja3MuCkBAIC0xMjYsNyArMTYzLDcgQEAgLSAo
dm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwgJilkYXRhIGluUmUKICAgICB9CiAgICAgW19zaGFyaW5nU2VydmljZVBpY2tlciBz
aG93UmVsYXRpdmVUb1JlY3Q6cHJlc2VudGF0aW9uUmVjdCBvZlZpZXc6d2ViVmlldyBwcmVmZXJy
ZWRFZGdlOk5TTWluWUVkZ2VdOwogI2Vsc2UKLSAgICBfc2hhcmVTaGVldFZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbW1VJQWN0aXZpdHlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBY3Rp
dml0eUl0ZW1zOnNoYXJlRGF0YUFycmF5LmdldCgpIGFwcGxpY2F0aW9uQWN0aXZpdGllczpuaWxd
KTsKKyAgICBfc2hhcmVTaGVldFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1VJQWN0aXZpdHlW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBY3Rpdml0eUl0ZW1zOnNoYXJlRGF0YUFycmF5
IGFwcGxpY2F0aW9uQWN0aXZpdGllczpuaWxdKTsKICAgICBbX3NoYXJlU2hlZXRWaWV3Q29udHJv
bGxlciBzZXRDb21wbGV0aW9uV2l0aEl0ZW1zSGFuZGxlcjpeKE5TU3RyaW5nICosIEJPT0wgY29t
cGxldGVkLCBOU0FycmF5ICosIE5TRXJyb3IgKikgewogICAgICAgICBbc2VsZiBfZGlkQ29tcGxl
dGVXaXRoU3VjY2Vzczpjb21wbGV0ZWRdOwogICAgICAgICBbc2VsZiBkaXNwYXRjaERpZERpc21p
c3NdOwpAQCAtMTgwLDYgKzIxNyw4IEBAIC0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmlu
Z1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5CiAKIC0gKHZv
aWQpX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6KEJPT0wpc3VjY2VzcwogeworICAgIAorICAgIFtX
S1NoYXJlU2hlZXQgcmVtb3ZlRmlsZURpcmVjdG9yeUZvclNoYXJpbmddOwogICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKF9jb21wbGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKGNv
bXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKQEAg
LTIxNSw2ICsyNTQsMTU4IEBAIC0gKHZvaWQpZGlzcGF0Y2hEaWREaXNtaXNzCiAgICAgICAgIFtf
ZGVsZWdhdGUgc2hhcmVTaGVldERpZERpc21pc3M6c2VsZl07CiB9CiAKKyNpZiBQTEFURk9STShN
QUMpCitzdGF0aWMgU3RyaW5nIGNhY2hlRGF0YVZhdWx0UGFyZW50RGlyZWN0b3J5KCkKK3sKKyAg
ICBjaGFyIHRlbXBbUEFUSF9NQVhdOworICAgIHNpemVfdCBsZW5ndGggPSBjb25mc3RyKF9DU19E
QVJXSU5fVVNFUl9DQUNIRV9ESVIsIHRlbXAsIHNpemVvZih0ZW1wKSk7CisgICAgaWYgKCFsZW5n
dGgpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IHJldHJpZXZlIHVzZXIg
Y2FjaGUgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJu
bykpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0
aCA8PSBzaXplb2YodGVtcCkpOworICAgIGNoYXIgcmVzb2x2ZWRQYXRoW1BBVEhfTUFYXTsKKyAg
ICBpZiAoIXJlYWxwYXRoKHRlbXAsIHJlc29sdmVkUGF0aCkpIHsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCIlczogQ291bGQgbm90IGNhbm9uaWNhbGl6ZSB1c2VyIGNhY2hlIGRpcmVjdG9yeSBwYXRo
OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJu
ICIiOworICAgIH0KKyAgICByZXR1cm4gcmVzb2x2ZWRQYXRoOworfQorCisrIChCT09MKXJlbW92
ZUZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nCit7CisgICAgTlNTdHJpbmcgKmRhdGFQYXRoID0gW1dL
U2hhcmVTaGVldCBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aF07CisgICAgaWYgKCFkYXRhUGF0aCkK
KyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFQYXRoXSkKKyAgICAgICAgcmV0dXJuIFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDogZGF0YVBhdGgg
ZXJyb3I6bmlsXTsKKyAgICByZXR1cm4gWUVTOworfQorCisrIChCT09MKXNldFF1YXJhbnRpbmVJ
bmZvcm1hdGlvbkZvckZpbGVQYXRoOihOU1N0cmluZyAqKWZpbGVQYXRoCit7CisgICAgTlNVUkwg
KmZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVQYXRoXTsKKworICAgIC8vIFdv
cmthcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzIxNzM1NDEyPjogTlNVUkxEb3dubG9hZCB3aWxsIGF1
dG9tYXRpY2FsbHkgYXR0YWNoIE5TVVJMUXVhcmFudGluZVByb3BlcnRpZXMKKyAgICAvLyB0byBm
aWxlcyB3ZSBkb3dubG9hZCBpZiB0aGV5IGFyZSBhbHJlYWR5IHF1YXJhbnRpbmVkLiBUaGlzIGFk
ZHMgYSBxdWFyYW50aW5lIGhpc3RvcnkgaXRlbSB0aGF0IHRoZSBjb2RlCisgICAgLy8gYmVsb3cg
d2lsbCBzaGFkb3cuIFNpbmNlIFNhZmFyaSBuZWVkcyB0byBiZSBhYmxlIHRvIHJlbW92ZSBhbGwg
dHJhY2VzIG9mIGRvd25sb2FkIGhpc3RvcnksIHdlIG5lZWQgdG8KKyAgICAvLyBkZWxldGUgdGhh
dCBlbnRyeSBiZWZvcmUgb3VycyByZW5kZXJzIGl0IGluYWNjZXNzaWJsZS4KKworICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKnF1YXJhbnRpbmVQcm9wZXJ0aWVzID0gW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XTsKKyAgICBxdWFyYW50aW5lUHJvcGVydGllc1soX19icmlkZ2UgTlNT
dHJpbmcgKilrTFNRdWFyYW50aW5lVHlwZUtleV0gPSAoX19icmlkZ2UgTlNTdHJpbmcgKilrTFNR
dWFyYW50aW5lVHlwZVdlYkRvd25sb2FkOworICAgIHF1YXJhbnRpbmVQcm9wZXJ0aWVzWyhfX2Jy
aWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVBZ2VudEJ1bmRsZUlkZW50aWZpZXJLZXldID0g
V2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisKKworICAgIE5TRXJyb3Ig
KmVycm9yOworICAgIGlmICghW2ZpbGVVUkwgc2V0UmVzb3VyY2VWYWx1ZTpxdWFyYW50aW5lUHJv
cGVydGllcyBmb3JLZXk6TlNVUkxRdWFyYW50aW5lUHJvcGVydGllc0tleSBlcnJvcjomZXJyb3Jd
KSB7CisgICAgICAgIFtxdWFyYW50aW5lUHJvcGVydGllcyByZWxlYXNlXTsKKyAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3Qgc2V0IHF1YXJhbnRpbmUgaW5mb3JtYXRpb24gZm9yIGZpbGUgcGF0
aDogJUA6ICVAIiwgZmlsZVBhdGgsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0K
KyAgICBbcXVhcmFudGluZVByb3BlcnRpZXMgcmVsZWFzZV07CisKKyAgICAvLyBXaGV0aGVyIHRo
ZSBmaWxlIHdhcyBkb3dubG9hZGVkIGJ5IHNhbmRib3hlZCBXZWJQcm9jZXNzIG9yIG5vdCwgTFNT
ZXRJdGVtQXR0cmlidXRlIHJlc2V0cyB0aGUgZmxhZ3MgdG8gMCAoYWR2aXNvcnkgUVROX0ZMQUdf
RE9XTkxPQUQsCisgICAgLy8gd2hpY2ggY2FuIGJlIHRoZW4gcmVtb3ZlZCBieSBXZWJQcm9jZXNz
KS4gUmVwbGFjZSB0aGUgZmxhZ3Mgd2l0aCBzYW5kYm94IHF1YXJhbnRpbmUgb25lcywgd2hpY2gg
Y2Fubm90IGJlIHJlbW92ZWQgYnkgc2FuZGJveGVkIHByb2Nlc3Nlcy4KKyAgICByZXR1cm4gW1dL
U2hhcmVTaGVldCBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0
UGF0aDpmaWxlUGF0aF07Cit9CisKKysgKEJPT0wpYXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERv
d25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6KE5TU3RyaW5nICopZmlsZVBhdGgKK3sKKyAgICBxdG5f
ZmlsZV90IGZxID0gcXRuX2ZpbGVfYWxsb2MoKTsKKyAgICBpbnQgcXVhcmFudGluZUVycm9yID0g
cXRuX2ZpbGVfaW5pdF93aXRoX3BhdGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikgeworICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZXRyaWV2ZSBxdWFyYW50aW5lIGZsYWdzIGZvciBmaWxlIHBhdGggJUA6ICVkIiwg
ZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisgICAgICAgIHF0bl9maWxlX2ZyZWUoZnEpOwor
ICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgcXVhcmFudGluZUVycm9yID0gcXRuX2Zp
bGVfc2V0X2ZsYWdzKGZxLCBRVE5fRkxBR19TQU5EQk9YIHwgUVROX0ZMQUdfRE9XTkxPQUQpOwor
ICAgIGlmIChxdWFyYW50aW5lRXJyb3IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
c2V0IHF1YXJhbnRpbmUgZmxhZ3MgaW4gcXRuX2ZpbGVfdCBzdHJ1Y3R1cmUgZm9yIGZpbGUgcGF0
aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKyAgICAgICAgcXRuX2ZpbGVf
ZnJlZShmcSk7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBxdWFyYW50aW5lRXJy
b3IgPSBxdG5fZmlsZV9hcHBseV90b19wYXRoKGZxLCBmaWxlUGF0aC5maWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24pOworICAgIGlmIChxdWFyYW50aW5lRXJyb3IpCisgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGFwcGx5IHF1YXJhbnRpbmUgZmxhZ3MgdG8gZmlsZSBwYXRoICVAOiAlZCIsIGZp
bGVQYXRoLCBxdWFyYW50aW5lRXJyb3IpOworCisgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisKKyAg
ICByZXR1cm4gWUVTOworfQorI2VuZGlmCisKKysgKE5TU3RyaW5nICopZ2V0U2hhcmluZ0RpcmVj
dG9yeVBhdGgKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgTlNTdHJpbmcgKmNhY2hlRGlyZWN0
b3J5ID0gY2FjaGVEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkoKTsKKyNlbHNlCisgICAgTlNBcnJh
eSAqcGF0aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0NhY2hlc0Rp
cmVjdG9yeSwgTlNVc2VyRG9tYWluTWFzaywgWUVTKTsKKyAgICBpZiAoIXBhdGhzIHx8ICFbcGF0
aHMgZmlyc3RPYmplY3RdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpjYWNo
ZURpcmVjdG9yeSA9IFtwYXRocyBmaXJzdE9iamVjdF07CisjZW5kaWYKKyAgICAKKyAgICBpZiAo
IVtjYWNoZURpcmVjdG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3Ry
aW5nICpkYXRhUGF0aCA9IFtjYWNoZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCIvV0tGaWxlU2hhcmUiXTsKKyAgICAKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
KyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpkYXRhUGF0aF0pIHsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
cmVhdGVEaXJlY3RvcnlBdFBhdGg6ZGF0YVBhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
Ok5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlmIChlcnJvcikKKyAg
ICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBkYXRhUGF0aDsKK30KKwor
KyAoTlNTdHJpbmcgKilmaWxlRGlyZWN0b3J5Rm9yU2hhcmluZworeworICAgIE5TU3RyaW5nICpy
YW5kb21EaXJlY3RvcnkgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgTlNTdHJp
bmcgKmRhdGFQYXRoID0gW1tXS1NoYXJlU2hlZXQgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Ii8lQCIsIHJhbmRvbURpcmVjdG9yeV1dOworICAgIGlmICghZGF0YVBhdGgpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YVBhdGhdKSB7
CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpOTyBhdHRyaWJ1dGVz
Om5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gZGF0YVBhdGg7Cit9CisKKysgKE5TU3RyaW5nICop
Y3JlYXRlRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUKK3sKKyAgICBOU1N0cmluZyAqZ2V0
VGVtcERpcmVjdG9yeSA9IFtXS1NoYXJlU2hlZXQgZmlsZURpcmVjdG9yeUZvclNoYXJpbmddOwor
ICAgIGlmIChnZXRUZW1wRGlyZWN0b3J5ID09IG5pbCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICBOU1N0cmluZyAqc2FuaXRpemVkRmlsZW5hbWUgPSBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlTmFtZSk7CisgICAgTlNTdHJpbmcg
KmZpbGVOYW1lQ29uY2F0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC8lQCIsIGdl
dFRlbXBEaXJlY3RvcnksIHNhbml0aXplZEZpbGVuYW1lXTsKKyAgICByZXR1cm4gZmlsZU5hbWVD
b25jYXQ7Cit9CisKKysgKE5TVVJMICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6KE5TU3RyaW5n
ICopZmlsZU5hbWUgZGF0YTooTlNEYXRhICopIGZpbGVEYXRhCit7CisgICAgTlNTdHJpbmcgKmZp
bGUgPSBbV0tTaGFyZVNoZWV0IGNyZWF0ZUZpbGVuYW1lOiBmaWxlTmFtZV07CisgICAgaWYgKCFm
aWxlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TVVJMICpmaWxlVVJMID0gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlXTsKKyAgICAKKyAgICBOU0Vycm9yICplcnJvciA9IG5p
bDsKKyAgICBbZmlsZURhdGEgd3JpdGVUb1VSTDpmaWxlVVJMIG9wdGlvbnM6TlNEYXRhV3JpdGlu
Z0F0b21pYyBlcnJvcjogJmVycm9yXTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBu
aWw7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghW1dLU2hhcmVTaGVldCBzZXRRdWFyYW50
aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDpmaWxlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNl
bmRpZgorICAgIHJldHVybiBmaWxlVVJMOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9S
TShDT0NPQSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGYyY2E3MzA1YWUzNTI2OGRiOWYxY2RiYTA4Y2M0MzI0ZjFkOGM1MmQuLmUxNWY5NDNkZjI0
YWE3NjIwZDBlNzIyMzhlYTIzYTE3NzM0YjBhMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVzZSB1
cmwgb2YgaW1hZ2UuCisKKyAgICAgICAgKiBmYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVz
Lmh0bWw6CisKIDIwMjAtMDMtMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2luXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggZDExZmIwNTU1YWZlNTBkNWUyOTExYzYwOGM0NWExMWZjYmVmMTc1
Ni4uMmM1MzNlYTY4NDE5OGQxMGM3NTdmNzgyODY4N2JlZGZlZGZiMmU5YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1v
dWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdl
Yi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIG5ldyBiZWhhdmlvci4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMu
aHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hh
cmUvY2FuU2hhcmUuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTAzLTIzICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3Bv
bnNlSGVhZGVycygpIHNvcnRpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNo
YXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3No
YXJlLXdpdGgtZmlsZXMuaHRtbAppbmRleCA4NTZlZDI0NDE4ODcxODhkYjY0OThkM2RiMTcwODA3
MTQ5MGY1Yzg2Li45Yjg5MGQ0YzFiMTM0N2QwOWNiNjFjYTI2MjQyMzJkMzUwYzA2OTkxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCkBA
IC0yLDYgKzIsNyBAQAogCiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJp
bml0aWFsLXNjYWxlPTUsIHdpZHRoPWRldmljZS13aWR0aCI+CisKIDxoZWFkPgogCiAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtMTYs
MTAgKzE3LDEyIEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydoZWxsbyddLCAnaGVsbG8udHh0
Jywge3R5cGU6J3RleHQvcGxhaW4nfSk7CisKKyAgICAgICAgICAgIHZhciBibG9iID0gdGhpcy5y
ZXNwb25zZTsKKyAgICAgICAgICAgIGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydUaGlzIGlz
IGEgdGV4dCBmaWxlJ10sICdUZXh0RmlsZS50eHQnLCB7dHlwZTondGV4dC9odG1sJ30pOwogICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgKCkgPT4gewotICAgICAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4
dDogInNhZGYiLCBmaWxlczogW3RleHRGaWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAg
ICAgICAgICAgICAgICB3cml0ZSgiUEFTUzogU2hhcmUgc2hlZXQgaW52b2tlZC4iKTsKKyAgICAg
ICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDogIlRoaXMgaXMgYSB0ZXh0IGZpbGUiLCBmaWxl
czogW3RleHRGaWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgIHdyaXRl
KCJQQVNTOiBTaGFyZSBzaGVldCBpbnZva2VkLiIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9KTsgICAgCiAgICAgICAgICAg
ICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394701</attachid>
            <date>2020-03-26 21:23:53 -0700</date>
            <delta_ts>2020-03-26 23:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200327002352.patch</filename>
            <type>text/plain</type>
            <size>36890</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZlMmVlZWY2ZWQzMzYz
YzUwNzkxMjE5NWU1NjVkYjIxOGE0ZDAzMS4uMTcwNGYyYWYyYTlmNmUwNTRkYWNhY2QyZTAzMDBm
NDc0MmQ4NjY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAg
ICBbR1RLXSBBbGxvdyBkaXN0cmlidXRvcnMgdG8gYnJhbmQgdXNlciBhZ2VudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3NzQ5YmYzZDUxOGEzMGNkNDI3OGM4NTI0NGE4ZDlmOGI0MGMzZTgwLi4zOGZkYWE2MWZhMjZm
YzAzMGRmZjYzYmZlMzUwM2ZlNDFjYjE2ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTIzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGluc2VydGluZyB0ZXh0IG9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSBieSBzaW11
bGF0aW5nIGtleWJvYXJkIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IGIxNzUzOWJlOTE5
MzEyYWI4M2U5Mzk5MzVjZWZkMjJkMTkzYjI5OTMuLmQ3OGE1MzczMGRjNDk5MDM2Nzk4Yzk0MWI4
NGZkZGZiODc4YThkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC00ODUsNyArNDg1LDcgQEAK
ICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTMwNDAwKQotI2RlZmluZSBIQVZFX1VJX0NVUlNPUl9JTlRFUkFDVElPTiAx
CisjZGVmaW5lIEhBVkVfVUlfQ1VSU09SX0lOVEVSQUNUSU9OIDAKICNlbmRpZgogCiAjaWYgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwNDAw
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggY2Y1NTU2YTNhNzBk
NGFiOWVjOGRhNjFmYTY2NTE0MDE4NDJlMWQwMy4uNTQwZmRiMTlmMDI4OTZlZjAyNTc1YmJhNTg3
YTVmMzkxNWE2ODFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2NzAsNiArMTY3MCw3IEBAIHBhZ2Uv
UG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAogcGFnZS9QcmludENvbnRleHQuY3BwCiBwYWdlL1By
b2Nlc3NXYXJtaW5nLmNwcAogcGFnZS9RdWlya3MuY3BwCitwYWdlL1JlYWRTaGFyZURhdGFBc3lu
Yy5jcHAKIHBhZ2UvUmVtb3RlRE9NV2luZG93LmNwcAogcGFnZS9SZW1vdGVGcmFtZS5jcHAKIHBh
Z2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjYTU1YTQxZTkxZmZkZjE2ZTll
NTM4ZjZmNjNkMzNlZTE3NTY1ZWMuLjNkYmJjMWIwYjcxYjA0ZDM4MmM3YmFmYzZhY2NjZmI4Yzk5
ZDQ2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYxNjYsNiArNjE2Niw4IEBACiAJCTFBMkE2ODIyMEI1QkVERTcwMDAyQTQ4
MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByb2dyZXNzVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJBQUM1
NjBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJBQUM1NzBEQzJBM0IxMDBBMjBEOUEg
LyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFJlYWRTaGFyZURhdGFBc3luYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQTJDNjY3MzI0MkFGRUY4MDAzMDU1RUMgLyogUmVhZFNoYXJlRGF0
YUFzeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRTaGFyZURhdGFBc3luYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTJFNkU1ODBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1
dGhvcml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRl
QXV0aG9yaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMzU4NkREMTUy
NjRDNDUwMDIyQTY1OSAvKiBSZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTcxLDYgKzIwOTczLDggQEAKIAkJCQlFNDIwNTAx
NDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dhcm1pbmcuaCAqLywKIAkJCQlDRDlBODdGOTIx
NUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmNwcCAqLywKIAkJCQlDRDlBODdGQjIxNUQ2Q0YzMDA2
RjE3QjUgLyogUXVpcmtzLmggKi8sCisJCQkJMUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFJl
YWRTaGFyZURhdGFBc3luYy5jcHAgKi8sCisJCQkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8q
IFJlYWRTaGFyZURhdGFBc3luYy5oICovLAogCQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAv
KiBSZW1vdGVET01XaW5kb3cuY3BwICovLAogCQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAv
KiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJCQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyog
UmVtb3RlRE9NV2luZG93LmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBj
YWNjMmExMzM2OTkyNmJmZDY5ZDFlNTljMzE5MTRhY2MzNjFlMjc0Li44YjU3OGI0ZmY3OTI3ZDA3
NmE2NTY3NjRiM2ZhOGZkNjNiNzlmMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBA
IC0zNywxMiArMzcsMTQgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1ZGUgIlJlYWRTaGFy
ZURhdGFBc3luYy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU2hhcmVEYXRhLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xMTIsOCArMTE0LDEzIEBAIGJvb2wgTmF2
aWdhdG9yOjpjYW5TaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
aGFyZURhdGEmIGRhdGEpCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChkYXRhLnRpdGxlLmlzTnVsbCgpICYmIGRhdGEudXJs
LmlzTnVsbCgpICYmIGRhdGEudGV4dC5pc051bGwoKSkgewotICAgICAgICBpZiAoIWRhdGEuZmls
ZXMuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIWRhdGEuZmlsZXMuaXNFbXB0eSgpKSB7CisjaWYg
RU5BQkxFKEZJTEVfU0hBUkUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMzksNyArMTQ2LDcgQEAgdm9pZCBOYXZpZ2F0b3I6OnNoYXJl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSwg
UmUKICAgICAKICAgICBhdXRvKiB3aW5kb3cgPSB0aGlzLT53aW5kb3coKTsKICAgICAvLyBOb3Rl
IHRoYXQgdGhlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaW5kaWNhdGUgd2Ugc2hvdWxkIGNvbnN1
bWUgdXNlciBhY3RpdmF0aW9uLiBXZSBhcmUgaW50ZW50aW9uYWxseSBzdHJpY3RlciBoZXJlLgot
ICAgIGlmICghd2luZG93IHx8ICF3aW5kb3ctPmNvbnN1bWVUcmFuc2llbnRBY3RpdmF0aW9uKCkp
IHsKKyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0aXZhdGlv
bigpIHx8IG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCkgewogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoTm90QWxsb3dlZEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NywxMCAr
MTU0LDM1IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAgICAgU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCBzaGFyZURhdGEgPSB7CiAgICAgICAgIGRhdGEsCiAgICAgICAgIHVybCwKKyAgICAgICAg
eyB9LAogICAgIH07CiAgICAgCisgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAobV9sb2FkZXIpIHsKKyAgICAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAg
ICAgICAgICAgIG1fbG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBtX2xvYWRl
ciA9IFJlYWRTaGFyZURhdGFBc3luYzo6Y3JlYXRlKGNvbnRleHQsIFt0aGlzLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiBy
ZWFkRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aGlzLT5wcmVzZW50U2hhcmVTaGVldChy
ZWFkRGF0YSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIH0pOworICAgICAgICBtX2xvYWRl
ci0+c3RhcnQoc2hhcmVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0aGlzLT5w
cmVzZW50U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lk
IE5hdmlnYXRvcjo6cHJlc2VudFNoYXJlU2hlZXQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCY+IHJlYWREYXRhLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7Cisg
ICAgaWYgKHJlYWREYXRhLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVj
dChyZWFkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICBmcmFtZS0+cGFnZSgp
LT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0gKGJvb2wgY29tcGxldGVkKSB7CisgICAgbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0
ID0gdHJ1ZTsKKyAgICBhdXRvIHNoYXJlRGF0YSA9IHJlYWREYXRhLnJldHVyblZhbHVlKCk7Cisg
ICAgZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHRoaXNdIChib29sIGNvbXBsZXRlZCkgeworICAgICAg
ICBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQgPSBmYWxzZTsKICAgICAgICAgaWYgKGNvbXBsZXRl
ZCkgewogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggZWFiZjE0N2MwOWNkOTQ5OWMwZWIwZjNlYjI2
NDhhODg2NDdmODJkZC4uZGI0NzZhY2VjY2I1NzVmNGI2MzIwZjQ4MDQ1MDFlMjVhNTVjZTc4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0yMiwxNSArMjIsMTggQEAKICNpbmNsdWRlICJE
T01XaW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRl
ICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKICNpbmNsdWRlICJT
dXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBCbG9iOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3Mg
RE9NTWltZVR5cGVBcnJheTsKIGNsYXNzIERPTVBsdWdpbkFycmF5Owotc3RydWN0IFNoYXJlRGF0
YTsKK2NsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CitjbGFzcyBSZWFkU2hhcmVEYXRhQXN5bmM7CiAK
IGNsYXNzIE5hdmlnYXRvciBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlLCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBTdXBwbGVtZW50
YWJsZTxOYXZpZ2F0b3I+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5hdmlnYXRvcik7
CkBAIC00OSw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICBib29sIG9uTGluZSgpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgY2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFNoYXJl
RGF0YSYpOwogICAgIHZvaWQgc2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFNo
YXJlRGF0YSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwotICAgIAorICAgIHZvaWQgZmluaXNo
ZWRMb2FkKEV4Y2VwdGlvbk9yPHZvaWQ+IHJldCk7CisgICAgdm9pZCBwcmVzZW50U2hhcmVTaGVl
dChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4sIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBzdGFuZGFsb25lKCkg
Y29uc3Q7CiAjZW5kaWYKQEAgLTYzLDYgKzY3LDkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6CisgICAgUmVmUHRyPFJlYWRTaGFyZURhdGFBc3luYz4gbV9sb2FkZXI7CisgICAgc3RkOjph
dG9taWM8Ym9vbD4gbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gZmFsc2U7CisgICAgCiAgICAg
ZXhwbGljaXQgTmF2aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01XaW5kb3cmKTsK
IAogICAgIG11dGFibGUgUmVmUHRyPERPTVBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFlZmE1MDA1
ODZjMmJhNWFjOGJkZTIyYzU4MjY0ZGUyZDU0YzdjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcApAQCAtMCwwICsxLDExNSBAQAor
LyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVhZFNoYXJlRGF0YUFzeW5jLmgiCisKKyNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyLmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgor
I2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpyZWFkSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQmxvYiYgYmxvYikKK3sKKyAgICBtX2N1
cnJlbnRMb2FkaW5nRmlsZU5hbWUgPSBtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXNbbV9maWxl
c1JlYWRTb0Zhcl0tPm5hbWUoKTsKKyAgICBtX2ZpbGVzUmVhZFNvRmFyICs9IDE7CisgICAgbV9i
bG9iID0gJmJsb2I7CisKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRl
cj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHN0YXRpY19jYXN0PEZpbGVS
ZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CisgICAgbV9sb2FkZXItPnNldERhdGFUeXBlKG1f
YmxvYi0+dHlwZSgpKTsKKyAgICBtX2xvYWRlci0+c3RhcnQoJmNvbnRleHQsIGJsb2IpOworfQor
CitSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlv
bkhhbmRsZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9jb250ZXh0
KCZjb250ZXh0KQorICAgICwgbV9maWxlc1JlYWRTb0ZhcigwKQoreworICAgIAorfQorCitSZWFk
U2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMoKQoreworLy8gICAgbV9zaGFyZURh
dGEgPSBudWxscHRyOworICAgIG1fY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9ibG9iID0gbnVs
bHB0cjsKKyAgICBjYW5jZWwoKTsKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OnN0YXJ0
KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhKQoreworICAgIG1fZmlsZXNSZWFkU29G
YXIgPSAwOworICAgIG1fc2hhcmVEYXRhID0gV1RGTW92ZShzaGFyZURhdGEpOworICAgIHJlYWRJ
bnRlcm5hbCgqbV9jb250ZXh0LCAqbV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzW21fZmlsZXNS
ZWFkU29GYXJdKTsKKyAgICBtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMucmVzZXJ2ZUNhcGFj
aXR5KG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkpOworfQorCit2b2lkIFJlYWRT
aGFyZURhdGFBc3luYzo6ZGlkRmluaXNoTG9hZGluZygpCit7CisgICAgCisgICAgUmF3RmlsZSBm
aWxlOworICAgIGZpbGUuZmlsZU5hbWUgPSBtX2N1cnJlbnRMb2FkaW5nRmlsZU5hbWU7CisgICAg
YXV0byBhcnJheUJ1ZmZlciA9IG1fbG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpOworICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gV1RGTW92ZShzaGFyZWRCdWZmZXIpOworICAg
IG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKKyAgICAKKyAgICBpZiAo
bV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzLnNpemUoKSAhPSBtX2ZpbGVzUmVhZFNvRmFyKSB7
CisgICAgICAgIHJlYWRJbnRlcm5hbCgqbV9jb250ZXh0LCAqbV9zaGFyZURhdGEuc2hhcmVEYXRh
LmZpbGVzW21fZmlsZXNSZWFkU29GYXJdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1fc2hhcmVEYXRhKTsKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFJlY2VpdmVE
YXRhKCkKK3sKKyAgICAKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9h
ZGluZygpCit7CisgICAgCit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRGYWlsKGlu
dCBlcnJvckNvZGUpCit7CisgICAgVU5VU0VEX1BBUkFNKGVycm9yQ29kZSk7CisgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgaWYg
KGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24g
eyBBYm9ydEVycm9yLCAiQWJvcnQgZHVlIHRvIGZhaWwgb2YgcmVhZGluZyBmaWxlcy4iX3MgfSk7
Cit9Cit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6Y2FuY2VsKCkKK3sKKyAgICBpZiAobV9sb2Fk
ZXIpIHsKKyAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOworICAgICAgICBtX2xvYWRlciA9IG51
bGxwdHI7CisgICAgfQorfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZWFk
U2hhcmVEYXRhQXN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5j
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTkzODYxYmNkYTMwMGFiNTg1NDZmZGFiYjc1MWFlYjZiMWUyMzdjYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5j
LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUg
bWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uT3IuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVSZWFk
ZXJMb2FkZXI7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBSZWFkU2hh
cmVEYXRhQXN5bmM6IHByaXZhdGUgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8UmVhZFNoYXJlRGF0YUFzeW5jPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFk
U2hhcmVEYXRhQXN5bmM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwm
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhZFNoYXJl
RGF0YUFzeW5jKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZXh0KSk7IH0KKyAgICAK
KyAgICB+UmVhZFNoYXJlRGF0YUFzeW5jKCk7CisgICAgdm9pZCBzdGFydChTaGFyZURhdGFXaXRo
UGFyc2VkVVJMKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IFJlYWRTaGFyZURhdGFBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAg
ICB2b2lkIHJlYWRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQmxvYiYpOworICAg
IHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIGZpbmFsOworICAgIHZvaWQgZGlk
RmFpbChpbnQgZXJyb3JDb2RlKSBmaW5hbDsKKyAgICAKKyAgICAKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+IG1fY29tcGxl
dGlvbkhhbmRsZXI7CisgICAgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBtX3NoYXJlRGF0YTsKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgUmVmUHRyPEJsb2I+IG1f
YmxvYjsKKyAgICBTdHJpbmcgbV9jdXJyZW50TG9hZGluZ0ZpbGVOYW1lOworICAgIHNpemVfdCBt
X2ZpbGVzUmVhZFNvRmFyID0gMDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRl
cj4gbV9sb2FkZXI7CisgICAgCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA1
YzM5MDdjMTA3NTgwNDlkODg3YzA0NjMxZGI0ZjljMDNmZjFhZjc5Li5mZWU2Yjk5ZTNmYTVlMDQ4
ZTZiMThhMDQ5YjQyZGE2NGFjYmYzMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzUsMTAgKzM2LDE2IEBAIHN0cnVjdCBTaGFyZURhdGEgewogICAgIFN0cmluZyB1
cmw7CiAgICAgVmVjdG9yPFJlZlB0cjxGaWxlPj4gZmlsZXM7CiB9OworCitzdHJ1Y3QgUmF3Rmls
ZSB7CisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVE
YXRhOworfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKICAgICBTaGFy
ZURhdGEgc2hhcmVEYXRhOwogICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIFZlY3RvcjxSYXdG
aWxlPiBmaWxlczsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
bWFjL1F1YXJhbnRpbmVTUEkuaAppbmRleCA5NDA0NzQ0MzVmOGRkM2Q1ZTgzNTI3N2I2NmQzMmQ4
ZmYzMWJiMmMyLi4wYmYxMDNkNGE5ZWJkOWZkZmNjOTFjMDNiNjkzZWQzYTgzZTczNmZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNlbHNlCiAKIGVudW0gcXRuX2ZsYWdzIHsKKyAgICBRVE5fRkxBR19ET1dO
TE9BRCA9IDB4MDAwMSwKICAgICBRVE5fRkxBR19TQU5EQk9YID0gMHgwMDAyLAogfTsKIApAQCAt
NDMsMTAgKzQ0LDE1IEBAIGVudW0gcXRuX2ZsYWdzIHsKICNkZWZpbmUgcXRuX3Byb2NfaW5pdCBf
cXRuX3Byb2NfaW5pdAogI2RlZmluZSBxdG5fcHJvY19pbml0X3dpdGhfc2VsZiBfcXRuX3Byb2Nf
aW5pdF93aXRoX3NlbGYKICNkZWZpbmUgcXRuX3Byb2Nfc2V0X2ZsYWdzIF9xdG5fcHJvY19zZXRf
ZmxhZ3MKLQorI2RlZmluZSBxdG5fZmlsZV9hbGxvYyBfcXRuX2ZpbGVfYWxsb2MKKyNkZWZpbmUg
cXRuX2ZpbGVfaW5pdF93aXRoX3BhdGggX3F0bl9maWxlX2luaXRfd2l0aF9wYXRoCisjZGVmaW5l
IHF0bl9maWxlX2ZyZWUgX3F0bl9maWxlX2ZyZWUKKyNkZWZpbmUgcXRuX2ZpbGVfYXBwbHlfdG9f
cGF0aCBfcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aAorI2RlZmluZSBxdG5fZmlsZV9zZXRfZmxhZ3Mg
X3F0bl9maWxlX3NldF9mbGFncwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IF9xdG5fcHJvYyAq
cXRuX3Byb2NfdDsKK3R5cGVkZWYgc3RydWN0IF9xdG5fZmlsZSAqcXRuX2ZpbGVfdDsKIAogV1RG
X0VYVEVSTl9DX0JFR0lOCiAKQEAgLTU2LDYgKzYyLDExIEBAIGludCBxdG5fcHJvY19pbml0X3dp
dGhfc2VsZihxdG5fcHJvY190KTsKIGludCBxdG5fcHJvY19zZXRfZmxhZ3MocXRuX3Byb2NfdCwg
dWludDMyX3QgZmxhZ3MpOwogcXRuX3Byb2NfdCBxdG5fcHJvY19hbGxvYygpOwogdm9pZCBxdG5f
cHJvY19mcmVlKHF0bl9wcm9jX3QpOworcXRuX2ZpbGVfdCBxdG5fZmlsZV9hbGxvYyh2b2lkKTsK
K3ZvaWQgcXRuX2ZpbGVfZnJlZShxdG5fZmlsZV90IHFmKTsKK2ludCBxdG5fZmlsZV9zZXRfZmxh
Z3MocXRuX2ZpbGVfdCBxZiwgdWludDMyX3QgZmxhZ3MpOworaW50IHF0bl9maWxlX2FwcGx5X3Rv
X3BhdGgocXRuX2ZpbGVfdCBxZiwgY29uc3QgY2hhciAqcGF0aCk7CitpbnQgcXRuX2ZpbGVfaW5p
dF93aXRoX3BhdGgocXRuX2ZpbGVfdCBxZiwgY29uc3QgY2hhciAqcGF0aCk7CiAKIFdURl9FWFRF
Uk5fQ19FTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggYjMwN2FhMjU4OWVmODE0MGVhZjc1OTA0MThlYmU4MWFiYzFhOTE4MC4uNzNi
MjJmOTMyMWIwNWUzYTAwY2E5YzdiYjZlZmU0MzQ1OTkxNmMxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRUcmFj
a2luZ1JlZ2lvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
dGVyT3BlcmF0aW9ucy5oPgpAQCAtMjAxNyw2ICsyMDE4LDMxIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxGaWxlQ2hvb3NlclNldHRpbmdzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZpbGVDaG9v
c2VyU2V0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwordm9pZCBBcmd1bWVudENvZGVyPFZlY3Rv
cjxSYXdGaWxlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8UmF3Rmls
ZT4mIGZpbGVzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVz
LnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZXMpIHsKKyAgICAgICAgZW5jb2Rl
ciA8PCBmaWxlLmZpbGVOYW1lOworICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
ZmlsZS5maWxlRGF0YS5nZXQoKSk7CisgICAgfQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8VmVj
dG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxSYXdGaWxlPiYg
ZmlsZXMpCit7CisgICAgdWludDY0X3QgZGF0YVNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZpbGVzLnJlc2l6ZShk
YXRhU2l6ZSk7CisgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZXMpIHsKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShmaWxlLmZpbGVOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGZpbGUuZmlsZURhdGEpOworCisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQogICAgIAogdm9pZCBBcmd1bWVudENvZGVyPFNoYXJl
RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZURhdGEmIHNldHRpbmdz
KQogewpAQCAtMjA0MCw2ICsyMDY2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdp
dGhQYXJzZWRVUkw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmUKIHsKICAg
ICBlbmNvZGVyIDw8IHNldHRpbmdzLnNoYXJlRGF0YTsKICAgICBlbmNvZGVyIDw8IHNldHRpbmdz
LnVybDsKKyAgICBlbmNvZGVyIDw8IHNldHRpbmdzLmZpbGVzOwogfQogCiBib29sIEFyZ3VtZW50
Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzZXR0aW5ncykKQEAgLTIwNDgsNiArMjA3NSw4IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFNoYXJlRGF0YVdpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNldHRpbmdzLnVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdzLmZpbGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDhmNDg3NjBkZjZkZGFjMGRjNGQ1Y2VmMTczZWE0YTIxNmU4
NGYwMTcuLjAwMzQ1M2IwYTFjMjk0MTlmOWIxNjI2Y2Q0NWMwZWVkNzVmYjRlZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04MCw2ICs4MCw3
IEBAIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CiBjbGFz
cyBEYXRhYmFzZURldGFpbHM7CiBjbGFzcyBEcmFnRGF0YTsKK2NsYXNzIEZpbGU7CiBjbGFzcyBG
aWx0ZXJPcGVyYXRpb247CiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgRmxvYXRQb2lu
dDsKQEAgLTEyMyw2ICsxMjQsNyBAQCBzdHJ1Y3QgRXZlbnRUcmFja2luZ1JlZ2lvbnM7CiBzdHJ1
Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGb250QXR0cmlidXRlczsKIHN0cnVjdCBGaWxl
Q2hvb3NlclNldHRpbmdzOworc3RydWN0IFJhd0ZpbGU7CiBzdHJ1Y3QgU2hhcmVEYXRhOwogc3Ry
dWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgTGVuZ3RoOwpAQCAtNTUzLDYgKzU1
NSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3M+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIH07CiAgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxlPj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+Jik7CisgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4mKTsKK307
CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRhPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTaGFyZURh
dGEmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlNoYXJlRGF0
YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNo
ZWV0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaAppbmRl
eCA0YWNkYmI2OWE0YjJhYmUxYWMwZmU0NWIzNGVlZDFjNmFhYTcxY2ExLi5mODk5YzIyZjMxNWQy
ZDdjOGViZDQ4ZDE4NjA3NTliODBhYTY2NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1NoYXJlU2hlZXQuaApAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTDsKIAogLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKWRhdGEgaW5SZWN0OihXVEY6Ok9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClkaXNt
aXNzOworLSAodm9pZClwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OihOU0FycmF5ICopc2hhcmVE
YXRhQXJyYXkgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdDsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS1NoYXJlU2hlZXREZWxlZ2F0ZT4g
ZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
U2hhcmVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVl
dC5tbQppbmRleCBiMDI0MzNjMzAzYTZmOTM5ZGI0MmE3ZmM0MDQ5ZTllYWM1NDFiMDA2Li44MDZj
YWRhMWJiZGVlOTIxYWQ5NzMwZjQ4ZDk2YjNjYTliNWQwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCkBAIC0yOCw2ICsyOCwxMCBAQAogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikKIAorI2ltcG9ydCAiUXVhcmFudGluZVNQSS5oIgorCisjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVEYXRhLmg+CkBAIC0xMDYsMTAgKzExMCw0MyBAQCAtICh2b2lkKXByZXNl
bnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCAm
KWRhdGEgaW5SZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlmICghZGF0YS5m
aWxlcy5zaXplKCkpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmZpbGVEYXRhID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgICAgIE5TTXV0YWJsZUFycmF5ICpmaWxlTmFt
ZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKworICAgICAgICBmb3IgKGF1dG8g
ZmlsZSA6IGRhdGEuZmlsZXMpIHsKKyAgICAgICAgICAgIFtmaWxlRGF0YSBhZGRPYmplY3Q6IGZp
bGUuZmlsZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICAgICAgICAgIFtmaWxlTmFt
ZXMgYWRkT2JqZWN0OmZpbGUuZmlsZU5hbWVdOworICAgICAgICB9CisgICAgICAgIGRpc3BhdGNo
X2FzeW5jKCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKCBESVNQQVRDSF9RVUVVRV9QUklPUklU
WV9ERUZBVUxULCAwKSwgXih2b2lkKSB7CisgICAgICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBmaWxlRGF0YS5jb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgTlNVUkwgKmZp
bGVVUkwgPSBbV0tTaGFyZVNoZWV0IHdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOmZpbGVOYW1lc1tp
XSBkYXRhOmZpbGVEYXRhW2ldXTsKKyAgICAgICAgICAgICAgICBpZiAoIWZpbGVVUkwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgW2ZpbGVEYXRhIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAg
ICBbZmlsZU5hbWVzIHJlbGVhc2VdOworICAgICAgICAgICAgICAgICAgICBbc2VsZiBfZGlkQ29t
cGxldGVXaXRoU3VjY2VzczpOT107CisgICAgICAgICAgICAgICAgICAgIFtzZWxmIGRpc21pc3Nd
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIFtzaGFyZURhdGFBcnJheSBhZGRPYmplY3Q6ZmlsZVVSTF07CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBbZmlsZURhdGEgcmVsZWFzZV07CisgICAgICAgICAgICBbZmlsZU5h
bWVzIHJlbGVhc2VdOworICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXih2b2lkKSB7CisgICAgICAgICAgICAgICAgW3NlbGYgcHJlc2VudFdpdGhT
aGFyZURhdGFBcnJheTogc2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5SZWN0OnJlY3RdOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFtzZWxm
IHByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6IHNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpy
ZWN0XTsKK30KKworLSAodm9pZClwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OihOU0FycmF5ICop
c2hhcmVEYXRhQXJyYXkgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4p
cmVjdCB7CisKICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBfd2ViVmlldy5nZXRBdXRvcmVsZWFz
ZWQoKTsKICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX3NoYXJpbmdTZXJ2aWNlUGlja2Vy
ID0gYWRvcHROUyhbW05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6
c2hhcmVEYXRhQXJyYXkuZ2V0KCldKTsKKyAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBhZG9w
dE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczpzaGFyZURh
dGFBcnJheV0pOwogICAgIF9zaGFyaW5nU2VydmljZVBpY2tlci5nZXQoKS5kZWxlZ2F0ZSA9IHNl
bGY7CiAgICAgCiAgICAgLy8gV0tTaGFyZVNoZWV0IGNhbiBiZSByZWxlYXNlZCB1bmRlciBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyIGRlbGVnYXRlIGNhbGxiYWNrcy4KQEAgLTEyNiw3ICsxNjMsNyBA
QCAtICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCAmKWRhdGEgaW5SZQogICAgIH0KICAgICBbX3NoYXJpbmdTZXJ2aWNlUGlj
a2VyIHNob3dSZWxhdGl2ZVRvUmVjdDpwcmVzZW50YXRpb25SZWN0IG9mVmlldzp3ZWJWaWV3IHBy
ZWZlcnJlZEVkZ2U6TlNNaW5ZRWRnZV07CiAjZWxzZQotICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aEFjdGl2aXR5SXRlbXM6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgYXBwbGljYXRpb25BY3Rpdml0aWVz
Om5pbF0pOworICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rp
dml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmVEYXRh
QXJyYXkgYXBwbGljYXRpb25BY3Rpdml0aWVzOm5pbF0pOwogICAgIFtfc2hhcmVTaGVldFZpZXdD
b250cm9sbGVyIHNldENvbXBsZXRpb25XaXRoSXRlbXNIYW5kbGVyOl4oTlNTdHJpbmcgKiwgQk9P
TCBjb21wbGV0ZWQsIE5TQXJyYXkgKiwgTlNFcnJvciAqKSB7CiAgICAgICAgIFtzZWxmIF9kaWRD
b21wbGV0ZVdpdGhTdWNjZXNzOmNvbXBsZXRlZF07CiAgICAgICAgIFtzZWxmIGRpc3BhdGNoRGlk
RGlzbWlzc107CkBAIC0xODAsNiArMjE3LDggQEAgLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNT
aGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkKIAog
LSAodm9pZClfZGlkQ29tcGxldGVXaXRoU3VjY2VzczooQk9PTClzdWNjZXNzCiB7CisgICAgCisg
ICAgW1dLU2hhcmVTaGVldCByZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ107CiAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoX2NvbXBsZXRpb25IYW5kbGVyKTsKICAgICBp
ZiAoY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3Mp
OwpAQCAtMjE1LDYgKzI1NCwxNTggQEAgLSAodm9pZClkaXNwYXRjaERpZERpc21pc3MKICAgICAg
ICAgW19kZWxlZ2F0ZSBzaGFyZVNoZWV0RGlkRGlzbWlzczpzZWxmXTsKIH0KIAorI2lmIFBMQVRG
T1JNKE1BQykKK3N0YXRpYyBTdHJpbmcgY2FjaGVEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkoKQor
eworICAgIGNoYXIgdGVtcFtQQVRIX01BWF07CisgICAgc2l6ZV90IGxlbmd0aCA9IGNvbmZzdHIo
X0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJUiwgdGVtcCwgc2l6ZW9mKHRlbXApKTsKKyAgICBpZiAo
IWxlbmd0aCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUg
dXNlciBjYWNoZSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9y
KGVycm5vKSk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQo
bGVuZ3RoIDw9IHNpemVvZih0ZW1wKSk7CisgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhd
OworICAgIGlmICghcmVhbHBhdGgodGVtcCwgcmVzb2x2ZWRQYXRoKSkgeworICAgICAgICBXVEZM
b2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgY2FjaGUgZGlyZWN0b3J5
IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBy
ZXR1cm4gIiI7CisgICAgfQorICAgIHJldHVybiByZXNvbHZlZFBhdGg7Cit9CisKKysgKEJPT0wp
c2V0UXVhcmFudGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6KE5TU3RyaW5nICopZmlsZVBhdGgK
K3sKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVBhdGhd
OworCisgICAgLy8gV29ya2Fyb3VuZCA8cmRhcjovL3Byb2JsZW0vMjE3MzU0MTI+OiBOU1VSTERv
d25sb2FkIHdpbGwgYXV0b21hdGljYWxseSBhdHRhY2ggTlNVUkxRdWFyYW50aW5lUHJvcGVydGll
cworICAgIC8vIHRvIGZpbGVzIHdlIGRvd25sb2FkIGlmIHRoZXkgYXJlIGFscmVhZHkgcXVhcmFu
dGluZWQuIFRoaXMgYWRkcyBhIHF1YXJhbnRpbmUgaGlzdG9yeSBpdGVtIHRoYXQgdGhlIGNvZGUK
KyAgICAvLyBiZWxvdyB3aWxsIHNoYWRvdy4gU2luY2UgU2FmYXJpIG5lZWRzIHRvIGJlIGFibGUg
dG8gcmVtb3ZlIGFsbCB0cmFjZXMgb2YgZG93bmxvYWQgaGlzdG9yeSwgd2UgbmVlZCB0bworICAg
IC8vIGRlbGV0ZSB0aGF0IGVudHJ5IGJlZm9yZSBvdXJzIHJlbmRlcnMgaXQgaW5hY2Nlc3NpYmxl
LgorCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcXVhcmFudGluZVByb3BlcnRpZXMgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIHF1YXJhbnRpbmVQcm9wZXJ0aWVz
WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlS2V5XSA9IChfX2JyaWRnZSBO
U1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlV2ViRG93bmxvYWQ7CisgICAgcXVhcmFudGluZVBy
b3BlcnRpZXNbKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZUFnZW50QnVuZGxlSWRl
bnRpZmllcktleV0gPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKwor
CisgICAgTlNFcnJvciAqZXJyb3I7CisgICAgaWYgKCFbZmlsZVVSTCBzZXRSZXNvdXJjZVZhbHVl
OnF1YXJhbnRpbmVQcm9wZXJ0aWVzIGZvcktleTpOU1VSTFF1YXJhbnRpbmVQcm9wZXJ0aWVzS2V5
IGVycm9yOiZlcnJvcl0pIHsKKyAgICAgICAgW3F1YXJhbnRpbmVQcm9wZXJ0aWVzIHJlbGVhc2Vd
OworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBpbmZvcm1hdGlv
biBmb3IgZmlsZSBwYXRoOiAlQDogJUAiLCBmaWxlUGF0aCwgZXJyb3IpOworICAgICAgICByZXR1
cm4gTk87CisgICAgfQorICAgIFtxdWFyYW50aW5lUHJvcGVydGllcyByZWxlYXNlXTsKKworICAg
IC8vIFdoZXRoZXIgdGhlIGZpbGUgd2FzIGRvd25sb2FkZWQgYnkgc2FuZGJveGVkIFdlYlByb2Nl
c3Mgb3Igbm90LCBMU1NldEl0ZW1BdHRyaWJ1dGUgcmVzZXRzIHRoZSBmbGFncyB0byAwIChhZHZp
c29yeSBRVE5fRkxBR19ET1dOTE9BRCwKKyAgICAvLyB3aGljaCBjYW4gYmUgdGhlbiByZW1vdmVk
IGJ5IFdlYlByb2Nlc3MpLiBSZXBsYWNlIHRoZSBmbGFncyB3aXRoIHNhbmRib3ggcXVhcmFudGlu
ZSBvbmVzLCB3aGljaCBjYW5ub3QgYmUgcmVtb3ZlZCBieSBzYW5kYm94ZWQgcHJvY2Vzc2VzLgor
ICAgIHJldHVybiBbV0tTaGFyZVNoZWV0IGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9h
ZEZsYWdzVG9GaWxlQXRQYXRoOmZpbGVQYXRoXTsKK30KKworKyAoQk9PTClhcHBseVF1YXJhbnRp
bmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDooTlNTdHJpbmcgKilmaWxlUGF0
aAoreworICAgIHF0bl9maWxlX3QgZnEgPSBxdG5fZmlsZV9hbGxvYygpOworICAgIGludCBxdWFy
YW50aW5lRXJyb3IgPSBxdG5fZmlsZV9pbml0X3dpdGhfcGF0aChmcSwgZmlsZVBhdGguZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKSB7CisgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IHJldHJpZXZlIHF1YXJhbnRpbmUgZmxhZ3MgZm9yIGZpbGUg
cGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKyAgICAgICAgcXRuX2Zp
bGVfZnJlZShmcSk7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBxdWFyYW50aW5l
RXJyb3IgPSBxdG5fZmlsZV9zZXRfZmxhZ3MoZnEsIFFUTl9GTEFHX1NBTkRCT1ggfCBRVE5fRkxB
R19ET1dOTE9BRCk7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikgeworICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBmbGFncyBpbiBxdG5fZmlsZV90IHN0cnVjdHVy
ZSBmb3IgZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJyb3IpOworICAg
ICAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAg
IHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2FwcGx5X3RvX3BhdGgoZnEsIGZpbGVQYXRoLmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikKKyAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYXBwbHkgcXVhcmFudGluZSBmbGFncyB0byBmaWxlIHBh
dGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisKKyAgICBxdG5fZmlsZV9m
cmVlKGZxKTsKKworICAgIHJldHVybiBZRVM7Cit9CisjZW5kaWYKKworKyAoQk9PTClyZW1vdmVG
aWxlRGlyZWN0b3J5Rm9yU2hhcmluZworeworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFtXS1No
YXJlU2hlZXQgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdOworICAgIGlmICghZGF0YVBhdGgpCisg
ICAgICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhUGF0aF0pCisgICAgICAgIHJldHVybiBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6IGRhdGFQYXRoIGVy
cm9yOm5pbF07CisgICAgcmV0dXJuIFlFUzsKK30KKworKyAoTlNTdHJpbmcgKilnZXRTaGFyaW5n
RGlyZWN0b3J5UGF0aAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBOU1N0cmluZyAqY2FjaGVE
aXJlY3RvcnkgPSBjYWNoZURhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpOworI2Vsc2UKKyAgICBO
U0FycmF5ICpwYXRocyA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TQ2Fj
aGVzRGlyZWN0b3J5LCBOU1VzZXJEb21haW5NYXNrLCBZRVMpOworICAgIGlmICghcGF0aHMgfHwg
IVtwYXRocyBmaXJzdE9iamVjdF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNTdHJpbmcg
KmNhY2hlRGlyZWN0b3J5ID0gW3BhdGhzIGZpcnN0T2JqZWN0XTsKKyNlbmRpZgorICAgIAorICAg
IGlmICghW2NhY2hlRGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
TlNTdHJpbmcgKmRhdGFQYXRoID0gW2NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIi9XS0ZpbGVTaGFyZSJdOworICAgIAorICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmRhdGFQYXRoXSkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpkYXRhUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGRhdGFQYXRoOwor
fQorCisrIChOU1N0cmluZyAqKWZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nCit7CisgICAgTlNTdHJp
bmcgKnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBO
U1N0cmluZyAqZGF0YVBhdGggPSBbW1dLU2hhcmVTaGVldCBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0
aF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiLyVAIiwgcmFuZG9tRGlyZWN0b3J5XV07CisgICAgaWYgKCFkYXRhUGF0aCkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBpZiAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhUGF0
aF0pIHsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJl
Y3RvcnlBdFBhdGg6ZGF0YVBhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOk5PIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBkYXRhUGF0aDsKK30KKworKyAoTlNTdHJp
bmcgKiljcmVhdGVGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZQoreworICAgIE5TU3RyaW5n
ICpnZXRUZW1wRGlyZWN0b3J5ID0gW1dLU2hhcmVTaGVldCBmaWxlRGlyZWN0b3J5Rm9yU2hhcmlu
Z107CisgICAgaWYgKGdldFRlbXBEaXJlY3RvcnkgPT0gbmlsKQorICAgICAgICByZXR1cm4gbmls
OworICAgIE5TU3RyaW5nICpzYW5pdGl6ZWRGaWxlbmFtZSA9IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVOYW1lKTsKKyAgICBOU1N0
cmluZyAqZmlsZU5hbWVDb25jYXQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALyVA
IiwgZ2V0VGVtcERpcmVjdG9yeSwgc2FuaXRpemVkRmlsZW5hbWVdOworICAgIHJldHVybiBmaWxl
TmFtZUNvbmNhdDsKK30KKworKyAoTlNVUkwgKil3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDooTlNT
dHJpbmcgKilmaWxlTmFtZSBkYXRhOihOU0RhdGEgKikgZmlsZURhdGEKK3sKKyAgICBOU1N0cmlu
ZyAqZmlsZSA9IFtXS1NoYXJlU2hlZXQgY3JlYXRlRmlsZW5hbWU6IGZpbGVOYW1lXTsKKyAgICBp
ZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgTlNVUkwgKmZpbGVVUkwg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVdOworICAgIAorICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOworICAgIFtmaWxlRGF0YSB3cml0ZVRvVVJMOmZpbGVVUkwgb3B0aW9uczpOU0RhdGFX
cml0aW5nQXRvbWljIGVycm9yOiAmZXJyb3JdOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFbV0tTaGFyZVNoZWV0IHNldFF1
YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOmZpbGVdKQorICAgICAgICByZXR1cm4gbmls
OworI2VuZGlmCisgICAgcmV0dXJuIGZpbGVVUkw7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZjJjYTczMDVhZTM1MjY4ZGI5ZjFjZGJhMDhjYzQzMjRmMWQ4YzUyZC4uZTE1Zjk0
M2RmMjRhYTc2MjBkMGU3MjIzOGVhMjNhMTc3MzRiMGEzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCB0byBubyBsb25nZXIg
dXNlIHVybCBvZiBpbWFnZS4KKworICAgICAgICAqIGZhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgt
ZmlsZXMuaHRtbDoKKwogMjAyMC0wMy0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBkMTFmYjA1NTVhZmU1MGQ1ZTI5MTFjNjA4YzQ1YTExZmNi
ZWYxNzU2Li4yYzUzM2VhNjg0MTk4ZDEwYzc1N2Y3ODI4Njg3YmVkZmVkZmIyZTlhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0xOCAgTmlr
b3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgd2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgbmV3IGJlaGF2
aW9yLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1m
aWxlcy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
Yi1zaGFyZS9jYW5TaGFyZS5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDMtMjMgIFJvYiBC
dWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkgc29ydGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93
ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hh
cmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCmluZGV4IDg1NmVkMjQ0MTg4NzE4OGRiNjQ5OGQzZGIx
NzA4MDcxNDkwZjVjODYuLjliODkwZDRjMWIxMzQ3ZDA5Y2I2MWNhMjYyNDIzMmQzNTBjMDY5OTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0
bWwKQEAgLTIsNiArMiw3IEBACiAKIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9ImluaXRpYWwtc2NhbGU9NSwgd2lkdGg9ZGV2aWNlLXdpZHRoIj4KKwogPGhlYWQ+CiAKICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CkBA
IC0xNiwxMCArMTcsMTIgQEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ2hlbGxvJ10sICdoZWxs
by50eHQnLCB7dHlwZTondGV4dC9wbGFpbid9KTsKKworICAgICAgICAgICAgdmFyIGJsb2IgPSB0
aGlzLnJlc3BvbnNlOworICAgICAgICAgICAgY29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ1Ro
aXMgaXMgYSB0ZXh0IGZpbGUnXSwgJ1RleHRGaWxlLnR4dCcsIHt0eXBlOid0ZXh0L2h0bWwnfSk7
CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLnNoYXJl
KHt0ZXh0OiAic2FkZiIsIGZpbGVzOiBbdGV4dEZpbGVdfSkudGhlbigocmVzdWx0KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgICAgIHdyaXRlKCJQQVNTOiBTaGFyZSBzaGVldCBpbnZva2VkLiIpOwor
ICAgICAgICAgICAgbmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAiVGhpcyBpcyBhIHRleHQgZmlsZSIs
IGZpbGVzOiBbdGV4dEZpbGVdfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAg
d3JpdGUoIlBBU1M6IFNoYXJlIHNoZWV0IGludm9rZWQuIik7CiAgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH0pOyAgICAKICAgICAg
ICAgICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394708</attachid>
            <date>2020-03-26 23:37:31 -0700</date>
            <delta_ts>2020-03-27 18:05:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200327023729.patch</filename>
            <type>text/plain</type>
            <size>35664</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZlMmVlZWY2ZWQzMzYz
YzUwNzkxMjE5NWU1NjVkYjIxOGE0ZDAzMS4uMTcwNGYyYWYyYTlmNmUwNTRkYWNhY2QyZTAzMDBm
NDc0MmQ4NjY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAg
ICBbR1RLXSBBbGxvdyBkaXN0cmlidXRvcnMgdG8gYnJhbmQgdXNlciBhZ2VudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3NzQ5YmYzZDUxOGEzMGNkNDI3OGM4NTI0NGE4ZDlmOGI0MGMzZTgwLi4zOGZkYWE2MWZhMjZm
YzAzMGRmZjYzYmZlMzUwM2ZlNDFjYjE2ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTIzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGluc2VydGluZyB0ZXh0IG9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSBieSBzaW11
bGF0aW5nIGtleWJvYXJkIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGNmNTU1NmEzYTcwZDRhYjll
YzhkYTYxZmE2NjUxNDAxODQyZTFkMDMuLjU0MGZkYjE5ZjAyODk2ZWYwMjU3NWJiYTU4N2E1ZjM5
MTVhNjgxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNjcwLDYgKzE2NzAsNyBAQCBwYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogcGFnZS9Qcm9jZXNz
V2FybWluZy5jcHAKIHBhZ2UvUXVpcmtzLmNwcAorcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3Bw
CiBwYWdlL1JlbW90ZURPTVdpbmRvdy5jcHAKIHBhZ2UvUmVtb3RlRnJhbWUuY3BwCiBwYWdlL1Jl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkY2E1NWE0MWU5MWZmZGYxNmU5ZTUzOGY2
ZjYzZDMzZWUxNzU2NWVjLi4zZGJiYzFiMGI3MWIwNGQzODJjN2JhZmM2YWNjY2ZiOGM5OWQ0Njlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02MTY2LDYgKzYxNjYsOCBAQAogCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyog
UHJvZ3Jlc3NUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9n
cmVzc1RyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTYwREMy
QTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTcwREMyQTNCMTAwQTIwRDlBIC8qIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFJlYWRTaGFyZURhdGFBc3lu
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkU2hhcmVEYXRhQXN5bmMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3Jp
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUF1dGhv
cml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM1ODZERDE1MjY0QzQ1
MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3MSw2ICsyMDk3Myw4IEBACiAJCQkJRTQyMDUwMTQyMTQx
OTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi8sCiAJCQkJQ0Q5QTg3RjkyMTVENkNG
MzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1
IC8qIFF1aXJrcy5oICovLAorCQkJCTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBSZWFkU2hh
cmVEYXRhQXN5bmMuY3BwICovLAorCQkJCTFBMkM2NjczMjQyQUZFRjgwMDMwNTVFQyAvKiBSZWFk
U2hhcmVEYXRhQXN5bmMuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmNwcCAqLywKIAkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmggKi8sCiAJCQkJNDZCQ0JCQzMyMDg1MDBBNzAwNzEwNjM4IC8qIFJlbW90
ZURPTVdpbmRvdy5pZGwgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggY2FjYzJh
MTMzNjk5MjZiZmQ2OWQxZTU5YzMxOTE0YWNjMzYxZTI3NC4uOGI1NzhiNGZmNzkyN2QwNzZhNjU2
NzY0YjNmYThmZDYzYjc5ZjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzcs
MTIgKzM3LDE0IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRlICJSZWFkU2hhcmVEYXRh
QXN5bmMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYXJlRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzExNCwxMyBAQCBib29sIE5hdmlnYXRv
cjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVE
YXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051bGwoKSAmJiBkYXRhLnVybC5pc051
bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlz
RW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkgeworI2lmIEVOQUJM
RShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAg
ICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93KCk7CiAgICAgLy8gTm90ZSB0aGF0
IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRlIHdlIHNob3VsZCBjb25zdW1lIHVz
ZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkgc3RyaWN0ZXIgaGVyZS4KLSAgICBp
ZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0aXZhdGlvbigpKSB7Cisg
ICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVudEFjdGl2YXRpb24oKSB8
fCBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDcsMTAgKzE1NCwz
NSBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCisgICAgICAgIHsgfSwK
ICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKG1fbG9hZGVyKSB7CisgICAgICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CisgICAgICAg
ICAgICBtX2xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgbV9sb2FkZXIgPSBS
ZWFkU2hhcmVEYXRhQXN5bmM6OmNyZWF0ZShjb250ZXh0LCBbdGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldIChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4gcmVhZERh
dGEpIG11dGFibGUgeworICAgICAgICAgICAgdGhpcy0+cHJlc2VudFNoYXJlU2hlZXQocmVhZERh
dGEsIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICB9KTsKKyAgICAgICAgbV9sb2FkZXItPnN0
YXJ0KHNoYXJlRGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGhpcy0+cHJlc2Vu
dFNoYXJlU2hlZXQoc2hhcmVEYXRhLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBOYXZp
Z2F0b3I6OnByZXNlbnRTaGFyZVNoZWV0KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPiByZWFkRGF0YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGlm
IChyZWFkRGF0YS5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QocmVh
ZERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChib29sIGNvbXBsZXRlZCkgeworICAgIG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCA9IHRy
dWU7CisgICAgYXV0byBzaGFyZURhdGEgPSByZWFkRGF0YS5yZXR1cm5WYWx1ZSgpOworICAgIGZy
YW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCB0aGlzXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAgICAgbV9p
c1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gZmFsc2U7CiAgICAgICAgIGlmIChjb21wbGV0ZWQpIHsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4YTg4
NjQ3ZjgyZGQuLjc1NjIwMWIwMmNkNGMwZmYzZjllMGEzOTNjNDI0ODhmMjlkOWEyNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTU1p
bWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7Citj
bGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUmVhZFNoYXJlRGF0YUFzeW5jOwogCiBjbGFz
cyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8
TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpAQCAt
NDksNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGNhblNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURhdGEm
KTsKICAgICB2b2lkIHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURh
dGEmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLSAgICAKKyAgICB2b2lkIHByZXNlbnRTaGFy
ZVNoZWV0KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHN0YW5kYWxv
bmUoKSBjb25zdDsKICNlbmRpZgpAQCAtNjMsNiArNjYsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKKyAgICBSZWZQdHI8UmVhZFNoYXJlRGF0YUFzeW5jPiBtX2xvYWRlcjsKKyAgICBz
dGQ6OmF0b21pYzxib29sPiBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQgPSBmYWxzZTsKKyAgICAK
ICAgICBleHBsaWNpdCBOYXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRv
dyYpOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKQEAg
LTcwLDUgKzc2LDQgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJBZ2VudDsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX3BsYXRmb3JtOwogfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NDg2NTFiMmY2OWJiNzVl
NGVjZTBlNjMxODM2OGIxYzliYmU5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlYWRTaGFyZURhdGFBc3luYy5oIgorCisjaW5jbHVkZSAiRmlsZVJlYWRl
ckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6cmVhZEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJsb2ImIGJsb2IpCit7CisgICAgbV9jdXJyZW50TG9h
ZGluZ0ZpbGVOYW1lID0gbV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzW21fZmlsZXNSZWFkU29G
YXJdLT5uYW1lKCk7CisgICAgbV9maWxlc1JlYWRTb0ZhciArPSAxOworICAgIG1fYmxvYiA9ICZi
bG9iOworCisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2ItPnR5
cGUoKSk7CisgICAgbV9sb2FkZXItPnN0YXJ0KCZjb250ZXh0LCBibG9iKTsKK30KKworUmVhZFNo
YXJlRGF0YUFzeW5jOjpSZWFkU2hhcmVEYXRhQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDogbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fY29udGV4dCgmY29udGV4
dCkKKyAgICAsIG1fZmlsZXNSZWFkU29GYXIoMCkKK3sKKyAgICAKK30KKworUmVhZFNoYXJlRGF0
YUFzeW5jOjp+UmVhZFNoYXJlRGF0YUFzeW5jKCkKK3sKKyAgICBtX2NvbnRleHQgPSBudWxscHRy
OworICAgIG1fYmxvYiA9IG51bGxwdHI7CisgICAgY2FuY2VsKCk7Cit9CisKK3ZvaWQgUmVhZFNo
YXJlRGF0YUFzeW5jOjpzdGFydChTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YSkKK3sK
KyAgICBtX2ZpbGVzUmVhZFNvRmFyID0gMDsKKyAgICBtX3NoYXJlRGF0YSA9IFdURk1vdmUoc2hh
cmVEYXRhKTsKKyAgICByZWFkSW50ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLnNoYXJl
RGF0YS5maWxlc1ttX2ZpbGVzUmVhZFNvRmFyXSk7CisgICAgbV9zaGFyZURhdGEuc2hhcmVEYXRh
LmZpbGVzLnJlc2VydmVDYXBhY2l0eShtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMuc2l6ZSgp
KTsKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcoKQorewor
ICAgIFJhd0ZpbGUgZmlsZTsKKyAgICBmaWxlLmZpbGVOYW1lID0gbV9jdXJyZW50TG9hZGluZ0Zp
bGVOYW1lOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1
bHQoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFdURk1vdmUoc2hhcmVk
QnVmZmVyKTsKKyAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7Cisg
ICAgCisgICAgaWYgKG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkgIT0gbV9maWxl
c1JlYWRTb0ZhcikgeworICAgICAgICByZWFkSW50ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVE
YXRhLnNoYXJlRGF0YS5maWxlc1ttX2ZpbGVzUmVhZFNvRmFyXSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcik7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtX3NoYXJlRGF0YSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRSZWNlaXZlRGF0YSgpCit7CisgICAgCit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRTdGFydExvYWRpbmcoKQoreworICAgIAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3lu
Yzo6ZGlkRmFpbChpbnQgZXJyb3JDb2RlKQoreworICAgIFVOVVNFRF9QQVJBTShlcnJvckNvZGUp
OworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0IGR1ZSB0byBmYWlsIG9mIHJlYWRpbmcg
ZmlsZXMuIl9zIH0pOworfQordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmNhbmNlbCgpCit7Cisg
ICAgaWYgKG1fbG9hZGVyKSB7CisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAg
bV9sb2FkZXIgPSBudWxscHRyOworICAgIH0KK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRT
aGFyZURhdGFBc3luYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYzUzYWJkZWNiYmQ5NzIzNmUxMmRkMDRjYjcz
ZDRkMDZkMDhmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRT
aGFyZURhdGFBc3luYy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBO
YXZpZ2F0b3I7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFJlYWRTaGFyZURhdGFBc3luYzogcHJpdmF0
ZSBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkU2hhcmVEYXRh
QXN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWRTaGFyZURhdGFBc3luYz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkU2hhcmVEYXRhQXN5bmMoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGNvbnRleHQpKTsgfQorICAgIH5SZWFkU2hhcmVEYXRhQXN5bmMo
KTsKKyAgICB2b2lkIHN0YXJ0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwpOworICAgIHZvaWQgY2Fu
Y2VsKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhZFNoYXJlRGF0YUFzeW5jKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4m
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZvaWQgcmVhZEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iJik7CisgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKGludCBlcnJvckNvZGUpIGZpbmFs
OworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgbV9zaGFyZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0
OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAgU3RyaW5nIG1fY3VycmVudExvYWRpbmdG
aWxlTmFtZTsKKyAgICBzaXplX3QgbV9maWxlc1JlYWRTb0ZhciA9IDA7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKaW5kZXggNWMzOTA3YzEwNzU4MDQ5ZDg4N2MwNDYzMWRiNGY5YzAzZmYxYWY3OS4u
ZmVlNmI5OWUzZmE1ZTA0OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogI2luY2x1ZGUgIkZp
bGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDEwICszNiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRh
IHsKICAgICBTdHJpbmcgdXJsOwogICAgIFZlY3RvcjxSZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsK
Kworc3RydWN0IFJhd0ZpbGUgeworICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaWxlRGF0YTsKK307CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCB7CiAgICAgU2hhcmVEYXRhIHNoYXJlRGF0YTsKICAgICBPcHRpb25hbDxVUkw+IHVybDsK
KyAgICBWZWN0b3I8UmF3RmlsZT4gZmlsZXM7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKaW5kZXggOTQwNDc0NDM1ZjhkZDNk
NWU4MzUyNzdiNjZkMzJkOGZmMzFiYjJjMi4uMGJmMTAzZDRhOWViZDlmZGZjYzkxYzAzYjY5M2Vk
M2E4M2U3MzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1
YXJhbnRpbmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFu
dGluZVNQSS5oCkBAIC0zNCw2ICszNCw3IEBACiAjZWxzZQogCiBlbnVtIHF0bl9mbGFncyB7Cisg
ICAgUVROX0ZMQUdfRE9XTkxPQUQgPSAweDAwMDEsCiAgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4
MDAwMiwKIH07CiAKQEAgLTQzLDEwICs0NCwxNSBAQCBlbnVtIHF0bl9mbGFncyB7CiAjZGVmaW5l
IHF0bl9wcm9jX2luaXQgX3F0bl9wcm9jX2luaXQKICNkZWZpbmUgcXRuX3Byb2NfaW5pdF93aXRo
X3NlbGYgX3F0bl9wcm9jX2luaXRfd2l0aF9zZWxmCiAjZGVmaW5lIHF0bl9wcm9jX3NldF9mbGFn
cyBfcXRuX3Byb2Nfc2V0X2ZsYWdzCi0KKyNkZWZpbmUgcXRuX2ZpbGVfYWxsb2MgX3F0bl9maWxl
X2FsbG9jCisjZGVmaW5lIHF0bl9maWxlX2luaXRfd2l0aF9wYXRoIF9xdG5fZmlsZV9pbml0X3dp
dGhfcGF0aAorI2RlZmluZSBxdG5fZmlsZV9mcmVlIF9xdG5fZmlsZV9mcmVlCisjZGVmaW5lIHF0
bl9maWxlX2FwcGx5X3RvX3BhdGggX3F0bl9maWxlX2FwcGx5X3RvX3BhdGgKKyNkZWZpbmUgcXRu
X2ZpbGVfc2V0X2ZsYWdzIF9xdG5fZmlsZV9zZXRfZmxhZ3MKICNlbmRpZgogCiB0eXBlZGVmIHN0
cnVjdCBfcXRuX3Byb2MgKnF0bl9wcm9jX3Q7Cit0eXBlZGVmIHN0cnVjdCBfcXRuX2ZpbGUgKnF0
bl9maWxlX3Q7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCkBAIC01Niw2ICs2MiwxMSBAQCBpbnQg
cXRuX3Byb2NfaW5pdF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CiBpbnQgcXRuX3Byb2Nfc2V0X2Zs
YWdzKHF0bl9wcm9jX3QsIHVpbnQzMl90IGZsYWdzKTsKIHF0bl9wcm9jX3QgcXRuX3Byb2NfYWxs
b2MoKTsKIHZvaWQgcXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsKK3F0bl9maWxlX3QgcXRuX2Zp
bGVfYWxsb2Modm9pZCk7Cit2b2lkIHF0bl9maWxlX2ZyZWUocXRuX2ZpbGVfdCBxZik7CitpbnQg
cXRuX2ZpbGVfc2V0X2ZsYWdzKHF0bl9maWxlX3QgcWYsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBx
dG5fZmlsZV9hcHBseV90b19wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOwor
aW50IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBh
dGgpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkwNDE4ZWJl
ODFhYmMxYTkxODAuLjU4MTA5ZDVjNzAyM2Q3OTM1OWY4NGFkMTJkYWIyNjFkYTRhMWUwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9w
dGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTIwMTcsNiArMjAxOCwzMCBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBGaWxlQ2hvb3NlclNldAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVmVjdG9yPFJhd0ZpbGU+JiBmaWxlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihmaWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7
CisgICAgICAgIGVuY29kZXIgPDwgZmlsZS5maWxlTmFtZTsKKyAgICAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGZpbGUuZmlsZURhdGEuZ2V0KCkpOworICAgIH0KK30KKworYm9vbCBB
cmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBW
ZWN0b3I8UmF3RmlsZT4mIGZpbGVzKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBmaWxlcy5yZXNpemUoZGF0YVNpemUpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsZS5maWxlTmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBmaWxl
LmZpbGVEYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAgICAgCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U2hhcmVEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
RGF0YSYgc2V0dGluZ3MpCiB7CkBAIC0yMDQwLDYgKzIwNjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTaGFyZQogewogICAgIGVuY29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwogICAgIGVuY29k
ZXIgPDwgc2V0dGluZ3MudXJsOworICAgIGVuY29kZXIgPDwgc2V0dGluZ3MuZmlsZXM7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdzKQpAQCAtMjA0OCw2
ICsyMDc0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MudXJsKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MuZmlsZXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOGY0ODc2MGRmNmRkYWMwZGM0ZDVj
ZWYxNzNlYTRhMjE2ZTg0ZjAxNy4uMDAzNDUzYjBhMWMyOTQxOWY5YjE2MjZjZDQ1YzBlZWQ3NWZi
NGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IEN1cnNvcjsKIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKIGNsYXNzIERyYWdEYXRhOworY2xhc3Mg
RmlsZTsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbjsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBj
bGFzcyBGbG9hdFBvaW50OwpAQCAtMTIzLDYgKzEyNCw3IEBAIHN0cnVjdCBFdmVudFRyYWNraW5n
UmVnaW9uczsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZvbnRBdHRyaWJ1dGVz
Owogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CitzdHJ1Y3QgUmF3RmlsZTsKIHN0cnVjdCBT
aGFyZURhdGE7CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIHN0cnVjdCBMZW5ndGg7
CkBAIC01NTMsNiArNTU1LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogfTsKICAgICAKK3RlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8VmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmF3Rmls
ZT4mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFZlY3RvcjxXZWJDb3JlOjpS
YXdGaWxlPiYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTaGFyZURhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlRGF0YSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
Q29yZTo6U2hhcmVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1No
YXJlU2hlZXQubW0KaW5kZXggYjAyNDMzYzMwM2E2ZjkzOWRiNDJhN2ZjNDA0OWU5ZWFjNTQxYjAw
Ni4uNGRjZDZkYWI4NTg1MTlmNWMxODk0ZjNiYjk3NTE2N2MwNDlmNTU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtMjgsNiArMjgsMTAg
QEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKKworI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgpAQCAtMTA2LDEwICsxMTAsNDUgQEAgLSAodm9p
ZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgJilkYXRhIGluUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBpZiAo
ZGF0YS5maWxlcy5zaXplKCkpIHsKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfdCBmaWxlV3JpdGVH
cm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgaXNT
dWNjZXNmdWwgPSB0cnVlOworICAgICAgICBhdXRvIHF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3Jl
YXRlKCJXcml0ZSBTaGFyZWFibGUgRmlsZXMgVG8gRGlzayIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCk7CisgICAgICAgIGZvciAoYXV0byBmaWxlIDogZGF0YS5maWxlcykgeworICAgICAgICAgICAg
ZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZmlsZVdyaXRlR3JvdXAsIHF1ZXVlLCBeeworICAgICAgICAg
ICAgICAgIGlmICghaXNTdWNjZXNmdWwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtXS1NoYXJlU2hlZXQgd3JpdGVGaWxlVG9T
aGFyZWFibGVVUkw6ZmlsZS5maWxlTmFtZSBkYXRhOmZpbGUuZmlsZURhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWZpbGVVUkwpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaXNTdWNjZXNmdWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbc2hhcmVEYXRhQXJyYXkgYWRk
T2JqZWN0OmZpbGVVUkxdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX25vdGlmeShmaWxlV3JpdGVHcm91cCwgcXVldWUsIF57Cisg
ICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgICAgICAgICAgICAgIGlmICghaXNTdWNjZXNmdWwpIHsKKyAgICAgICAgICAgICAgICAgICAg
W3NlbGYgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6Tk9dOworICAgICAgICAgICAgICAgICAgICBb
c2VsZiBkaXNtaXNzXTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBbc2VsZiBwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OnNo
YXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBbc2VsZiBwcmVzZW50V2l0
aFNoYXJlRGF0YUFycmF5OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKK30KKwor
LSAodm9pZClwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OihOU0FycmF5ICopc2hhcmluZ0l0ZW1z
IGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QKK3sKICAgICBX
S1dlYlZpZXcgKndlYlZpZXcgPSBfd2ViVmlldy5nZXRBdXRvcmVsZWFzZWQoKTsKICAgICAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgX3NoYXJpbmdTZXJ2aWNlUGlja2VyID0gYWRvcHROUyhbW05T
U2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6c2hhcmVEYXRhQXJyYXku
Z2V0KCldKTsKKyAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5n
U2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczpzaGFyaW5nSXRlbXNdKTsKICAgICBf
c2hhcmluZ1NlcnZpY2VQaWNrZXIuZ2V0KCkuZGVsZWdhdGUgPSBzZWxmOwogICAgIAogICAgIC8v
IFdLU2hhcmVTaGVldCBjYW4gYmUgcmVsZWFzZWQgdW5kZXIgTlNTaGFyaW5nU2VydmljZVBpY2tl
ciBkZWxlZ2F0ZSBjYWxsYmFja3MuCkBAIC0xMjYsNyArMTY1LDcgQEAgLSAodm9pZClwcmVzZW50
V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgJilk
YXRhIGluUmUKICAgICB9CiAgICAgW19zaGFyaW5nU2VydmljZVBpY2tlciBzaG93UmVsYXRpdmVU
b1JlY3Q6cHJlc2VudGF0aW9uUmVjdCBvZlZpZXc6d2ViVmlldyBwcmVmZXJyZWRFZGdlOk5TTWlu
WUVkZ2VdOwogI2Vsc2UKLSAgICBfc2hhcmVTaGVldFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhb
W1VJQWN0aXZpdHlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBY3Rpdml0eUl0ZW1zOnNo
YXJlRGF0YUFycmF5LmdldCgpIGFwcGxpY2F0aW9uQWN0aXZpdGllczpuaWxdKTsKKyAgICBfc2hh
cmVTaGVldFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1VJQWN0aXZpdHlWaWV3Q29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhBY3Rpdml0eUl0ZW1zOnNoYXJpbmdJdGVtcyBhcHBsaWNhdGlvbkFj
dGl2aXRpZXM6bmlsXSk7CiAgICAgW19zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgc2V0Q29tcGxl
dGlvbldpdGhJdGVtc0hhbmRsZXI6XihOU1N0cmluZyAqLCBCT09MIGNvbXBsZXRlZCwgTlNBcnJh
eSAqLCBOU0Vycm9yICopIHsKICAgICAgICAgW3NlbGYgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6
Y29tcGxldGVkXTsKICAgICAgICAgW3NlbGYgZGlzcGF0Y2hEaWREaXNtaXNzXTsKQEAgLTE4MCw2
ICsyMTksNyBAQCAtICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hh
cmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheQogCiAtICh2b2lkKV9kaWRDb21wbGV0
ZVdpdGhTdWNjZXNzOihCT09MKXN1Y2Nlc3MKIHsKKyAgICBbV0tTaGFyZVNoZWV0IHJlbW92ZUZp
bGVEaXJlY3RvcnlGb3JTaGFyaW5nXTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShfY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CkBAIC0yMTUsNiArMjU1LDE1OSBAQCAt
ICh2b2lkKWRpc3BhdGNoRGlkRGlzbWlzcwogICAgICAgICBbX2RlbGVnYXRlIHNoYXJlU2hlZXRE
aWREaXNtaXNzOnNlbGZdOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorc3RhdGljIFN0cmluZyBj
YWNoZURhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCit7CisgICAgY2hhciB0ZW1wW1BBVEhfTUFY
XTsKKyAgICBzaXplX3QgbGVuZ3RoID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElS
LCB0ZW1wLCBzaXplb2YodGVtcCkpOworICAgIGlmICghbGVuZ3RoKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIGNhY2hlIGRpcmVjdG9yeSBwYXRo
OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJu
ICIiOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc2l6ZW9mKHRlbXApKTsK
KyAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRIX01BWF07CisgICAgaWYgKCFyZWFscGF0aCh0ZW1w
LCByZXNvbHZlZFBhdGgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBj
YW5vbmljYWxpemUgdXNlciBjYWNoZSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1l
KCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgcmV0
dXJuIHJlc29sdmVkUGF0aDsKK30KKworKyAoQk9PTClzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25G
b3JGaWxlUGF0aDooTlNTdHJpbmcgKilmaWxlUGF0aAoreworICAgIE5TVVJMICpmaWxlVVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlUGF0aF07CisKKyAgICAvLyBXb3JrYXJvdW5kIDxy
ZGFyOi8vcHJvYmxlbS8yMTczNTQxMj46IE5TVVJMRG93bmxvYWQgd2lsbCBhdXRvbWF0aWNhbGx5
IGF0dGFjaCBOU1VSTFF1YXJhbnRpbmVQcm9wZXJ0aWVzCisgICAgLy8gdG8gZmlsZXMgd2UgZG93
bmxvYWQgaWYgdGhleSBhcmUgYWxyZWFkeSBxdWFyYW50aW5lZC4gVGhpcyBhZGRzIGEgcXVhcmFu
dGluZSBoaXN0b3J5IGl0ZW0gdGhhdCB0aGUgY29kZQorICAgIC8vIGJlbG93IHdpbGwgc2hhZG93
LiBTaW5jZSBTYWZhcmkgbmVlZHMgdG8gYmUgYWJsZSB0byByZW1vdmUgYWxsIHRyYWNlcyBvZiBk
b3dubG9hZCBoaXN0b3J5LCB3ZSBuZWVkIHRvCisgICAgLy8gZGVsZXRlIHRoYXQgZW50cnkgYmVm
b3JlIG91cnMgcmVuZGVycyBpdCBpbmFjY2Vzc2libGUuCisKKyAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpxdWFyYW50aW5lUHJvcGVydGllcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07CisgICAgcXVhcmFudGluZVByb3BlcnRpZXNbKF9fYnJpZGdlIE5TU3RyaW5nICopa0xT
UXVhcmFudGluZVR5cGVLZXldID0gKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZVR5
cGVXZWJEb3dubG9hZDsKKyAgICBxdWFyYW50aW5lUHJvcGVydGllc1soX19icmlkZ2UgTlNTdHJp
bmcgKilrTFNRdWFyYW50aW5lQWdlbnRCdW5kbGVJZGVudGlmaWVyS2V5XSA9IFdlYkNvcmU6OmFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOworCisKKyAgICBOU0Vycm9yICplcnJvcjsKKyAg
ICBpZiAoIVtmaWxlVVJMIHNldFJlc291cmNlVmFsdWU6cXVhcmFudGluZVByb3BlcnRpZXMgZm9y
S2V5Ok5TVVJMUXVhcmFudGluZVByb3BlcnRpZXNLZXkgZXJyb3I6JmVycm9yXSkgeworICAgICAg
ICBbcXVhcmFudGluZVByb3BlcnRpZXMgcmVsZWFzZV07CisgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IHNldCBxdWFyYW50aW5lIGluZm9ybWF0aW9uIGZvciBmaWxlIHBhdGg6ICVAOiAlQCIs
IGZpbGVQYXRoLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgW3F1YXJh
bnRpbmVQcm9wZXJ0aWVzIHJlbGVhc2VdOworCisgICAgLy8gV2hldGhlciB0aGUgZmlsZSB3YXMg
ZG93bmxvYWRlZCBieSBzYW5kYm94ZWQgV2ViUHJvY2VzcyBvciBub3QsIExTU2V0SXRlbUF0dHJp
YnV0ZSByZXNldHMgdGhlIGZsYWdzIHRvIDAgKGFkdmlzb3J5IFFUTl9GTEFHX0RPV05MT0FELAor
ICAgIC8vIHdoaWNoIGNhbiBiZSB0aGVuIHJlbW92ZWQgYnkgV2ViUHJvY2VzcykuIFJlcGxhY2Ug
dGhlIGZsYWdzIHdpdGggc2FuZGJveCBxdWFyYW50aW5lIG9uZXMsIHdoaWNoIGNhbm5vdCBiZSBy
ZW1vdmVkIGJ5IHNhbmRib3hlZCBwcm9jZXNzZXMuCisgICAgcmV0dXJuIFtXS1NoYXJlU2hlZXQg
YXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6ZmlsZVBh
dGhdOworfQorCisrIChCT09MKWFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdz
VG9GaWxlQXRQYXRoOihOU1N0cmluZyAqKWZpbGVQYXRoCit7CisgICAgcXRuX2ZpbGVfdCBmcSA9
IHF0bl9maWxlX2FsbG9jKCk7CisgICAgaW50IHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2lu
aXRfd2l0aF9wYXRoKGZxLCBmaWxlUGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOworICAg
IGlmIChxdWFyYW50aW5lRXJyb3IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcmV0
cmlldmUgcXVhcmFudGluZSBmbGFncyBmb3IgZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBx
dWFyYW50aW5lRXJyb3IpOworICAgICAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0
dXJuIE5POworICAgIH0KKworICAgIHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX3NldF9mbGFn
cyhmcSwgUVROX0ZMQUdfU0FOREJPWCB8IFFUTl9GTEFHX0RPV05MT0FEKTsKKyAgICBpZiAocXVh
cmFudGluZUVycm9yKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHNldCBxdWFyYW50
aW5lIGZsYWdzIGluIHF0bl9maWxlX3Qgc3RydWN0dXJlIGZvciBmaWxlIHBhdGggJUA6ICVkIiwg
ZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisgICAgICAgIHF0bl9maWxlX2ZyZWUoZnEpOwor
ICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgcXVhcmFudGluZUVycm9yID0gcXRuX2Zp
bGVfYXBwbHlfdG9fcGF0aChmcSwgZmlsZVBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsK
KyAgICBpZiAocXVhcmFudGluZUVycm9yKQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBh
cHBseSBxdWFyYW50aW5lIGZsYWdzIHRvIGZpbGUgcGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVh
cmFudGluZUVycm9yKTsKKworICAgIHF0bl9maWxlX2ZyZWUoZnEpOworCisgICAgcmV0dXJuIFlF
UzsKK30KKyNlbmRpZgorCisrIChCT09MKXJlbW92ZUZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nCit7
CisgICAgTlNTdHJpbmcgKmRhdGFQYXRoID0gW1dLU2hhcmVTaGVldCBjcmVhdGVTaGFyaW5nRGly
ZWN0b3J5UGF0aF07CisgICAgaWYgKCFbZGF0YVBhdGggbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJu
IE5POworICAgIAorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmRhdGFQYXRoXSkKKyAgICAgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpkYXRhUGF0aCBlcnJvcjpuaWxdOworICAg
IHJldHVybiBZRVM7Cit9CisKKysgKE5TU3RyaW5nICopY3JlYXRlU2hhcmluZ0RpcmVjdG9yeVBh
dGgKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgTlNTdHJpbmcgKmNhY2hlRGlyZWN0b3J5ID0g
Y2FjaGVEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkoKTsKKyNlbHNlCisgICAgTlNBcnJheSAqcGF0
aHMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0NhY2hlc0RpcmVjdG9y
eSwgTlNVc2VyRG9tYWluTWFzaywgWUVTKTsKKyAgICBpZiAoIXBhdGhzIHx8ICFbcGF0aHMgZmly
c3RPYmplY3RdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpjYWNoZURpcmVj
dG9yeSA9IFtwYXRocyBmaXJzdE9iamVjdF07CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIVtjYWNo
ZURpcmVjdG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpk
YXRhUGF0aCA9IFtjYWNoZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCIvV0tGaWxlU2hhcmUiXTsKKyAgICAKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBp
ZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRh
UGF0aF0pIHsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFBhdGg6ZGF0YVBhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOk5PIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiBkYXRhUGF0aDsKK30KKworKyAoTlNT
dHJpbmcgKilmaWxlRGlyZWN0b3J5Rm9yU2hhcmluZworeworICAgIE5TU3RyaW5nICpyYW5kb21E
aXJlY3RvcnkgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgTlNTdHJpbmcgKnNo
YXJpbmdEaXJlY3RvcnkgPSBbV0tTaGFyZVNoZWV0IGNyZWF0ZVNoYXJpbmdEaXJlY3RvcnlQYXRo
XTsKKyAgICBpZiAoIVtyYW5kb21EaXJlY3RvcnkgbGVuZ3RoXSB8fCAhW3NoYXJpbmdEaXJlY3Rv
cnkgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBOU1N0cmluZyAqZGF0YVBhdGgg
PSBbc2hhcmluZ0RpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIvJUAiLCByYW5kb21EaXJlY3RvcnldXTsKKyAgICAKKyAg
ICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkYXRhUGF0aF0pIHsKKyAgICAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6ZGF0YVBhdGggd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07
CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAg
IHJldHVybiBkYXRhUGF0aDsKK30KKworKyAoTlNTdHJpbmcgKiljcmVhdGVGaWxlbmFtZTooTlNT
dHJpbmcgKilmaWxlTmFtZQoreworICAgIE5TU3RyaW5nICpnZXRUZW1wRGlyZWN0b3J5ID0gW1dL
U2hhcmVTaGVldCBmaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ107CisgICAgaWYgKCFbZ2V0VGVtcERp
cmVjdG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpzYW5p
dGl6ZWRGaWxlbmFtZSA9IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1
Z2dlc3RlZEZpbGVuYW1lKGZpbGVOYW1lKTsKKyAgICBOU1N0cmluZyAqZmlsZU5hbWVDb25jYXQg
PSBbZ2V0VGVtcERpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c2FuaXRp
emVkRmlsZW5hbWVdOworICAgIHJldHVybiBmaWxlTmFtZUNvbmNhdDsKK30KKworKyAoTlNVUkwg
Kil3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDooTlNTdHJpbmcgKilmaWxlTmFtZSBkYXRhOihOU0Rh
dGEgKikgZmlsZURhdGEKK3sKKyAgICBOU1N0cmluZyAqZmlsZSA9IFtXS1NoYXJlU2hlZXQgY3Jl
YXRlRmlsZW5hbWU6ZmlsZU5hbWVdOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZV07CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW2ZpbGVEYXRhIHdyaXRl
VG9VUkw6ZmlsZVVSTCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMgZXJyb3I6JmVycm9yXTsK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmICghW1dLU2hhcmVTaGVldCBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0
aDpmaWxlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIHJldHVybiBmaWxlVVJM
OworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyY2E3MzA1YWUzNTI2OGRiOWYx
Y2RiYTA4Y2M0MzI0ZjFkOGM1MmQuLmUxNWY5NDNkZjI0YWE3NjIwZDBlNzIyMzhlYTIzYTE3NzM0
YjBhMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJp
cyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJl
IHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVzZSB1cmwgb2YgaW1hZ2UuCisKKyAgICAgICAg
KiBmYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWw6CisKIDIwMjAtMDMtMjMgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2Vk
IHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZDExZmIw
NTU1YWZlNTBkNWUyOTExYzYwOGM0NWExMWZjYmVmMTc1Ni4uMmM1MzNlYTY4NDE5OGQxMGM3NTdm
NzgyODY4N2JlZGZlZGZiMmU5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVz
dCBleHBlY3RhdGlvbnMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUuaHR0cHMtZXhwZWN0
ZWQudHh0OgorCiAyMDIwLTAzLTIzICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbAppbmRl
eCA4NTZlZDI0NDE4ODcxODhkYjY0OThkM2RiMTcwODA3MTQ5MGY1Yzg2Li45Yjg5MGQ0YzFiMTM0
N2QwOWNiNjFjYTI2MjQyMzJkMzUwYzA2OTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93
ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCkBAIC0yLDYgKzIsNyBAQAogCiA8aHRtbD4K
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTUsIHdpZHRoPWRl
dmljZS13aWR0aCI+CisKIDxoZWFkPgogCiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtMTYsMTAgKzE3LDEyIEBACiAKICAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHRleHRGaWxl
ID0gbmV3IEZpbGUoWydoZWxsbyddLCAnaGVsbG8udHh0Jywge3R5cGU6J3RleHQvcGxhaW4nfSk7
CisKKyAgICAgICAgICAgIHZhciBibG9iID0gdGhpcy5yZXNwb25zZTsKKyAgICAgICAgICAgIGNv
bnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydUaGlzIGlzIGEgdGV4dCBmaWxlJ10sICdUZXh0Rmls
ZS50eHQnLCB7dHlwZTondGV4dC9odG1sJ30pOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewotICAg
ICAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDogInNhZGYiLCBmaWxlczogW3RleHRG
aWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgICAgICB3cml0ZSgiUEFT
UzogU2hhcmUgc2hlZXQgaW52b2tlZC4iKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7
dGV4dDogIlRoaXMgaXMgYSB0ZXh0IGZpbGUiLCBmaWxlczogW3RleHRGaWxlXX0pLnRoZW4oKHJl
c3VsdCkgPT4geworICAgICAgICAgICAgICAgIHdyaXRlKCJQQVNTOiBTaGFyZSBzaGVldCBpbnZv
a2VkLiIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgICAgICAgICB9KTsgICAgCiAgICAgICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394775</attachid>
            <date>2020-03-27 18:05:32 -0700</date>
            <delta_ts>2020-04-09 17:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200327210531.patch</filename>
            <type>text/plain</type>
            <size>35091</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZlMmVlZWY2ZWQzMzYz
YzUwNzkxMjE5NWU1NjVkYjIxOGE0ZDAzMS4uMTcwNGYyYWYyYTlmNmUwNTRkYWNhY2QyZTAzMDBm
NDc0MmQ4NjY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
My0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAg
ICBbR1RLXSBBbGxvdyBkaXN0cmlidXRvcnMgdG8gYnJhbmQgdXNlciBhZ2VudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3NzQ5YmYzZDUxOGEzMGNkNDI3OGM4NTI0NGE4ZDlmOGI0MGMzZTgwLi4zOGZkYWE2MWZhMjZm
YzAzMGRmZjYzYmZlMzUwM2ZlNDFjYjE2ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAzLTE4ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5n
IGZpbGUgb2JqZWN0cyBvdmVyIElQQyBhbmQKKyAgICAgICAgc2hhcmluZyBvZiBmaWxlcyB0byBz
aGFyZSBzaGVldC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0U2hhcmluZ0RpcmVjdG9yeVBhdGhdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgZ2V0RmlsZURpcmVjdG9yeUZvclNoYXJp
bmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgcmVtb3ZlRmlsZURpcmVjdG9y
eUZvclNoYXJpbmddKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgc2V0UXVhcmFu
dGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
Ol0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBjcmVhdGVGaWxlbmFtZTpdKToK
KyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
ZGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tOgorICAg
ICAgICAoLVtXS1NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmluUmVjdDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IF9kaWRDb21wbGV0ZVdpdGhT
dWNjZXNzOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTAzLTIzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGluc2VydGluZyB0ZXh0IG9yIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSBieSBzaW11
bGF0aW5nIGtleWJvYXJkIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGNmNTU1NmEzYTcwZDRhYjll
YzhkYTYxZmE2NjUxNDAxODQyZTFkMDMuLjU0MGZkYjE5ZjAyODk2ZWYwMjU3NWJiYTU4N2E1ZjM5
MTVhNjgxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNjcwLDYgKzE2NzAsNyBAQCBwYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogcGFnZS9Qcm9jZXNz
V2FybWluZy5jcHAKIHBhZ2UvUXVpcmtzLmNwcAorcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3Bw
CiBwYWdlL1JlbW90ZURPTVdpbmRvdy5jcHAKIHBhZ2UvUmVtb3RlRnJhbWUuY3BwCiBwYWdlL1Jl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkY2E1NWE0MWU5MWZmZGYxNmU5ZTUzOGY2
ZjYzZDMzZWUxNzU2NWVjLi4zZGJiYzFiMGI3MWIwNGQzODJjN2JhZmM2YWNjY2ZiOGM5OWQ0Njlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02MTY2LDYgKzYxNjYsOCBAQAogCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyog
UHJvZ3Jlc3NUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9n
cmVzc1RyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTYwREMy
QTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTcwREMyQTNCMTAwQTIwRDlBIC8qIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFJlYWRTaGFyZURhdGFBc3lu
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkU2hhcmVEYXRhQXN5bmMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3Jp
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUF1dGhv
cml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM1ODZERDE1MjY0QzQ1
MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDk3MSw2ICsyMDk3Myw4IEBACiAJCQkJRTQyMDUwMTQyMTQx
OTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi8sCiAJCQkJQ0Q5QTg3RjkyMTVENkNG
MzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1
IC8qIFF1aXJrcy5oICovLAorCQkJCTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBSZWFkU2hh
cmVEYXRhQXN5bmMuY3BwICovLAorCQkJCTFBMkM2NjczMjQyQUZFRjgwMDMwNTVFQyAvKiBSZWFk
U2hhcmVEYXRhQXN5bmMuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmNwcCAqLywKIAkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVt
b3RlRE9NV2luZG93LmggKi8sCiAJCQkJNDZCQ0JCQzMyMDg1MDBBNzAwNzEwNjM4IC8qIFJlbW90
ZURPTVdpbmRvdy5pZGwgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggY2FjYzJh
MTMzNjk5MjZiZmQ2OWQxZTU5YzMxOTE0YWNjMzYxZTI3NC4uOGI1NzhiNGZmNzkyN2QwNzZhNjU2
NzY0YjNmYThmZDYzYjc5ZjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzcs
MTIgKzM3LDE0IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRlICJSZWFkU2hhcmVEYXRh
QXN5bmMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYXJlRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzExNCwxMyBAQCBib29sIE5hdmlnYXRv
cjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVE
YXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051bGwoKSAmJiBkYXRhLnVybC5pc051
bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlz
RW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkgeworI2lmIEVOQUJM
RShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAg
ICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93KCk7CiAgICAgLy8gTm90ZSB0aGF0
IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRlIHdlIHNob3VsZCBjb25zdW1lIHVz
ZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkgc3RyaWN0ZXIgaGVyZS4KLSAgICBp
ZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0aXZhdGlvbigpKSB7Cisg
ICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVudEFjdGl2YXRpb24oKSB8
fCBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDcsMTAgKzE1NCwz
NSBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
c2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmwsCisgICAgICAgIHsgfSwK
ICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKG1fbG9hZGVyKSB7CisgICAgICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CisgICAgICAg
ICAgICBtX2xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgbV9sb2FkZXIgPSBS
ZWFkU2hhcmVEYXRhQXN5bmM6OmNyZWF0ZShjb250ZXh0LCBbdGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldIChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4gcmVhZERh
dGEpIG11dGFibGUgeworICAgICAgICAgICAgdGhpcy0+cHJlc2VudFNoYXJlU2hlZXQocmVhZERh
dGEsIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICB9KTsKKyAgICAgICAgbV9sb2FkZXItPnN0
YXJ0KHNoYXJlRGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGhpcy0+cHJlc2Vu
dFNoYXJlU2hlZXQoc2hhcmVEYXRhLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBOYXZp
Z2F0b3I6OnByZXNlbnRTaGFyZVNoZWV0KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmPiByZWFkRGF0YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGlm
IChyZWFkRGF0YS5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QocmVh
ZERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChib29sIGNvbXBsZXRlZCkgeworICAgIG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCA9IHRy
dWU7CisgICAgYXV0byBzaGFyZURhdGEgPSByZWFkRGF0YS5yZXR1cm5WYWx1ZSgpOworICAgIGZy
YW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCB0aGlzXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAgICAgbV9p
c1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gZmFsc2U7CiAgICAgICAgIGlmIChjb21wbGV0ZWQpIHsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4YTg4
NjQ3ZjgyZGQuLjc1NjIwMWIwMmNkNGMwZmYzZjllMGEzOTNjNDI0ODhmMjlkOWEyNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAiRE9NV2lu
ZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxl
bWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTU1p
bWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7Citj
bGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgUmVhZFNoYXJlRGF0YUFzeW5jOwogCiBjbGFz
cyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFibGU8
TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpAQCAt
NDksNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGNhblNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURhdGEm
KTsKICAgICB2b2lkIHNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTaGFyZURh
dGEmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLSAgICAKKyAgICB2b2lkIHByZXNlbnRTaGFy
ZVNoZWV0KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIHN0YW5kYWxv
bmUoKSBjb25zdDsKICNlbmRpZgpAQCAtNjMsNiArNjYsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKKyAgICBSZWZQdHI8UmVhZFNoYXJlRGF0YUFzeW5jPiBtX2xvYWRlcjsKKyAgICBz
dGQ6OmF0b21pYzxib29sPiBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQgPSBmYWxzZTsKKyAgICAK
ICAgICBleHBsaWNpdCBOYXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRv
dyYpOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKQEAg
LTcwLDUgKzc2LDQgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJBZ2VudDsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX3BsYXRmb3JtOwogfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZWFkU2hhcmVEYXRhQXN5bmMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NDg2NTFiMmY2OWJiNzVl
NGVjZTBlNjMxODM2OGIxYzliYmU5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlYWRTaGFyZURhdGFBc3luYy5oIgorCisjaW5jbHVkZSAiRmlsZVJlYWRl
ckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6cmVhZEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJsb2ImIGJsb2IpCit7CisgICAgbV9jdXJyZW50TG9h
ZGluZ0ZpbGVOYW1lID0gbV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzW21fZmlsZXNSZWFkU29G
YXJdLT5uYW1lKCk7CisgICAgbV9maWxlc1JlYWRTb0ZhciArPSAxOworICAgIG1fYmxvYiA9ICZi
bG9iOworCisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2ItPnR5
cGUoKSk7CisgICAgbV9sb2FkZXItPnN0YXJ0KCZjb250ZXh0LCBibG9iKTsKK30KKworUmVhZFNo
YXJlRGF0YUFzeW5jOjpSZWFkU2hhcmVEYXRhQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIDogbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fY29udGV4dCgmY29udGV4
dCkKKyAgICAsIG1fZmlsZXNSZWFkU29GYXIoMCkKK3sKKyAgICAKK30KKworUmVhZFNoYXJlRGF0
YUFzeW5jOjp+UmVhZFNoYXJlRGF0YUFzeW5jKCkKK3sKKyAgICBtX2NvbnRleHQgPSBudWxscHRy
OworICAgIG1fYmxvYiA9IG51bGxwdHI7CisgICAgY2FuY2VsKCk7Cit9CisKK3ZvaWQgUmVhZFNo
YXJlRGF0YUFzeW5jOjpzdGFydChTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YSkKK3sK
KyAgICBtX2ZpbGVzUmVhZFNvRmFyID0gMDsKKyAgICBtX3NoYXJlRGF0YSA9IFdURk1vdmUoc2hh
cmVEYXRhKTsKKyAgICByZWFkSW50ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLnNoYXJl
RGF0YS5maWxlc1ttX2ZpbGVzUmVhZFNvRmFyXSk7CisgICAgbV9zaGFyZURhdGEuc2hhcmVEYXRh
LmZpbGVzLnJlc2VydmVDYXBhY2l0eShtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMuc2l6ZSgp
KTsKK30KKwordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcoKQorewor
ICAgIFJhd0ZpbGUgZmlsZTsKKyAgICBmaWxlLmZpbGVOYW1lID0gbV9jdXJyZW50TG9hZGluZ0Zp
bGVOYW1lOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1
bHQoKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFdURk1vdmUoc2hhcmVk
QnVmZmVyKTsKKyAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7Cisg
ICAgCisgICAgaWYgKG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkgIT0gbV9maWxl
c1JlYWRTb0ZhcikgeworICAgICAgICByZWFkSW50ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVE
YXRhLnNoYXJlRGF0YS5maWxlc1ttX2ZpbGVzUmVhZFNvRmFyXSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcik7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtX3NoYXJlRGF0YSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRSZWNlaXZlRGF0YSgpCit7CisgICAgCit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5j
OjpkaWRTdGFydExvYWRpbmcoKQoreworICAgIAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3lu
Yzo6ZGlkRmFpbChpbnQgZXJyb3JDb2RlKQoreworICAgIFVOVVNFRF9QQVJBTShlcnJvckNvZGUp
OworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0IGR1ZSB0byBmYWlsIG9mIHJlYWRpbmcg
ZmlsZXMuIl9zIH0pOworfQordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmNhbmNlbCgpCit7Cisg
ICAgaWYgKG1fbG9hZGVyKSB7CisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAg
bV9sb2FkZXIgPSBudWxscHRyOworICAgIH0KK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRT
aGFyZURhdGFBc3luYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYzUzYWJkZWNiYmQ5NzIzNmUxMmRkMDRjYjcz
ZDRkMDZkMDhmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRT
aGFyZURhdGFBc3luYy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBO
YXZpZ2F0b3I7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFJlYWRTaGFyZURhdGFBc3luYzogcHJpdmF0
ZSBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkU2hhcmVEYXRh
QXN5bmM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWRTaGFyZURhdGFBc3luYz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkU2hhcmVEYXRhQXN5bmMoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGNvbnRleHQpKTsgfQorICAgIH5SZWFkU2hhcmVEYXRhQXN5bmMo
KTsKKyAgICB2b2lkIHN0YXJ0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwpOworICAgIHZvaWQgY2Fu
Y2VsKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhZFNoYXJlRGF0YUFzeW5jKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4m
JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZvaWQgcmVhZEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBCbG9iJik7CisgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKGludCBlcnJvckNvZGUpIGZpbmFs
OworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgbV9zaGFyZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0
OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAgU3RyaW5nIG1fY3VycmVudExvYWRpbmdG
aWxlTmFtZTsKKyAgICBzaXplX3QgbV9maWxlc1JlYWRTb0ZhciA9IDA7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmgKaW5kZXggNWMzOTA3YzEwNzU4MDQ5ZDg4N2MwNDYzMWRiNGY5YzAzZmYxYWY3OS4u
ZmVlNmI5OWUzZmE1ZTA0OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogI2luY2x1ZGUgIkZp
bGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDEwICszNiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRh
IHsKICAgICBTdHJpbmcgdXJsOwogICAgIFZlY3RvcjxSZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsK
Kworc3RydWN0IFJhd0ZpbGUgeworICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaWxlRGF0YTsKK307CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCB7CiAgICAgU2hhcmVEYXRhIHNoYXJlRGF0YTsKICAgICBPcHRpb25hbDxVUkw+IHVybDsK
KyAgICBWZWN0b3I8UmF3RmlsZT4gZmlsZXM7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKaW5kZXggOTQwNDc0NDM1ZjhkZDNk
NWU4MzUyNzdiNjZkMzJkOGZmMzFiYjJjMi4uMGJmMTAzZDRhOWViZDlmZGZjYzkxYzAzYjY5M2Vk
M2E4M2U3MzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1
YXJhbnRpbmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFu
dGluZVNQSS5oCkBAIC0zNCw2ICszNCw3IEBACiAjZWxzZQogCiBlbnVtIHF0bl9mbGFncyB7Cisg
ICAgUVROX0ZMQUdfRE9XTkxPQUQgPSAweDAwMDEsCiAgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4
MDAwMiwKIH07CiAKQEAgLTQzLDEwICs0NCwxNSBAQCBlbnVtIHF0bl9mbGFncyB7CiAjZGVmaW5l
IHF0bl9wcm9jX2luaXQgX3F0bl9wcm9jX2luaXQKICNkZWZpbmUgcXRuX3Byb2NfaW5pdF93aXRo
X3NlbGYgX3F0bl9wcm9jX2luaXRfd2l0aF9zZWxmCiAjZGVmaW5lIHF0bl9wcm9jX3NldF9mbGFn
cyBfcXRuX3Byb2Nfc2V0X2ZsYWdzCi0KKyNkZWZpbmUgcXRuX2ZpbGVfYWxsb2MgX3F0bl9maWxl
X2FsbG9jCisjZGVmaW5lIHF0bl9maWxlX2luaXRfd2l0aF9wYXRoIF9xdG5fZmlsZV9pbml0X3dp
dGhfcGF0aAorI2RlZmluZSBxdG5fZmlsZV9mcmVlIF9xdG5fZmlsZV9mcmVlCisjZGVmaW5lIHF0
bl9maWxlX2FwcGx5X3RvX3BhdGggX3F0bl9maWxlX2FwcGx5X3RvX3BhdGgKKyNkZWZpbmUgcXRu
X2ZpbGVfc2V0X2ZsYWdzIF9xdG5fZmlsZV9zZXRfZmxhZ3MKICNlbmRpZgogCiB0eXBlZGVmIHN0
cnVjdCBfcXRuX3Byb2MgKnF0bl9wcm9jX3Q7Cit0eXBlZGVmIHN0cnVjdCBfcXRuX2ZpbGUgKnF0
bl9maWxlX3Q7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCkBAIC01Niw2ICs2MiwxMSBAQCBpbnQg
cXRuX3Byb2NfaW5pdF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CiBpbnQgcXRuX3Byb2Nfc2V0X2Zs
YWdzKHF0bl9wcm9jX3QsIHVpbnQzMl90IGZsYWdzKTsKIHF0bl9wcm9jX3QgcXRuX3Byb2NfYWxs
b2MoKTsKIHZvaWQgcXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsKK3F0bl9maWxlX3QgcXRuX2Zp
bGVfYWxsb2Modm9pZCk7Cit2b2lkIHF0bl9maWxlX2ZyZWUocXRuX2ZpbGVfdCBxZik7CitpbnQg
cXRuX2ZpbGVfc2V0X2ZsYWdzKHF0bl9maWxlX3QgcWYsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBx
dG5fZmlsZV9hcHBseV90b19wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOwor
aW50IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBh
dGgpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIzMDdhYTI1ODllZjgxNDBlYWY3NTkwNDE4ZWJl
ODFhYmMxYTkxODAuLjU4MTA5ZDVjNzAyM2Q3OTM1OWY4NGFkMTJkYWIyNjFkYTRhMWUwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9w
dGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTIwMTcsNiArMjAxOCwzMCBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBGaWxlQ2hvb3NlclNldAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVmVjdG9yPFJhd0ZpbGU+JiBmaWxlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihmaWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7
CisgICAgICAgIGVuY29kZXIgPDwgZmlsZS5maWxlTmFtZTsKKyAgICAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGZpbGUuZmlsZURhdGEuZ2V0KCkpOworICAgIH0KK30KKworYm9vbCBB
cmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBW
ZWN0b3I8UmF3RmlsZT4mIGZpbGVzKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBmaWxlcy5yZXNpemUoZGF0YVNpemUpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsZS5maWxlTmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBmaWxl
LmZpbGVEYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAgICAgCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U2hhcmVEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
RGF0YSYgc2V0dGluZ3MpCiB7CkBAIC0yMDQwLDYgKzIwNjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTaGFyZQogewogICAgIGVuY29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwogICAgIGVuY29k
ZXIgPDwgc2V0dGluZ3MudXJsOworICAgIGVuY29kZXIgPDwgc2V0dGluZ3MuZmlsZXM7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdzKQpAQCAtMjA0OCw2
ICsyMDc0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MudXJsKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MuZmlsZXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOGY0ODc2MGRmNmRkYWMwZGM0ZDVj
ZWYxNzNlYTRhMjE2ZTg0ZjAxNy4uMDAzNDUzYjBhMWMyOTQxOWY5YjE2MjZjZDQ1YzBlZWQ3NWZi
NGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IEN1cnNvcjsKIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKIGNsYXNzIERyYWdEYXRhOworY2xhc3Mg
RmlsZTsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbjsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBj
bGFzcyBGbG9hdFBvaW50OwpAQCAtMTIzLDYgKzEyNCw3IEBAIHN0cnVjdCBFdmVudFRyYWNraW5n
UmVnaW9uczsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZvbnRBdHRyaWJ1dGVz
Owogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CitzdHJ1Y3QgUmF3RmlsZTsKIHN0cnVjdCBT
aGFyZURhdGE7CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIHN0cnVjdCBMZW5ndGg7
CkBAIC01NTMsNiArNTU1LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogfTsKICAgICAKK3RlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8VmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmF3Rmls
ZT4mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFZlY3RvcjxXZWJDb3JlOjpS
YXdGaWxlPiYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTaGFyZURhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlRGF0YSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
Q29yZTo6U2hhcmVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1No
YXJlU2hlZXQubW0KaW5kZXggYjAyNDMzYzMwM2E2ZjkzOWRiNDJhN2ZjNDA0OWU5ZWFjNTQxYjAw
Ni4uNjI5ZDBmMTJlODUyM2I3NzIwM2NhNTg2OWE0YzNiMmQ1MzQ5NWJhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtMjgsNiArMjgsMTAg
QEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRG
T1JNKEFQUExFVFYpCiAKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKKworI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgpAQCAtNDcsNiArNTEsNyBAQCBAZW5kCiAjZW5k
aWYKIAogQGltcGxlbWVudGF0aW9uIFdLU2hhcmVTaGVldCB7CisgICAgTlNTdHJpbmcgKl90ZW1w
RmlsZVNoYXJlRGlyZWN0b3J5OwogICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7
CiAgICAgV2Vha09iakNQdHI8aWQgPFdLU2hhcmVTaGVldERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsK
ICAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IF9jb21wbGV0aW9uSGFuZGxl
cjsKQEAgLTEwNiwxMCArMTExLDQ3IEBAIC0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihj
b25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0YSBpblJlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCisgICAgaWYgKGRhdGEuZmlsZXMuc2l6ZSgpKSB7CisgICAg
ICAgIF90ZW1wRmlsZVNoYXJlRGlyZWN0b3J5ID0gW1tXS1NoYXJlU2hlZXQgY3JlYXRlVGVtcFNo
YXJpbmdEaXJlY3RvcnldIGNvcHldOworICAgICAgICAKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBf
dCBmaWxlV3JpdGVHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgICAgICBfX2Js
b2NrIGJvb2wgaXNTdWNjZXNmdWwgPSB0cnVlOworICAgICAgICBhdXRvIHF1ZXVlID0gZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJXcml0ZSBTaGFyZWFibGUgRmlsZXMgVG8gRGlzayIsIERJU1BBVENI
X1FVRVVFX1NFUklBTCk7CisgICAgICAgIGZvciAoYXV0byBmaWxlIDogZGF0YS5maWxlcykgewor
ICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZmlsZVdyaXRlR3JvdXAsIHF1ZXVlLCBe
eworICAgICAgICAgICAgICAgIGlmICghaXNTdWNjZXNmdWwpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtXS1NoYXJlU2hlZXQg
d3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6ZmlsZS5maWxlTmFtZSBkYXRhOmZpbGUuZmlsZURhdGEt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRlbXBEaXJlY3Rvcnk6X3RlbXBGaWxlU2hhcmVEaXJlY3Rv
cnldOworICAgICAgICAgICAgICAgIGlmICghZmlsZVVSTCkgeworICAgICAgICAgICAgICAgICAg
ICBpc1N1Y2Nlc2Z1bCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFtzaGFyZURhdGFBcnJheSBhZGRPYmplY3Q6
ZmlsZVVSTF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
ZGlzcGF0Y2hfZ3JvdXBfbm90aWZ5KGZpbGVXcml0ZUdyb3VwLCBxdWV1ZSwgXnsKKyAgICAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAg
ICAgICAgICAgaWYgKCFpc1N1Y2Nlc2Z1bCkgeworICAgICAgICAgICAgICAgICAgICBbc2VsZiBf
ZGlkQ29tcGxldGVXaXRoU3VjY2VzczpOT107CisgICAgICAgICAgICAgICAgICAgIFtzZWxmIGRp
c21pc3NdOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIFtzZWxmIHByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6c2hhcmVEYXRh
QXJyYXkuZ2V0KCkgaW5SZWN0OnJlY3RdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFtzZWxmIHByZXNlbnRXaXRoU2hhcmVE
YXRhQXJyYXk6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5SZWN0OnJlY3RdOworfQorCistICh2b2lk
KXByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJyYXkgKilzaGFyaW5nSXRlbXMgaW5SZWN0
OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdAorewogICAgIFdLV2ViVmll
dyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxlYXNlZCgpOwogICAgIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5n
U2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczpzaGFyZURhdGFBcnJheS5nZXQoKV0p
OworICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFkb3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNl
UGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJpbmdJdGVtc10pOwogICAgIF9zaGFyaW5n
U2VydmljZVBpY2tlci5nZXQoKS5kZWxlZ2F0ZSA9IHNlbGY7CiAgICAgCiAgICAgLy8gV0tTaGFy
ZVNoZWV0IGNhbiBiZSByZWxlYXNlZCB1bmRlciBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGRlbGVn
YXRlIGNhbGxiYWNrcy4KQEAgLTEyNiw3ICsxNjgsNyBAQCAtICh2b2lkKXByZXNlbnRXaXRoUGFy
YW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCAmKWRhdGEgaW5S
ZQogICAgIH0KICAgICBbX3NoYXJpbmdTZXJ2aWNlUGlja2VyIHNob3dSZWxhdGl2ZVRvUmVjdDpw
cmVzZW50YXRpb25SZWN0IG9mVmlldzp3ZWJWaWV3IHByZWZlcnJlZEVkZ2U6TlNNaW5ZRWRnZV07
CiAjZWxzZQotICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rp
dml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmVEYXRh
QXJyYXkuZ2V0KCkgYXBwbGljYXRpb25BY3Rpdml0aWVzOm5pbF0pOworICAgIF9zaGFyZVNoZWV0
Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmluZ0l0ZW1zIGFwcGxpY2F0aW9uQWN0aXZpdGll
czpuaWxdKTsKICAgICBbX3NoYXJlU2hlZXRWaWV3Q29udHJvbGxlciBzZXRDb21wbGV0aW9uV2l0
aEl0ZW1zSGFuZGxlcjpeKE5TU3RyaW5nICosIEJPT0wgY29tcGxldGVkLCBOU0FycmF5ICosIE5T
RXJyb3IgKikgewogICAgICAgICBbc2VsZiBfZGlkQ29tcGxldGVXaXRoU3VjY2Vzczpjb21wbGV0
ZWRdOwogICAgICAgICBbc2VsZiBkaXNwYXRjaERpZERpc21pc3NdOwpAQCAtMTgwLDYgKzIyMiw4
IEBAIC0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2Vy
dmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5CiAKIC0gKHZvaWQpX2RpZENvbXBsZXRlV2l0aFN1
Y2Nlc3M6KEJPT0wpc3VjY2VzcwogeworICAgIFtXS1NoYXJlU2hlZXQgcmVtb3ZlVGVtcFNoYXJp
bmdEaXJlY3RvcjpfdGVtcEZpbGVTaGFyZURpcmVjdG9yeV07CisgICAgX3RlbXBGaWxlU2hhcmVE
aXJlY3RvcnkgPSBuaWw7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoX2Nv
bXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOwpAQCAtMjE1LDYgKzI1OSwxMjggQEAgLSAodm9pZClk
aXNwYXRjaERpZERpc21pc3MKICAgICAgICAgW19kZWxlZ2F0ZSBzaGFyZVNoZWV0RGlkRGlzbWlz
czpzZWxmXTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKKysgKEJPT0wpc2V0UXVhcmFudGluZUlu
Zm9ybWF0aW9uRm9yRmlsZVBhdGg6KE5TU3RyaW5nICopZmlsZVBhdGgKK3sKKyAgICBOU1VSTCAq
ZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVBhdGhdOworCisgICAgLy8gV29y
a2Fyb3VuZCA8cmRhcjovL3Byb2JsZW0vMjE3MzU0MTI+OiBOU1VSTERvd25sb2FkIHdpbGwgYXV0
b21hdGljYWxseSBhdHRhY2ggTlNVUkxRdWFyYW50aW5lUHJvcGVydGllcworICAgIC8vIHRvIGZp
bGVzIHdlIGRvd25sb2FkIGlmIHRoZXkgYXJlIGFscmVhZHkgcXVhcmFudGluZWQuIFRoaXMgYWRk
cyBhIHF1YXJhbnRpbmUgaGlzdG9yeSBpdGVtIHRoYXQgdGhlIGNvZGUKKyAgICAvLyBiZWxvdyB3
aWxsIHNoYWRvdy4gU2luY2UgU2FmYXJpIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVtb3ZlIGFsbCB0
cmFjZXMgb2YgZG93bmxvYWQgaGlzdG9yeSwgd2UgbmVlZCB0bworICAgIC8vIGRlbGV0ZSB0aGF0
IGVudHJ5IGJlZm9yZSBvdXJzIHJlbmRlcnMgaXQgaW5hY2Nlc3NpYmxlLgorCisgICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqcXVhcmFudGluZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdOworICAgIHF1YXJhbnRpbmVQcm9wZXJ0aWVzWyhfX2JyaWRnZSBOU1N0
cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlS2V5XSA9IChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1
YXJhbnRpbmVUeXBlV2ViRG93bmxvYWQ7CisgICAgcXVhcmFudGluZVByb3BlcnRpZXNbKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZUFnZW50QnVuZGxlSWRlbnRpZmllcktleV0gPSBX
ZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKworCisgICAgTlNFcnJvciAq
ZXJyb3I7CisgICAgaWYgKCFbZmlsZVVSTCBzZXRSZXNvdXJjZVZhbHVlOnF1YXJhbnRpbmVQcm9w
ZXJ0aWVzIGZvcktleTpOU1VSTFF1YXJhbnRpbmVQcm9wZXJ0aWVzS2V5IGVycm9yOiZlcnJvcl0p
IHsKKyAgICAgICAgW3F1YXJhbnRpbmVQcm9wZXJ0aWVzIHJlbGVhc2VdOworICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBpbmZvcm1hdGlvbiBmb3IgZmlsZSBwYXRo
OiAlQDogJUAiLCBmaWxlUGF0aCwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQor
ICAgIFtxdWFyYW50aW5lUHJvcGVydGllcyByZWxlYXNlXTsKKworICAgIC8vIFdoZXRoZXIgdGhl
IGZpbGUgd2FzIGRvd25sb2FkZWQgYnkgc2FuZGJveGVkIFdlYlByb2Nlc3Mgb3Igbm90LCBMU1Nl
dEl0ZW1BdHRyaWJ1dGUgcmVzZXRzIHRoZSBmbGFncyB0byAwIChhZHZpc29yeSBRVE5fRkxBR19E
T1dOTE9BRCwKKyAgICAvLyB3aGljaCBjYW4gYmUgdGhlbiByZW1vdmVkIGJ5IFdlYlByb2Nlc3Mp
LiBSZXBsYWNlIHRoZSBmbGFncyB3aXRoIHNhbmRib3ggcXVhcmFudGluZSBvbmVzLCB3aGljaCBj
YW5ub3QgYmUgcmVtb3ZlZCBieSBzYW5kYm94ZWQgcHJvY2Vzc2VzLgorICAgIHJldHVybiBbV0tT
aGFyZVNoZWV0IGFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQ
YXRoOmZpbGVQYXRoXTsKK30KKworKyAoQk9PTClhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93
bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDooTlNTdHJpbmcgKilmaWxlUGF0aAoreworICAgIHF0bl9m
aWxlX3QgZnEgPSBxdG5fZmlsZV9hbGxvYygpOworICAgIGludCBxdWFyYW50aW5lRXJyb3IgPSBx
dG5fZmlsZV9pbml0X3dpdGhfcGF0aChmcSwgZmlsZVBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKSB7CisgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IHJldHJpZXZlIHF1YXJhbnRpbmUgZmxhZ3MgZm9yIGZpbGUgcGF0aCAlQDogJWQiLCBm
aWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKyAgICAgICAgcXRuX2ZpbGVfZnJlZShmcSk7Cisg
ICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBxdWFyYW50aW5lRXJyb3IgPSBxdG5fZmls
ZV9zZXRfZmxhZ3MoZnEsIFFUTl9GTEFHX1NBTkRCT1ggfCBRVE5fRkxBR19ET1dOTE9BRCk7Cisg
ICAgaWYgKHF1YXJhbnRpbmVFcnJvcikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBz
ZXQgcXVhcmFudGluZSBmbGFncyBpbiBxdG5fZmlsZV90IHN0cnVjdHVyZSBmb3IgZmlsZSBwYXRo
ICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJyb3IpOworICAgICAgICBxdG5fZmlsZV9m
cmVlKGZxKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAgIHF1YXJhbnRpbmVFcnJv
ciA9IHF0bl9maWxlX2FwcGx5X3RvX3BhdGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikKKyAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgYXBwbHkgcXVhcmFudGluZSBmbGFncyB0byBmaWxlIHBhdGggJUA6ICVkIiwgZmls
ZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisKKyAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKworICAg
IHJldHVybiBZRVM7Cit9CisjZW5kaWYKKworKyAoQk9PTClyZW1vdmVUZW1wU2hhcmluZ0RpcmVj
dG9yOihOU1N0cmluZyAqKWRpcmVjdG9yeVBhdGgKK3sKKyAgICBpZiAoIVtkaXJlY3RvcnlQYXRo
IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBpZiAoIVtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkaXJlY3RvcnlQYXRoXSkKKyAg
ICAgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0
UGF0aDpkaXJlY3RvcnlQYXRoIGVycm9yOm5pbF07CisgICAgCisgICAgcmV0dXJuIFlFUzsKK30K
KworKyAoTlNTdHJpbmcgKiljcmVhdGVUZW1wU2hhcmluZ0RpcmVjdG9yeQoreworICAgIE5TU3Ry
aW5nICp0ZW1wRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiV0tGaWxlU2hhcmUiKTsKKyAgICAKKyAgICBpZiAoIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0p
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYg
KCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERp
cmVjdG9yeV0pIHsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFBhdGg6dGVtcERpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3Jp
ZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgaWYgKGVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIHRlbXBEaXJlY3Rvcnk7
Cit9CisKKysgKE5TU3RyaW5nICopY3JlYXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6
KE5TU3RyaW5nICopdGVtcERpcmVjdG9yeQoreworICAgIE5TU3RyaW5nICpyYW5kb21EaXJlY3Rv
cnkgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisgICAgaWYgKCFbcmFuZG9tRGlyZWN0
b3J5IGxlbmd0aF0gfHwgIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgTlNTdHJpbmcgKmRhdGFQYXRoID0gW3RlbXBEaXJlY3Rvcnkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVAIiwgcmFu
ZG9tRGlyZWN0b3J5XV07CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYg
KCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YVBh
dGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGly
ZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpOTyBhdHRy
aWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gZGF0YVBhdGg7Cit9CisKKysgKE5TVVJM
ICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6KE5TU3RyaW5nICopZmlsZU5hbWUgZGF0YTooTlNE
YXRhICopIGZpbGVEYXRhIHRlbXBEaXJlY3Rvcnk6KE5TU3RyaW5nICopIHRlbXBEaXJlY3RvcnkK
K3sKKyAgICBpZiAoIVt0ZW1wRGlyZWN0b3J5IGxlbmd0aF0gfHwgIVtmaWxlTmFtZSBsZW5ndGhd
IHx8ICFmaWxlRGF0YSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU1N0cmluZyAq
dGVtcERpcmVjdG9yeUZvckZpbGUgPSBbV0tTaGFyZVNoZWV0IGNyZWF0ZVJhbmRvbVNoYXJpbmdE
aXJlY3RvcnlGb3JGaWxlOnRlbXBEaXJlY3RvcnldOworICAgIGlmICghdGVtcERpcmVjdG9yeUZv
ckZpbGUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgTlNTdHJpbmcgKnNhbml0aXpl
ZEZpbGVuYW1lID0gV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2Vz
dGVkRmlsZW5hbWUoZmlsZU5hbWUpOworICAgIE5TU3RyaW5nICpmaWxlID0gW3RlbXBEaXJlY3Rv
cnlGb3JGaWxlIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzYW5pdGl6ZWRGaWxlbmFt
ZV07CisKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZV07
CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW2ZpbGVEYXRhIHdyaXRlVG9V
Ukw6ZmlsZVVSTCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMgZXJyb3I6JmVycm9yXTsKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGlmICghW1dLU2hhcmVTaGVldCBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDpm
aWxlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIHJldHVybiBmaWxlVVJMOwor
fQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdBVENI
T1MpICYmICFQTEFURk9STShBUFBMRVRWKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyY2E3MzA1YWUzNTI2OGRiOWYxY2Ri
YTA4Y2M0MzI0ZjFkOGM1MmQuLmUxNWY5NDNkZjI0YWE3NjIwZDBlNzIyMzhlYTIzYTE3NzM0YjBh
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAg
PG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYy
IGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVzZSB1cmwgb2YgaW1hZ2UuCisKKyAgICAgICAgKiBm
YXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWw6CisKIDIwMjAtMDMtMjMgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVbnJldmlld2VkIHRl
c3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZDExZmIwNTU1
YWZlNTBkNWUyOTExYzYwOGM0NWExMWZjYmVmMTc1Ni4uMmM1MzNlYTY4NDE5OGQxMGM3NTdmNzgy
ODY4N2JlZGZlZGZiMmU5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBl
eHBlY3RhdGlvbnMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUuaHR0cHMtZXhwZWN0ZWQu
dHh0OgorCiAyMDIwLTAzLTIzICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbAppbmRleCA4
NTZlZDI0NDE4ODcxODhkYjY0OThkM2RiMTcwODA3MTQ5MGY1Yzg2Li45Yjg5MGQ0YzFiMTM0N2Qw
OWNiNjFjYTI2MjQyMzJkMzUwYzA2OTkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dl
Yi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93ZWIt
c2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCkBAIC0yLDYgKzIsNyBAQAogCiA8aHRtbD4KIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTUsIHdpZHRoPWRldmlj
ZS13aWR0aCI+CisKIDxoZWFkPgogCiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtMTYsMTAgKzE3LDEyIEBACiAKICAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHRleHRGaWxlID0g
bmV3IEZpbGUoWydoZWxsbyddLCAnaGVsbG8udHh0Jywge3R5cGU6J3RleHQvcGxhaW4nfSk7CisK
KyAgICAgICAgICAgIHZhciBibG9iID0gdGhpcy5yZXNwb25zZTsKKyAgICAgICAgICAgIGNvbnN0
IHRleHRGaWxlID0gbmV3IEZpbGUoWydUaGlzIGlzIGEgdGV4dCBmaWxlJ10sICdUZXh0RmlsZS50
eHQnLCB7dHlwZTondGV4dC9odG1sJ30pOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewotICAgICAg
ICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDogInNhZGYiLCBmaWxlczogW3RleHRGaWxl
XX0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAgICAgICB3cml0ZSgiUEFTUzog
U2hhcmUgc2hlZXQgaW52b2tlZC4iKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4
dDogIlRoaXMgaXMgYSB0ZXh0IGZpbGUiLCBmaWxlczogW3RleHRGaWxlXX0pLnRoZW4oKHJlc3Vs
dCkgPT4geworICAgICAgICAgICAgICAgIHdyaXRlKCJQQVNTOiBTaGFyZSBzaGVldCBpbnZva2Vk
LiIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgICAgICAgICB9KTsgICAgCiAgICAgICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396028</attachid>
            <date>2020-04-09 17:27:11 -0700</date>
            <delta_ts>2020-04-21 11:37:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200409202710.patch</filename>
            <type>text/plain</type>
            <size>35109</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdiMzY5Nzg0NWVjZmNj
MGQzZTQyZDI5ODFmMzIxYTIxNDkxOWZjNC4uYWQ3OTM1YWI5MWY3YmU5NjdmODZlOTM1Mjg4MzU2
MmU0YWFjMjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgc29tZSBQTEFURk9STShJT1NfRkFNSUxZKSBndWFyZHMgaW4gVGV4dEZpZWxkSW5wdXRU
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGNkMjE0MzA1ZmVmZjlkYmEyNTJhYzhlM2ZlNGQxZDZmMzUyZDg1YWQu
LjMzZWNmZTFhMjlkZDY4MmMxNDgwZTU4ZDBkMTUxMDZhNTJkNjQxMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBv
cnQgZm9yIHBhc3NpbmcgZmlsZSBvYmplY3RzIG92ZXIgSVBDIGFuZAorICAgICAgICBzaGFyaW5n
IG9mIGZpbGVzIHRvIHNoYXJlIHNoZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0Zp
bGU+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3Rmls
ZT4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkw+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUu
bW06IEFkZGVkLgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGly
ZWN0b3J5UGF0aF0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRGaWxlRGly
ZWN0b3J5Rm9yU2hhcmluZ10pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSByZW1v
dmVGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ10pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVX
cml0ZSBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDpdKToKKyAgICAgICAgKCtb
V0tTaGFyZWFibGVGaWxlV3JpdGUgYXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxh
Z3NUb0ZpbGVBdFBhdGg6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGNyZWF0
ZUZpbGVuYW1lOl0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSB3cml0ZUZpbGVU
b1NoYXJlYWJsZVVSTDpkYXRhOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NoYXJl
U2hlZXQubW06CisgICAgICAgICgtW1dLU2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6
aW5SZWN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgX2Rp
ZENvbXBsZXRlV2l0aFN1Y2Nlc3M6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMjAtMDQtMDEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVVRJIGZyb20gTUlNRSB0eXBlIGNhY2hlIGNhbiBi
ZSByZW1vdmVkIGFmdGVyIHIyNTg5MTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzZkNTVkNTM5M2U2NzZh
ZGNiOGY2MWFlOTZkZTMzNzQ2MjJiMzZkYy4uOWVhYThjMjIzZTU4ZDVlMTEwYzk2ZTcxMzRiNTZk
NDljOWU3ZmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2NzAsNiArMTY3MCw3IEBAIHBhZ2UvUG9p
bnRlckxvY2tDb250cm9sbGVyLmNwcAogcGFnZS9QcmludENvbnRleHQuY3BwCiBwYWdlL1Byb2Nl
c3NXYXJtaW5nLmNwcAogcGFnZS9RdWlya3MuY3BwCitwYWdlL1JlYWRTaGFyZURhdGFBc3luYy5j
cHAKIHBhZ2UvUmVtb3RlRE9NV2luZG93LmNwcAogcGFnZS9SZW1vdGVGcmFtZS5jcHAKIHBhZ2Uv
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0Mzc5MThjYWJhNzMzZmZiNjNmM2Ew
N2I0OGVhMGY0NDUzY2VhNzguLmRkZWY0N2NmMGI0NzRlYzk5M2NmNDYzN2RmMTAxZGViM2M0YTAy
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYxNzIsNiArNjE3Miw4IEBACiAJCTFBMkE2ODIyMEI1QkVERTcwMDAyQTQ4MCAv
KiBQcm9ncmVzc1RyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2dyZXNzVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJBQUM1NjBE
QzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJBQUM1NzBEQzJBM0IxMDBBMjBEOUEgLyog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFJlYWRTaGFyZURhdGFBc3luYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWFkU2hhcmVEYXRhQXN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQTJDNjY3MzI0MkFGRUY4MDAzMDU1RUMgLyogUmVhZFNoYXJlRGF0YUFz
eW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRTaGFyZURhdGFBc3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTJFNkU1ODBDQzU1MjEzMDA0QTIwNjIgLyogU1FMVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhv
cml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlQXV0
aG9yaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMzU4NkREMTUyNjRD
NDUwMDIyQTY1OSAvKiBSZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTg5LDYgKzIwOTkxLDggQEAKIAkJCQlFNDIwNTAxNDIx
NDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vzc1dhcm1pbmcuaCAqLywKIAkJCQlDRDlBODdGOTIxNUQ2
Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmNwcCAqLywKIAkJCQlDRDlBODdGQjIxNUQ2Q0YzMDA2RjE3
QjUgLyogUXVpcmtzLmggKi8sCisJCQkJMUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFJlYWRT
aGFyZURhdGFBc3luYy5jcHAgKi8sCisJCQkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFJl
YWRTaGFyZURhdGFBc3luYy5oICovLAogCQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3RDJERCAvKiBS
ZW1vdGVET01XaW5kb3cuY3BwICovLAogCQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3RDJERCAvKiBS
ZW1vdGVET01XaW5kb3cuaCAqLywKIAkJCQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2MzggLyogUmVt
b3RlRE9NV2luZG93LmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNj
MmExMzM2OTkyNmJmZDY5ZDFlNTljMzE5MTRhY2MzNjFlMjc0Li44YjU3OGI0ZmY3OTI3ZDA3NmE2
NTY3NjRiM2ZhOGZkNjNiNzlmMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0z
NywxMiArMzcsMTQgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJh
dGVnaWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1ZGUgIlJlYWRTaGFyZURh
dGFBc3luYy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2hhcmVEYXRhLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xMTIsOCArMTE0LDEzIEBAIGJvb2wgTmF2aWdh
dG9yOjpjYW5TaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFy
ZURhdGEmIGRhdGEpCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChkYXRhLnRpdGxlLmlzTnVsbCgpICYmIGRhdGEudXJsLmlz
TnVsbCgpICYmIGRhdGEudGV4dC5pc051bGwoKSkgewotICAgICAgICBpZiAoIWRhdGEuZmlsZXMu
aXNFbXB0eSgpKQorICAgICAgICBpZiAoIWRhdGEuZmlsZXMuaXNFbXB0eSgpKSB7CisjaWYgRU5B
QkxFKEZJTEVfU0hBUkUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0xMzksNyArMTQ2LDcgQEAgdm9pZCBOYXZpZ2F0b3I6OnNoYXJlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSwgUmUK
ICAgICAKICAgICBhdXRvKiB3aW5kb3cgPSB0aGlzLT53aW5kb3coKTsKICAgICAvLyBOb3RlIHRo
YXQgdGhlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaW5kaWNhdGUgd2Ugc2hvdWxkIGNvbnN1bWUg
dXNlciBhY3RpdmF0aW9uLiBXZSBhcmUgaW50ZW50aW9uYWxseSBzdHJpY3RlciBoZXJlLgotICAg
IGlmICghd2luZG93IHx8ICF3aW5kb3ctPmNvbnN1bWVUcmFuc2llbnRBY3RpdmF0aW9uKCkpIHsK
KyAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0aXZhdGlvbigp
IHx8IG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCkgewogICAgICAgICBwcm9taXNlLT5yZWplY3Qo
Tm90QWxsb3dlZEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NywxMCArMTU0
LDM1IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAgICAgU2hhcmVEYXRhV2l0aFBhcnNlZFVS
TCBzaGFyZURhdGEgPSB7CiAgICAgICAgIGRhdGEsCiAgICAgICAgIHVybCwKKyAgICAgICAgeyB9
LAogICAgIH07CiAgICAgCisgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAobV9sb2FkZXIpIHsKKyAgICAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAg
ICAgICAgIG1fbG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBtX2xvYWRlciA9
IFJlYWRTaGFyZURhdGFBc3luYzo6Y3JlYXRlKGNvbnRleHQsIFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0gKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiByZWFk
RGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aGlzLT5wcmVzZW50U2hhcmVTaGVldChyZWFk
RGF0YSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIH0pOworICAgICAgICBtX2xvYWRlci0+
c3RhcnQoc2hhcmVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0aGlzLT5wcmVz
ZW50U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIE5h
dmlnYXRvcjo6cHJlc2VudFNoYXJlU2hlZXQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCY+IHJlYWREYXRhLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAg
aWYgKHJlYWREYXRhLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChy
ZWFkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICBmcmFtZS0+cGFnZSgpLT5j
aHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0gKGJvb2wgY29tcGxldGVkKSB7CisgICAgbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0g
dHJ1ZTsKKyAgICBhdXRvIHNoYXJlRGF0YSA9IHJlYWREYXRhLnJldHVyblZhbHVlKCk7CisgICAg
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHRoaXNdIChib29sIGNvbXBsZXRlZCkgeworICAgICAgICBt
X2lzUHJlc2VudGluZ1NoYXJlU2hlZXQgPSBmYWxzZTsKICAgICAgICAgaWYgKGNvbXBsZXRlZCkg
ewogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggZWFiZjE0N2MwOWNkOTQ5OWMwZWIwZjNlYjI2NDhh
ODg2NDdmODJkZC4uNzU2MjAxYjAyY2Q0YzBmZjNmOWUwYTM5M2M0MjQ4OGYyOWQ5YTI3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0yMiwxNSArMjIsMTggQEAKICNpbmNsdWRlICJET01X
aW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKICNpbmNsdWRlICJTdXBw
bGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBCbG9iOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRE9N
TWltZVR5cGVBcnJheTsKIGNsYXNzIERPTVBsdWdpbkFycmF5Owotc3RydWN0IFNoYXJlRGF0YTsK
K2NsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CitjbGFzcyBSZWFkU2hhcmVEYXRhQXN5bmM7CiAKIGNs
YXNzIE5hdmlnYXRvciBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBTdXBwbGVtZW50YWJs
ZTxOYXZpZ2F0b3I+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5hdmlnYXRvcik7CkBA
IC00OSw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBib29sIG9uTGluZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgY2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFNoYXJlRGF0
YSYpOwogICAgIHZvaWQgc2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFNoYXJl
RGF0YSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwotICAgIAorICAgIHZvaWQgcHJlc2VudFNo
YXJlU2hlZXQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+LCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgc3RhbmRh
bG9uZSgpIGNvbnN0OwogI2VuZGlmCkBAIC02Myw2ICs2Niw5IEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgorICAgIFJlZlB0cjxSZWFkU2hhcmVEYXRhQXN5bmM+IG1fbG9hZGVyOworICAg
IHN0ZDo6YXRvbWljPGJvb2w+IG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCA9IGZhbHNlOworICAg
IAogICAgIGV4cGxpY2l0IE5hdmlnYXRvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRE9NV2lu
ZG93Jik7CiAKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVnaW5zOwpA
QCAtNzAsNSArNzYsNCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU3RyaW5nIG1fdXNlckFnZW50
OwogICAgIG11dGFibGUgU3RyaW5nIG1fcGxhdGZvcm07CiB9OwotCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlYWRTaGFyZURhdGFBc3luYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAxNmI4YmI3OTA0NTI0
ZGY4NTU4MjM2ZGU3YTM3NTg3N2I4YTdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVhZFNoYXJlRGF0YUFzeW5jLmgiCisKKyNpbmNsdWRlICJGaWxlUmVh
ZGVyTG9hZGVyLmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgorI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpyZWFkSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQmxvYiYgYmxvYikKK3sKKyAgICBtX2N1cnJlbnRM
b2FkaW5nRmlsZU5hbWUgPSBtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXNbbV9maWxlc1JlYWRT
b0Zhcl0tPm5hbWUoKTsKKyAgICBtX2ZpbGVzUmVhZFNvRmFyICs9IDE7CisgICAgbV9ibG9iID0g
JmJsb2I7CisKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmls
ZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJM
b2FkZXJDbGllbnQqPih0aGlzKSk7CisgICAgbV9sb2FkZXItPnNldERhdGFUeXBlKG1fYmxvYi0+
dHlwZSgpKTsKKyAgICBtX2xvYWRlci0+c3RhcnQoJmNvbnRleHQsIGJsb2IpOworfQorCitSZWFk
U2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBtX2NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9jb250ZXh0KCZjb250
ZXh0KQorICAgICwgbV9maWxlc1JlYWRTb0ZhcigwKQoreworICAgIAorfQorCitSZWFkU2hhcmVE
YXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMoKQoreworICAgIG1fY29udGV4dCA9IG51bGxw
dHI7CisgICAgbV9ibG9iID0gbnVsbHB0cjsKKyAgICBjYW5jZWwoKTsKK30KKwordm9pZCBSZWFk
U2hhcmVEYXRhQXN5bmM6OnN0YXJ0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhKQor
eworICAgIG1fZmlsZXNSZWFkU29GYXIgPSAwOworICAgIG1fc2hhcmVEYXRhID0gV1RGTW92ZShz
aGFyZURhdGEpOworICAgIHJlYWRJbnRlcm5hbCgqbV9jb250ZXh0LCAqbV9zaGFyZURhdGEuc2hh
cmVEYXRhLmZpbGVzW21fZmlsZXNSZWFkU29GYXJdKTsKKyAgICBtX3NoYXJlRGF0YS5zaGFyZURh
dGEuZmlsZXMucmVzZXJ2ZUNhcGFjaXR5KG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXpl
KCkpOworfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlkRmluaXNoTG9hZGluZygpCit7
CisgICAgUmF3RmlsZSBmaWxlOworICAgIGZpbGUuZmlsZU5hbWUgPSBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShtX2N1cnJlbnRMb2FkaW5nRmlsZU5hbWUp
OworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsK
KyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFdURk1vdmUoc2hhcmVkQnVmZmVy
KTsKKyAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CisgICAgCisg
ICAgaWYgKG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkgIT0gbV9maWxlc1JlYWRT
b0ZhcikgeworICAgICAgICByZWFkSW50ZXJuYWwoKm1fY29udGV4dCwgKm1fc2hhcmVEYXRhLnNo
YXJlRGF0YS5maWxlc1ttX2ZpbGVzUmVhZFNvRmFyXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcik7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtX3NoYXJlRGF0YSk7Cit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRS
ZWNlaXZlRGF0YSgpCit7CisgICAgCit9CisKK3ZvaWQgUmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRT
dGFydExvYWRpbmcoKQoreworICAgIAorfQorCit2b2lkIFJlYWRTaGFyZURhdGFBc3luYzo6ZGlk
RmFpbChpbnQgZXJyb3JDb2RlKQoreworICAgIFVOVVNFRF9QQVJBTShlcnJvckNvZGUpOworICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXhj
ZXB0aW9uIHsgQWJvcnRFcnJvciwgIkFib3J0IGR1ZSB0byBmYWlsIG9mIHJlYWRpbmcgZmlsZXMu
Il9zIH0pOworfQordm9pZCBSZWFkU2hhcmVEYXRhQXN5bmM6OmNhbmNlbCgpCit7CisgICAgaWYg
KG1fbG9hZGVyKSB7CisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgbV9sb2Fk
ZXIgPSBudWxscHRyOworICAgIH0KK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVhZFNoYXJlRGF0YUFzeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURh
dGFBc3luYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiYzUzYWJkZWNiYmQ5NzIzNmUxMmRkMDRjYjczZDRkMDZk
MDhmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlYWRTaGFyZURh
dGFBc3luYy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOYXZpZ2F0
b3I7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFJlYWRTaGFyZURhdGFBc3luYzogcHJpdmF0ZSBGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxSZWFkU2hhcmVEYXRhQXN5bmM+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWRTaGFyZURhdGFBc3luYz4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkU2hhcmVEYXRhQXN5bmMoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGNvbnRleHQpKTsgfQorICAgIH5SZWFkU2hhcmVEYXRhQXN5bmMoKTsKKyAg
ICB2b2lkIHN0YXJ0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwpOworICAgIHZvaWQgY2FuY2VsKCk7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhZFNoYXJlRGF0YUFzeW5jKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHZvaWQgcmVhZEludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBCbG9iJik7CisgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsKGludCBlcnJvckNvZGUpIGZpbmFsOworCisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMJj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
bV9zaGFyZURhdGE7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworICAg
IFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAgU3RyaW5nIG1fY3VycmVudExvYWRpbmdGaWxlTmFt
ZTsKKyAgICBzaXplX3QgbV9maWxlc1JlYWRTb0ZhciA9IDA7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKaW5kZXggNWMzOTA3YzEwNzU4MDQ5ZDg4N2MwNDYzMWRiNGY5YzAzZmYxYWY3OS4uZmVlNmI5
OWUzZmE1ZTA0OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogI2luY2x1ZGUgIkZpbGUuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM1LDEwICszNiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKICAg
ICBTdHJpbmcgdXJsOwogICAgIFZlY3RvcjxSZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsKKworc3Ry
dWN0IFJhd0ZpbGUgeworICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBmaWxlRGF0YTsKK307CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7
CiAgICAgU2hhcmVEYXRhIHNoYXJlRGF0YTsKICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICBW
ZWN0b3I8UmF3RmlsZT4gZmlsZXM7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKaW5kZXggOTQwNDc0NDM1ZjhkZDNkNWU4MzUy
NzdiNjZkMzJkOGZmMzFiYjJjMi4uMGJmMTAzZDRhOWViZDlmZGZjYzkxYzAzYjY5M2VkM2E4M2U3
MzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRp
bmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQ
SS5oCkBAIC0zNCw2ICszNCw3IEBACiAjZWxzZQogCiBlbnVtIHF0bl9mbGFncyB7CisgICAgUVRO
X0ZMQUdfRE9XTkxPQUQgPSAweDAwMDEsCiAgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwK
IH07CiAKQEAgLTQzLDEwICs0NCwxNSBAQCBlbnVtIHF0bl9mbGFncyB7CiAjZGVmaW5lIHF0bl9w
cm9jX2luaXQgX3F0bl9wcm9jX2luaXQKICNkZWZpbmUgcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYg
X3F0bl9wcm9jX2luaXRfd2l0aF9zZWxmCiAjZGVmaW5lIHF0bl9wcm9jX3NldF9mbGFncyBfcXRu
X3Byb2Nfc2V0X2ZsYWdzCi0KKyNkZWZpbmUgcXRuX2ZpbGVfYWxsb2MgX3F0bl9maWxlX2FsbG9j
CisjZGVmaW5lIHF0bl9maWxlX2luaXRfd2l0aF9wYXRoIF9xdG5fZmlsZV9pbml0X3dpdGhfcGF0
aAorI2RlZmluZSBxdG5fZmlsZV9mcmVlIF9xdG5fZmlsZV9mcmVlCisjZGVmaW5lIHF0bl9maWxl
X2FwcGx5X3RvX3BhdGggX3F0bl9maWxlX2FwcGx5X3RvX3BhdGgKKyNkZWZpbmUgcXRuX2ZpbGVf
c2V0X2ZsYWdzIF9xdG5fZmlsZV9zZXRfZmxhZ3MKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCBf
cXRuX3Byb2MgKnF0bl9wcm9jX3Q7Cit0eXBlZGVmIHN0cnVjdCBfcXRuX2ZpbGUgKnF0bl9maWxl
X3Q7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCkBAIC01Niw2ICs2MiwxMSBAQCBpbnQgcXRuX3By
b2NfaW5pdF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CiBpbnQgcXRuX3Byb2Nfc2V0X2ZsYWdzKHF0
bl9wcm9jX3QsIHVpbnQzMl90IGZsYWdzKTsKIHF0bl9wcm9jX3QgcXRuX3Byb2NfYWxsb2MoKTsK
IHZvaWQgcXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsKK3F0bl9maWxlX3QgcXRuX2ZpbGVfYWxs
b2Modm9pZCk7Cit2b2lkIHF0bl9maWxlX2ZyZWUocXRuX2ZpbGVfdCBxZik7CitpbnQgcXRuX2Zp
bGVfc2V0X2ZsYWdzKHF0bl9maWxlX3QgcWYsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBxdG5fZmls
ZV9hcHBseV90b19wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOworaW50IHF0
bl9maWxlX2luaXRfd2l0aF9wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOwog
CiBXVEZfRVhURVJOX0NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IGZkMzIwZWM5NGU0ODAyYTRjOTU0YTdhZTBkNmM2NTAxOTJm
YmNjNmIuLmNlYzI2OTY5YWRjYWY0NTM4NmUyZDI1NzliMmFkNmRmZjMxNTgzNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9v
c2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTIwMTYsNiArMjAxNywzMCBAQCBib29sIEFy
Z3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBGaWxlQ2hvb3NlclNldAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxWZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVj
dG9yPFJhd0ZpbGU+JiBmaWxlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihmaWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAg
ICAgIGVuY29kZXIgPDwgZmlsZS5maWxlTmFtZTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVy
KGVuY29kZXIsIGZpbGUuZmlsZURhdGEuZ2V0KCkpOworICAgIH0KK30KKworYm9vbCBBcmd1bWVu
dENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
UmF3RmlsZT4mIGZpbGVzKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaWxl
cy5yZXNpemUoZGF0YVNpemUpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsZS5maWxlTmFtZSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBmaWxlLmZpbGVE
YXRhKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAgICAgCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8U2hhcmVEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlRGF0YSYg
c2V0dGluZ3MpCiB7CkBAIC0yMDM5LDYgKzIwNjQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2hh
cmVEYXRhV2l0aFBhcnNlZFVSTD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFy
ZQogewogICAgIGVuY29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwogICAgIGVuY29kZXIgPDwg
c2V0dGluZ3MudXJsOworICAgIGVuY29kZXIgPDwgc2V0dGluZ3MuZmlsZXM7CiB9CiAKIGJvb2wg
QXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdzKQpAQCAtMjA0Nyw2ICsyMDcz
LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2kKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MudXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MuZmlsZXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggY2E1N2MzMWVhOTU0NTk3NWY3YmIxYWQ4NDFk
ZGRiOGYxM2RmZmNkNS4uNTJhN2QwYzBhNmIzZjdmNjYxNTdiYTNhYzJiMTRkODBjNTZiYjdhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgx
LDYgKzgxLDcgQEAgY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNv
cjsKIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKIGNsYXNzIERyYWdEYXRhOworY2xhc3MgRmlsZTsK
IGNsYXNzIEZpbHRlck9wZXJhdGlvbjsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBG
bG9hdFBvaW50OwpAQCAtMTI1LDYgKzEyNiw3IEBAIHN0cnVjdCBFdmVudFRyYWNraW5nUmVnaW9u
czsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwogc3Ry
dWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CitzdHJ1Y3QgUmF3RmlsZTsKIHN0cnVjdCBTaGFyZURh
dGE7CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIHN0cnVjdCBMZW5ndGg7CkBAIC01
NDksNiArNTUxLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogfTsKICAgICAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8VmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4mKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxl
PiYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTaGFy
ZURhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlRGF0YSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
U2hhcmVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
S1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hl
ZXQubW0KaW5kZXggYjAyNDMzYzMwM2E2ZjkzOWRiNDJhN2ZjNDA0OWU5ZWFjNTQxYjAwNi4uNGNm
ZGQ2ODQyOGRiNWU4MzkyNzc4ODQ0NmZlZTMwNDU0YmIyNTE4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtMjgsNiArMjgsMTAgQEAKIAog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQ
UExFVFYpCiAKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CiAjaW1wb3J0
ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgpAQCAtNDcsNiArNTEsNyBAQCBAZW5kCiAjZW5kaWYKIAog
QGltcGxlbWVudGF0aW9uIFdLU2hhcmVTaGVldCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
dGVtcEZpbGVTaGFyZURpcmVjdG9yeTsKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF93ZWJW
aWV3OwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS1NoYXJlU2hlZXREZWxlZ2F0ZT4gPiBfZGVsZWdh
dGU7CiAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhh
bmRsZXI7CkBAIC0xMDYsMTAgKzExMSw0NyBAQCAtICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVy
czooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCAmKWRhdGEgaW5SZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlmIChkYXRhLmZpbGVzLnNpemUoKSkgewor
ICAgICAgICBfdGVtcEZpbGVTaGFyZURpcmVjdG9yeSA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQg
Y3JlYXRlVGVtcFNoYXJpbmdEaXJlY3RvcnldIGNvcHldKTsKKyAgICAgICAgCisgICAgICAgIGRp
c3BhdGNoX2dyb3VwX3QgZmlsZVdyaXRlR3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsK
KyAgICAgICAgX19ibG9jayBib29sIGlzU3VjY2VzZnVsID0gdHJ1ZTsKKyAgICAgICAgYXV0byBx
dWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV3JpdGUgU2hhcmVhYmxlIEZpbGVzIFRvIERp
c2siLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgICAgICBmb3IgKGF1dG8gZmlsZSA6IGRh
dGEuZmlsZXMpIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGZpbGVXcml0ZUdy
b3VwLCBxdWV1ZSwgXnsKKyAgICAgICAgICAgICAgICBpZiAoIWlzU3VjY2VzZnVsKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgTlNVUkwgKmZpbGVVUkwgPSBb
V0tTaGFyZVNoZWV0IHdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOmZpbGUuZmlsZU5hbWUgZGF0YTpm
aWxlLmZpbGVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZW1wRGlyZWN0b3J5Ol90ZW1wRmls
ZVNoYXJlRGlyZWN0b3J5LmdldCgpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWZpbGVVUkwpIHsK
KyAgICAgICAgICAgICAgICAgICAgaXNTdWNjZXNmdWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbc2hhcmVE
YXRhQXJyYXkgYWRkT2JqZWN0OmZpbGVVUkxdOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGRpc3BhdGNoX2dyb3VwX25vdGlmeShmaWxlV3JpdGVHcm91cCwg
cXVldWUsIF57CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeeworICAgICAgICAgICAgICAgIGlmICghaXNTdWNjZXNmdWwpIHsKKyAgICAgICAg
ICAgICAgICAgICAgW3NlbGYgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6Tk9dOworICAgICAgICAg
ICAgICAgICAgICBbc2VsZiBkaXNtaXNzXTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbc2VsZiBwcmVzZW50V2l0aFNoYXJl
RGF0YUFycmF5OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBbc2Vs
ZiBwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpy
ZWN0XTsKK30KKworLSAodm9pZClwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OihOU0FycmF5ICop
c2hhcmluZ0l0ZW1zIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJl
Y3QKK3sKICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBfd2ViVmlldy5nZXRBdXRvcmVsZWFzZWQo
KTsKICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX3NoYXJpbmdTZXJ2aWNlUGlja2VyID0g
YWRvcHROUyhbW05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6c2hh
cmVEYXRhQXJyYXkuZ2V0KCldKTsKKyAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBhZG9wdE5T
KFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczpzaGFyaW5nSXRl
bXNdKTsKICAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIuZ2V0KCkuZGVsZWdhdGUgPSBzZWxmOwog
ICAgIAogICAgIC8vIFdLU2hhcmVTaGVldCBjYW4gYmUgcmVsZWFzZWQgdW5kZXIgTlNTaGFyaW5n
U2VydmljZVBpY2tlciBkZWxlZ2F0ZSBjYWxsYmFja3MuCkBAIC0xMjYsNyArMTY4LDcgQEAgLSAo
dm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwgJilkYXRhIGluUmUKICAgICB9CiAgICAgW19zaGFyaW5nU2VydmljZVBpY2tlciBz
aG93UmVsYXRpdmVUb1JlY3Q6cHJlc2VudGF0aW9uUmVjdCBvZlZpZXc6d2ViVmlldyBwcmVmZXJy
ZWRFZGdlOk5TTWluWUVkZ2VdOwogI2Vsc2UKLSAgICBfc2hhcmVTaGVldFZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbW1VJQWN0aXZpdHlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBY3Rp
dml0eUl0ZW1zOnNoYXJlRGF0YUFycmF5LmdldCgpIGFwcGxpY2F0aW9uQWN0aXZpdGllczpuaWxd
KTsKKyAgICBfc2hhcmVTaGVldFZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1VJQWN0aXZpdHlW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBY3Rpdml0eUl0ZW1zOnNoYXJpbmdJdGVtcyBh
cHBsaWNhdGlvbkFjdGl2aXRpZXM6bmlsXSk7CiAgICAgW19zaGFyZVNoZWV0Vmlld0NvbnRyb2xs
ZXIgc2V0Q29tcGxldGlvbldpdGhJdGVtc0hhbmRsZXI6XihOU1N0cmluZyAqLCBCT09MIGNvbXBs
ZXRlZCwgTlNBcnJheSAqLCBOU0Vycm9yICopIHsKICAgICAgICAgW3NlbGYgX2RpZENvbXBsZXRl
V2l0aFN1Y2Nlc3M6Y29tcGxldGVkXTsKICAgICAgICAgW3NlbGYgZGlzcGF0Y2hEaWREaXNtaXNz
XTsKQEAgLTE4MCw2ICsyMjIsOCBAQCAtICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdT
ZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkU2hhcmVJdGVtczooTlNBcnJheQogCiAtICh2b2lk
KV9kaWRDb21wbGV0ZVdpdGhTdWNjZXNzOihCT09MKXN1Y2Nlc3MKIHsKKyAgICBbV0tTaGFyZVNo
ZWV0IHJlbW92ZVRlbXBTaGFyaW5nRGlyZWN0b3I6X3RlbXBGaWxlU2hhcmVEaXJlY3RvcnkuZ2V0
KCldOworICAgIF90ZW1wRmlsZVNoYXJlRGlyZWN0b3J5ID0gbmlsOwogICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKF9jb21wbGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKGNvbXBs
ZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKQEAgLTIx
NSw2ICsyNTksMTI1IEBAIC0gKHZvaWQpZGlzcGF0Y2hEaWREaXNtaXNzCiAgICAgICAgIFtfZGVs
ZWdhdGUgc2hhcmVTaGVldERpZERpc21pc3M6c2VsZl07CiB9CiAKKyNpZiBQTEFURk9STShNQUMp
CisrIChCT09MKXNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOihOU1N0cmluZyAq
KWZpbGVQYXRoCit7CisgICAgTlNVUkwgKmZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OmZpbGVQYXRoXTsKKworICAgIC8vIFdvcmthcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzIxNzM1NDEy
PjogTlNVUkxEb3dubG9hZCB3aWxsIGF1dG9tYXRpY2FsbHkgYXR0YWNoIE5TVVJMUXVhcmFudGlu
ZVByb3BlcnRpZXMKKyAgICAvLyB0byBmaWxlcyB3ZSBkb3dubG9hZCBpZiB0aGV5IGFyZSBhbHJl
YWR5IHF1YXJhbnRpbmVkLiBUaGlzIGFkZHMgYSBxdWFyYW50aW5lIGhpc3RvcnkgaXRlbSB0aGF0
IHRoZSBjb2RlCisgICAgLy8gYmVsb3cgd2lsbCBzaGFkb3cuIFNpbmNlIFNhZmFyaSBuZWVkcyB0
byBiZSBhYmxlIHRvIHJlbW92ZSBhbGwgdHJhY2VzIG9mIGRvd25sb2FkIGhpc3RvcnksIHdlIG5l
ZWQgdG8KKyAgICAvLyBkZWxldGUgdGhhdCBlbnRyeSBiZWZvcmUgb3VycyByZW5kZXJzIGl0IGlu
YWNjZXNzaWJsZS4KKworICAgIGF1dG8gcXVhcmFudGluZVByb3BlcnRpZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIHF1YXJhbnRpbmVQcm9wZXJ0
aWVzLmdldCgpWyhfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlS2V5XSA9IChf
X2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlV2ViRG93bmxvYWQ7CisgICAgcXVh
cmFudGluZVByb3BlcnRpZXMuZ2V0KClbKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGlu
ZUFnZW50QnVuZGxlSWRlbnRpZmllcktleV0gPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKTsKKworICAgIE5TRXJyb3IgKmVycm9yOworICAgIGlmICghW2ZpbGVVUkwgc2V0
UmVzb3VyY2VWYWx1ZTpxdWFyYW50aW5lUHJvcGVydGllcy5nZXQoKSBmb3JLZXk6TlNVUkxRdWFy
YW50aW5lUHJvcGVydGllc0tleSBlcnJvcjomZXJyb3JdKSB7CisgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IHNldCBxdWFyYW50aW5lIGluZm9ybWF0aW9uIGZvciBmaWxlIHBhdGg6ICVAOiAl
QCIsIGZpbGVQYXRoLCBlcnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICAv
LyBXaGV0aGVyIHRoZSBmaWxlIHdhcyBkb3dubG9hZGVkIGJ5IHNhbmRib3hlZCBXZWJQcm9jZXNz
IG9yIG5vdCwgTFNTZXRJdGVtQXR0cmlidXRlIHJlc2V0cyB0aGUgZmxhZ3MgdG8gMCAoYWR2aXNv
cnkgUVROX0ZMQUdfRE9XTkxPQUQsCisgICAgLy8gd2hpY2ggY2FuIGJlIHRoZW4gcmVtb3ZlZCBi
eSBXZWJQcm9jZXNzKS4gUmVwbGFjZSB0aGUgZmxhZ3Mgd2l0aCBzYW5kYm94IHF1YXJhbnRpbmUg
b25lcywgd2hpY2ggY2Fubm90IGJlIHJlbW92ZWQgYnkgc2FuZGJveGVkIHByb2Nlc3Nlcy4KKyAg
ICByZXR1cm4gW1dLU2hhcmVTaGVldCBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxvYWRG
bGFnc1RvRmlsZUF0UGF0aDpmaWxlUGF0aF07Cit9CisKKysgKEJPT0wpYXBwbHlRdWFyYW50aW5l
U2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6KE5TU3RyaW5nICopZmlsZVBhdGgK
K3sKKyAgICBxdG5fZmlsZV90IGZxID0gcXRuX2ZpbGVfYWxsb2MoKTsKKyAgICBpbnQgcXVhcmFu
dGluZUVycm9yID0gcXRuX2ZpbGVfaW5pdF93aXRoX3BhdGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikgeworICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCByZXRyaWV2ZSBxdWFyYW50aW5lIGZsYWdzIGZvciBmaWxlIHBh
dGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisgICAgICAgIHF0bl9maWxl
X2ZyZWUoZnEpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgcXVhcmFudGluZUVy
cm9yID0gcXRuX2ZpbGVfc2V0X2ZsYWdzKGZxLCBRVE5fRkxBR19TQU5EQk9YIHwgUVROX0ZMQUdf
RE9XTkxPQUQpOworICAgIGlmIChxdWFyYW50aW5lRXJyb3IpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3Qgc2V0IHF1YXJhbnRpbmUgZmxhZ3MgaW4gcXRuX2ZpbGVfdCBzdHJ1Y3R1cmUg
Zm9yIGZpbGUgcGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKyAgICAg
ICAgcXRuX2ZpbGVfZnJlZShmcSk7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBx
dWFyYW50aW5lRXJyb3IgPSBxdG5fZmlsZV9hcHBseV90b19wYXRoKGZxLCBmaWxlUGF0aC5maWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOworICAgIGlmIChxdWFyYW50aW5lRXJyb3IpCisgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGFwcGx5IHF1YXJhbnRpbmUgZmxhZ3MgdG8gZmlsZSBwYXRo
ICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJyb3IpOworCisgICAgcXRuX2ZpbGVfZnJl
ZShmcSk7CisKKyAgICByZXR1cm4gWUVTOworfQorI2VuZGlmCisKKysgKEJPT0wpcmVtb3ZlVGVt
cFNoYXJpbmdEaXJlY3RvcjooTlNTdHJpbmcgKilkaXJlY3RvcnlQYXRoCit7CisgICAgaWYgKCFb
ZGlyZWN0b3J5UGF0aCBsZW5ndGhdKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgaWYg
KCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGlyZWN0
b3J5UGF0aF0pCisgICAgICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IHJlbW92ZUl0ZW1BdFBhdGg6ZGlyZWN0b3J5UGF0aCBlcnJvcjpuaWxdOworICAgIAorICAgIHJl
dHVybiBZRVM7Cit9CisKKysgKE5TU3RyaW5nICopY3JlYXRlVGVtcFNoYXJpbmdEaXJlY3RvcnkK
K3sKKyAgICBOU1N0cmluZyAqdGVtcERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIldLRmlsZVNoYXJlIik7CisgICAgCisgICAgaWYgKCFbdGVtcERpcmVj
dG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOnRlbXBEaXJlY3RvcnldKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOnRlbXBEaXJlY3Rvcnkgd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiB0
ZW1wRGlyZWN0b3J5OworfQorCisrIChOU1N0cmluZyAqKWNyZWF0ZVJhbmRvbVNoYXJpbmdEaXJl
Y3RvcnlGb3JGaWxlOihOU1N0cmluZyAqKXRlbXBEaXJlY3RvcnkKK3sKKyAgICBOU1N0cmluZyAq
cmFuZG9tRGlyZWN0b3J5ID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworICAgIGlmICgh
W3JhbmRvbURpcmVjdG9yeSBsZW5ndGhdIHx8ICFbdGVtcERpcmVjdG9yeSBsZW5ndGhdKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFt0ZW1wRGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIi8lQCIsIHJhbmRvbURpcmVjdG9yeV1dOworICAgIAorICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmRhdGFQYXRoXSkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDpkYXRhUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGRhdGFQYXRoOwor
fQorCisrIChOU1VSTCAqKXdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOihOU1N0cmluZyAqKWZpbGVO
YW1lIGRhdGE6KE5TRGF0YSAqKSBmaWxlRGF0YSB0ZW1wRGlyZWN0b3J5OihOU1N0cmluZyAqKSB0
ZW1wRGlyZWN0b3J5Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgaWYg
KCFbdGVtcERpcmVjdG9yeSBsZW5ndGhdIHx8ICFbZmlsZU5hbWUgbGVuZ3RoXSB8fCAhZmlsZURh
dGEpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgTlNTdHJpbmcgKnRlbXBEaXJlY3Rv
cnlGb3JGaWxlID0gW1dLU2hhcmVTaGVldCBjcmVhdGVSYW5kb21TaGFyaW5nRGlyZWN0b3J5Rm9y
RmlsZTp0ZW1wRGlyZWN0b3J5XTsKKyAgICBpZiAoIXRlbXBEaXJlY3RvcnlGb3JGaWxlKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TU3RyaW5nICpmaWxlID0gW3RlbXBEaXJlY3Rv
cnlGb3JGaWxlIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV07CisKKyAg
ICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZV07CisgICAgCisg
ICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW2ZpbGVEYXRhIHdyaXRlVG9VUkw6ZmlsZVVS
TCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIHJldHVybiBuaWw7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICghW1dL
U2hhcmVTaGVldCBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDpmaWxlXSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIHJldHVybiBmaWxlVVJMOworfQorCiBAZW5k
CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRmYWFhYTJjODAzMjNkZjNjMzNkMjhkNTQxNjI5YjA0
MjMxYjExZTMuLjllNDU5OWY5OWQxMDc3NGRiZDRlY2VlMGQxNmZkZmUzYzkwNGIzMDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRh
cmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZp
ZWQgdG8gbm8gbG9uZ2VyIHVzZSB1cmwgb2YgaW1hZ2UuCisKKyAgICAgICAgKiBmYXN0L3dlYi1z
aGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWw6CisKIDIwMjAtMDQtMDEgIFJvc3MgS2lyc2xpbmcg
IDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQgbXVzdCBwcmVzZXJ2ZSBzaWduIG9mIC0wCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCA0NmJlNmY2YzNlYWE5M2FlZGI5ZmY2MTk5YjNlYmFiMmIwNWMzZjI5
Li4zZjMzMWE3NTA2ZDIwZWNhNDJkMGYzNGNmOTc4MjBlMjA0MWVhZTM0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91
Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2Vi
LXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgbmV3IGJlaGF2aW9yLgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5o
dHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFy
ZS9jYW5TaGFyZS5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDMtMzAgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgU2VsZWN0b3JzIDRdIEFkZCBz
dXBwb3J0IGZvciBgOmlzKClgIHdpdGggdGhlIHNhbWUgbG9naWMgZm9yIHRoZSBleGlzdGluZyBg
Om1hdGNoZXMoKWAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJl
LXdpdGgtZmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgt
ZmlsZXMuaHRtbAppbmRleCA4NTZlZDI0NDE4ODcxODhkYjY0OThkM2RiMTcwODA3MTQ5MGY1Yzg2
Li45Yjg5MGQ0YzFiMTM0N2QwOWNiNjFjYTI2MjQyMzJkMzUwYzA2OTkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCkBAIC0yLDYgKzIs
NyBAQAogCiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNj
YWxlPTUsIHdpZHRoPWRldmljZS13aWR0aCI+CisKIDxoZWFkPgogCiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtMTYsMTAgKzE3LDEy
IEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydoZWxsbyddLCAnaGVsbG8udHh0Jywge3R5cGU6
J3RleHQvcGxhaW4nfSk7CisKKyAgICAgICAgICAgIHZhciBibG9iID0gdGhpcy5yZXNwb25zZTsK
KyAgICAgICAgICAgIGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydUaGlzIGlzIGEgdGV4dCBm
aWxlJ10sICdUZXh0RmlsZS50eHQnLCB7dHlwZTondGV4dC9odG1sJ30pOwogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgKCkgPT4gewotICAgICAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDogInNhZGYi
LCBmaWxlczogW3RleHRGaWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICB3cml0ZSgiUEFTUzogU2hhcmUgc2hlZXQgaW52b2tlZC4iKTsKKyAgICAgICAgICAgIG5h
dmlnYXRvci5zaGFyZSh7dGV4dDogIlRoaXMgaXMgYSB0ZXh0IGZpbGUiLCBmaWxlczogW3RleHRG
aWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgIHdyaXRlKCJQQVNTOiBT
aGFyZSBzaGVldCBpbnZva2VkLiIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9KTsgICAgCiAgICAgICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397098</attachid>
            <date>2020-04-21 11:37:52 -0700</date>
            <delta_ts>2020-04-23 16:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200421143751.patch</filename>
            <type>text/plain</type>
            <size>44514</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyYWQ5MmI0OTIzNDRj
ZWIzZDBkZGU3ZDczYjc1M2UxZjliMWZmOC4uOTUzZjY5MGU3YjZlMmM3MDU2OTRlOWMzNTBlZWNj
ZWFiOTcyYTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlbmRpbmcg
YmVhY29ucyB3aGVuIEZldGNoIEtlZXBBbGl2ZSBmZWF0dXJlIGlzIGRpc2FibGVkIGNyYXNoZXMg
dGhlIFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTZjYjBlM2UwNTlmODAwNDIxN2E0MWM0OGEzODg4
ZGM5MTAxNjg4Zi4uZmI5MmE4OWRkN2FkMjZlYTkzN2UzMDNkZDFiNWNhNDQ3YWE1Y2EzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5t
b3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZv
ciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIG9iamVjdHMgb3ZlciBJUEMgYW5kCisgICAg
ICAgIHNoYXJpbmcgb2YgZmlsZXMgdG8gc2hhcmUgc2hlZXQuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxW
ZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFZl
Y3RvcjxSYXdGaWxlPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2hh
cmVEYXRhV2l0aFBhcnNlZFVSTD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TaGFyZWFi
bGVGaWxlV3JpdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NoYXJlYWJs
ZUZpbGVXcml0ZS5tbTogQWRkZWQuCisgICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGdl
dFNoYXJpbmdEaXJlY3RvcnlQYXRoXSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRl
IGdldEZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nXSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmls
ZVdyaXRlIHJlbW92ZUZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nXSk6CisgICAgICAgICgrW1dLU2hh
cmVhYmxlRmlsZVdyaXRlIHNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOl0pOgor
ICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5k
RG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDpdKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxl
V3JpdGUgY3JlYXRlRmlsZW5hbWU6XSk6CisgICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRl
IHdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOmRhdGE6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dLU2hhcmVTaGVldC5tbToKKyAgICAgICAgKC1bV0tTaGFyZVNoZWV0IHByZXNlbnRXaXRo
UGFyYW1ldGVyczppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLU2hh
cmVTaGVldCBfZGlkQ29tcGxldGVXaXRoU3VjY2VzczpdKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlbmRpbmcgYmVhY29ucyB3aGVuIEZldGNoIEtlZXBB
bGl2ZSBmZWF0dXJlIGlzIGRpc2FibGVkIGNyYXNoZXMgdGhlIFdlYlByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggYzU3NDc4YzIxYWZkYTkzN2UxZDFjMmU3OGU4NDZhYWU5YWQxNzRjOC4uMGI0OTRi
MDdmN2JkMjgzNzA3ZTBkMGIzZjI4NzE0NmYzODEwYzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2
MjUsNiArMTYyNSw3IEBAIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCiBwYWdlL0VkaXRhYmxlSW1h
Z2VSZWZlcmVuY2UuY3BwCiBwYWdlL0V2ZW50SGFuZGxlci5jcHAKIHBhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCitwYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmNwcAogcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCiBwYWdlL0ZyYW1lLmNwcAogcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNjY5LDYgKzE2NzAsNyBAQCBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKIHBh
Z2UvUHJpbnRDb250ZXh0LmNwcAogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKIHBhZ2UvUXVpcmtz
LmNwcAorcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCiBwYWdlL1JlbW90ZURPTVdpbmRvdy5jcHAK
IHBhZ2UvUmVtb3RlRnJhbWUuY3BwCiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyOGEwMDE3NzA2MTUwMTM5OGZjZDU2ZGQ1NzMyODdmYjBjNzZjMTgyLi4zZWIwOTVlMTYx
ZDVkOWIxYzQzZDZjMDRmZjQxMzhhMzg0MDZhY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDUsNiArNDQ1LDcgQEAKIAkJ
MTk3QjE4MEMxNTA2MzUzMjAwRTRBREE4IC8qIFNWR1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE5N0IxODBCMTUwNjM0QzAw
MEU0QURBOCAvKiBTVkdSZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJCTE5QkZGNjRGMTFDMEYy
QUMwMEI4QzA0RCAvKiBKU1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOUJGRjY0QTExQzBGMkFDMDBCOEMw
NEQgLyogSlNTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oICovOyB9OwogCQkxQTA4RkVERDFE
NTkyQjhCMDA4QkE4Q0IgLyogUGx1Z2luSW5mb1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTA4RkVEQjFENTkyQjhCMDA4QkE4Q0IgLyog
UGx1Z2luSW5mb1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMUEwQzIyNkYyNDRFMTM1NDAwRUQ2MTREIC8qIEZpbGVSZWFkZXJMb2Fk
ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTBDMjI2RDI0NEUxMzUzMDBFRDYxNEQgLyogRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaCAq
LzsgfTsKIAkJMUEwRDU3MzcwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzM1MEE1Qzc3
RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEwRDU3NDEwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3Zl
cmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEwRDU3M0YwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5oICovOyB9Owog
CQkxQTE0MTRCNTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMTQxNEIzMTNB
MEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwICovOyB9OwpAQCAtNjE1
Myw2ICs2MTU0LDggQEAKIAkJMTlCRkY2NEExMUMwRjJBQzAwQjhDMDREIC8qIEpTU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTA4RkVEQTFENTkyQjhCMDA4QkE4Q0IgLyogUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkluZm9Qcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDhGRURCMUQ1OTJCOEIwMDhCQThDQiAv
KiBQbHVnaW5JbmZvUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGx1Z2luSW5mb1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMEMy
MjZDMjQ0RTEzNTMwMEVENjE0RCAvKiBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBMEMyMjZEMjQ0RTEzNTMwMEVENjE0RCAvKiBGaWxlUmVhZGVyTG9h
ZGVyV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTBENTczNDBBNUM3N0ZFMDA3RURENEMgLyog
T3ZlcmZsb3dFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
T3ZlcmZsb3dFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM1
MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPdmVyZmxvd0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMEQ1NzM4MEE1Qzc4MTIwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gT3ZlcmZsb3dFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MTc0LDYgKzYxNzcsOCBAQAogCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAg
LyogUHJvZ3Jlc3NUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9ncmVzc1RyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTYw
REMyQTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTcwREMyQTNCMTAwQTIwRDlBIC8q
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBTaGFyZURhdGFSZWFkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVEYXRhUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZURhdGFSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUF1dGhvcml6ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM1ODZERDE1MjY0QzQ1MDAyMkE2NTkg
LyogUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDg2Myw2ICsyMDg2OCw4IEBACiAJCQkJRTBGRUYzNzFCMjdDNTNFQUMxQzFG
QkVFIC8qIEV2ZW50U291cmNlLmNwcCAqLywKIAkJCQlFMEZFRjM3MUIxN0M1M0VBQzFDMUZCRUUg
LyogRXZlbnRTb3VyY2UuaCAqLywKIAkJCQlFMEZFRjM3MUIwN0M1M0VBQzFDMUZCRUUgLyogRXZl
bnRTb3VyY2UuaWRsICovLAorCQkJCTFBMEMyMjZDMjQ0RTEzNTMwMEVENjE0RCAvKiBGaWxlUmVh
ZGVyTG9hZGVyV3JhcHBlci5jcHAgKi8sCisJCQkJMUEwQzIyNkQyNDRFMTM1MzAwRUQ2MTREIC8q
IEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmggKi8sCiAJCQkJMTQ5OTNCRTMwQjJGMkIxQzAwNTA0
OTdGIC8qIEZvY3VzQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMTQ5OTNCRTQwQjJGMkIxQzAwNTA0
OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oICovLAogCQkJCTA2MjI4NzgzMEI0REIzMjIwMDBDMzRE
RiAvKiBGb2N1c0RpcmVjdGlvbi5oICovLApAQCAtMjEwNDEsNiArMjEwNDgsOCBAQAogCQkJCTdD
NkVGRUVBMUY5NDZBMkUwMEZGQUQ0MSAvKiBTZXR0aW5nc0RlZmF1bHRWYWx1ZXMuaCAqLywKIAkJ
CQkxREM1NTQwMDIxMUJBOEM4MDA0Qjc4MEUgLyogU2hhcmVEYXRhLmggKi8sCiAJCQkJMURDNTUz
RkYyMTFCQTg0MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8sCisJCQkJMUEyQzY2NzEyNDJB
RkVGNzAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5jcHAgKi8sCisJCQkJMUEyQzY2NzMyNDJB
RkVGODAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5oICovLAogCQkJCTVDNjg4QUEyMUQzODEy
NkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRlci5jcHAgKi8sCiAJCQkJNUM3Qzg4RDcxRDBGMUYy
QjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8sCiAJCQkJNjI2Q0RFMEMxMTQwNDI0QzAw
MUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLywKQEAgLTMwMzA4LDYgKzMwMzE3LDcg
QEAKIAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJlYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZpbGVSZWFkZXJMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFNzU4NDFGMTI3NzlBREEwMDYyNjI4QiAvKiBGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTBDMjI2RjI0NEUxMzU0MDBF
RDYxNEQgLyogRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJF
REYzNjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxlU3RyZWFtQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRmlsZVJlYWRl
ckxvYWRlcldyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GaWxlUmVhZGVyTG9hZGVy
V3JhcHBlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY2ZTdlMTFiZDI0MTljYWY4MjM5N2ZmMTMwNjYxZWI0
OWYxYjgwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRmlsZVJlYWRl
ckxvYWRlcldyYXBwZXIuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmgiCisKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVy
LmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIk5hdmln
YXRvci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcldyYXBwZXI6OnJlYWRJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBCbG9iJiBibG9iKQoreworICAgIG1fYmxvYiA9ICZibG9i
OworCisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVy
Q2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2ItPnR5cGUo
KSk7CisgICAgbV9sb2FkZXItPnN0YXJ0KCZjb250ZXh0LCBibG9iKTsKK30KKworRmlsZVJlYWRl
ckxvYWRlcldyYXBwZXI6OkZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyKGludCBpZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxpbnQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAg
LCBtX2lkKGlkKQoreworICAgIAorfQorCitGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcjo6fkZpbGVS
ZWFkZXJMb2FkZXJXcmFwcGVyKCkKK3sKKyAgICBtX2Jsb2IgPSBudWxscHRyOworICAgIG1fYmxv
YkRhdGEgPSBudWxscHRyOworICAgIGNhbmNlbCgpOworfQorCit2b2lkIEZpbGVSZWFkZXJMb2Fk
ZXJXcmFwcGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJpbmcg
ZmlsZU5hbWUsIEJsb2ImIHNoYXJlRGF0YSkKK3sKKyAgICBtX2ZpbGVOYW1lID0gZmlsZU5hbWU7
CisgICAgcmVhZEludGVybmFsKGNvbnRleHQsIHNoYXJlRGF0YSk7Cit9CisKK3ZvaWQgRmlsZVJl
YWRlckxvYWRlcldyYXBwZXI6OmRpZEZpbmlzaExvYWRpbmcoKQoreworICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKKyAgICBtX2Jsb2JEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFy
cmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAKKyAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
aWQpOworfQorCit2b2lkIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSgp
Cit7CisgICAgCit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcldyYXBwZXI6OmRpZFN0YXJ0TG9h
ZGluZygpCit7CisgICAgCit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcldyYXBwZXI6OmRpZEZh
aWwoaW50IGVycm9yQ29kZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXJyb3JDb2RlKTsKKyAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydCBkdWUgdG8gZXJyb3Igd2hpbGUgcmVhZGluZyBmaWxl
cy4iX3MgfSk7Cit9Cit2b2lkIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpjYW5jZWwoKQorewor
ICAgIGlmIChtX2xvYWRlcikgeworICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CisgICAgICAg
IG1fbG9hZGVyID0gbnVsbHB0cjsKKyAgICB9Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE1YzUyMjBlMDE0ZjZmNDE0
NWZjMzUxOTk3MjFhZDExYjZkYmM0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOYXZpZ2F0b3I7CitjbGFz
cyBCbG9iOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisKK2NsYXNzIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOiBwcml2YXRlIEZpbGVSZWFk
ZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVy
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcj4gY3Jl
YXRlKGludCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxpbnQ+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlUmVhZGVyTG9hZGVy
V3JhcHBlcihpZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsgfQorICAgIH5GaWxlUmVh
ZGVyTG9hZGVyV3JhcHBlcigpOworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFN0cmluZywgQmxvYiYpOworICAgIHZvaWQgY2FuY2VsKCk7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcigpIHsgcmV0dXJuIG1fYmxvYkRhdGE7IH0KKyAgICBTdHJpbmcg
ZmlsZU5hbWUoKSB7IHJldHVybiBtX2ZpbGVOYW1lOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgRmlsZVJlYWRlckxvYWRlcldyYXBwZXIoaW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
Y2VwdGlvbk9yPGludD4pPiYmKTsKKyAgICB2b2lkIHJlYWRJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgQmxvYiYpOworICAgIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YSgpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChpbnQgZXJyb3JDb2RlKSBmaW5hbDsKKworICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8aW50Pik+IG1fY29tcGxldGlvbkhh
bmRsZXI7CisgICAgaW50IG1faWQ7CisgICAgUmVmUHRyPEJsb2I+IG1fYmxvYjsKKyAgICBTdHJp
bmcgbV9maWxlTmFtZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Jsb2JEYXRhOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxGaWxlUmVhZGVyTG9hZGVyPiBtX2xvYWRlcjsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFlNTljMzE5
MTRhY2MzNjFlMjc0Li42YWM2NTc3MTVkMGVjNTI2MWE5YmIyMWQ5NmU1YmFlNWRhYTgyZjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJl
RGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlRGF0YVJlYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzEx
NCwxMyBAQCBib29sIE5hdmlnYXRvcjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051
bGwoKSAmJiBkYXRhLnVybC5pc051bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAg
ICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlz
RW1wdHkoKSkgeworI2lmIEVOQUJMRShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQg
TmF2aWdhdG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
aGFyZURhdGEmIGRhdGEsIFJlCiAgICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93
KCk7CiAgICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRl
IHdlIHNob3VsZCBjb25zdW1lIHVzZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkg
c3RyaWN0ZXIgaGVyZS4KLSAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNp
ZW50QWN0aXZhdGlvbigpKSB7CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRy
YW5zaWVudEFjdGl2YXRpb24oKSB8fCBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQpIHsKICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNDcsMTAgKzE1NCwzNSBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAg
ICB1cmwsCisgICAgICAgIHsgfSwKICAgICB9OwogICAgIAorICAgIGlmICghZGF0YS5maWxlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fbG9hZGVyKSB7CisgICAgICAgICAgICBtX2xvYWRl
ci0+Y2FuY2VsKCk7CisgICAgICAgICAgICBtX2xvYWRlciA9IG51bGxwdHI7CisgICAgICAgIH0K
KyAgICAgICAgbV9sb2FkZXIgPSBTaGFyZURhdGFSZWFkZXI6OmNyZWF0ZShbdGhpcywgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Jj4gcmVhZERhdGEpIG11dGFibGUgeworICAgICAgICAgICAgdGhpcy0+c2hvd1NoYXJlRGF0YShy
ZWFkRGF0YSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIH0pOworICAgICAgICBtX2xvYWRl
ci0+c3RhcnQoY29udGV4dCwgc2hhcmVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB0aGlzLT5zaG93U2hhcmVEYXRhKHNoYXJlRGF0YSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisK
K3ZvaWQgTmF2aWdhdG9yOjpzaG93U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmPiByZWFkRGF0YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQorewor
ICAgIGlmIChyZWFkRGF0YS5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLT5yZWpl
Y3QocmVhZERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgZnJhbWUtPnBhZ2Uo
KS0+Y2hyb21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldIChib29sIGNvbXBsZXRlZCkgeworICAgIG1faXNQcmVzZW50aW5nU2hhcmVTaGVl
dCA9IHRydWU7CisgICAgYXV0byBzaGFyZURhdGEgPSByZWFkRGF0YS5yZXR1cm5WYWx1ZSgpOwor
ICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aGlzXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICAg
ICAgbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gZmFsc2U7CiAgICAgICAgIGlmIChjb21wbGV0
ZWQpIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIy
NjQ4YTg4NjQ3ZjgyZGQuLmZlYjI2NTQyOTYyMzczYmM5YjJmOTIzNGUyNjZhNmVkMWJmODk4MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5jbHVkZSAi
RE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNz
IERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURh
dGE7CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgU2hhcmVEYXRhUmVhZGVyOwogCiBj
bGFzcyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxlbWVudGFi
bGU8TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0b3IpOwpA
QCAtNjMsNiArNjYsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgdm9pZCBz
aG93U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CisgICAgUmVmUHRyPFNoYXJlRGF0YVJlYWRlcj4gbV9sb2FkZXI7
CisgICAgYm9vbCBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQgPSBmYWxzZTsKKyAgICAKICAgICBl
eHBsaWNpdCBOYXZpZ2F0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdpbmRvdyYpOwog
CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKQEAgLTcwLDUg
Kzc3LDQgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICBt
dXRhYmxlIFN0cmluZyBtX3BsYXRmb3JtOwogfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgK
aW5kZXggNWMzOTA3YzEwNzU4MDQ5ZDg4N2MwNDYzMWRiNGY5YzAzZmYxYWY3OS4uZmVlNmI5OWUz
ZmE1ZTA0OGU2YjE4YTA0OWI0MmRhNjRhY2JmMzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogI2luY2x1ZGUgIkZpbGUuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM1LDEwICszNiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKICAgICBT
dHJpbmcgdXJsOwogICAgIFZlY3RvcjxSZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsKKworc3RydWN0
IFJhd0ZpbGUgeworICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBmaWxlRGF0YTsKK307CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CiAg
ICAgU2hhcmVEYXRhIHNoYXJlRGF0YTsKICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICBWZWN0
b3I8UmF3RmlsZT4gZmlsZXM7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGFSZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMDk4Y2VhYTIzOWM4NmZjZDIxNDQ4NWU2YTlmMGJk
YmQ5MGVlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVE
YXRhUmVhZGVyLmgiCisKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFy
ZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorewor
ICAgIAorfQorCitTaGFyZURhdGFSZWFkZXI6On5TaGFyZURhdGFSZWFkZXIoKQoreworICAgIGNh
bmNlbCgpOworfQorCit2b2lkIFNoYXJlRGF0YVJlYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGEpCit7Cisg
ICAgbV9maWxlc1JlYWRTb0ZhciA9IDA7CisgICAgbV9zaGFyZURhdGEgPSBXVEZNb3ZlKHNoYXJl
RGF0YSk7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGF1dG8mIGJsb2IgOiBtX3NoYXJl
RGF0YS5zaGFyZURhdGEuZmlsZXMpIHsKKyAgICAgICAgUmVmUHRyPEZpbGVSZWFkZXJMb2FkZXJX
cmFwcGVyPiBsb2FkZXIgPSBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcjo6Y3JlYXRlKGNvdW50LCBb
dGhpc10gKEV4Y2VwdGlvbk9yPGludD4gaWQpIG11dGFibGUgeworICAgICAgICAgICAgdGhpcy0+
ZGlkRmluaXNoTG9hZGluZyhpZCk7CisgICAgICAgIH0pOworICAgICAgICBsb2FkZXItPnN0YXJ0
KGNvbnRleHQsIGJsb2ItPm5hbWUoKSwgKmJsb2IpOworICAgICAgICBtX3BlbmRpbmdGaWxlTG9h
ZHMuYXBwZW5kKGxvYWRlcik7CisgICAgICAgIGNvdW50ICs9IDE7CisgICAgfQorICAgIG1fc2hh
cmVEYXRhLnNoYXJlRGF0YS5maWxlcy5yZXNlcnZlQ2FwYWNpdHkobV9zaGFyZURhdGEuc2hhcmVE
YXRhLmZpbGVzLnNpemUoKSk7Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKEV4Y2VwdGlvbk9yPGludD4gaWQpCit7CisgICAgaWYgKGlkLmhhc0V4Y2VwdGlvbigp
KSB7CisgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBs
ZXRpb25IYW5kbGVyKSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkLnJlbGVhc2VF
eGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXV0byBsb2Fk
ZXJJZCA9IGlkLnJldHVyblZhbHVlKCk7CisgICAgCisgICAgUmF3RmlsZSBmaWxlOworICAgIGF1
dG8gZmlsZUxvYWQgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZGVySWRdOworICAgIGZpbGUuZmls
ZU5hbWUgPSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShm
aWxlTG9hZC0+ZmlsZU5hbWUoKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBmaWxlTG9hZC0+
cmVhZEJ1ZmZlcigpOworICAgIGZpbGUuZmlsZURhdGEgPSBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcik7
CisgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOworICAgIG1fZmls
ZXNSZWFkU29GYXIgKz0gMTsKKyAgICAKKyAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSAoaW50
KW1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpIHsKKyAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRz
LmNsZWFyKCk7CisgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZSht
X2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fc2hh
cmVEYXRhKTsKKyAgICB9Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpjYW5jZWwoKQorewor
ICAgIGZvciAoYXV0byYgbG9hZGVyIDogbV9wZW5kaW5nRmlsZUxvYWRzKQorICAgICAgICBsb2Fk
ZXIgPSBudWxscHRyOworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGFSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWZkMmY5M2JiZDg2MzI0MmIyYmJiYzIxODg1ZDE5ZjM3OTdjZTA0NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmgKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJTaGFyZURhdGEuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKK2NsYXNzIEJsb2I7
CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisKK2NsYXNzIFNoYXJlRGF0YVJlYWRlcjogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVE
YXRhUmVhZGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZURhdGFSZWFkZXI+IGNy
ZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVEYXRhUmVhZGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7IH0KKyAgICB+U2hhcmVE
YXRhUmVhZGVyKCk7CisgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCk7CisgICAgdm9pZCBjYW5jZWwoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmKTsKKworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRXhjZXB0aW9uT3I8aW50Pik7
CisgICAgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBtX3NoYXJlRGF0YTsKKyAgICBpbnQgbV9maWxl
c1JlYWRTb0ZhcjsKKyAgICBWZWN0b3I8UmVmUHRyPEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyPj4g
bV9wZW5kaW5nRmlsZUxvYWRzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL21hYy9RdWFyYW50aW5lU1BJLmgKaW5kZXggOTQwNDc0NDM1ZjhkZDNkNWU4MzUyNzdiNjZk
MzJkOGZmMzFiYjJjMi4uMGJmMTAzZDRhOWViZDlmZGZjYzkxYzAzYjY5M2VkM2E4M2U3MzZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCkBA
IC0zNCw2ICszNCw3IEBACiAjZWxzZQogCiBlbnVtIHF0bl9mbGFncyB7CisgICAgUVROX0ZMQUdf
RE9XTkxPQUQgPSAweDAwMDEsCiAgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwKIH07CiAK
QEAgLTQzLDEwICs0NCwxNSBAQCBlbnVtIHF0bl9mbGFncyB7CiAjZGVmaW5lIHF0bl9wcm9jX2lu
aXQgX3F0bl9wcm9jX2luaXQKICNkZWZpbmUgcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYgX3F0bl9w
cm9jX2luaXRfd2l0aF9zZWxmCiAjZGVmaW5lIHF0bl9wcm9jX3NldF9mbGFncyBfcXRuX3Byb2Nf
c2V0X2ZsYWdzCi0KKyNkZWZpbmUgcXRuX2ZpbGVfYWxsb2MgX3F0bl9maWxlX2FsbG9jCisjZGVm
aW5lIHF0bl9maWxlX2luaXRfd2l0aF9wYXRoIF9xdG5fZmlsZV9pbml0X3dpdGhfcGF0aAorI2Rl
ZmluZSBxdG5fZmlsZV9mcmVlIF9xdG5fZmlsZV9mcmVlCisjZGVmaW5lIHF0bl9maWxlX2FwcGx5
X3RvX3BhdGggX3F0bl9maWxlX2FwcGx5X3RvX3BhdGgKKyNkZWZpbmUgcXRuX2ZpbGVfc2V0X2Zs
YWdzIF9xdG5fZmlsZV9zZXRfZmxhZ3MKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCBfcXRuX3By
b2MgKnF0bl9wcm9jX3Q7Cit0eXBlZGVmIHN0cnVjdCBfcXRuX2ZpbGUgKnF0bl9maWxlX3Q7CiAK
IFdURl9FWFRFUk5fQ19CRUdJTgogCkBAIC01Niw2ICs2MiwxMSBAQCBpbnQgcXRuX3Byb2NfaW5p
dF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CiBpbnQgcXRuX3Byb2Nfc2V0X2ZsYWdzKHF0bl9wcm9j
X3QsIHVpbnQzMl90IGZsYWdzKTsKIHF0bl9wcm9jX3QgcXRuX3Byb2NfYWxsb2MoKTsKIHZvaWQg
cXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsKK3F0bl9maWxlX3QgcXRuX2ZpbGVfYWxsb2Modm9p
ZCk7Cit2b2lkIHF0bl9maWxlX2ZyZWUocXRuX2ZpbGVfdCBxZik7CitpbnQgcXRuX2ZpbGVfc2V0
X2ZsYWdzKHF0bl9maWxlX3QgcWYsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBxdG5fZmlsZV9hcHBs
eV90b19wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOworaW50IHF0bl9maWxl
X2luaXRfd2l0aF9wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBhdGgpOwogCiBXVEZf
RVhURVJOX0NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCmluZGV4IGFlZDhiZGNjNTYxMDYzZDVmODA2M2UyOWRkNzlhOGFiMDhmMzJjOWUu
LjE0NzQ3OGQ3NjMwMzI1ZmFmOGJiZTljMjRlNzIzNmViZTc0NGU0MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50
VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTIwMTYsNiArMjAxNywzMSBAQCBib29sIEFyZ3VtZW50
Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGaWxl
Q2hvb3NlclNldAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxW
ZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFJh
d0ZpbGU+JiBmaWxlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihm
aWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAgICAgIGVu
Y29kZXIgPDwgZmlsZS5maWxlTmFtZTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGZpbGUuZmlsZURhdGEuZ2V0KCkpOworICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVy
PFZlY3RvcjxSYXdGaWxlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8UmF3Rmls
ZT4mIGZpbGVzKQoreworICAgIHVpbnQ2NF90IGRhdGFTaXplOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaWxlcy5yZXNp
emUoZGF0YVNpemUpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZmlsZS5maWxlTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGZpbGUuZmlsZURh
dGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KICAgICAKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGE+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2hhcmVEYXRhJiBzZXR0aW5ncykKIHsKQEAgLTIwMzksNiArMjA2NSw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlCiB7CiAgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5z
aGFyZURhdGE7CiAgICAgZW5jb2RlciA8PCBzZXR0aW5ncy51cmw7CisgICAgZW5jb2RlciA8PCBz
ZXR0aW5ncy5maWxlczsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYg
c2V0dGluZ3MpCkBAIC0yMDQ3LDYgKzIwNzQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVE
YXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZXR0aW5ncy51
cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZXR0
aW5ncy5maWxlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2
YmVjYmY3MGUyYWIyNGViZjkxNmU3MGU4YTM5M2NhZTBmMjc4NDExLi45Y2QxMDAyYzc0MDc3ZmUx
NjQzYjhhMmIzNjhjYTgzMjcwNDI5YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRGF0YWJhc2VEZXRhaWxzOwogY2xh
c3MgRHJhZ0RhdGE7CitjbGFzcyBGaWxlOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uOwogY2xhc3Mg
RmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0xMjUsNiArMTI2LDcgQEAg
c3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25zOwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBz
dHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKK3N0cnVj
dCBSYXdGaWxlOwogc3RydWN0IFNoYXJlRGF0YTsKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMOwogc3RydWN0IExlbmd0aDsKQEAgLTU0OSw2ICs1NTEsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzPiB7CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Rmls
ZUNob29zZXJTZXR0aW5ncyYpOwogfTsKICAgICAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8VmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4mKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxlPiYpOworfTsKKwog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTaGFyZURhdGE+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YSYp
OwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdl
YkNvcmU6OlNoYXJlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV0tTaGFyZVNoZWV0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1No
YXJlU2hlZXQuaAppbmRleCA0YWNkYmI2OWE0YjJhYmUxYWMwZmU0NWIzNGVlZDFjNmFhYTcxY2Ex
Li5jMzQwZGI2OGVlZmE5OWNmNDc2Y2VmNWM4NTgxMmZiMGE4ZmEwZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaApAQCAtNDIsNyArNDIsNiBAQCBz
dHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIC0gKHZvaWQpZGlzbWlzczsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS1NoYXJlU2hlZXREZWxlZ2F0ZT4gZGVsZWdhdGU7
Ci0KIEBlbmQKIAogQHByb3RvY29sIFdLU2hhcmVTaGVldERlbGVnYXRlIDxOU09iamVjdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQppbmRleCBiMDI0
MzNjMzAzYTZmOTM5ZGI0MmE3ZmM0MDQ5ZTllYWM1NDFiMDA2Li42ZjA1NzZhZTU1ZGY2MDhhYWU0
NjRjN2IxYzE4M2MyMDU4OTBkZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTaGFyZVNoZWV0Lm1tCkBAIC0yOCw2ICsyOCwxMCBAQAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKIAorI2ltcG9y
dCAiUXVhcmFudGluZVNQSS5oIgorCisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVE
YXRhLmg+CkBAIC00Nyw2ICs1MSw3IEBAIEBlbmQKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24g
V0tTaGFyZVNoZWV0IHsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF90ZW1wb3JhcnlGaWxlU2hh
cmVEaXJlY3Rvcnk7CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKICAgICBX
ZWFrT2JqQ1B0cjxpZCA8V0tTaGFyZVNoZWV0RGVsZWdhdGU+ID4gX2RlbGVnYXRlOwogICAgIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gX2NvbXBsZXRpb25IYW5kbGVyOwpAQCAt
MTA2LDEwICsxMTEsNDcgQEAgLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgJilkYXRhIGluUmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKKyAgICBpZiAoZGF0YS5maWxlcy5zaXplKCkpIHsKKyAgICAgICAgX3Rl
bXBvcmFyeUZpbGVTaGFyZURpcmVjdG9yeSA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQgY3JlYXRl
VGVtcG9yYXJ5U2hhcmluZ0RpcmVjdG9yeV0gY29weV0pOworICAgICAgICAKKyAgICAgICAgZGlz
cGF0Y2hfZ3JvdXBfdCBmaWxlV3JpdGVHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOwor
ICAgICAgICBfX2Jsb2NrIGJvb2wgc3VjY2Vzc2Z1bCA9IHRydWU7CisgICAgICAgIGF1dG8gcXVl
dWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tTaGFyZVNoZWV0
LlNoYXJlYWJsZUZpbGVXcml0ZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgICAgICBm
b3IgKGF1dG8gZmlsZSA6IGRhdGEuZmlsZXMpIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2dyb3Vw
X25vdGlmeShmaWxlV3JpdGVHcm91cCwgcXVldWUsIF57CisgICAgICAgICAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzdWNjZXNzZnVsKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtXS1NoYXJlU2hlZXQgd3JpdGVGaWxl
VG9TaGFyZWFibGVVUkw6ZmlsZS5maWxlTmFtZSBkYXRhOmZpbGUuZmlsZURhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIHRlbXBvcmFyeURpcmVjdG9yeTpfdGVtcG9yYXJ5RmlsZVNoYXJlRGlyZWN0
b3J5LmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlVVJMKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
W3NoYXJlRGF0YUFycmF5IGFkZE9iamVjdDpmaWxlVVJMXTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkaXNwYXRjaF9n
cm91cF9ub3RpZnkoZmlsZVdyaXRlR3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3NmdWwpIHsKKyAgICAgICAgICAgICAgICBbc2VsZiBf
ZGlkQ29tcGxldGVXaXRoU3VjY2VzczpOT107CisgICAgICAgICAgICAgICAgW3NlbGYgZGlzbWlz
c107CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
W3NlbGYgcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJl
Y3Q6cmVjdF07CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IFtzZWxmIHByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5S
ZWN0OnJlY3RdOworfQorCistICh2b2lkKXByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJy
YXkgKilzaGFyaW5nSXRlbXMgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4pcmVjdAorewogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxl
YXNlZCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfc2hhcmluZ1NlcnZpY2VQaWNr
ZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVt
czpzaGFyZURhdGFBcnJheS5nZXQoKV0pOworICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFk
b3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJp
bmdJdGVtc10pOwogICAgIF9zaGFyaW5nU2VydmljZVBpY2tlci5nZXQoKS5kZWxlZ2F0ZSA9IHNl
bGY7CiAgICAgCiAgICAgLy8gV0tTaGFyZVNoZWV0IGNhbiBiZSByZWxlYXNlZCB1bmRlciBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyIGRlbGVnYXRlIGNhbGxiYWNrcy4KQEAgLTEyNiw3ICsxNjgsNyBA
QCAtICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCAmKWRhdGEgaW5SZQogICAgIH0KICAgICBbX3NoYXJpbmdTZXJ2aWNlUGlj
a2VyIHNob3dSZWxhdGl2ZVRvUmVjdDpwcmVzZW50YXRpb25SZWN0IG9mVmlldzp3ZWJWaWV3IHBy
ZWZlcnJlZEVkZ2U6TlNNaW5ZRWRnZV07CiAjZWxzZQotICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aEFjdGl2aXR5SXRlbXM6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgYXBwbGljYXRpb25BY3Rpdml0aWVz
Om5pbF0pOworICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rp
dml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmluZ0l0
ZW1zIGFwcGxpY2F0aW9uQWN0aXZpdGllczpuaWxdKTsKICAgICBbX3NoYXJlU2hlZXRWaWV3Q29u
dHJvbGxlciBzZXRDb21wbGV0aW9uV2l0aEl0ZW1zSGFuZGxlcjpeKE5TU3RyaW5nICosIEJPT0wg
Y29tcGxldGVkLCBOU0FycmF5ICosIE5TRXJyb3IgKikgewogICAgICAgICBbc2VsZiBfZGlkQ29t
cGxldGVXaXRoU3VjY2Vzczpjb21wbGV0ZWRdOwogICAgICAgICBbc2VsZiBkaXNwYXRjaERpZERp
c21pc3NdOwpAQCAtMTgwLDYgKzIyMiw4IEBAIC0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hh
cmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5CiAKIC0g
KHZvaWQpX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6KEJPT0wpc3VjY2VzcwogeworICAgIFtXS1No
YXJlU2hlZXQgcmVtb3ZlVGVtcFNoYXJpbmdEaXJlY3Rvcnk6X3RlbXBvcmFyeUZpbGVTaGFyZURp
cmVjdG9yeS5nZXQoKV07CisgICAgX3RlbXBvcmFyeUZpbGVTaGFyZURpcmVjdG9yeSA9IG51bGxw
dHI7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoX2NvbXBsZXRpb25IYW5k
bGVyKTsKICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN1Y2Nlc3MpOwpAQCAtMjE1LDYgKzI1OSwxMjEgQEAgLSAodm9pZClkaXNwYXRjaERpZERp
c21pc3MKICAgICAgICAgW19kZWxlZ2F0ZSBzaGFyZVNoZWV0RGlkRGlzbWlzczpzZWxmXTsKIH0K
IAorI2lmIFBMQVRGT1JNKE1BQykKKysgKEJPT0wpc2V0UXVhcmFudGluZUluZm9ybWF0aW9uRm9y
RmlsZVBhdGg6KE5TU3RyaW5nICopZmlsZVBhdGgKK3sKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZVBhdGhdOworCisgICAgYXV0byBxdWFyYW50aW5lUHJv
cGVydGllcyA9IGFkb3B0TlMoQHsKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVh
cmFudGluZVR5cGVLZXk6IChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlV2Vi
RG93bmxvYWQsCisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVBZ2Vu
dEJ1bmRsZUlkZW50aWZpZXJLZXk6IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigpCisgICAgfSk7CisKKyAgICBOU0Vycm9yICplcnJvcjsKKyAgICBpZiAoIVtmaWxlVVJMIHNl
dFJlc291cmNlVmFsdWU6cXVhcmFudGluZVByb3BlcnRpZXMuZ2V0KCkgZm9yS2V5Ok5TVVJMUXVh
cmFudGluZVByb3BlcnRpZXNLZXkgZXJyb3I6JmVycm9yXSkgeworICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBpbmZvcm1hdGlvbiBmb3IgZmlsZSBwYXRoOiAlQDog
JUAiLCBmaWxlUGF0aCwgZXJyb3IpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAg
Ly8gV2hldGhlciB0aGUgZmlsZSB3YXMgZG93bmxvYWRlZCBieSBzYW5kYm94ZWQgV2ViUHJvY2Vz
cyBvciBub3QsIExTU2V0SXRlbUF0dHJpYnV0ZSByZXNldHMgdGhlIGZsYWdzIHRvIDAgKGFkdmlz
b3J5IFFUTl9GTEFHX0RPV05MT0FELAorICAgIC8vIHdoaWNoIGNhbiBiZSB0aGVuIHJlbW92ZWQg
YnkgV2ViUHJvY2VzcykuIFJlcGxhY2UgdGhlIGZsYWdzIHdpdGggc2FuZGJveCBxdWFyYW50aW5l
IG9uZXMsIHdoaWNoIGNhbm5vdCBiZSByZW1vdmVkIGJ5IHNhbmRib3hlZCBwcm9jZXNzZXMuCisg
ICAgcmV0dXJuIFtXS1NoYXJlU2hlZXQgYXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2Fk
RmxhZ3NUb0ZpbGVBdFBhdGg6ZmlsZVBhdGhdOworfQorCisrIChCT09MKWFwcGx5UXVhcmFudGlu
ZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRoOihOU1N0cmluZyAqKWZpbGVQYXRo
Cit7CisgICAgcXRuX2ZpbGVfdCBmcSA9IHF0bl9maWxlX2FsbG9jKCk7CisgICAgaW50IHF1YXJh
bnRpbmVFcnJvciA9IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKGZxLCBmaWxlUGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb24pOworICAgIGlmIChxdWFyYW50aW5lRXJyb3IpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgcmV0cmlldmUgcXVhcmFudGluZSBmbGFncyBmb3IgZmlsZSBw
YXRoICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJyb3IpOworICAgICAgICBxdG5fZmls
ZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAgIHF1YXJhbnRpbmVF
cnJvciA9IHF0bl9maWxlX3NldF9mbGFncyhmcSwgUVROX0ZMQUdfU0FOREJPWCB8IFFUTl9GTEFH
X0RPV05MT0FEKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKSB7CisgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IHNldCBxdWFyYW50aW5lIGZsYWdzIGluIHF0bl9maWxlX3Qgc3RydWN0dXJl
IGZvciBmaWxlIHBhdGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisgICAg
ICAgIHF0bl9maWxlX2ZyZWUoZnEpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAg
cXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aChmcSwgZmlsZVBhdGguZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKQorICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhcHBseSBxdWFyYW50aW5lIGZsYWdzIHRvIGZpbGUgcGF0
aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKworICAgIHF0bl9maWxlX2Zy
ZWUoZnEpOworCisgICAgcmV0dXJuIFlFUzsKK30KKyNlbmRpZgorCisrIChCT09MKXJlbW92ZVRl
bXBTaGFyaW5nRGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeVBhdGgKK3sKKyAgICBpZiAo
IVtkaXJlY3RvcnlQYXRoIGxlbmd0aF0pCisgICAgICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBp
ZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkaXJl
Y3RvcnlQYXRoXSkKKyAgICAgICAgcmV0dXJuIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gcmVtb3ZlSXRlbUF0UGF0aDpkaXJlY3RvcnlQYXRoIGVycm9yOm5pbF07CisgICAgCisgICAg
cmV0dXJuIFlFUzsKK30KKworKyAoTlNTdHJpbmcgKiljcmVhdGVUZW1wb3JhcnlTaGFyaW5nRGly
ZWN0b3J5Cit7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldLRmlsZVNoYXJlIik7CisgICAgCisgICAgaWYg
KCFbdGVtcG9yYXJ5RGlyZWN0b3J5IGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGVtcG9yYXJ5RGlyZWN0b3J5XSkgeworICAgICAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0UGF0aDp0ZW1w
b3JhcnlEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0ZXM6
bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBuaWw7CisgICAgfQorICAgIHJldHVybiB0ZW1wb3JhcnlEaXJlY3Rvcnk7Cit9CisKKysgKE5T
U3RyaW5nICopY3JlYXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6KE5TU3RyaW5nICop
dGVtcG9yYXJ5RGlyZWN0b3J5Cit7CisgICAgTlNTdHJpbmcgKnJhbmRvbURpcmVjdG9yeSA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBpZiAoIVtyYW5kb21EaXJlY3RvcnkgbGVu
Z3RoXSB8fCAhW3RlbXBvcmFyeURpcmVjdG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmls
OworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVAIiwg
cmFuZG9tRGlyZWN0b3J5XV07CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0
YVBhdGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpOTyBh
dHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4gZGF0YVBhdGg7Cit9CisKKysgKE5T
VVJMICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6KE5TU3RyaW5nICopZmlsZU5hbWUgZGF0YToo
TlNEYXRhICopIGZpbGVEYXRhIHRlbXBvcmFyeURpcmVjdG9yeTooTlNTdHJpbmcgKikgdGVtcG9y
YXJ5RGlyZWN0b3J5Cit7CisvLyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBp
ZiAoIVt0ZW1wb3JhcnlEaXJlY3RvcnkgbGVuZ3RoXSB8fCAhW2ZpbGVOYW1lIGxlbmd0aF0gfHwg
IWZpbGVEYXRhKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TU3RyaW5nICp0ZW1w
b3JhcnlEaXJlY3RvcnlGb3JGaWxlID0gW1dLU2hhcmVTaGVldCBjcmVhdGVSYW5kb21TaGFyaW5n
RGlyZWN0b3J5Rm9yRmlsZTp0ZW1wb3JhcnlEaXJlY3RvcnldOworICAgIGlmICghdGVtcG9yYXJ5
RGlyZWN0b3J5Rm9yRmlsZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU1N0cmlu
ZyAqZmlsZSA9IFt0ZW1wb3JhcnlEaXJlY3RvcnlGb3JGaWxlIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpmaWxlTmFtZV07CisKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6ZmlsZV07CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAg
W2ZpbGVEYXRhIHdyaXRlVG9VUkw6ZmlsZVVSTCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMg
ZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmICghW1dLU2hhcmVTaGVldCBzZXRRdWFyYW50aW5lSW5mb3Jt
YXRpb25Gb3JGaWxlUGF0aDpmaWxlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAg
IHJldHVybiBmaWxlVVJMOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzYmZh
N2E1YjYzOWE0YjViNGM3YTNjMDVkZmNkMTM3N2RiNWMzYTkuLjAyMTcwMzI4NGJjMTY4MDM3ZDYy
OGUwNGRhNjY0NTQ4NWU0ZTc4ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xOCAg
Tmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVzZSB1cmwgb2YgaW1h
Z2UuCisKKyAgICAgICAgKiBmYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWw6CisK
IDIwMjAtMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZW5kaW5nIGJlYWNvbnMgd2hlbiBGZXRjaCBLZWVwQWxpdmUgZmVhdHVyZSBpcyBkaXNhYmxlZCBj
cmFzaGVzIHRoZSBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAx
ODc2NWU3MWY2OTJlMTdhNjQyYTQ1NDczNjc4OWM4YjQzNmMzNzdlLi4xZWI5ZGFlM2VmYjZjN2Rh
MGYxNDZkZDY1M2YyZTZiZWMwYjczOGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRh
cmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRwcy1l
eHBlY3RlZC50eHQ6CisKIDIwMjAtMDQtMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdHJ1Y3R1cmVkQ2xvbmUgYWxnb3JpdGhtIHNob3VsZCBiZSBhd2Fy
ZSBvZiBCaWdJbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJl
LXdpdGgtZmlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgt
ZmlsZXMuaHRtbAppbmRleCA4NTZlZDI0NDE4ODcxODhkYjY0OThkM2RiMTcwODA3MTQ5MGY1Yzg2
Li45Yjg5MGQ0YzFiMTM0N2QwOWNiNjFjYTI2MjQyMzJkMzUwYzA2OTkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCkBAIC0yLDYgKzIs
NyBAQAogCiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNj
YWxlPTUsIHdpZHRoPWRldmljZS13aWR0aCI+CisKIDxoZWFkPgogCiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtMTYsMTAgKzE3LDEy
IEBACiAKICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydoZWxsbyddLCAnaGVsbG8udHh0Jywge3R5cGU6
J3RleHQvcGxhaW4nfSk7CisKKyAgICAgICAgICAgIHZhciBibG9iID0gdGhpcy5yZXNwb25zZTsK
KyAgICAgICAgICAgIGNvbnN0IHRleHRGaWxlID0gbmV3IEZpbGUoWydUaGlzIGlzIGEgdGV4dCBm
aWxlJ10sICdUZXh0RmlsZS50eHQnLCB7dHlwZTondGV4dC9odG1sJ30pOwogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgKCkgPT4gewotICAgICAgICAgICAgICAgIG5hdmlnYXRvci5zaGFyZSh7dGV4dDogInNhZGYi
LCBmaWxlczogW3RleHRGaWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICB3cml0ZSgiUEFTUzogU2hhcmUgc2hlZXQgaW52b2tlZC4iKTsKKyAgICAgICAgICAgIG5h
dmlnYXRvci5zaGFyZSh7dGV4dDogIlRoaXMgaXMgYSB0ZXh0IGZpbGUiLCBmaWxlczogW3RleHRG
aWxlXX0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgICAgIHdyaXRlKCJQQVNTOiBT
aGFyZSBzaGVldCBpbnZva2VkLiIpOwogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9KTsgICAgCiAgICAgICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397395</attachid>
            <date>2020-04-23 16:14:41 -0700</date>
            <delta_ts>2020-04-28 12:30:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200423191438.patch</filename>
            <type>text/plain</type>
            <size>44455</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ4OWUyODk4NTk3Mjll
M2I4ZjhhNmQyYWM2N2U1NTc0Zjg4YWQzYy4uYzI2ZWNiMjQ4M2IyZmVjOTk0YjBhOGQzYWIxY2Ix
MmI1MTJiOThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIHdr
MiBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZpY2F0aW9ucy9ldmVudC1v
bmNsb3NlLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjNhZmI0YjZjOTM4MzBi
ZWVmNTdiMzUxYjM4ZTlmNjYxN2ZhYTU4Ni4uMGFiZjJlZTY0OTcwZTFmODJkNjZjZDZkMDRlMGQx
ZWNmMDJmMDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wMy0xOCAgTmlrb3Mg
TW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
d2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIG9iamVjdHMgb3Zl
ciBJUEMgYW5kCisgICAgICAgIHNoYXJpbmcgb2YgZmlsZXMgdG8gc2hhcmUgc2hlZXQuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1NoYXJlYWJsZUZpbGVXcml0ZS5tbTogQWRkZWQuCisgICAgICAgICgrW1dLU2hhcmVh
YmxlRmlsZVdyaXRlIGdldFNoYXJpbmdEaXJlY3RvcnlQYXRoXSk6CisgICAgICAgICgrW1dLU2hh
cmVhYmxlRmlsZVdyaXRlIGdldEZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nXSk6CisgICAgICAgICgr
W1dLU2hhcmVhYmxlRmlsZVdyaXRlIHJlbW92ZUZpbGVEaXJlY3RvcnlGb3JTaGFyaW5nXSk6Cisg
ICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIHNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZv
ckZpbGVQYXRoOl0pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBhcHBseVF1YXJh
bnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDpdKToKKyAgICAgICAgKCtb
V0tTaGFyZWFibGVGaWxlV3JpdGUgY3JlYXRlRmlsZW5hbWU6XSk6CisgICAgICAgICgrW1dLU2hh
cmVhYmxlRmlsZVdyaXRlIHdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOmRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbToKKyAgICAgICAgKC1bV0tTaGFyZVNo
ZWV0IHByZXNlbnRXaXRoUGFyYW1ldGVyczppblJlY3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLU2hhcmVTaGVldCBfZGlkQ29tcGxldGVXaXRoU3VjY2VzczpdKToKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wNC0yMiAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIElQQzo6ZGVjb2RlU2hh
cmVkQnVmZmVyKCkgc2hvdWxkIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgU2hhcmVkTWVtb3J5
OjptYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA2ZjE1NGYxMzljMDRkNThiNDg2OTk5Nzk3Y2FkZTNm
MDczNjg5ODc5Li4wMzRjNWE0ZmVlYjhmZWE1YzA3MWMxZTZhNmQzNzg3MDcyMWM5ZjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMTYyNiw2ICsxNjI2LDcgQEAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
IHBhZ2UvRWRpdGFibGVJbWFnZVJlZmVyZW5jZS5jcHAKIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcAog
cGFnZS9FdmVudFNvdXJjZS5jcHAKK3BhZ2UvRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuY3BwCiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKIHBhZ2UvRnJhbWUuY3BwCiBwYWdlL0ZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlci5jcHAKQEAgLTE2ODQsNiArMTY4NSw3IEBAIHBhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKIHBhZ2UvU2VjdXJpdHlQb2xpY3ku
Y3BwCiBwYWdlL1NldHRpbmdzQmFzZS5jcHAKK3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAogcGFn
ZS9Tb2NrZXRQcm92aWRlci5jcHAKIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCiBwYWdlL1N1
c3BlbmRhYmxlVGltZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTlmYzVmNmM5Njk2YTc2ZjZhNzMyZWRhNzEwMWY4NzJh
MmY4MzI5MS4uOTcyZWY0MjBjYjMwNmY4NTgxYjJjZWJmMDJmNDhlMGZmYWQyNTg1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDQ1LDYgKzQ0NSw3IEBACiAJCTE5N0IxODBDMTUwNjM1MzIwMEU0QURBOCAvKiBTVkdSZW5kZXJp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxOTdCMTgwQjE1MDYzNEMwMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5oICovOyB9
OwogCQkxOUJGRjY0RjExQzBGMkFDMDBCOEMwNEQgLyogSlNTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTlC
RkY2NEExMUMwRjJBQzAwQjhDMDREIC8qIEpTU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCAq
LzsgfTsKIAkJMUEwOEZFREQxRDU5MkI4QjAwOEJBOENCIC8qIFBsdWdpbkluZm9Qcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwOEZFREIx
RDU5MkI4QjAwOEJBOENCIC8qIFBsdWdpbkluZm9Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBMEMyMjZGMjQ0RTEzNTQwMEVENjE0
RCAvKiBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwQzIyNkQyNDRFMTM1MzAwRUQ2MTREIC8qIEZpbGVSZWFk
ZXJMb2FkZXJXcmFwcGVyLmggKi87IH07CiAJCTFBMEQ1NzM3MEE1Qzc3RkUwMDdFREQ0QyAvKiBP
dmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBMEQ1NzQxMEE1Qzc4
NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzNGMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJm
bG93RXZlbnQuaCAqLzsgfTsKIAkJMUExNDE0QjUxM0EwRjA1MDAwMTk5OTZDIC8qIFdlYktpdEZv
bnRGYW1pbHlOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTE0MTRCMzEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVz
LmNwcCAqLzsgfTsKQEAgLTYxNTQsNiArNjE1NSw4IEBACiAJCTE5QkZGNjRBMTFDMEYyQUMwMEI4
QzA0RCAvKiBKU1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwOEZFREExRDU5MkI4QjAwOEJBOENCIC8qIFBsdWdpbklu
Zm9Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVn
aW5JbmZvUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTA4RkVE
QjFENTkyQjhCMDA4QkE4Q0IgLyogUGx1Z2luSW5mb1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkluZm9Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQTBDMjI2QzI0NEUxMzUzMDBFRDYxNEQgLyogRmlsZVJlYWRlckxvYWRl
cldyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVJlYWRlckxvYWRlcldyYXBwZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTBDMjI2RDI0NEUxMzUzMDBFRDYx
NEQgLyogRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVJlYWRl
ckxvYWRlcldyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzQw
QTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmZsb3dFdmVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTBENTczODBBNUM3ODEyMDA3RURENEMgLyogT3ZlcmZs
b3dFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE3NSw2ICs2MTc4LDggQEAKIAkJMUEyQTY4
MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3Jlc3NUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMkFBQzU2MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkFBQzU3
MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQTJDNjY3MTI0MkFGRUY3MDAzMDU1RUMgLyogU2hhcmVE
YXRhUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlRGF0YVJlYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMkM2NjczMjQyQUZFRjgwMDMwNTVFQyAvKiBT
aGFyZURhdGFSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVEYXRhUmVhZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTU4MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJFNkU3ODBDQzU1NkQ1MDA0QTIwNjIgLyogU1FM
aXRlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
UUxpdGVBdXRob3JpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzNTg2
REQxNTI2NEM0NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA5MjQsNiArMjA5MjksOCBAQAogCQkJCUUw
RkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5jcHAgKi8sCiAJCQkJRTBGRUYz
NzFCMTdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmggKi8sCiAJCQkJRTBGRUYzNzFCMDdD
NTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmlkbCAqLywKKwkJCQkxQTBDMjI2QzI0NEUxMzUz
MDBFRDYxNEQgLyogRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuY3BwICovLAorCQkJCTFBMEMyMjZE
MjQ0RTEzNTMwMEVENjE0RCAvKiBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oICovLAogCQkJCTE0
OTkzQkUzMEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIuY3BwICovLAogCQkJCTE0
OTkzQkU0MEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIuaCAqLywKIAkJCQkwNjIy
ODc4MzBCNERCMzIyMDAwQzM0REYgLyogRm9jdXNEaXJlY3Rpb24uaCAqLywKQEAgLTIxMTAyLDYg
KzIxMTA5LDggQEAKIAkJCQk3QzZFRkVFQTFGOTQ2QTJFMDBGRkFENDEgLyogU2V0dGluZ3NEZWZh
dWx0VmFsdWVzLmggKi8sCiAJCQkJMURDNTU0MDAyMTFCQThDODAwNEI3ODBFIC8qIFNoYXJlRGF0
YS5oICovLAogCQkJCTFEQzU1M0ZGMjExQkE4NDEwMDRCNzgwRSAvKiBTaGFyZURhdGEuaWRsICov
LAorCQkJCTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBTaGFyZURhdGFSZWFkZXIuY3BwICov
LAorCQkJCTFBMkM2NjczMjQyQUZFRjgwMDMwNTVFQyAvKiBTaGFyZURhdGFSZWFkZXIuaCAqLywK
IAkJCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICovLAog
CQkJCTVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovLAogCQkJ
CTYyNkNERTBDMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5jcHAgKi8sCkBA
IC0zMDM4OCw2ICszMDM5Nyw3IEBACiAJCQkJOTc2RDZDODkxMjJCOEEzRDAwMUZEMUY3IC8qIEZp
bGVSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNzU4NDFFMTI3NzlBREEwMDYyNjI4QiAv
KiBGaWxlUmVhZGVyTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTc1ODQxRjEyNzc5QURB
MDA2MjYyOEIgLyogRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUEwQzIyNkYyNDRFMTM1NDAwRUQ2MTREIC8qIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRURGMzY5RDEyMkM5NEI0MDAyRjdENEUgLyogRmlsZVJlYWRlclN5
bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkVCMTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxl
U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUYxQkZGOTEyMUNCMENFMDBDMjc2MjcgLyog
RmlsZVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNmU3ZTExYmQyNDE5
Y2FmODIzOTdmZjEzMDY2MWViNDlmMWI4MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmNwcApAQCAtMCwwICsxLDk5IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
KgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oIgorCisjaW5jbHVk
ZSAiRmlsZVJlYWRlckxvYWRlci5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpyZWFk
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgQmxvYiYgYmxvYikKK3sK
KyAgICBtX2Jsb2IgPSAmYmxvYjsKKworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVh
ZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgc3RhdGljX2Nh
c3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAgICBtX2xvYWRlci0+c2V0RGF0
YVR5cGUobV9ibG9iLT50eXBlKCkpOworICAgIG1fbG9hZGVyLT5zdGFydCgmY29udGV4dCwgYmxv
Yik7Cit9CisKK0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpGaWxlUmVhZGVyTG9hZGVyV3JhcHBl
cihpbnQgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8aW50Pik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQorICAgICwgbV9pZChpZCkKK3sKKyAgICAKK30KKworRmlsZVJlYWRlckxv
YWRlcldyYXBwZXI6On5GaWxlUmVhZGVyTG9hZGVyV3JhcHBlcigpCit7CisgICAgbV9ibG9iID0g
bnVsbHB0cjsKKyAgICBtX2Jsb2JEYXRhID0gbnVsbHB0cjsKKyAgICBjYW5jZWwoKTsKK30KKwor
dm9pZCBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgU3RyaW5nIGZpbGVOYW1lLCBCbG9iJiBzaGFyZURhdGEpCit7CisgICAgbV9m
aWxlTmFtZSA9IGZpbGVOYW1lOworICAgIHJlYWRJbnRlcm5hbChjb250ZXh0LCBzaGFyZURhdGEp
OworfQorCit2b2lkIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkK
K3sKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9sb2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCk7
CisgICAgbV9ibG9iRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CisgICAgCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9j
b21wbGV0aW9uSGFuZGxlcik7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtX2lkKTsKK30KKwordm9pZCBGaWxlUmVhZGVyTG9hZGVyV3JhcHBl
cjo6ZGlkUmVjZWl2ZURhdGEoKQoreworICAgIAorfQorCit2b2lkIEZpbGVSZWFkZXJMb2FkZXJX
cmFwcGVyOjpkaWRTdGFydExvYWRpbmcoKQoreworICAgIAorfQorCit2b2lkIEZpbGVSZWFkZXJM
b2FkZXJXcmFwcGVyOjpkaWRGYWlsKGludCBlcnJvckNvZGUpCit7CisgICAgVU5VU0VEX1BBUkFN
KGVycm9yQ29kZSk7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcik7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnQgZHVlIHRvIGVycm9y
IHdoaWxlIHJlYWRpbmcgZmlsZXMuIl9zIH0pOworfQordm9pZCBGaWxlUmVhZGVyTG9hZGVyV3Jh
cHBlcjo6Y2FuY2VsKCkKK3sKKyAgICBpZiAobV9sb2FkZXIpIHsKKyAgICAgICAgbV9sb2FkZXIt
PmNhbmNlbCgpOworICAgICAgICBtX2xvYWRlciA9IG51bGxwdHI7CisgICAgfQorfQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJhNWM1MjIwZTAxNGY2ZjQxNDVmYzM1MTk5NzIxYWQxMWI2ZGJjNGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmgKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiRmls
ZVJlYWRlckxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlNoYXJlRGF0YS5oIgorCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTmF2aWdhdG9yOworY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CitjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyV3JhcHBl
cjogcHJpdmF0ZSBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxGaWxl
UmVhZGVyTG9hZGVyV3JhcHBlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RmlsZVJlYWRl
ckxvYWRlcldyYXBwZXI+IGNyZWF0ZShpbnQgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8aW50Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRmlsZVJlYWRlckxvYWRlcldyYXBwZXIoaWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KSk7IH0KKyAgICB+RmlsZVJlYWRlckxvYWRlcldyYXBwZXIoKTsKKyAgICB2b2lkIHN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTdHJpbmcsIEJsb2ImKTsKKyAgICB2b2lkIGNhbmNlbCgp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoKSB7IHJldHVybiBtX2Jsb2JE
YXRhOyB9CisgICAgU3RyaW5nIGZpbGVOYW1lKCkgeyByZXR1cm4gbV9maWxlTmFtZTsgfQorCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyKGludCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxpbnQ+KT4mJik7CisgICAgdm9pZCByZWFkSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJsb2ImKTsKKyAgICB2b2lkIGRpZFN0YXJ0
TG9hZGluZygpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoaW50IGVycm9y
Q29kZSkgZmluYWw7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPGlu
dD4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIGludCBtX2lkOworICAgIFJlZlB0cjxCbG9i
PiBtX2Jsb2I7CisgICAgU3RyaW5nIG1fZmlsZU5hbWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9ibG9iRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9s
b2FkZXI7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggY2FjYzJhMTMz
Njk5MjZiZmQ2OWQxZTU5YzMxOTE0YWNjMzYxZTI3NC4uNmFjNjU3NzE1ZDBlYzUyNjFhOWJiMjFk
OTZlNWJhZTVkYWE4MmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNDMsNiAr
NDMsOCBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTaGFyZURhdGEuaCIKKyNpbmNsdWRlICJTaGFyZURhdGFSZWFkZXIuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KQEAgLTExMiw4ICsxMTQsMTMgQEAgYm9vbCBOYXZpZ2F0b3I6OmNhblNoYXJlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGRhdGEudGl0bGUuaXNOdWxsKCkgJiYgZGF0YS51cmwuaXNOdWxsKCkgJiYgZGF0YS50ZXh0
LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpCisgICAgICAg
IGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TSEFSRSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEz
OSw3ICsxNDYsNyBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIAogICAgIGF1dG8qIHdp
bmRvdyA9IHRoaXMtPndpbmRvdygpOwogICAgIC8vIE5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlv
biBkb2VzIG5vdCBpbmRpY2F0ZSB3ZSBzaG91bGQgY29uc3VtZSB1c2VyIGFjdGl2YXRpb24uIFdl
IGFyZSBpbnRlbnRpb25hbGx5IHN0cmljdGVyIGhlcmUuCi0gICAgaWYgKCF3aW5kb3cgfHwgIXdp
bmRvdy0+Y29uc3VtZVRyYW5zaWVudEFjdGl2YXRpb24oKSkgeworICAgIGlmICghd2luZG93IHx8
ICF3aW5kb3ctPmNvbnN1bWVUcmFuc2llbnRBY3RpdmF0aW9uKCkgfHwgbV9pc1ByZXNlbnRpbmdT
aGFyZVNoZWV0KSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ3LDEwICsxNTQsMzUgQEAgdm9pZCBOYXZpZ2F0
b3I6OnNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0
YSYgZGF0YSwgUmUKICAgICBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YSA9IHsKICAg
ICAgICAgZGF0YSwKICAgICAgICAgdXJsLAorICAgICAgICB7IH0sCiAgICAgfTsKICAgICAKKyAg
ICBpZiAoIWRhdGEuZmlsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2xvYWRlcikgewor
ICAgICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOworICAgICAgICAgICAgbV9sb2FkZXIgPSBu
dWxscHRyOworICAgICAgICB9CisgICAgICAgIG1fbG9hZGVyID0gU2hhcmVEYXRhUmVhZGVyOjpj
cmVhdGUoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoRXhjZXB0aW9uT3I8U2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCY+IHJlYWREYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRo
aXMtPnNob3dTaGFyZURhdGEocmVhZERhdGEsIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICB9
KTsKKyAgICAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHNoYXJlRGF0YSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgdGhpcy0+c2hvd1NoYXJlRGF0YShzaGFyZURhdGEsIFdURk1v
dmUocHJvbWlzZSkpOworfQorCit2b2lkIE5hdmlnYXRvcjo6c2hvd1NoYXJlRGF0YShFeGNlcHRp
b25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4gcmVhZERhdGEsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAocmVhZERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlYWREYXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgp
OwotICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICBtX2lz
UHJlc2VudGluZ1NoYXJlU2hlZXQgPSB0cnVlOworICAgIGF1dG8gc2hhcmVEYXRhID0gcmVhZERh
dGEucmV0dXJuVmFsdWUoKTsKKyAgICBmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVT
aGVldChzaGFyZURhdGEsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdGhpc10gKGJvb2wg
Y29tcGxldGVkKSB7CisgICAgICAgIG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCA9IGZhbHNlOwog
ICAgICAgICBpZiAoY29tcGxldGVkKSB7CiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCBlYWJmMTQ3
YzA5Y2Q5NDk5YzBlYjBmM2ViMjY0OGE4ODY0N2Y4MmRkLi5mZWIyNjU0Mjk2MjM3M2JjOWIyZjky
MzRlMjY2YTZlZDFiZjg5ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTIyLDE1ICsy
MiwxOCBAQAogI2luY2x1ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiTmF2aWdh
dG9yQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgIlNoYXJl
RGF0YS5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJsb2I7CiBjbGFzcyBEZWZl
cnJlZFByb21pc2U7CiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwogY2xhc3MgRE9NUGx1Z2luQXJy
YXk7Ci1zdHJ1Y3QgU2hhcmVEYXRhOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIFNo
YXJlRGF0YVJlYWRlcjsKIAogY2xhc3MgTmF2aWdhdG9yIGZpbmFsIDogcHVibGljIE5hdmlnYXRv
ckJhc2UsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSwg
cHVibGljIFN1cHBsZW1lbnRhYmxlPE5hdmlnYXRvcj4gewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoTmF2aWdhdG9yKTsKQEAgLTYzLDYgKzY2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgorICAgIHZvaWQgc2hvd1NoYXJlRGF0YShFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJj4sIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIFJlZlB0cjxTaGFyZURh
dGFSZWFkZXI+IG1fbG9hZGVyOworICAgIGJvb2wgbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0g
ZmFsc2U7CisgICAgCiAgICAgZXhwbGljaXQgTmF2aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBET01XaW5kb3cmKTsKIAogICAgIG11dGFibGUgUmVmUHRyPERPTVBsdWdpbkFycmF5PiBt
X3BsdWdpbnM7CkBAIC03MCw1ICs3Nyw0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV91c2VyQWdlbnQ7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9wbGF0Zm9ybTsKIH07Ci0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDVjMzkwN2MxMDc1ODA0OWQ4ODdjMDQ2MzFkYjRmOWMw
M2ZmMWFmNzkuLmZlZTZiOTllM2ZhNWUwNDhlNmIxOGEwNDliNDJkYTY0YWNiZjMyMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKICNp
bmNsdWRlICJGaWxlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwxMCArMzYsMTYgQEAgc3RydWN0
IFNoYXJlRGF0YSB7CiAgICAgU3RyaW5nIHVybDsKICAgICBWZWN0b3I8UmVmUHRyPEZpbGU+PiBm
aWxlczsKIH07CisKK3N0cnVjdCBSYXdGaWxlIHsKKyAgICBTdHJpbmcgZmlsZU5hbWU7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7Cit9OwogICAgIAogc3RydWN0IFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgewogICAgIFNoYXJlRGF0YSBzaGFyZURhdGE7CiAgICAgT3B0aW9uYWw8
VVJMPiB1cmw7CisgICAgVmVjdG9yPFJhd0ZpbGU+IGZpbGVzOwogfTsKICAgICAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDA5OGNlYWEyMzlj
ODZmY2QyMTQ0ODVlNmE5ZjBiZGJkOTBlZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNoYXJlRGF0YVJlYWRlci5oIgorCisjaW5jbHVkZSAiRmlsZVJlYWRlckxv
YWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmgiCisjaW5j
bHVkZSAiTmF2aWdhdG9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworU2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkKK3sKKyAgICAKK30KKworU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRh
UmVhZGVyKCkKK3sKKyAgICBjYW5jZWwoKTsKK30KKwordm9pZCBTaGFyZURhdGFSZWFkZXI6OnN0
YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNoYXJlRGF0YVdpdGhQYXJzZWRV
Ukwgc2hhcmVEYXRhKQoreworICAgIG1fZmlsZXNSZWFkU29GYXIgPSAwOworICAgIG1fc2hhcmVE
YXRhID0gV1RGTW92ZShzaGFyZURhdGEpOworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChh
dXRvJiBibG9iIDogbV9zaGFyZURhdGEuc2hhcmVEYXRhLmZpbGVzKSB7CisgICAgICAgIFJlZlB0
cjxGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcj4gbG9hZGVyID0gRmlsZVJlYWRlckxvYWRlcldyYXBw
ZXI6OmNyZWF0ZShjb3VudCwgW3RoaXNdIChFeGNlcHRpb25PcjxpbnQ+IGlkKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHRoaXMtPmRpZEZpbmlzaExvYWRpbmcoaWQpOworICAgICAgICB9KTsKKyAg
ICAgICAgbG9hZGVyLT5zdGFydChjb250ZXh0LCBibG9iLT5uYW1lKCksICpibG9iKTsKKyAgICAg
ICAgbV9wZW5kaW5nRmlsZUxvYWRzLmFwcGVuZChsb2FkZXIpOworICAgICAgICBjb3VudCArPSAx
OworICAgIH0KKyAgICBtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMucmVzZXJ2ZUNhcGFjaXR5
KG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkpOworfQorCit2b2lkIFNoYXJlRGF0
YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhFeGNlcHRpb25PcjxpbnQ+IGlkKQoreworICAgIGlm
IChpZC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihpZC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGF1dG8gbG9hZGVySWQgPSBpZC5yZXR1cm5WYWx1ZSgpOworICAgIAorICAgIFJh
d0ZpbGUgZmlsZTsKKyAgICBhdXRvIGZpbGVMb2FkID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRl
cklkXTsKKyAgICBmaWxlLmZpbGVOYW1lID0gUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXpl
U3VnZ2VzdGVkRmlsZW5hbWUoZmlsZUxvYWQtPmZpbGVOYW1lKCkpOworICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gZmlsZUxvYWQtPnJlYWRCdWZmZXIoKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gV1RG
TW92ZShzaGFyZWRCdWZmZXIpOworICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3Zl
KGZpbGUpKTsKKyAgICBtX2ZpbGVzUmVhZFNvRmFyICs9IDE7CisgICAgCisgICAgaWYgKG1fZmls
ZXNSZWFkU29GYXIgPT0gKGludCltX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSB7CisgICAgICAg
IG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOworICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtX3NoYXJlRGF0YSk7CisgICAgfQorfQorCit2b2lkIFNoYXJlRGF0YVJl
YWRlcjo6Y2FuY2VsKCkKK3sKKyAgICBmb3IgKGF1dG8mIGxvYWRlciA6IG1fcGVuZGluZ0ZpbGVM
b2FkcykKKyAgICAgICAgbG9hZGVyID0gbnVsbHB0cjsKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDJmOTNiYmQ4NjMyNDJiMmJiYmMyMTg4NWQx
OWYzNzk3Y2UwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGaWxlUmVhZGVy
TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOYXZp
Z2F0b3I7CitjbGFzcyBCbG9iOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcldyYXBwZXI7CitjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBTaGFyZURhdGFSZWFkZXI6IHB1Ymxp
YyBSZWZDb3VudGVkPFNoYXJlRGF0YVJlYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
U2hhcmVEYXRhUmVhZGVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25P
cjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlRGF0YVJlYWRlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkpOyB9CisgICAgflNoYXJlRGF0YVJlYWRlcigpOworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwpOworICAgIHZvaWQgY2FuY2Vs
KCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJik7CisK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwmPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KEV4Y2VwdGlvbk9yPGludD4pOworICAgIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgbV9zaGFyZURh
dGE7CisgICAgaW50IG1fZmlsZXNSZWFkU29GYXI7CisgICAgVmVjdG9yPFJlZlB0cjxGaWxlUmVh
ZGVyTG9hZGVyV3JhcHBlcj4+IG1fcGVuZGluZ0ZpbGVMb2FkczsKK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCmluZGV4IDk0MDQ3NDQz
NWY4ZGQzZDVlODM1Mjc3YjY2ZDMyZDhmZjMxYmIyYzIuLjBiZjEwM2Q0YTllYmQ5ZmRmY2M5MWMw
M2I2OTNlZDNhODNlNzM2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L21hYy9RdWFyYW50aW5lU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFj
L1F1YXJhbnRpbmVTUEkuaApAQCAtMzQsNiArMzQsNyBAQAogI2Vsc2UKIAogZW51bSBxdG5fZmxh
Z3MgeworICAgIFFUTl9GTEFHX0RPV05MT0FEID0gMHgwMDAxLAogICAgIFFUTl9GTEFHX1NBTkRC
T1ggPSAweDAwMDIsCiB9OwogCkBAIC00MywxMCArNDQsMTUgQEAgZW51bSBxdG5fZmxhZ3Mgewog
I2RlZmluZSBxdG5fcHJvY19pbml0IF9xdG5fcHJvY19pbml0CiAjZGVmaW5lIHF0bl9wcm9jX2lu
aXRfd2l0aF9zZWxmIF9xdG5fcHJvY19pbml0X3dpdGhfc2VsZgogI2RlZmluZSBxdG5fcHJvY19z
ZXRfZmxhZ3MgX3F0bl9wcm9jX3NldF9mbGFncwotCisjZGVmaW5lIHF0bl9maWxlX2FsbG9jIF9x
dG5fZmlsZV9hbGxvYworI2RlZmluZSBxdG5fZmlsZV9pbml0X3dpdGhfcGF0aCBfcXRuX2ZpbGVf
aW5pdF93aXRoX3BhdGgKKyNkZWZpbmUgcXRuX2ZpbGVfZnJlZSBfcXRuX2ZpbGVfZnJlZQorI2Rl
ZmluZSBxdG5fZmlsZV9hcHBseV90b19wYXRoIF9xdG5fZmlsZV9hcHBseV90b19wYXRoCisjZGVm
aW5lIHF0bl9maWxlX3NldF9mbGFncyBfcXRuX2ZpbGVfc2V0X2ZsYWdzCiAjZW5kaWYKIAogdHlw
ZWRlZiBzdHJ1Y3QgX3F0bl9wcm9jICpxdG5fcHJvY190OwordHlwZWRlZiBzdHJ1Y3QgX3F0bl9m
aWxlICpxdG5fZmlsZV90OwogCiBXVEZfRVhURVJOX0NfQkVHSU4KIApAQCAtNTYsNiArNjIsMTEg
QEAgaW50IHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmKHF0bl9wcm9jX3QpOwogaW50IHF0bl9wcm9j
X3NldF9mbGFncyhxdG5fcHJvY190LCB1aW50MzJfdCBmbGFncyk7CiBxdG5fcHJvY190IHF0bl9w
cm9jX2FsbG9jKCk7CiB2b2lkIHF0bl9wcm9jX2ZyZWUocXRuX3Byb2NfdCk7CitxdG5fZmlsZV90
IHF0bl9maWxlX2FsbG9jKHZvaWQpOwordm9pZCBxdG5fZmlsZV9mcmVlKHF0bl9maWxlX3QgcWYp
OworaW50IHF0bl9maWxlX3NldF9mbGFncyhxdG5fZmlsZV90IHFmLCB1aW50MzJfdCBmbGFncyk7
CitpbnQgcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aChxdG5fZmlsZV90IHFmLCBjb25zdCBjaGFyICpw
YXRoKTsKK2ludCBxdG5fZmlsZV9pbml0X3dpdGhfcGF0aChxdG5fZmlsZV90IHFmLCBjb25zdCBj
aGFyICpwYXRoKTsKIAogV1RGX0VYVEVSTl9DX0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5MmJiMjA0NmEyZjdiMzJiMjFiOWE5
NWE3NWYzYThiYjJjMzNkOGVjLi45OTBmNDVhYTIxYzk0MTMzZDQxZmJjZjY1MDkzYTU3ZmYzOTBl
NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5nUmVnaW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CkBAIC0yMDE5LDYgKzIwMjAs
MzEgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZpbGVDaG9vc2VyU2V0dGluZ3M+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgRmlsZUNob29zZXJTZXQKIAogICAgIHJldHVybiB0cnVlOwogfQorCit2
b2lkIEFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFZlY3RvcjxSYXdGaWxlPiYgZmlsZXMpCit7CisgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oZmlsZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGZpbGUgOiBm
aWxlcykgeworICAgICAgICBlbmNvZGVyIDw8IGZpbGUuZmlsZU5hbWU7CisgICAgICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBmaWxlLmZpbGVEYXRhLmdldCgpKTsKKyAgICB9Cit9CisK
K2Jvb2wgQXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgVmVjdG9yPFJhd0ZpbGU+JiBmaWxlcykKK3sKKyAgICB1aW50NjRfdCBkYXRhU2l6ZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgZmlsZXMucmVzaXplKGRhdGFTaXplKTsKKyAgICBmb3IgKGF1dG8mIGZpbGUgOiBm
aWxlcykgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbGUuZmlsZU5hbWUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBmaWxlLmZpbGVEYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CiAgICAgCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRh
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlRGF0YSYgc2V0dGluZ3MpCiB7
CkBAIC0yMDQyLDYgKzIwNjgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZQogewogICAgIGVu
Y29kZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwogICAgIGVuY29kZXIgPDwgc2V0dGluZ3MudXJs
OworICAgIGVuY29kZXIgPDwgc2V0dGluZ3MuZmlsZXM7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2Rl
cjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdzKQpAQCAtMjA1MCw2ICsyMDc3LDggQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgU2hhcmVEYXRhV2kKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc2V0dGluZ3MudXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2V0dGluZ3MuZmlsZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggNmJlY2JmNzBlMmFiMjRlYmY5MTZlNzBlOGEzOTNjYWUwZjI3ODQx
MS4uYjIyMmFlZmQ0N2I0MTUwOWE2ZTExZDJkZTRmMGZkZDU0MzVhMDc5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgxLDYgKzgxLDcgQEAg
Y2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERh
dGFiYXNlRGV0YWlsczsKIGNsYXNzIERyYWdEYXRhOworY2xhc3MgRmlsZTsKIGNsYXNzIEZpbHRl
ck9wZXJhdGlvbjsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBGbG9hdFBvaW50OwpA
QCAtMTI1LDYgKzEyNiw3IEBAIHN0cnVjdCBFdmVudFRyYWNraW5nUmVnaW9uczsKIHN0cnVjdCBF
eGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwogc3RydWN0IEZpbGVDaG9v
c2VyU2V0dGluZ3M7CitzdHJ1Y3QgUmF3RmlsZTsKIHN0cnVjdCBTaGFyZURhdGE7CiBzdHJ1Y3Qg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIHN0cnVjdCBMZW5ndGg7CkBAIC01NDksNiArNTUxLDEx
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJT
ZXR0aW5ncz4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIH07CiAgICAgCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFZlY3RvcjxXZWJDb3JlOjpSYXdGaWxlPj4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJhd0Zp
bGU+Jik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgVmVjdG9yPFdlYkNvcmU6OlJhd0ZpbGU+Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNoYXJlRGF0YT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhJik7CiAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2hhcmVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oCmluZGV4IDRh
Y2RiYjY5YTRiMmFiZTFhYzBmZTQ1YjM0ZWVkMWM2YWFhNzFjYTEuLmMzNDBkYjY4ZWVmYTk5Y2Y0
NzZjZWY1Yzg1ODEyZmIwYThmYTBlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLU2hhcmVTaGVldC5oCkBAIC00Miw3ICs0Miw2IEBAIHN0cnVjdCBTaGFyZURhdGFXaXRo
UGFyc2VkVVJMOwogLSAodm9pZClkaXNtaXNzOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vh
aykgaWQgPFdLU2hhcmVTaGVldERlbGVnYXRlPiBkZWxlZ2F0ZTsKLQogQGVuZAogCiBAcHJvdG9j
b2wgV0tTaGFyZVNoZWV0RGVsZWdhdGUgPE5TT2JqZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCmluZGV4IGIwMjQzM2MzMDNhNmY5MzlkYjQyYTdm
YzQwNDllOWVhYzU0MWIwMDYuLjliYTc5MjdiM2VmOTE1ZmNhYjUyMjAzMzQ4NGE5OWI0ZTM1MDBj
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVl
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0K
QEAgLTI4LDYgKzI4LDEwIEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogCisjaW1wb3J0ICJRdWFyYW50aW5lU1BJLmgi
CisKKyNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0
IDx3dGYvVVVJRC5oPgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZURhdGEuaD4KQEAgLTQ3LDYgKzUx
LDcgQEAgQGVuZAogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1NoYXJlU2hlZXQgeworICAg
IFJldGFpblB0cjxOU1N0cmluZz4gX3RlbXBvcmFyeUZpbGVTaGFyZURpcmVjdG9yeTsKICAgICBX
ZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF93ZWJWaWV3OwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS1No
YXJlU2hlZXREZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7CiAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBfY29tcGxldGlvbkhhbmRsZXI7CkBAIC0xMDYsMTAgKzExMSw0NSBAQCAt
ICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCAmKWRhdGEgaW5SZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAg
IGlmIChkYXRhLmZpbGVzLnNpemUoKSkgeworICAgICAgICBfdGVtcG9yYXJ5RmlsZVNoYXJlRGly
ZWN0b3J5ID0gYWRvcHROUyhbW1dLU2hhcmVTaGVldCBjcmVhdGVUZW1wb3JhcnlTaGFyaW5nRGly
ZWN0b3J5XSBjb3B5XSk7CisgICAgICAgIAorICAgICAgICBkaXNwYXRjaF9ncm91cF90IGZpbGVX
cml0ZUdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CisgICAgICAgIF9fYmxvY2sgYm9v
bCBzdWNjZXNzZnVsID0gdHJ1ZTsKKyAgICAgICAgYXV0byBxdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XS1NoYXJlU2hlZXQuU2hhcmVhYmxlRmlsZVdyaXRl
ciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisgICAgICAgIGZvciAoYXV0byBmaWxlIDogZGF0
YS5maWxlcykgeworICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZmlsZVdyaXRlR3Jv
dXAsIHF1ZXVlLCBeeworICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzc2Z1bCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1dL
U2hhcmVTaGVldCB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpmaWxlLmZpbGVOYW1lIGRhdGE6Zmls
ZS5maWxlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGVtcG9yYXJ5RGlyZWN0b3J5Ol90ZW1w
b3JhcnlGaWxlU2hhcmVEaXJlY3RvcnkuZ2V0KCldOworICAgICAgICAgICAgICAgIGlmICghZmls
ZVVSTCkgeworICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
W3NoYXJlRGF0YUFycmF5IGFkZE9iamVjdDpmaWxlVVJMXTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBkaXNwYXRjaF9ncm91cF9ub3RpZnkoZmlsZVdyaXRl
R3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBpZiAoIXN1
Y2Nlc3NmdWwpIHsKKyAgICAgICAgICAgICAgICBbc2VsZiBfZGlkQ29tcGxldGVXaXRoU3VjY2Vz
czpOT107CisgICAgICAgICAgICAgICAgW3NlbGYgZGlzbWlzc107CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW3NlbGYgcHJlc2VudFdpdGhTaGFy
ZURhdGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJlY3Q6cmVjdF07CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFtzZWxmIHByZXNlbnRXaXRoU2hh
cmVEYXRhQXJyYXk6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5SZWN0OnJlY3RdOworfQorCistICh2
b2lkKXByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJyYXkgKilzaGFyaW5nSXRlbXMgaW5S
ZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdAorewogICAgIFdLV2Vi
VmlldyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxlYXNlZCgpOwogICAgIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFy
aW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczpzaGFyZURhdGFBcnJheS5nZXQo
KV0pOworICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFkb3B0TlMoW1tOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJpbmdJdGVtc10pOwogICAgIF9zaGFy
aW5nU2VydmljZVBpY2tlci5nZXQoKS5kZWxlZ2F0ZSA9IHNlbGY7CiAgICAgCiAgICAgLy8gV0tT
aGFyZVNoZWV0IGNhbiBiZSByZWxlYXNlZCB1bmRlciBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGRl
bGVnYXRlIGNhbGxiYWNrcy4KQEAgLTEyNiw3ICsxNjYsNyBAQCAtICh2b2lkKXByZXNlbnRXaXRo
UGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCAmKWRhdGEg
aW5SZQogICAgIH0KICAgICBbX3NoYXJpbmdTZXJ2aWNlUGlja2VyIHNob3dSZWxhdGl2ZVRvUmVj
dDpwcmVzZW50YXRpb25SZWN0IG9mVmlldzp3ZWJWaWV3IHByZWZlcnJlZEVkZ2U6TlNNaW5ZRWRn
ZV07CiAjZWxzZQotICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlB
Y3Rpdml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmVE
YXRhQXJyYXkuZ2V0KCkgYXBwbGljYXRpb25BY3Rpdml0aWVzOm5pbF0pOworICAgIF9zaGFyZVNo
ZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZpZXdDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmluZ0l0ZW1zIGFwcGxpY2F0aW9uQWN0aXZp
dGllczpuaWxdKTsKICAgICBbX3NoYXJlU2hlZXRWaWV3Q29udHJvbGxlciBzZXRDb21wbGV0aW9u
V2l0aEl0ZW1zSGFuZGxlcjpeKE5TU3RyaW5nICosIEJPT0wgY29tcGxldGVkLCBOU0FycmF5ICos
IE5TRXJyb3IgKikgewogICAgICAgICBbc2VsZiBfZGlkQ29tcGxldGVXaXRoU3VjY2Vzczpjb21w
bGV0ZWRdOwogICAgICAgICBbc2VsZiBkaXNwYXRjaERpZERpc21pc3NdOwpAQCAtMTgwLDYgKzIy
MCw4IEBAIC0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5n
U2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5CiAKIC0gKHZvaWQpX2RpZENvbXBsZXRlV2l0
aFN1Y2Nlc3M6KEJPT0wpc3VjY2VzcwogeworICAgIFtXS1NoYXJlU2hlZXQgcmVtb3ZlVGVtcFNo
YXJpbmdEaXJlY3Rvcnk6X3RlbXBvcmFyeUZpbGVTaGFyZURpcmVjdG9yeS5nZXQoKV07CisgICAg
X3RlbXBvcmFyeUZpbGVTaGFyZURpcmVjdG9yeSA9IG51bGxwdHI7CiAgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoX2NvbXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAoY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOwpAQCAtMjE1
LDYgKzI1NywxMjEgQEAgLSAodm9pZClkaXNwYXRjaERpZERpc21pc3MKICAgICAgICAgW19kZWxl
Z2F0ZSBzaGFyZVNoZWV0RGlkRGlzbWlzczpzZWxmXTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykK
KysgKEJPT0wpc2V0UXVhcmFudGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6KE5TU3RyaW5nICop
ZmlsZVBhdGgKK3sKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
ZmlsZVBhdGhdOworCisgICAgYXV0byBxdWFyYW50aW5lUHJvcGVydGllcyA9IEB7CisgICAgICAg
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlS2V5OiAoX19icmlkZ2UgTlNT
dHJpbmcgKilrTFNRdWFyYW50aW5lVHlwZVdlYkRvd25sb2FkLAorICAgICAgICAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrTFNRdWFyYW50aW5lQWdlbnRCdW5kbGVJZGVudGlmaWVyS2V5OiBXZWJDb3Jl
OjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKQorICAgIH07CisKKyAgICBOU0Vycm9yICpl
cnJvcjsKKyAgICBpZiAoIVtmaWxlVVJMIHNldFJlc291cmNlVmFsdWU6cXVhcmFudGluZVByb3Bl
cnRpZXMgZm9yS2V5Ok5TVVJMUXVhcmFudGluZVByb3BlcnRpZXNLZXkgZXJyb3I6JmVycm9yXSkg
eworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBpbmZvcm1hdGlv
biBmb3IgZmlsZSBwYXRoOiAlQDogJUAiLCBmaWxlUGF0aCwgZXJyb3IpOworICAgICAgICByZXR1
cm4gTk87CisgICAgfQorCisgICAgLy8gV2hldGhlciB0aGUgZmlsZSB3YXMgZG93bmxvYWRlZCBi
eSBzYW5kYm94ZWQgV2ViUHJvY2VzcyBvciBub3QsIExTU2V0SXRlbUF0dHJpYnV0ZSByZXNldHMg
dGhlIGZsYWdzIHRvIDAgKGFkdmlzb3J5IFFUTl9GTEFHX0RPV05MT0FELAorICAgIC8vIHdoaWNo
IGNhbiBiZSB0aGVuIHJlbW92ZWQgYnkgV2ViUHJvY2VzcykuIFJlcGxhY2UgdGhlIGZsYWdzIHdp
dGggc2FuZGJveCBxdWFyYW50aW5lIG9uZXMsIHdoaWNoIGNhbm5vdCBiZSByZW1vdmVkIGJ5IHNh
bmRib3hlZCBwcm9jZXNzZXMuCisgICAgcmV0dXJuIFtXS1NoYXJlU2hlZXQgYXBwbHlRdWFyYW50
aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6ZmlsZVBhdGhdOworfQorCisr
IChCT09MKWFwcGx5UXVhcmFudGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRo
OihOU1N0cmluZyAqKWZpbGVQYXRoCit7CisgICAgcXRuX2ZpbGVfdCBmcSA9IHF0bl9maWxlX2Fs
bG9jKCk7CisgICAgaW50IHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2luaXRfd2l0aF9wYXRo
KGZxLCBmaWxlUGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOworICAgIGlmIChxdWFyYW50
aW5lRXJyb3IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcmV0cmlldmUgcXVhcmFu
dGluZSBmbGFncyBmb3IgZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBxdWFyYW50aW5lRXJy
b3IpOworICAgICAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0dXJuIE5POworICAg
IH0KKworICAgIHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX3NldF9mbGFncyhmcSwgUVROX0ZM
QUdfU0FOREJPWCB8IFFUTl9GTEFHX0RPV05MT0FEKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9y
KSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHNldCBxdWFyYW50aW5lIGZsYWdzIGlu
IHF0bl9maWxlX3Qgc3RydWN0dXJlIGZvciBmaWxlIHBhdGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1
YXJhbnRpbmVFcnJvcik7CisgICAgICAgIHF0bl9maWxlX2ZyZWUoZnEpOworICAgICAgICByZXR1
cm4gTk87CisgICAgfQorCisgICAgcXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVfYXBwbHlfdG9f
cGF0aChmcSwgZmlsZVBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKKyAgICBpZiAocXVh
cmFudGluZUVycm9yKQorICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhcHBseSBxdWFyYW50
aW5lIGZsYWdzIHRvIGZpbGUgcGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9y
KTsKKworICAgIHF0bl9maWxlX2ZyZWUoZnEpOworCisgICAgcmV0dXJuIFlFUzsKK30KKyNlbmRp
ZgorCisrIChCT09MKXJlbW92ZVRlbXBTaGFyaW5nRGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVj
dG9yeVBhdGgKK3sKKyAgICBpZiAoIVtkaXJlY3RvcnlQYXRoIGxlbmd0aF0pCisgICAgICAgIHJl
dHVybiBOTzsKKyAgICAKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpkaXJlY3RvcnlQYXRoXSkKKyAgICAgICAgcmV0dXJuIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpkaXJlY3RvcnlQYXRoIGVy
cm9yOm5pbF07CisgICAgCisgICAgcmV0dXJuIFlFUzsKK30KKworKyAoTlNTdHJpbmcgKiljcmVh
dGVUZW1wb3JhcnlTaGFyaW5nRGlyZWN0b3J5Cit7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldLRmlsZVNo
YXJlIik7CisgICAgCisgICAgaWYgKCFbdGVtcG9yYXJ5RGlyZWN0b3J5IGxlbmd0aF0pCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGVtcG9yYXJ5RGly
ZWN0b3J5XSkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0UGF0aDp0ZW1wb3JhcnlEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVj
dG9yaWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiB0ZW1wb3JhcnlE
aXJlY3Rvcnk7Cit9CisKKysgKE5TU3RyaW5nICopY3JlYXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9y
eUZvckZpbGU6KE5TU3RyaW5nICopdGVtcG9yYXJ5RGlyZWN0b3J5Cit7CisgICAgTlNTdHJpbmcg
KnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBpZiAo
IVtyYW5kb21EaXJlY3RvcnkgbGVuZ3RoXSB8fCAhW3RlbXBvcmFyeURpcmVjdG9yeSBsZW5ndGhd
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFt0ZW1wb3Jh
cnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiLyVAIiwgcmFuZG9tRGlyZWN0b3J5XV07CisgICAgCisgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6ZGF0YVBhdGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4g
ZGF0YVBhdGg7Cit9CisKKysgKE5TVVJMICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6KE5TU3Ry
aW5nICopZmlsZU5hbWUgZGF0YTooTlNEYXRhICopIGZpbGVEYXRhIHRlbXBvcmFyeURpcmVjdG9y
eTooTlNTdHJpbmcgKikgdGVtcG9yYXJ5RGlyZWN0b3J5Cit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgaWYgKCFbdGVtcG9yYXJ5RGlyZWN0b3J5IGxlbmd0aF0gfHwgIVtm
aWxlTmFtZSBsZW5ndGhdIHx8ICFmaWxlRGF0YSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAK
KyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmlsZSA9IFtXS1NoYXJlU2hlZXQg
Y3JlYXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6dGVtcG9yYXJ5RGlyZWN0b3J5XTsK
KyAgICBpZiAoIXRlbXBvcmFyeURpcmVjdG9yeUZvckZpbGUpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgTlNTdHJpbmcgKmZpbGUgPSBbdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmlsZSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZU5hbWVdOworCisgICAgTlNVUkwgKmZp
bGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVdOworICAgIAorICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOworICAgIFtmaWxlRGF0YSB3cml0ZVRvVVJMOmZpbGVVUkwgb3B0aW9uczpO
U0RhdGFXcml0aW5nQXRvbWljIGVycm9yOiZlcnJvcl07CisgICAgaWYgKGVycm9yKQorICAgICAg
ICByZXR1cm4gbmlsOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVtXS1NoYXJlU2hlZXQg
c2V0UXVhcmFudGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6ZmlsZV0pCisgICAgICAgIHJldHVy
biBuaWw7CisjZW5kaWYKKyAgICByZXR1cm4gZmlsZVVSTDsKK30KKwogQGVuZAogCiAjZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5M2YxN2Y3MGFkYTY5NjVlMjI2MTQzNjdiYjM1MGEzMjI3NjNhMzhiLi43
ZTIwZWQwMWNhN2FjOTViZTVlYjk4YTFhMTgwNDBmNzAzZWNiM2JiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmaWVkIHRvIG5vIGxv
bmdlciB1c2UgdXJsIG9mIGltYWdlLgorCisgICAgICAgICogZmFzdC93ZWItc2hhcmUvc2hhcmUt
d2l0aC1maWxlcy5odG1sOgorCiAyMDIwLTA0LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9ub3RpZmljYXRpb25zL2V2ZW50LW9uY2xvc2UuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOWRlYjMwN2Y4NmI1MDIxOGMyNWFhMWU0
YTIxNTkyOTY3ZmI1YjQzZi4uMDc4NzA4MTU0ZDRjZGY5NTFhYjY2MzAxY2RlNjJmMDhhYzFmNGQ0
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MDMtMTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9y
IG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUv
Y2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA0
LTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
VXBkYXRlIGRvbS9ldmVudHMvRXZlbnQtZGlzcGF0Y2gtcmVkaXNwYXRjaC5odG1sIGZyb20gdXBz
dHJlYW0gV1BUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13
aXRoLWZpbGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZp
bGVzLmh0bWwKaW5kZXggODU2ZWQyNDQxODg3MTg4ZGI2NDk4ZDNkYjE3MDgwNzE0OTBmNWM4Ni4u
OWI4OTBkNGMxYjEzNDdkMDljYjYxY2EyNjI0MjMyZDM1MGMwNjk5MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbApAQCAtMiw2ICsyLDcg
QEAKIAogPGh0bWw+CiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2Fs
ZT01LCB3aWR0aD1kZXZpY2Utd2lkdGgiPgorCiA8aGVhZD4KIAogICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KQEAgLTE2LDEwICsxNywxMiBA
QAogCiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCB0ZXh0RmlsZSA9IG5ldyBGaWxlKFsnaGVsbG8nXSwgJ2hlbGxvLnR4dCcsIHt0eXBlOid0
ZXh0L3BsYWluJ30pOworCisgICAgICAgICAgICB2YXIgYmxvYiA9IHRoaXMucmVzcG9uc2U7Cisg
ICAgICAgICAgICBjb25zdCB0ZXh0RmlsZSA9IG5ldyBGaWxlKFsnVGhpcyBpcyBhIHRleHQgZmls
ZSddLCAnVGV4dEZpbGUudHh0Jywge3R5cGU6J3RleHQvaHRtbCd9KTsKICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
ICgpID0+IHsKLSAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iuc2hhcmUoe3RleHQ6ICJzYWRmIiwg
ZmlsZXM6IFt0ZXh0RmlsZV19KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgd3JpdGUoIlBBU1M6IFNoYXJlIHNoZWV0IGludm9rZWQuIik7CisgICAgICAgICAgICBuYXZp
Z2F0b3Iuc2hhcmUoe3RleHQ6ICJUaGlzIGlzIGEgdGV4dCBmaWxlIiwgZmlsZXM6IFt0ZXh0Rmls
ZV19KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiUEFTUzogU2hh
cmUgc2hlZXQgaW52b2tlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgfSk7ICAgIAogICAgICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397869</attachid>
            <date>2020-04-28 12:30:08 -0700</date>
            <delta_ts>2020-05-07 11:29:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200428153007.patch</filename>
            <type>text/plain</type>
            <size>44513</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3YmIyNTc5OTlmYWFl
NmVkYmFiMjFlM2QxNmM5YWVhM2VmYzJmNS4uYzA1ODMyZTdmNjYxNDEwOThlYTlmODVhNzIwNzli
YmIzYTIyYjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAzLTE4ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0yNCAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIAogICAgICAgICBbT3Bl
blNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBBUElzIGZvciBITUFDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NTgx
MDdjYjliOGY4NTE0NGJiNmI0MDZiZjc1MTliY2FiNjhmYzcuLjIzNjZmYzY3MGI2MWJkMWYxMjll
ZjVlYzMxMzBhZjJlZTEwZDY0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDMt
MTggIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBv
YmplY3RzIG92ZXIgSVBDIGFuZAorICAgICAgICBzaGFyaW5nIG9mIGZpbGVzIHRvIHNoYXJlIHNo
ZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUubW06IEFkZGVkLgorICAgICAgICAo
K1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aF0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ10pOgor
ICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSByZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hh
cmluZ10pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBzZXRRdWFyYW50aW5lSW5m
b3JtYXRpb25Gb3JGaWxlUGF0aDpdKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUg
YXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6XSk6Cisg
ICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGNyZWF0ZUZpbGVuYW1lOl0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpkYXRhOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW06CisgICAgICAgICgt
W1dLU2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6aW5SZWN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6
XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDQtMjQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9t
YXRpb246IHRpbWVvdXQgdW5kZXJuZWF0aCBBdXRvbWF0aW9uLmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uIGluIFNlbGVuaXVtIHRlc3QgZnJhbWVfc3dpdGNoaW5nX3Rlc3RzLnB5Ojp0ZXN0U2hv
dWxkTm90QmVBYmxlVG9Eb0FueXRoaW5nVGhlRnJhbWVJc0RlbGV0ZWRGcm9tVW5kZXJVc1tTYWZh
cmldCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDZmMTU0ZjEzOWMwNGQ1OGI0ODY5OTk3OTdjYWRlM2YwNzM2
ODk4NzkuLjAzNGM1YTRmZWViOGZlYTVjMDcxYzFlNmE2ZDM3ODcwNzIxYzlmMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNjI2LDYgKzE2MjYsNyBAQCBwYWdlL0RyYWdDb250cm9sbGVyLmNwcAogcGFn
ZS9FZGl0YWJsZUltYWdlUmVmZXJlbmNlLmNwcAogcGFnZS9FdmVudEhhbmRsZXIuY3BwCiBwYWdl
L0V2ZW50U291cmNlLmNwcAorcGFnZS9GaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5jcHAKIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAogcGFnZS9GcmFtZS5jcHAKIHBhZ2UvRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyLmNwcApAQCAtMTY4NCw2ICsxNjg1LDcgQEAgcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
IHBhZ2UvU2V0dGluZ3NCYXNlLmNwcAorcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcAogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKIHBhZ2UvU3VzcGVu
ZGFibGVUaW1lci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA1MTEyNTZjODlhM2U1NmE2N2Y1NzMzOGRlM2M0NDg1M2VhMDcz
YTY4Li4wMTc2ZWI4OGU1NjgwZmM5Yjg3MjVhYjg5MGMyZTgzZjYzNWY1YWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQs
NiArNDQ0LDcgQEAKIAkJMTk3QjE4MEMxNTA2MzUzMjAwRTRBREE4IC8qIFNWR1JlbmRlcmluZ0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE5
N0IxODBCMTUwNjM0QzAwMEU0QURBOCAvKiBTVkdSZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJ
CTE5QkZGNjRGMTFDMEYyQUMwMEI4QzA0RCAvKiBKU1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOUJGRjY0
QTExQzBGMkFDMDBCOEMwNEQgLyogSlNTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oICovOyB9
OwogCQkxQTA4RkVERDFENTkyQjhCMDA4QkE4Q0IgLyogUGx1Z2luSW5mb1Byb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTA4RkVEQjFENTky
QjhCMDA4QkE4Q0IgLyogUGx1Z2luSW5mb1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUEwQzIyNkYyNDRFMTM1NDAwRUQ2MTREIC8q
IEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTBDMjI2RDI0NEUxMzUzMDBFRDYxNEQgLyogRmlsZVJlYWRlckxv
YWRlcldyYXBwZXIuaCAqLzsgfTsKIAkJMUEwRDU3MzcwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJm
bG93RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBMEQ1NzM1MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEwRDU3NDEwQTVDNzg2NzAw
N0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEwRDU3M0YwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dF
dmVudC5oICovOyB9OwogCQkxQTE0MTRCNTEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZh
bWlseU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMTQxNEIzMTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3Bw
ICovOyB9OwpAQCAtNjE0OSw2ICs2MTUwLDggQEAKIAkJMTlCRkY2NEExMUMwRjJBQzAwQjhDMDRE
IC8qIEpTU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTA4RkVEQTFENTkyQjhCMDA4QkE4Q0IgLyogUGx1Z2luSW5mb1By
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbklu
Zm9Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDhGRURCMUQ1
OTJCOEIwMDhCQThDQiAvKiBQbHVnaW5JbmZvUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z2luSW5mb1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBMEMyMjZDMjQ0RTEzNTMwMEVENjE0RCAvKiBGaWxlUmVhZGVyTG9hZGVyV3Jh
cHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMEMyMjZEMjQ0RTEzNTMwMEVENjE0RCAv
KiBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlUmVhZGVyTG9h
ZGVyV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTBENTczNDBBNUM3
N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gT3ZlcmZsb3dFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMEQ1NzM1MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVyZmxvd0V2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM4MEE1Qzc4MTIwMDdFREQ0QyAvKiBPdmVyZmxvd0V2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT3ZlcmZsb3dFdmVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTcwLDYgKzYxNzMsOCBAQAogCQkxQTJBNjgyMjBC
NUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9ncmVzc1RyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEyQUFDNTYwREMyQTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQUFDNTcwREMy
QTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFBMkM2NjcxMjQyQUZFRjcwMDMwNTVFQyAvKiBTaGFyZURhdGFS
ZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVEYXRhUmVhZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFNoYXJl
RGF0YVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZURhdGFSZWFkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVB
dXRob3JpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0
ZUF1dGhvcml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTM1ODZERDE1
MjY0QzQ1MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDkyMyw2ICsyMDkyOCw4IEBACiAJCQkJRTBGRUYz
NzFCMjdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmNwcCAqLywKIAkJCQlFMEZFRjM3MUIx
N0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuaCAqLywKIAkJCQlFMEZFRjM3MUIwN0M1M0VB
QzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuaWRsICovLAorCQkJCTFBMEMyMjZDMjQ0RTEzNTMwMEVE
NjE0RCAvKiBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlci5jcHAgKi8sCisJCQkJMUEwQzIyNkQyNDRF
MTM1MzAwRUQ2MTREIC8qIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmggKi8sCiAJCQkJMTQ5OTNC
RTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMTQ5OTNC
RTQwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oICovLAogCQkJCTA2MjI4Nzgz
MEI0REIzMjIwMDBDMzRERiAvKiBGb2N1c0RpcmVjdGlvbi5oICovLApAQCAtMjExMDEsNiArMjEx
MDgsOCBAQAogCQkJCTdDNkVGRUVBMUY5NDZBMkUwMEZGQUQ0MSAvKiBTZXR0aW5nc0RlZmF1bHRW
YWx1ZXMuaCAqLywKIAkJCQkxREM1NTQwMDIxMUJBOEM4MDA0Qjc4MEUgLyogU2hhcmVEYXRhLmgg
Ki8sCiAJCQkJMURDNTUzRkYyMTFCQTg0MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8sCisJ
CQkJMUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5jcHAgKi8sCisJ
CQkJMUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5oICovLAogCQkJ
CTVDNjg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRlci5jcHAgKi8sCiAJCQkJ
NUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8sCiAJCQkJNjI2
Q0RFMEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLywKQEAgLTMw
Mzg3LDYgKzMwMzk2LDcgQEAKIAkJCQk5NzZENkM4OTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVJl
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU3NTg0MUUxMjc3OUFEQTAwNjI2MjhCIC8qIEZp
bGVSZWFkZXJMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFNzU4NDFGMTI3NzlBREEwMDYy
NjI4QiAvKiBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTBD
MjI2RjI0NEUxMzU0MDBFRDYxNEQgLyogRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJFREYzNjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRUIxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRjFCRkY5MTIxQ0IwQ0UwMEMyNzYyNyAvKiBGaWxl
U3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
aWxlUmVhZGVyTG9hZGVyV3JhcHBlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY2ZTdlMTFiZDI0MTljYWY4
MjM5N2ZmMTMwNjYxZWI0OWYxYjgwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmgiCisKKyNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyLmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgor
I2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcldyYXBwZXI6OnJlYWRJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBCbG9iJiBibG9iKQoreworICAg
IG1fYmxvYiA9ICZibG9iOworCisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJM
b2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCBzdGF0aWNfY2FzdDxG
aWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyLT5zZXREYXRhVHlw
ZShtX2Jsb2ItPnR5cGUoKSk7CisgICAgbV9sb2FkZXItPnN0YXJ0KCZjb250ZXh0LCBibG9iKTsK
K30KKworRmlsZVJlYWRlckxvYWRlcldyYXBwZXI6OkZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyKGlu
dCBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxpbnQ+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCisgICAgLCBtX2lkKGlkKQoreworICAgIAorfQorCitGaWxlUmVhZGVyTG9hZGVy
V3JhcHBlcjo6fkZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyKCkKK3sKKyAgICBtX2Jsb2IgPSBudWxs
cHRyOworICAgIG1fYmxvYkRhdGEgPSBudWxscHRyOworICAgIGNhbmNlbCgpOworfQorCit2b2lk
IEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBTdHJpbmcgZmlsZU5hbWUsIEJsb2ImIHNoYXJlRGF0YSkKK3sKKyAgICBtX2ZpbGVO
YW1lID0gZmlsZU5hbWU7CisgICAgcmVhZEludGVybmFsKGNvbnRleHQsIHNoYXJlRGF0YSk7Cit9
CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcldyYXBwZXI6OmRpZEZpbmlzaExvYWRpbmcoKQorewor
ICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKKyAg
ICBtX2Jsb2JEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICAKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1faWQpOworfQorCit2b2lkIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpk
aWRSZWNlaXZlRGF0YSgpCit7CisgICAgCit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcldyYXBw
ZXI6OmRpZFN0YXJ0TG9hZGluZygpCit7CisgICAgCit9CisKK3ZvaWQgRmlsZVJlYWRlckxvYWRl
cldyYXBwZXI6OmRpZEZhaWwoaW50IGVycm9yQ29kZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXJy
b3JDb2RlKTsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJBYm9ydCBkdWUgdG8gZXJyb3Igd2hp
bGUgcmVhZGluZyBmaWxlcy4iX3MgfSk7Cit9Cit2b2lkIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVy
OjpjYW5jZWwoKQoreworICAgIGlmIChtX2xvYWRlcikgeworICAgICAgICBtX2xvYWRlci0+Y2Fu
Y2VsKCk7CisgICAgICAgIG1fbG9hZGVyID0gbnVsbHB0cjsKKyAgICB9Cit9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Yw
NjUyYjg4ZmMyNWY1NDQxZjQyYzBmMzUzMjNkZWU2MmU5NjllMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRmlsZVJlYWRlckxvYWRlcldyYXBwZXIuaApAQCAtMCwwICsx
LDY2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBC
bG9iOworY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKK2NsYXNzIE5hdmlnYXRvcjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyIDog
cHJpdmF0ZSBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVh
ZGVyTG9hZGVyV3JhcHBlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RmlsZVJlYWRlckxv
YWRlcldyYXBwZXI+IGNyZWF0ZShpbnQgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0
aW9uT3I8aW50Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsZVJlYWRlckxvYWRlcldyYXBwZXIoaWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7
IH0KKyAgICB+RmlsZVJlYWRlckxvYWRlcldyYXBwZXIoKTsKKyAgICB2b2lkIHN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBTdHJpbmcsIEJsb2ImKTsKKyAgICB2b2lkIGNhbmNlbCgpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Js
b2JEYXRhOyB9CisgICAgU3RyaW5nIGZpbGVOYW1lKCkgeyByZXR1cm4gbV9maWxlTmFtZTsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyKGludCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxpbnQ+KT4mJik7CisgICAgdm9pZCByZWFk
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJsb2ImKTsKKyAgICB2b2lkIGRpZFN0
YXJ0TG9hZGluZygpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoaW50IGVy
cm9yQ29kZSkgZmluYWw7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PGludD4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIGludCBtX2lkOworICAgIFJlZlB0cjxC
bG9iPiBtX2Jsb2I7CisgICAgU3RyaW5nIG1fZmlsZU5hbWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9ibG9iRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVJlYWRlckxvYWRlcj4g
bV9sb2FkZXI7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggY2FjYzJh
MTMzNjk5MjZiZmQ2OWQxZTU5YzMxOTE0YWNjMzYxZTI3NC4uODkwYjc2MjlmMGZiNmI4OTRmOGUy
ODA3YjJkYzhjOGY0MDkxZjk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNDMs
NiArNDMsOCBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTaGFyZURhdGEuaCIKKyNpbmNsdWRlICJTaGFyZURhdGFSZWFkZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KQEAgLTExMiw4ICsxMTQsMTMgQEAgYm9vbCBOYXZpZ2F0b3I6OmNhblNoYXJlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJlRGF0YSYgZGF0YSkKICAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGRhdGEudGl0bGUuaXNOdWxsKCkgJiYgZGF0YS51cmwuaXNOdWxsKCkgJiYgZGF0YS50
ZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpCisgICAg
ICAgIGlmICghZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyNpZiBFTkFCTEUoRklMRV9TSEFSRSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTEzOSw3ICsxNDYsNyBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIAogICAgIGF1dG8q
IHdpbmRvdyA9IHRoaXMtPndpbmRvdygpOwogICAgIC8vIE5vdGUgdGhhdCB0aGUgc3BlY2lmaWNh
dGlvbiBkb2VzIG5vdCBpbmRpY2F0ZSB3ZSBzaG91bGQgY29uc3VtZSB1c2VyIGFjdGl2YXRpb24u
IFdlIGFyZSBpbnRlbnRpb25hbGx5IHN0cmljdGVyIGhlcmUuCi0gICAgaWYgKCF3aW5kb3cgfHwg
IXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVudEFjdGl2YXRpb24oKSkgeworICAgIGlmICghd2luZG93
IHx8ICF3aW5kb3ctPmNvbnN1bWVUcmFuc2llbnRBY3RpdmF0aW9uKCkgfHwgbV9pc1ByZXNlbnRp
bmdTaGFyZVNoZWV0KSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ3LDEwICsxNTQsMzggQEAgdm9pZCBOYXZp
Z2F0b3I6OnNoYXJlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYXJl
RGF0YSYgZGF0YSwgUmUKICAgICBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YSA9IHsK
ICAgICAgICAgZGF0YSwKICAgICAgICAgdXJsLAorICAgICAgICB7IH0sCiAgICAgfTsKICAgICAK
KyAgICBpZiAoIWRhdGEuZmlsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2xvYWRlcikK
KyAgICAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgCisgICAgICAgIG1fbG9h
ZGVyID0gU2hhcmVEYXRhUmVhZGVyOjpjcmVhdGUoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+IHJlYWREYXRhKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIHNob3dTaGFyZURhdGEocmVhZERhdGEsIFdURk1vdmUocHJv
bWlzZSkpOworICAgICAgICB9KTsKKyAgICAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIFdU
Rk1vdmUoc2hhcmVEYXRhKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGhpcy0+c2hv
d1NoYXJlRGF0YShzaGFyZURhdGEsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIE5hdmln
YXRvcjo6c2hvd1NoYXJlRGF0YShFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4g
cmVhZERhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAocmVh
ZERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlYWREYXRh
LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAg
YXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgp
LnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
Ym9vbCBjb21wbGV0ZWQpIHsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gdHJ1ZTsK
KyAgICBhdXRvIHNoYXJlRGF0YSA9IHJlYWREYXRhLnJldHVyblZhbHVlKCk7CisgICAgCisgICAg
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuc2hvd1NoYXJlU2hlZXQoc2hhcmVEYXRhLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHRoaXNdIChib29sIGNvbXBsZXRlZCkgeworICAgICAgICBt
X2lzUHJlc2VudGluZ1NoYXJlU2hlZXQgPSBmYWxzZTsKICAgICAgICAgaWYgKGNvbXBsZXRlZCkg
ewogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggZWFiZjE0N2MwOWNkOTQ5OWMwZWIwZjNlYjI2NDhh
ODg2NDdmODJkZC4uOGM2MWNhNGNhNjJlMTcxNDVkYmIzM2EzNWRjODdjNThjMDUxNTAwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0yMiwxNSArMjIsMTggQEAKICNpbmNsdWRlICJET01X
aW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKICNpbmNsdWRlICJTdXBw
bGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBCbG9iOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRE9N
TWltZVR5cGVBcnJheTsKIGNsYXNzIERPTVBsdWdpbkFycmF5Owotc3RydWN0IFNoYXJlRGF0YTsK
K2NsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CitjbGFzcyBTaGFyZURhdGFSZWFkZXI7CiAKIGNsYXNz
IE5hdmlnYXRvciBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBTdXBwbGVtZW50YWJsZTxO
YXZpZ2F0b3I+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE5hdmlnYXRvcik7CkBAIC02
MywxMiArNjYsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgdm9pZCBzaG93
U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CiAgICAgZXhwbGljaXQgTmF2aWdhdG9yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBET01XaW5kb3cmKTsKIAorICAgIG11dGFibGUgUmVmUHRyPFNoYXJlRGF0YVJlYWRl
cj4gbV9sb2FkZXI7CisgICAgbXV0YWJsZSBib29sIG1faXNQcmVzZW50aW5nU2hhcmVTaGVldCB7
IGZhbHNlIH07CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsK
ICAgICBtdXRhYmxlIFJlZlB0cjxET01NaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBt
dXRhYmxlIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICBtdXRhYmxlIFN0cmluZyBtX3BsYXRmb3Jt
OwogfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggNWMzOTA3YzEwNzU4MDQ5ZDg4
N2MwNDYzMWRiNGY5YzAzZmYxYWY3OS4uZmVlNmI5OWUzZmE1ZTA0OGU2YjE4YTA0OWI0MmRhNjRh
Y2JmMzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDEwICsz
NiwxNiBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKICAgICBTdHJpbmcgdXJsOwogICAgIFZlY3RvcjxS
ZWZQdHI8RmlsZT4+IGZpbGVzOwogfTsKKworc3RydWN0IFJhd0ZpbGUgeworICAgIFN0cmluZyBm
aWxlTmFtZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKK307CiAgICAgCiBz
dHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CiAgICAgU2hhcmVEYXRhIHNoYXJlRGF0YTsK
ICAgICBPcHRpb25hbDxVUkw+IHVybDsKKyAgICBWZWN0b3I8UmF3RmlsZT4gZmlsZXM7CiB9Owog
ICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY3MzhmYTU1NGEwY2QxYmY5NTI5YzhjNGU4ZjA5OGNiZjhiYTI3YzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTAsMCArMSw5
MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhUmVhZGVyLmgiCisKKyNpbmNsdWRl
ICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlcldy
YXBwZXIuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJl
YWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworICAgIAorfQorCitTaGFyZURhdGFSZWFk
ZXI6On5TaGFyZURhdGFSZWFkZXIoKQoreworICAgIGNhbmNlbCgpOworfQorCit2b2lkIFNoYXJl
RGF0YVJlYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCYmIHNoYXJlRGF0YSkKK3sKKyAgICBtX2ZpbGVzUmVhZFNvRmFyID0g
MDsKKyAgICBtX3NoYXJlRGF0YSA9IFdURk1vdmUoc2hhcmVEYXRhKTsKKyAgICBpbnQgY291bnQg
PSAwOworICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2hh
cmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgYmxvYiA6IG1f
c2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcykgeworICAgICAgICBSZWZQdHI8RmlsZVJlYWRlckxv
YWRlcldyYXBwZXI+IGxvYWRlciA9IEZpbGVSZWFkZXJMb2FkZXJXcmFwcGVyOjpjcmVhdGUoY291
bnQsIFt0aGlzXSAoRXhjZXB0aW9uT3I8aW50PiBpZCkgbXV0YWJsZSB7CisgICAgICAgICAgICB0
aGlzLT5kaWRGaW5pc2hMb2FkaW5nKGlkKTsKKyAgICAgICAgfSk7CisgICAgICAgIGxvYWRlci0+
c3RhcnQoY29udGV4dCwgYmxvYi0+bmFtZSgpLCAqYmxvYik7CisgICAgICAgIG1fcGVuZGluZ0Zp
bGVMb2Fkcy51bmNoZWNrZWRBcHBlbmQobG9hZGVyKTsKKyAgICAgICAgY291bnQgKz0gMTsKKyAg
ICB9Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKEV4Y2VwdGlv
bk9yPGludD4gaWQpCit7CisgICAgaWYgKGlkLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkLnJlbGVhc2VFeGNlcHRpb24oKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXV0byBsb2FkZXJJZCA9IGlkLnJldHVy
blZhbHVlKCk7CisgICAgCisgICAgUmF3RmlsZSBmaWxlOworICAgIGF1dG8gZmlsZUxvYWQgPSBt
X3BlbmRpbmdGaWxlTG9hZHNbbG9hZGVySWRdOworICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTG9h
ZC0+ZmlsZU5hbWUoKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gZmlsZUxvYWQtPnJlYWRCdWZmZXIo
KTsKKyAgICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CisgICAgbV9m
aWxlc1JlYWRTb0ZhciArPSAxOworICAgIAorICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0
YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKKyAgICAgICAgbV9w
ZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CisgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1fc2hhcmVEYXRhKTsKKyAgICB9Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVy
OjpjYW5jZWwoKQoreworICAgIGZvciAoYXV0byYgbG9hZGVyIDogbV9wZW5kaW5nRmlsZUxvYWRz
KQorICAgICAgICBsb2FkZXIgPSBudWxscHRyOworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTViZmM4Zjk3YzdmMWRlYjAxZTkyNDY2NzYxZGQ1NGIy
NzFlNGZkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
KiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2Fk
ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJTaGFyZURhdGEuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRv
cjsKK2NsYXNzIEJsb2I7CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyV3JhcHBlcjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFNoYXJlRGF0YVJlYWRlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNoYXJlRGF0YVJlYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hh
cmVEYXRhUmVhZGVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlRGF0YVJlYWRlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkp
OyB9CisgICAgflNoYXJlRGF0YVJlYWRlcigpOworICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmJik7CisgICAgdm9pZCBjYW5jZWwo
KTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmKTsKKwor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCY+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
RXhjZXB0aW9uT3I8aW50Pik7CisgICAgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBtX3NoYXJlRGF0
YTsKKyAgICBpbnQgbV9maWxlc1JlYWRTb0ZhcjsKKyAgICBWZWN0b3I8UmVmUHRyPEZpbGVSZWFk
ZXJMb2FkZXJXcmFwcGVyPj4gbV9wZW5kaW5nRmlsZUxvYWRzOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKaW5kZXggOTQwNDc0NDM1
ZjhkZDNkNWU4MzUyNzdiNjZkMzJkOGZmMzFiYjJjMi4uMGJmMTAzZDRhOWViZDlmZGZjYzkxYzAz
YjY5M2VkM2E4M2U3MzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
bWFjL1F1YXJhbnRpbmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMv
UXVhcmFudGluZVNQSS5oCkBAIC0zNCw2ICszNCw3IEBACiAjZWxzZQogCiBlbnVtIHF0bl9mbGFn
cyB7CisgICAgUVROX0ZMQUdfRE9XTkxPQUQgPSAweDAwMDEsCiAgICAgUVROX0ZMQUdfU0FOREJP
WCA9IDB4MDAwMiwKIH07CiAKQEAgLTQzLDEwICs0NCwxNSBAQCBlbnVtIHF0bl9mbGFncyB7CiAj
ZGVmaW5lIHF0bl9wcm9jX2luaXQgX3F0bl9wcm9jX2luaXQKICNkZWZpbmUgcXRuX3Byb2NfaW5p
dF93aXRoX3NlbGYgX3F0bl9wcm9jX2luaXRfd2l0aF9zZWxmCiAjZGVmaW5lIHF0bl9wcm9jX3Nl
dF9mbGFncyBfcXRuX3Byb2Nfc2V0X2ZsYWdzCi0KKyNkZWZpbmUgcXRuX2ZpbGVfYWxsb2MgX3F0
bl9maWxlX2FsbG9jCisjZGVmaW5lIHF0bl9maWxlX2luaXRfd2l0aF9wYXRoIF9xdG5fZmlsZV9p
bml0X3dpdGhfcGF0aAorI2RlZmluZSBxdG5fZmlsZV9mcmVlIF9xdG5fZmlsZV9mcmVlCisjZGVm
aW5lIHF0bl9maWxlX2FwcGx5X3RvX3BhdGggX3F0bl9maWxlX2FwcGx5X3RvX3BhdGgKKyNkZWZp
bmUgcXRuX2ZpbGVfc2V0X2ZsYWdzIF9xdG5fZmlsZV9zZXRfZmxhZ3MKICNlbmRpZgogCiB0eXBl
ZGVmIHN0cnVjdCBfcXRuX3Byb2MgKnF0bl9wcm9jX3Q7Cit0eXBlZGVmIHN0cnVjdCBfcXRuX2Zp
bGUgKnF0bl9maWxlX3Q7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCkBAIC01Niw2ICs2MiwxMSBA
QCBpbnQgcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CiBpbnQgcXRuX3Byb2Nf
c2V0X2ZsYWdzKHF0bl9wcm9jX3QsIHVpbnQzMl90IGZsYWdzKTsKIHF0bl9wcm9jX3QgcXRuX3By
b2NfYWxsb2MoKTsKIHZvaWQgcXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsKK3F0bl9maWxlX3Qg
cXRuX2ZpbGVfYWxsb2Modm9pZCk7Cit2b2lkIHF0bl9maWxlX2ZyZWUocXRuX2ZpbGVfdCBxZik7
CitpbnQgcXRuX2ZpbGVfc2V0X2ZsYWdzKHF0bl9maWxlX3QgcWYsIHVpbnQzMl90IGZsYWdzKTsK
K2ludCBxdG5fZmlsZV9hcHBseV90b19wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNoYXIgKnBh
dGgpOworaW50IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKHF0bl9maWxlX3QgcWYsIGNvbnN0IGNo
YXIgKnBhdGgpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDkyYmIyMDQ2YTJmN2IzMmIyMWI5YTk1
YTc1ZjNhOGJiMmMzM2Q4ZWMuLjI0OWVmOWE2YzM2ZjFiZjMwNGFlM2YxOTllOGQwZTJjZDYyNDAz
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
ZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTIwMTksNiArMjAyMCwz
MSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBGaWxlQ2hvb3NlclNldAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3Zv
aWQgQXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFJhd0ZpbGU+JiBmaWxlcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihmaWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZp
bGVzKSB7CisgICAgICAgIGVuY29kZXIgPDwgZmlsZS5maWxlTmFtZTsKKyAgICAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGZpbGUuZmlsZURhdGEuZ2V0KCkpOworICAgIH0KK30KKwor
Ym9vbCBBcmd1bWVudENvZGVyPFZlY3RvcjxSYXdGaWxlPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBWZWN0b3I8UmF3RmlsZT4mIGZpbGVzKQoreworICAgIHVpbnQ2NF90IG51bWJlck9mRmls
ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1iZXJPZkZpbGVzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZmlsZXMucmVzaXplKG51bWJlck9mRmlsZXMpOworICAgIGZvciAo
YXV0byYgZmlsZSA6IGZpbGVzKSB7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsZS5m
aWxlTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGZpbGUuZmlsZURhdGEpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KICAgICAKIHZvaWQgQXJndW1lbnRD
b2RlcjxTaGFyZURhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVEYXRh
JiBzZXR0aW5ncykKIHsKQEAgLTIwNDIsNiArMjA2OCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxT
aGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNo
YXJlCiB7CiAgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5zaGFyZURhdGE7CiAgICAgZW5jb2RlciA8
PCBzZXR0aW5ncy51cmw7CisgICAgZW5jb2RlciA8PCBzZXR0aW5ncy5maWxlczsKIH0KIAogYm9v
bCBBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2V0dGluZ3MpCkBAIC0yMDUwLDYgKzIw
NzcsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZXR0aW5ncy51cmwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZXR0aW5ncy5maWxlcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2YmVjYmY3MGUyYWIyNGViZjkxNmU3MGU4
YTM5M2NhZTBmMjc4NDExLi5iMjIyYWVmZDQ3YjQxNTA5YTZlMTFkMmRlNGYwZmRkNTQzNWEwNzk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
ODEsNiArODEsNyBAQCBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vy
c29yOwogY2xhc3MgRGF0YWJhc2VEZXRhaWxzOwogY2xhc3MgRHJhZ0RhdGE7CitjbGFzcyBGaWxl
OwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNz
IEZsb2F0UG9pbnQ7CkBAIC0xMjUsNiArMTI2LDcgQEAgc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdp
b25zOwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CiBz
dHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKK3N0cnVjdCBSYXdGaWxlOwogc3RydWN0IFNoYXJl
RGF0YTsKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMOwogc3RydWN0IExlbmd0aDsKQEAg
LTU0OSw2ICs1NTEsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGaWxlQ2hvb3NlclNldHRpbmdzPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogfTsK
ICAgICAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8VmVjdG9yPFdlYkNvcmU6OlJh
d0ZpbGU+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UmF3RmlsZT4mKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKERlY29kZXImLCBWZWN0b3I8V2ViQ29yZTo6UmF3RmlsZT4mKTsKK307CisKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRhPiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTaGFyZURhdGEmKTsKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3Jl
OjpTaGFyZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLU2hhcmVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNo
ZWV0LmgKaW5kZXggNGFjZGJiNjlhNGIyYWJlMWFjMGZlNDViMzRlZWQxYzZhYWE3MWNhMS4uYzM0
MGRiNjhlZWZhOTljZjQ3NmNlZjVjODU4MTJmYjBhOGZhMGU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKQEAgLTQyLDcgKzQyLDYgQEAgc3RydWN0
IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAtICh2b2lkKWRpc21pc3M7CiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tTaGFyZVNoZWV0RGVsZWdhdGU+IGRlbGVnYXRlOwotCiBA
ZW5kCiAKIEBwcm90b2NvbCBXS1NoYXJlU2hlZXREZWxlZ2F0ZSA8TlNPYmplY3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KaW5kZXggYjAyNDMzYzMw
M2E2ZjkzOWRiNDJhN2ZjNDA0OWU5ZWFjNTQxYjAwNi4uODk3Y2ZiOWVkYjQ1YWU3ZWI0ZjBjOGY4
ZWQ3NTg3YzVhYTgzZjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
U2hhcmVTaGVldC5tbQpAQCAtMjgsNiArMjgsMTAgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKKyNpbXBvcnQgIlF1
YXJhbnRpbmVTUEkuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5o
PgpAQCAtNDcsNiArNTEsNyBAQCBAZW5kCiAjZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdLU2hh
cmVTaGVldCB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfdGVtcG9yYXJ5RmlsZVNoYXJlRGly
ZWN0b3J5OwogICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgV2Vha09i
akNQdHI8aWQgPFdLU2hhcmVTaGVldERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKICAgICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IF9jb21wbGV0aW9uSGFuZGxlcjsKQEAgLTEwNiwx
MCArMTExLDQ1IEBAIC0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3Jl
OjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0YSBpblJlCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCisgICAgaWYgKGRhdGEuZmlsZXMuc2l6ZSgpKSB7CisgICAgICAgIF90ZW1wb3Jh
cnlGaWxlU2hhcmVEaXJlY3RvcnkgPSBhZG9wdE5TKFtbV0tTaGFyZVNoZWV0IGNyZWF0ZVRlbXBv
cmFyeVNoYXJpbmdEaXJlY3RvcnldIGNvcHldKTsKKyAgICAgICAgCisgICAgICAgIGRpc3BhdGNo
X2dyb3VwX3QgZmlsZVdyaXRlR3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsKKyAgICAg
ICAgX19ibG9jayBib29sIHN1Y2Nlc3NmdWwgPSB0cnVlOworICAgICAgICBhdXRvIHF1ZXVlID0g
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldLU2hhcmVTaGVldC5TaGFy
ZWFibGVGaWxlV3JpdGVyIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICAgICAgZm9yIChh
dXRvIGZpbGUgOiBkYXRhLmZpbGVzKSB7CisgICAgICAgICAgICBkaXNwYXRjaF9ncm91cF9hc3lu
YyhmaWxlV3JpdGVHcm91cCwgcXVldWUsIF57CisgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNz
ZnVsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgTlNVUkwg
KmZpbGVVUkwgPSBbV0tTaGFyZVNoZWV0IHdyaXRlRmlsZVRvU2hhcmVhYmxlVVJMOldlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKGZpbGUuZmls
ZU5hbWUpIGRhdGE6ZmlsZS5maWxlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGVtcG9yYXJ5
RGlyZWN0b3J5Ol90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3RvcnkuZ2V0KCldOworICAgICAgICAg
ICAgICAgIGlmICghZmlsZVVSTCkgeworICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgW3NoYXJlRGF0YUFycmF5IGFkZE9iamVjdDpmaWxlVVJMXTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkaXNwYXRjaF9ncm91cF9u
b3RpZnkoZmlsZVdyaXRlR3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgICAgICBpZiAoIXN1Y2Nlc3NmdWwpIHsKKyAgICAgICAgICAgICAgICBbc2VsZiBfZGlkQ29t
cGxldGVXaXRoU3VjY2VzczpOT107CisgICAgICAgICAgICAgICAgW3NlbGYgZGlzbWlzc107Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW3NlbGYg
cHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJlY3Q6cmVj
dF07CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFtzZWxm
IHByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5SZWN0OnJl
Y3RdOworfQorCistICh2b2lkKXByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJyYXkgKilz
aGFyaW5nSXRlbXMgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVj
dAorewogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxlYXNlZCgp
OwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfc2hhcmluZ1NlcnZpY2VQaWNrZXIgPSBh
ZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczpzaGFy
ZURhdGFBcnJheS5nZXQoKV0pOworICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFkb3B0TlMo
W1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJpbmdJdGVt
c10pOwogICAgIF9zaGFyaW5nU2VydmljZVBpY2tlci5nZXQoKS5kZWxlZ2F0ZSA9IHNlbGY7CiAg
ICAgCiAgICAgLy8gV0tTaGFyZVNoZWV0IGNhbiBiZSByZWxlYXNlZCB1bmRlciBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyIGRlbGVnYXRlIGNhbGxiYWNrcy4KQEAgLTEyNiw3ICsxNjYsNyBAQCAtICh2
b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCAmKWRhdGEgaW5SZQogICAgIH0KICAgICBbX3NoYXJpbmdTZXJ2aWNlUGlja2VyIHNo
b3dSZWxhdGl2ZVRvUmVjdDpwcmVzZW50YXRpb25SZWN0IG9mVmlldzp3ZWJWaWV3IHByZWZlcnJl
ZEVkZ2U6TlNNaW5ZRWRnZV07CiAjZWxzZQotICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2
aXR5SXRlbXM6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgYXBwbGljYXRpb25BY3Rpdml0aWVzOm5pbF0p
OworICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZp
ZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmluZ0l0ZW1zIGFw
cGxpY2F0aW9uQWN0aXZpdGllczpuaWxdKTsKICAgICBbX3NoYXJlU2hlZXRWaWV3Q29udHJvbGxl
ciBzZXRDb21wbGV0aW9uV2l0aEl0ZW1zSGFuZGxlcjpeKE5TU3RyaW5nICosIEJPT0wgY29tcGxl
dGVkLCBOU0FycmF5ICosIE5TRXJyb3IgKikgewogICAgICAgICBbc2VsZiBfZGlkQ29tcGxldGVX
aXRoU3VjY2Vzczpjb21wbGV0ZWRdOwogICAgICAgICBbc2VsZiBkaXNwYXRjaERpZERpc21pc3Nd
OwpAQCAtMTgwLDYgKzIyMCw4IEBAIC0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1Nl
cnZpY2UgKilzaGFyaW5nU2VydmljZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5CiAKIC0gKHZvaWQp
X2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6KEJPT0wpc3VjY2VzcwogeworICAgIFtXS1NoYXJlU2hl
ZXQgcmVtb3ZlVGVtcG9yYXJ5U2hhcmluZ0RpcmVjdG9yeTpfdGVtcG9yYXJ5RmlsZVNoYXJlRGly
ZWN0b3J5LmdldCgpXTsKKyAgICBfdGVtcG9yYXJ5RmlsZVNoYXJlRGlyZWN0b3J5ID0gbnVsbHB0
cjsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShfY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3VjY2Vzcyk7CkBAIC0yMTUsNiArMjU3LDEyMSBAQCAtICh2b2lkKWRpc3BhdGNoRGlkRGlz
bWlzcwogICAgICAgICBbX2RlbGVnYXRlIHNoYXJlU2hlZXREaWREaXNtaXNzOnNlbGZdOwogfQog
CisjaWYgUExBVEZPUk0oTUFDKQorKyAoQk9PTClzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JG
aWxlUGF0aDooTlNTdHJpbmcgKilmaWxlUGF0aAoreworICAgIE5TVVJMICpmaWxlVVJMID0gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlUGF0aF07CisKKyAgICBhdXRvIHF1YXJhbnRpbmVQcm9w
ZXJ0aWVzID0gQHsKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZVR5
cGVLZXk6IChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlV2ViRG93bmxvYWQs
CisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVBZ2VudEJ1bmRsZUlk
ZW50aWZpZXJLZXk6IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpCisgICAg
fTsKKworICAgIE5TRXJyb3IgKmVycm9yOworICAgIGlmICghW2ZpbGVVUkwgc2V0UmVzb3VyY2VW
YWx1ZTpxdWFyYW50aW5lUHJvcGVydGllcyBmb3JLZXk6TlNVUkxRdWFyYW50aW5lUHJvcGVydGll
c0tleSBlcnJvcjomZXJyb3JdKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHNldCBx
dWFyYW50aW5lIGluZm9ybWF0aW9uIGZvciBmaWxlIHBhdGg6ICVAOiAlQCIsIGZpbGVQYXRoLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICAvLyBXaGV0aGVyIHRoZSBm
aWxlIHdhcyBkb3dubG9hZGVkIGJ5IHNhbmRib3hlZCBXZWJQcm9jZXNzIG9yIG5vdCwgTFNTZXRJ
dGVtQXR0cmlidXRlIHJlc2V0cyB0aGUgZmxhZ3MgdG8gMCAoYWR2aXNvcnkgUVROX0ZMQUdfRE9X
TkxPQUQsCisgICAgLy8gd2hpY2ggY2FuIGJlIHRoZW4gcmVtb3ZlZCBieSBXZWJQcm9jZXNzKS4g
UmVwbGFjZSB0aGUgZmxhZ3Mgd2l0aCBzYW5kYm94IHF1YXJhbnRpbmUgb25lcywgd2hpY2ggY2Fu
bm90IGJlIHJlbW92ZWQgYnkgc2FuZGJveGVkIHByb2Nlc3Nlcy4KKyAgICByZXR1cm4gW1dLU2hh
cmVTaGVldCBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0
aDpmaWxlUGF0aF07Cit9CisKKysgKEJPT0wpYXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25s
b2FkRmxhZ3NUb0ZpbGVBdFBhdGg6KE5TU3RyaW5nICopZmlsZVBhdGgKK3sKKyAgICBxdG5fZmls
ZV90IGZxID0gcXRuX2ZpbGVfYWxsb2MoKTsKKyAgICBpbnQgcXVhcmFudGluZUVycm9yID0gcXRu
X2ZpbGVfaW5pdF93aXRoX3BhdGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCByZXRyaWV2ZSBxdWFyYW50aW5lIGZsYWdzIGZvciBmaWxlIHBhdGggJUA6ICVkIiwgZmls
ZVBhdGgsIHF1YXJhbnRpbmVFcnJvcik7CisgICAgICAgIHF0bl9maWxlX2ZyZWUoZnEpOworICAg
ICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgcXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVf
c2V0X2ZsYWdzKGZxLCBRVE5fRkxBR19TQU5EQk9YIHwgUVROX0ZMQUdfRE9XTkxPQUQpOworICAg
IGlmIChxdWFyYW50aW5lRXJyb3IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qgc2V0
IHF1YXJhbnRpbmUgZmxhZ3MgaW4gcXRuX2ZpbGVfdCBzdHJ1Y3R1cmUgZm9yIGZpbGUgcGF0aCAl
QDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVycm9yKTsKKyAgICAgICAgcXRuX2ZpbGVfZnJl
ZShmcSk7CisgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisKKyAgICBxdWFyYW50aW5lRXJyb3Ig
PSBxdG5fZmlsZV9hcHBseV90b19wYXRoKGZxLCBmaWxlUGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb24pOworICAgIGlmIChxdWFyYW50aW5lRXJyb3IpCisgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGFwcGx5IHF1YXJhbnRpbmUgZmxhZ3MgdG8gZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQ
YXRoLCBxdWFyYW50aW5lRXJyb3IpOworCisgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisKKyAgICBy
ZXR1cm4gWUVTOworfQorI2VuZGlmCisKKysgKEJPT0wpcmVtb3ZlVGVtcG9yYXJ5U2hhcmluZ0Rp
cmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnlQYXRoCit7CisgICAgaWYgKCFbZGlyZWN0b3J5
UGF0aCBsZW5ndGhdKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgaWYgKCFbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGlyZWN0b3J5UGF0aF0p
CisgICAgICAgIHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0
ZW1BdFBhdGg6ZGlyZWN0b3J5UGF0aCBlcnJvcjpuaWxdOworICAgIAorICAgIHJldHVybiBZRVM7
Cit9CisKKysgKE5TU3RyaW5nICopY3JlYXRlVGVtcG9yYXJ5U2hhcmluZ0RpcmVjdG9yeQorewor
ICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJXS0ZpbGVTaGFyZSIpOworICAgIAorICAgIGlmICghW3RlbXBvcmFy
eURpcmVjdG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnRlbXBvcmFyeURpcmVjdG9yeV0pIHsKKyAgICAgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6dGVtcG9yYXJ5RGlyZWN0
b3J5IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjom
ZXJyb3JdOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKyAgICByZXR1cm4gdGVtcG9yYXJ5RGlyZWN0b3J5OworfQorCisrIChOU1N0cmluZyAqKWNy
ZWF0ZVJhbmRvbVNoYXJpbmdEaXJlY3RvcnlGb3JGaWxlOihOU1N0cmluZyAqKXRlbXBvcmFyeURp
cmVjdG9yeQoreworICAgIE5TU3RyaW5nICpyYW5kb21EaXJlY3RvcnkgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisgICAgaWYgKCFbcmFuZG9tRGlyZWN0b3J5IGxlbmd0aF0gfHwgIVt0
ZW1wb3JhcnlEaXJlY3RvcnkgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBOU1N0
cmluZyAqZGF0YVBhdGggPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIi8lQCIsIHJhbmRvbURpcmVj
dG9yeV1dOworICAgIAorICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGlmICghW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRhdGFQYXRoXSkgewor
ICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
UGF0aDpkYXRhUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6Tk8gYXR0cmlidXRlczpu
aWwgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB9CisgICAgcmV0dXJuIGRhdGFQYXRoOworfQorCisrIChOU1VSTCAqKXdyaXRl
RmlsZVRvU2hhcmVhYmxlVVJMOihOU1N0cmluZyAqKWZpbGVOYW1lIGRhdGE6KE5TRGF0YSAqKWZp
bGVEYXRhIHRlbXBvcmFyeURpcmVjdG9yeTooTlNTdHJpbmcgKil0ZW1wb3JhcnlEaXJlY3RvcnkK
K3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIVt0ZW1wb3JhcnlE
aXJlY3RvcnkgbGVuZ3RoXSB8fCAhW2ZpbGVOYW1lIGxlbmd0aF0gfHwgIWZpbGVEYXRhKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnlG
b3JGaWxlID0gW1dLU2hhcmVTaGVldCBjcmVhdGVSYW5kb21TaGFyaW5nRGlyZWN0b3J5Rm9yRmls
ZTp0ZW1wb3JhcnlEaXJlY3RvcnldOworICAgIGlmICghdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmls
ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU1N0cmluZyAqZmlsZSA9IFt0ZW1w
b3JhcnlEaXJlY3RvcnlGb3JGaWxlIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxl
TmFtZV07CisKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZV07CisgICAgCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW2ZpbGVEYXRhIHdyaXRl
VG9VUkw6ZmlsZVVSTCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMgZXJyb3I6JmVycm9yXTsK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmICghW1dLU2hhcmVTaGVldCBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0
aDpmaWxlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIHJldHVybiBmaWxlVVJM
OworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMxNDQ4YTI2NWQzNGY2MWE5NjEz
YjJhNDQ2MzA1MzM1YzQ1ZTBmNjMuLjdjMmNiYmVkNWI3MzdkMzExMjhlMmU5MTRlYjZkYmRjMmJi
YWFjZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0xOCAgTmlrb3MgTW91Y2h0YXJp
cyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJl
IHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVzZSB1cmwgb2YgaW1hZ2UuCisKKyAgICAgICAg
KiBmYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWw6CisKIDIwMjAtMDQtMjQgIFRv
bW9raSBJbWFpICA8VG9tb2tpLkltYWlAc29ueS5jb20+CiAKICAgICAgICAgW09wZW5TU0xdIElt
cGxlbWVudCBXZWJDcnlwdG8gQVBJcyBmb3IgSE1BQwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggNzU1M2I2ZTgyZDM1ZmVmYmI2YzdhYTllODdhMjIyY2JjNWQ5ZGRjZC4uNWY3Njg0
ZDdiMzRhODQ5ZjE4NWZjNTQ0ZWU0NmYxMTFiZTBmYTA3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMTggIE5pa29zIE1vdWNodGFyaXMg
IDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2
MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hh
cmUuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA0LTI0ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgSW1wb3J0IGZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUv
ZmV0Y2guaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUt
d2l0aC1maWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1m
aWxlcy5odG1sCmluZGV4IDg1NmVkMjQ0MTg4NzE4OGRiNjQ5OGQzZGIxNzA4MDcxNDkwZjVjODYu
LjliODkwZDRjMWIxMzQ3ZDA5Y2I2MWNhMjYyNDIzMmQzNTBjMDY5OTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKQEAgLTIsNiArMiw3
IEBACiAKIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9NSwgd2lkdGg9ZGV2aWNlLXdpZHRoIj4KKwogPGhlYWQ+CiAKICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CkBAIC0xNiwxMCArMTcsMTIg
QEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ2hlbGxvJ10sICdoZWxsby50eHQnLCB7dHlwZTon
dGV4dC9wbGFpbid9KTsKKworICAgICAgICAgICAgdmFyIGJsb2IgPSB0aGlzLnJlc3BvbnNlOwor
ICAgICAgICAgICAgY29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ1RoaXMgaXMgYSB0ZXh0IGZp
bGUnXSwgJ1RleHRGaWxlLnR4dCcsIHt0eXBlOid0ZXh0L2h0bWwnfSk7CiAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAic2FkZiIs
IGZpbGVzOiBbdGV4dEZpbGVdfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIHdyaXRlKCJQQVNTOiBTaGFyZSBzaGVldCBpbnZva2VkLiIpOworICAgICAgICAgICAgbmF2
aWdhdG9yLnNoYXJlKHt0ZXh0OiAiVGhpcyBpcyBhIHRleHQgZmlsZSIsIGZpbGVzOiBbdGV4dEZp
bGVdfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlBBU1M6IFNo
YXJlIHNoZWV0IGludm9rZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH0pOyAgICAKICAgICAgICAgICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398768</attachid>
            <date>2020-05-07 11:29:49 -0700</date>
            <delta_ts>2020-05-07 19:18:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200507142948.patch</filename>
            <type>text/plain</type>
            <size>34234</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3YmIyNTc5OTlmYWFl
NmVkYmFiMjFlM2QxNmM5YWVhM2VmYzJmNS4uNWZkNGExYzRiZWQxZTUzNzkwMGI0YTQ4YzU0OGYx
MDhkYjNlYzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA1LTA2ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0yNCAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIAogICAgICAgICBbT3Bl
blNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBBUElzIGZvciBITUFDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NTgx
MDdjYjliOGY4NTE0NGJiNmI0MDZiZjc1MTliY2FiNjhmYzcuLjhjZDk4NWE4NTY2YTdlYzM5ZGY0
YWVhYmJkNDNhMWVhNmZiMDg2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDUt
MDYgIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBv
YmplY3RzIG92ZXIgSVBDIGFuZAorICAgICAgICBzaGFyaW5nIG9mIGZpbGVzIHRvIHNoYXJlIHNo
ZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUubW06IEFkZGVkLgorICAgICAgICAo
K1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aF0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ10pOgor
ICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSByZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hh
cmluZ10pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBzZXRRdWFyYW50aW5lSW5m
b3JtYXRpb25Gb3JGaWxlUGF0aDpdKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUg
YXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6XSk6Cisg
ICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGNyZWF0ZUZpbGVuYW1lOl0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpkYXRhOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW06CisgICAgICAgICgt
W1dLU2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6aW5SZWN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6
XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDQtMjQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9t
YXRpb246IHRpbWVvdXQgdW5kZXJuZWF0aCBBdXRvbWF0aW9uLmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uIGluIFNlbGVuaXVtIHRlc3QgZnJhbWVfc3dpdGNoaW5nX3Rlc3RzLnB5Ojp0ZXN0U2hv
dWxkTm90QmVBYmxlVG9Eb0FueXRoaW5nVGhlRnJhbWVJc0RlbGV0ZWRGcm9tVW5kZXJVc1tTYWZh
cmldCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBmMDhkZjg3MzU5NGY3OGYwNDkwM2M3ZWRm
OGRjNGIzYzY3Y2ZjNDE1Li41MmUyMzMzNjExOGE3YzBiNjUxZDAzY2M1ZmUwNjVkOTc4YWJkMzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTU0Nyw2ICs1NDcsMTAgQEAKICNkZWZpbmUg
RU5BQkxFX0RBVEFfREVURUNUSU9OIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0ZJ
TEVfU0hBUkUpCisjZGVmaW5lIEVOQUJMRV9GSUxFX1NIQVJFIDEKKyNlbmRpZgorCiAvKgogICog
RW5hYmxlIHRoaXMgdG8gcHV0IGVhY2ggSXNvSGVhcCBhbmQgb3RoZXIgYWxsb2NhdGlvbiBjYXRl
Z29yaWVzIGludG8gdGhlaXIgb3duIG1hbGxvYyBoZWFwcywgc28gdGhhdCB0b29scyBsaWtlIHZt
bWFwIGNhbiBzaG93IGhvdyBiaWcgZWFjaCBoZWFwIGlzLgogICogVHVybiBCRU5BQkxFX01BTExP
Q19IRUFQX0JSRUFLRE9XTiBvbiBpbiBibWFsbG9jIHRvZ2V0aGVyIHdoZW4gdXNpbmcgdGhpcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNmYxNTRmMTM5YzA0ZDU4YjQ4Njk5OTc5N2NhZGUzZjA3MzY4OTg3
OS4uNDgyYzM3NzJmN2Q4MDE5MTRkZmZkOWY2YmExNzNjYTM3ODZjZGRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE2ODQsNiArMTY4NCw3IEBAIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAKIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCiBwYWdlL1NldHRp
bmdzQmFzZS5jcHAKK3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAogcGFnZS9Tb2NrZXRQcm92aWRl
ci5jcHAKIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCiBwYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNTExMjU2Yzg5YTNlNTZhNjdmNTczMzhkZTNjNDQ4NTNlYTA3M2E2OC4uZWE0MDUy
NzIyYmM3MmFhM2ZlNDQzMjU0Yzg5MDY1YmUxN2Q1MGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE3MCw2ICs2MTcwLDgg
QEAKIAkJMUEyQTY4MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3Jlc3NUcmFja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkFBQzU2MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMkFBQzU3MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTJDNjY3MTI0MkFGRUY3MDAzMDU1
RUMgLyogU2hhcmVEYXRhUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlRGF0YVJl
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMkM2NjczMjQyQUZFRjgw
MDMwNTVFQyAvKiBTaGFyZURhdGFSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVEYXRhUmVh
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTU4MENDNTUyMTMwMDRB
MjA2MiAvKiBTUUxWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJFNkU3ODBDQzU1NkQ1MDA0
QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxpdGVBdXRob3JpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEzNTg2REQxNTI2NEM0NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxvdy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExMDEsNiArMjExMDMs
OCBAQAogCQkJCTdDNkVGRUVBMUY5NDZBMkUwMEZGQUQ0MSAvKiBTZXR0aW5nc0RlZmF1bHRWYWx1
ZXMuaCAqLywKIAkJCQkxREM1NTQwMDIxMUJBOEM4MDA0Qjc4MEUgLyogU2hhcmVEYXRhLmggKi8s
CiAJCQkJMURDNTUzRkYyMTFCQTg0MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8sCisJCQkJ
MUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5jcHAgKi8sCisJCQkJ
MUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5oICovLAogCQkJCTVD
Njg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRlci5jcHAgKi8sCiAJCQkJNUM3
Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8sCiAJCQkJNjI2Q0RF
MEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFlNTljMzE5MTRhY2Mz
NjFlMjc0Li43MjI5NWVhNGQwYWUyM2Q4YjcyNjBlMTNjOGRkZGFmOTVmNmMwZmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlRGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlRGF0YVJlYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1
YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzExNCwxMyBA
QCBib29sIE5hdmlnYXRvcjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051bGwoKSAm
JiBkYXRhLnVybC5pc051bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYg
KCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHko
KSkgeworI2lmIEVOQUJMRShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQgTmF2aWdh
dG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFyZURh
dGEmIGRhdGEsIFJlCiAgICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93KCk7CiAg
ICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRlIHdlIHNo
b3VsZCBjb25zdW1lIHVzZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkgc3RyaWN0
ZXIgaGVyZS4KLSAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0
aXZhdGlvbigpKSB7CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVu
dEFjdGl2YXRpb24oKSB8fCBtX2lzUHJlc2VudGluZ1NoYXJlU2hlZXQpIHsKICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xNDcsMTAgKzE1NCwzOSBAQCB2b2lkIE5hdmlnYXRvcjo6c2hhcmUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhLCBSZQogICAgIFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhID0gewogICAgICAgICBkYXRhLAogICAgICAgICB1cmws
CisgICAgICAgIHsgfSwKICAgICB9OworI2lmIEVOQUJMRShGSUxFX1NIQVJFKQorICAgIGlmICgh
ZGF0YS5maWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICAg
ICAgbV9sb2FkZXItPmNhbmNlbCgpOworICAgICAgICAKKyAgICAgICAgbV9sb2FkZXIgPSBTaGFy
ZURhdGFSZWFkZXI6OmNyZWF0ZShbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChF
eGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4gcmVhZERhdGEpIG11dGFibGUgewor
ICAgICAgICAgICAgc2hvd1NoYXJlRGF0YShyZWFkRGF0YSwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgICAgIH0pOworICAgICAgICBtX2xvYWRlci0+c3RhcnQoZnJhbWUoKS0+ZG9jdW1lbnQoKSwg
V1RGTW92ZShzaGFyZURhdGEpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAg
IHRoaXMtPnNob3dTaGFyZURhdGEoc2hhcmVEYXRhLCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwor
dm9pZCBOYXZpZ2F0b3I6OnNob3dTaGFyZURhdGEoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCY+IHJlYWREYXRhLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7Cisg
ICAgaWYgKHJlYWREYXRhLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVj
dChyZWFkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAgICBmcmFtZS0+cGFnZSgp
LT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0gKGJvb2wgY29tcGxldGVkKSB7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBh
Z2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faXNQcmVzZW50aW5nU2hhcmVTaGVl
dCA9IHRydWU7CisgICAgYXV0byBzaGFyZURhdGEgPSByZWFkRGF0YS5yZXR1cm5WYWx1ZSgpOwor
ICAgIAorICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0
YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0aGlzXSAoYm9vbCBjb21wbGV0ZWQpIHsK
KyAgICAgICAgbV9pc1ByZXNlbnRpbmdTaGFyZVNoZWV0ID0gZmFsc2U7CiAgICAgICAgIGlmIChj
b21wbGV0ZWQpIHsKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGVi
MGYzZWIyNjQ4YTg4NjQ3ZjgyZGQuLjhjNjFjYTRjYTYyZTE3MTQ1ZGJiMzNhMzVkYzg3YzU4YzA1
MTUwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE4IEBACiAjaW5j
bHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5j
bHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsK
IGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBT
aGFyZURhdGE7CitjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3MgU2hhcmVEYXRhUmVhZGVy
OwogCiBjbGFzcyBOYXZpZ2F0b3IgZmluYWwgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5LCBwdWJsaWMgU3VwcGxl
bWVudGFibGU8TmF2aWdhdG9yPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOYXZpZ2F0
b3IpOwpAQCAtNjMsMTIgKzY2LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAg
IHZvaWQgc2hvd1NoYXJlRGF0YShFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMJj4s
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIGV4cGxpY2l0IE5hdmlnYXRvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRE9NV2luZG93Jik7CiAKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFy
ZURhdGFSZWFkZXI+IG1fbG9hZGVyOworICAgIG11dGFibGUgYm9vbCBtX2lzUHJlc2VudGluZ1No
YXJlU2hlZXQgeyBmYWxzZSB9OwogICAgIG11dGFibGUgUmVmUHRyPERPTVBsdWdpbkFycmF5PiBt
X3BsdWdpbnM7CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NTWltZVR5cGVBcnJheT4gbV9taW1lVHlw
ZXM7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgbXV0YWJsZSBTdHJpbmcg
bV9wbGF0Zm9ybTsKIH07Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDVjMzkwN2Mx
MDc1ODA0OWQ4ODdjMDQ2MzFkYjRmOWMwM2ZmMWFmNzkuLmZlZTZiOTllM2ZhNWUwNDhlNmIxOGEw
NDliNDJkYTY0YWNiZjMyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKICNpbmNsdWRlICJGaWxlLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNSwxMCArMzYsMTYgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAgICAgU3RyaW5nIHVybDsKICAg
ICBWZWN0b3I8UmVmUHRyPEZpbGU+PiBmaWxlczsKIH07CisKK3N0cnVjdCBSYXdGaWxlIHsKKyAg
ICBTdHJpbmcgZmlsZU5hbWU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7Cit9
OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewogICAgIFNoYXJlRGF0YSBz
aGFyZURhdGE7CiAgICAgT3B0aW9uYWw8VVJMPiB1cmw7CisgICAgVmVjdG9yPFJhd0ZpbGU+IGZp
bGVzOwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41Y2I0NjU5ZGFjMjcwOGFmZjkzNTAyZTBhOWYzYjI4N2MyOWY3MWYyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoK
KyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlRGF0YVJlYWRlci5oIgor
CisjaW5jbHVkZSAiQmxvYkxvYWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hhcmVEYXRhUmVh
ZGVyOjpTaGFyZURhdGFSZWFkZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK3sKKyAgICAKK30K
KworU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKK3sKKyAgICBjYW5jZWwoKTsK
K30KKwordm9pZCBTaGFyZURhdGFSZWFkZXI6OnN0YXJ0KERvY3VtZW50KiBkb2N1bWVudCwgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCYmIHNoYXJlRGF0YSkKK3sKKyAgICBtX2ZpbGVzUmVhZFNvRmFy
ID0gMDsKKyAgICBtX3NoYXJlRGF0YSA9IFdURk1vdmUoc2hhcmVEYXRhKTsKKyAgICBpbnQgY291
bnQgPSAwOworICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
c2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgYmxvYiA6
IG1fc2hhcmVEYXRhLnNoYXJlRGF0YS5maWxlcykgeworICAgICAgICBtX3BlbmRpbmdGaWxlTG9h
ZHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWVSZWY8QmxvYkxvYWRlcj4oZG9jdW1lbnQsICpi
bG9iLCBbdGhpcywgY291bnQsIGZpbGVOYW1lID0gYmxvYi0+bmFtZSgpXSB7CisgICAgICAgICAg
ICB0aGlzLT5kaWRGaW5pc2hMb2FkaW5nKGNvdW50LCBmaWxlTmFtZSk7CisgICAgICAgIH0pKTsK
KyAgICAgICAgY291bnQrKzsKKyAgICB9Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCit7Cisg
ICAgaWYgKG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5lcnJvckNvZGUoKSkgeworICAg
ICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFu
ZGxlcikpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBBYm9ydEVy
cm9yLCAiQWJvcnQgZHVlIHRvIGVycm9yIHdoaWxlIHJlYWRpbmcgZmlsZXMuIl9zIH0pOworICAg
ICAgICBjYW5jZWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvIGFy
cmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPnJlc3VsdCgpOworICAg
IAorICAgIFJhd0ZpbGUgZmlsZTsKKyAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7CisgICAg
ZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOworICAg
IG1fZmlsZXNSZWFkU29GYXIrKzsKKyAgICAKKyAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBz
dGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CisgICAgICAgIG1f
cGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOworICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtX3NoYXJlRGF0YSk7CisgICAgfQorfQorCit2b2lkIFNoYXJlRGF0YVJlYWRl
cjo6Y2FuY2VsKCkKK3sKKyAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKK30KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OWIyOTM0YWJiNTgx
MjI2ZDg3MGY5ZmY1OWU3ZGUzNTZkM2JiOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTaGFyZURhdGEuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBCbG9iTG9hZGVyOwor
Y2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBT
aGFyZURhdGFSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZURhdGFSZWFkZXI+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNoYXJlRGF0YVJlYWRlcj4gY3JlYXRlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZURhdGFSZWFkZXIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsgfQorICAgIH5TaGFyZURhdGFSZWFkZXIoKTsKKyAg
ICB2b2lkIHN0YXJ0KERvY3VtZW50KiwgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYmKTsKKyAgICB2
b2lkIGNhbmNlbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNoYXJlRGF0YVJlYWRlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwm
Pik+JiYpOworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhpbnQsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFNoYXJlRGF0YVdp
dGhQYXJzZWRVUkwgbV9zaGFyZURhdGE7CisgICAgaW50IG1fZmlsZXNSZWFkU29GYXI7CisgICAg
VmVjdG9yPFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj4gbV9wZW5kaW5nRmlsZUxvYWRzOworfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVT
UEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKaW5k
ZXggOTQwNDc0NDM1ZjhkZDNkNWU4MzUyNzdiNjZkMzJkOGZmMzFiYjJjMi4uMGJmMTAzZDRhOWVi
ZDlmZGZjYzkxYzAzYjY5M2VkM2E4M2U3MzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCkBAIC0zNCw2ICszNCw3IEBACiAjZWxzZQogCiBl
bnVtIHF0bl9mbGFncyB7CisgICAgUVROX0ZMQUdfRE9XTkxPQUQgPSAweDAwMDEsCiAgICAgUVRO
X0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwKIH07CiAKQEAgLTQzLDEwICs0NCwxNSBAQCBlbnVtIHF0
bl9mbGFncyB7CiAjZGVmaW5lIHF0bl9wcm9jX2luaXQgX3F0bl9wcm9jX2luaXQKICNkZWZpbmUg
cXRuX3Byb2NfaW5pdF93aXRoX3NlbGYgX3F0bl9wcm9jX2luaXRfd2l0aF9zZWxmCiAjZGVmaW5l
IHF0bl9wcm9jX3NldF9mbGFncyBfcXRuX3Byb2Nfc2V0X2ZsYWdzCi0KKyNkZWZpbmUgcXRuX2Zp
bGVfYWxsb2MgX3F0bl9maWxlX2FsbG9jCisjZGVmaW5lIHF0bl9maWxlX2luaXRfd2l0aF9wYXRo
IF9xdG5fZmlsZV9pbml0X3dpdGhfcGF0aAorI2RlZmluZSBxdG5fZmlsZV9mcmVlIF9xdG5fZmls
ZV9mcmVlCisjZGVmaW5lIHF0bl9maWxlX2FwcGx5X3RvX3BhdGggX3F0bl9maWxlX2FwcGx5X3Rv
X3BhdGgKKyNkZWZpbmUgcXRuX2ZpbGVfc2V0X2ZsYWdzIF9xdG5fZmlsZV9zZXRfZmxhZ3MKICNl
bmRpZgogCiB0eXBlZGVmIHN0cnVjdCBfcXRuX3Byb2MgKnF0bl9wcm9jX3Q7Cit0eXBlZGVmIHN0
cnVjdCBfcXRuX2ZpbGUgKnF0bl9maWxlX3Q7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCkBAIC01
Niw2ICs2MiwxMSBAQCBpbnQgcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CiBp
bnQgcXRuX3Byb2Nfc2V0X2ZsYWdzKHF0bl9wcm9jX3QsIHVpbnQzMl90IGZsYWdzKTsKIHF0bl9w
cm9jX3QgcXRuX3Byb2NfYWxsb2MoKTsKIHZvaWQgcXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsK
K3F0bl9maWxlX3QgcXRuX2ZpbGVfYWxsb2Modm9pZCk7Cit2b2lkIHF0bl9maWxlX2ZyZWUocXRu
X2ZpbGVfdCBxZik7CitpbnQgcXRuX2ZpbGVfc2V0X2ZsYWdzKHF0bl9maWxlX3QgcWYsIHVpbnQz
Ml90IGZsYWdzKTsKK2ludCBxdG5fZmlsZV9hcHBseV90b19wYXRoKHF0bl9maWxlX3QgcWYsIGNv
bnN0IGNoYXIgKnBhdGgpOworaW50IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKHF0bl9maWxlX3Qg
cWYsIGNvbnN0IGNoYXIgKnBhdGgpOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDkyYmIyMDQ2YTJm
N2IzMmIyMWI5YTk1YTc1ZjNhOGJiMmMzM2Q4ZWMuLjJkZDgyNzA5N2ZmYzhlZDliNWFiYjA3MmRl
NzkxNTYzMGE5OTg1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0Rh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJP
cGVyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KQEAgLTIw
MTksNiArMjAyMCwyMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RmlsZUNob29zZXJTZXR0aW5ncz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGaWxlQ2hvb3NlclNldAogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSYXdGaWxlPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJhd0ZpbGUmIGZpbGUpCit7CisgICAgZW5jb2RlciA8PCBmaWxlLmZpbGVO
YW1lOworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBmaWxlLmZpbGVEYXRhLmdldCgp
KTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFJhd0ZpbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUmF3RmlsZSYgZmlsZSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbGUuZmls
ZU5hbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgZmlsZS5maWxlRGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KICAgICAKIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGE+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVEYXRhJiBzZXR0aW5ncykKIHsKQEAgLTIw
NDIsNiArMjA1OCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlCiB7CiAgICAgZW5jb2RlciA8
PCBzZXR0aW5ncy5zaGFyZURhdGE7CiAgICAgZW5jb2RlciA8PCBzZXR0aW5ncy51cmw7CisgICAg
ZW5jb2RlciA8PCBzZXR0aW5ncy5maWxlczsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCYgc2V0dGluZ3MpCkBAIC0yMDUwLDYgKzIwNjcsOCBAQCBib29sIEFyZ3VtZW50
Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBT
aGFyZURhdGFXaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzZXR0aW5ncy51cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzZXR0aW5ncy5maWxlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA2YmVjYmY3MGUyYWIyNGViZjkxNmU3MGU4YTM5M2NhZTBmMjc4NDExLi4xZWI0
MDIwZTZkYjE4MTVjZTdlNmZkNDlhYTBmNzE1ZGZjNjQ0MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRGF0YWJhc2VE
ZXRhaWxzOwogY2xhc3MgRHJhZ0RhdGE7CitjbGFzcyBGaWxlOwogY2xhc3MgRmlsdGVyT3BlcmF0
aW9uOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0xMjUs
NiArMTI2LDcgQEAgc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25zOwogc3RydWN0IEV4Y2VwdGlv
bkRldGFpbHM7CiBzdHJ1Y3QgRm9udEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0
aW5nczsKK3N0cnVjdCBSYXdGaWxlOwogc3RydWN0IFNoYXJlRGF0YTsKIHN0cnVjdCBTaGFyZURh
dGFXaXRoUGFyc2VkVVJMOwogc3RydWN0IExlbmd0aDsKQEAgLTU0OSw2ICs1NTEsMTEgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
PiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogfTsKICAgICAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmF3RmlsZT4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmF3RmlsZSYpOworICAgIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlJhd0ZpbGUmKTsK
K307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2hhcmVEYXRh
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTaGFy
ZURhdGEmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpTaGFyZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTaGFyZVNoZWV0LmgKaW5kZXggNGFjZGJiNjlhNGIyYWJlMWFjMGZlNDViMzRlZWQxYzZh
YWE3MWNhMS4uYzM0MGRiNjhlZWZhOTljZjQ3NmNlZjVjODU4MTJmYjBhOGZhMGU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKQEAgLTQyLDcgKzQy
LDYgQEAgc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAtICh2b2lkKWRpc21pc3M7CiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tTaGFyZVNoZWV0RGVsZWdhdGU+IGRl
bGVnYXRlOwotCiBAZW5kCiAKIEBwcm90b2NvbCBXS1NoYXJlU2hlZXREZWxlZ2F0ZSA8TlNPYmpl
Y3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hl
ZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KaW5k
ZXggYjAyNDMzYzMwM2E2ZjkzOWRiNDJhN2ZjNDA0OWU5ZWFjNTQxYjAwNi4uN2ZiOTI3ZjgxNjMw
ZDA0MWU5NmQzNmU0Mjg5NzJlYjFiN2Q0OTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtMjgsMTAgKzI4LDEzIEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
CisjaW1wb3J0ICJRdWFyYW50aW5lU1BJLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZURhdGEuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CiAjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00Nyw2ICs1MCw3IEBA
IEBlbmQKICNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV0tTaGFyZVNoZWV0IHsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IF90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3Rvcnk7CiAgICAgV2Vha09i
akNQdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tTaGFyZVNo
ZWV0RGVsZWdhdGU+ID4gX2RlbGVnYXRlOwogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4gX2NvbXBsZXRpb25IYW5kbGVyOwpAQCAtMTA2LDEwICsxMTAsNDUgQEAgLSAodm9p
ZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJz
ZWRVUkwgJilkYXRhIGluUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBpZiAo
ZGF0YS5maWxlcy5zaXplKCkpIHsKKyAgICAgICAgX3RlbXBvcmFyeUZpbGVTaGFyZURpcmVjdG9y
eSA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQgY3JlYXRlVGVtcG9yYXJ5U2hhcmluZ0RpcmVjdG9y
eV0gY29weV0pOworICAgICAgICAKKyAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfdCBmaWxlV3JpdGVH
cm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgICAgICBfX2Jsb2NrIGJvb2wgc3Vj
Y2Vzc2Z1bCA9IHRydWU7CisgICAgICAgIGF1dG8gcXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoImNvbS5hcHBsZS5XZWJLaXQuV0tTaGFyZVNoZWV0LlNoYXJlYWJsZUZpbGVXcml0ZXIiLCBE
SVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgICAgICBmb3IgKGF1dG8gZmlsZSA6IGRhdGEuZmls
ZXMpIHsKKyAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGZpbGVXcml0ZUdyb3VwLCBx
dWV1ZSwgXnsKKyAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3NmdWwpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtXS1NoYXJl
U2hlZXQgd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZS5maWxlTmFtZSkgZGF0YTpmaWxlLmZp
bGVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZW1wb3JhcnlEaXJlY3Rvcnk6X3RlbXBvcmFy
eUZpbGVTaGFyZURpcmVjdG9yeS5nZXQoKV07CisgICAgICAgICAgICAgICAgaWYgKCFmaWxlVVJM
KSB7CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbc2hh
cmVEYXRhQXJyYXkgYWRkT2JqZWN0OmZpbGVVUkxdOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGRpc3BhdGNoX2dyb3VwX25vdGlmeShmaWxlV3JpdGVHcm91
cCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIGlmICghc3VjY2Vz
c2Z1bCkgeworICAgICAgICAgICAgICAgIFtzZWxmIF9kaWRDb21wbGV0ZVdpdGhTdWNjZXNzOk5P
XTsKKyAgICAgICAgICAgICAgICBbc2VsZiBkaXNtaXNzXTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbc2VsZiBwcmVzZW50V2l0aFNoYXJlRGF0
YUFycmF5OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgW3NlbGYgcHJlc2VudFdpdGhTaGFyZURh
dGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJlY3Q6cmVjdF07Cit9CisKKy0gKHZvaWQp
cHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTooTlNBcnJheSAqKXNoYXJpbmdJdGVtcyBpblJlY3Q6
KFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0Cit7CiAgICAgV0tXZWJWaWV3
ICp3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAgICAgCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFkb3B0TlMoW1tOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJlRGF0YUFycmF5LmdldCgpXSk7
CisgICAgX3NoYXJpbmdTZXJ2aWNlUGlja2VyID0gYWRvcHROUyhbW05TU2hhcmluZ1NlcnZpY2VQ
aWNrZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6c2hhcmluZ0l0ZW1zXSk7CiAgICAgX3NoYXJpbmdT
ZXJ2aWNlUGlja2VyLmdldCgpLmRlbGVnYXRlID0gc2VsZjsKICAgICAKICAgICAvLyBXS1NoYXJl
U2hlZXQgY2FuIGJlIHJlbGVhc2VkIHVuZGVyIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgZGVsZWdh
dGUgY2FsbGJhY2tzLgpAQCAtMTI2LDcgKzE2NSw3IEBAIC0gKHZvaWQpcHJlc2VudFdpdGhQYXJh
bWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0YSBpblJl
CiAgICAgfQogICAgIFtfc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hvd1JlbGF0aXZlVG9SZWN0OnBy
ZXNlbnRhdGlvblJlY3Qgb2ZWaWV3OndlYlZpZXcgcHJlZmVycmVkRWRnZTpOU01pbllFZGdlXTsK
ICNlbHNlCi0gICAgX3NoYXJlU2hlZXRWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tVSUFjdGl2
aXR5Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aXZpdHlJdGVtczpzaGFyZURhdGFB
cnJheS5nZXQoKSBhcHBsaWNhdGlvbkFjdGl2aXRpZXM6bmlsXSk7CisgICAgX3NoYXJlU2hlZXRW
aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tVSUFjdGl2aXR5Vmlld0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRXaXRoQWN0aXZpdHlJdGVtczpzaGFyaW5nSXRlbXMgYXBwbGljYXRpb25BY3Rpdml0aWVz
Om5pbF0pOwogICAgIFtfc2hhcmVTaGVldFZpZXdDb250cm9sbGVyIHNldENvbXBsZXRpb25XaXRo
SXRlbXNIYW5kbGVyOl4oTlNTdHJpbmcgKiwgQk9PTCBjb21wbGV0ZWQsIE5TQXJyYXkgKiwgTlNF
cnJvciAqKSB7CiAgICAgICAgIFtzZWxmIF9kaWRDb21wbGV0ZVdpdGhTdWNjZXNzOmNvbXBsZXRl
ZF07CiAgICAgICAgIFtzZWxmIGRpc3BhdGNoRGlkRGlzbWlzc107CkBAIC0xODAsNiArMjE5LDgg
QEAgLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2
aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkKIAogLSAodm9pZClfZGlkQ29tcGxldGVXaXRoU3Vj
Y2VzczooQk9PTClzdWNjZXNzCiB7CisgICAgW1dLU2hhcmVTaGVldCByZW1vdmVUZW1wb3JhcnlT
aGFyaW5nRGlyZWN0b3J5Ol90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3RvcnkuZ2V0KCldOworICAg
IF90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3RvcnkgPSBudWxscHRyOwogICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKF9jb21wbGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKGNvbXBs
ZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKQEAgLTIx
NSw2ICsyNTYsMTIxIEBAIC0gKHZvaWQpZGlzcGF0Y2hEaWREaXNtaXNzCiAgICAgICAgIFtfZGVs
ZWdhdGUgc2hhcmVTaGVldERpZERpc21pc3M6c2VsZl07CiB9CiAKKyNpZiBQTEFURk9STShNQUMp
CisrIChCT09MKXNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOihOU1N0cmluZyAq
KWZpbGVQYXRoCit7CisgICAgTlNVUkwgKmZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OmZpbGVQYXRoXTsKKworICAgIGF1dG8gcXVhcmFudGluZVByb3BlcnRpZXMgPSBAeworICAgICAg
ICAoX19icmlkZ2UgTlNTdHJpbmcgKilrTFNRdWFyYW50aW5lVHlwZUtleTogKF9fYnJpZGdlIE5T
U3RyaW5nICopa0xTUXVhcmFudGluZVR5cGVXZWJEb3dubG9hZCwKKyAgICAgICAgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0xTUXVhcmFudGluZUFnZW50QnVuZGxlSWRlbnRpZmllcktleTogV2ViQ29y
ZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkKKyAgICB9OworCisgICAgTlNFcnJvciAq
ZXJyb3I7CisgICAgaWYgKCFbZmlsZVVSTCBzZXRSZXNvdXJjZVZhbHVlOnF1YXJhbnRpbmVQcm9w
ZXJ0aWVzIGZvcktleTpOU1VSTFF1YXJhbnRpbmVQcm9wZXJ0aWVzS2V5IGVycm9yOiZlcnJvcl0p
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qgc2V0IHF1YXJhbnRpbmUgaW5mb3JtYXRp
b24gZm9yIGZpbGUgcGF0aDogJUA6ICVAIiwgZmlsZVBhdGgsIGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIE5POworICAgIH0KKworICAgIC8vIFdoZXRoZXIgdGhlIGZpbGUgd2FzIGRvd25sb2FkZWQg
Ynkgc2FuZGJveGVkIFdlYlByb2Nlc3Mgb3Igbm90LCBMU1NldEl0ZW1BdHRyaWJ1dGUgcmVzZXRz
IHRoZSBmbGFncyB0byAwIChhZHZpc29yeSBRVE5fRkxBR19ET1dOTE9BRCwKKyAgICAvLyB3aGlj
aCBjYW4gYmUgdGhlbiByZW1vdmVkIGJ5IFdlYlByb2Nlc3MpLiBSZXBsYWNlIHRoZSBmbGFncyB3
aXRoIHNhbmRib3ggcXVhcmFudGluZSBvbmVzLCB3aGljaCBjYW5ub3QgYmUgcmVtb3ZlZCBieSBz
YW5kYm94ZWQgcHJvY2Vzc2VzLgorICAgIHJldHVybiBbV0tTaGFyZVNoZWV0IGFwcGx5UXVhcmFu
dGluZVNhbmRib3hBbmREb3dubG9hZEZsYWdzVG9GaWxlQXRQYXRoOmZpbGVQYXRoXTsKK30KKwor
KyAoQk9PTClhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0
aDooTlNTdHJpbmcgKilmaWxlUGF0aAoreworICAgIHF0bl9maWxlX3QgZnEgPSBxdG5fZmlsZV9h
bGxvYygpOworICAgIGludCBxdWFyYW50aW5lRXJyb3IgPSBxdG5fZmlsZV9pbml0X3dpdGhfcGF0
aChmcSwgZmlsZVBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKKyAgICBpZiAocXVhcmFu
dGluZUVycm9yKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHJldHJpZXZlIHF1YXJh
bnRpbmUgZmxhZ3MgZm9yIGZpbGUgcGF0aCAlQDogJWQiLCBmaWxlUGF0aCwgcXVhcmFudGluZUVy
cm9yKTsKKyAgICAgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisgICAgICAgIHJldHVybiBOTzsKKyAg
ICB9CisKKyAgICBxdWFyYW50aW5lRXJyb3IgPSBxdG5fZmlsZV9zZXRfZmxhZ3MoZnEsIFFUTl9G
TEFHX1NBTkRCT1ggfCBRVE5fRkxBR19ET1dOTE9BRCk7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJv
cikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzZXQgcXVhcmFudGluZSBmbGFncyBp
biBxdG5fZmlsZV90IHN0cnVjdHVyZSBmb3IgZmlsZSBwYXRoICVAOiAlZCIsIGZpbGVQYXRoLCBx
dWFyYW50aW5lRXJyb3IpOworICAgICAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0
dXJuIE5POworICAgIH0KKworICAgIHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2FwcGx5X3Rv
X3BhdGgoZnEsIGZpbGVQYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1
YXJhbnRpbmVFcnJvcikKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYXBwbHkgcXVhcmFu
dGluZSBmbGFncyB0byBmaWxlIHBhdGggJUA6ICVkIiwgZmlsZVBhdGgsIHF1YXJhbnRpbmVFcnJv
cik7CisKKyAgICBxdG5fZmlsZV9mcmVlKGZxKTsKKworICAgIHJldHVybiBZRVM7Cit9CisjZW5k
aWYKKworKyAoQk9PTClyZW1vdmVUZW1wb3JhcnlTaGFyaW5nRGlyZWN0b3J5OihOU1N0cmluZyAq
KWRpcmVjdG9yeVBhdGgKK3sKKyAgICBpZiAoIVtkaXJlY3RvcnlQYXRoIGxlbmd0aF0pCisgICAg
ICAgIHJldHVybiBOTzsKKyAgICAKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkaXJlY3RvcnlQYXRoXSkKKyAgICAgICAgcmV0dXJuIFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpkaXJlY3RvcnlQ
YXRoIGVycm9yOm5pbF07CisgICAgCisgICAgcmV0dXJuIFlFUzsKK30KKworKyAoTlNTdHJpbmcg
KiljcmVhdGVUZW1wb3JhcnlTaGFyaW5nRGlyZWN0b3J5Cit7CisgICAgTlNTdHJpbmcgKnRlbXBv
cmFyeURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldL
RmlsZVNoYXJlIik7CisgICAgCisgICAgaWYgKCFbdGVtcG9yYXJ5RGlyZWN0b3J5IGxlbmd0aF0p
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYg
KCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGVtcG9y
YXJ5RGlyZWN0b3J5XSkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNyZWF0ZURpcmVjdG9yeUF0UGF0aDp0ZW1wb3JhcnlEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIHJldHVybiB0ZW1w
b3JhcnlEaXJlY3Rvcnk7Cit9CisKKysgKE5TU3RyaW5nICopY3JlYXRlUmFuZG9tU2hhcmluZ0Rp
cmVjdG9yeUZvckZpbGU6KE5TU3RyaW5nICopdGVtcG9yYXJ5RGlyZWN0b3J5Cit7CisgICAgTlNT
dHJpbmcgKnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAg
ICBpZiAoIVtyYW5kb21EaXJlY3RvcnkgbGVuZ3RoXSB8fCAhW3RlbXBvcmFyeURpcmVjdG9yeSBs
ZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpkYXRhUGF0aCA9IFt0
ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVAIiwgcmFuZG9tRGlyZWN0b3J5XV07CisgICAgCisgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGF0YVBhdGhdKSB7CisgICAgICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOmRhdGFQYXRoIHdpdGhJ
bnRlcm1lZGlhdGVEaXJlY3RvcmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOwor
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICBy
ZXR1cm4gZGF0YVBhdGg7Cit9CisKKysgKE5TVVJMICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6
KE5TU3RyaW5nICopZmlsZU5hbWUgZGF0YTooTlNEYXRhICopZmlsZURhdGEgdGVtcG9yYXJ5RGly
ZWN0b3J5OihOU1N0cmluZyAqKXRlbXBvcmFyeURpcmVjdG9yeQoreworICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworICAgIGlmICghW3RlbXBvcmFyeURpcmVjdG9yeSBsZW5ndGhdIHx8
ICFbZmlsZU5hbWUgbGVuZ3RoXSB8fCAhZmlsZURhdGEpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgCisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeUZvckZpbGUgPSBbV0tTaGFyZVNo
ZWV0IGNyZWF0ZVJhbmRvbVNoYXJpbmdEaXJlY3RvcnlGb3JGaWxlOnRlbXBvcmFyeURpcmVjdG9y
eV07CisgICAgaWYgKCF0ZW1wb3JhcnlEaXJlY3RvcnlGb3JGaWxlKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIE5TU3RyaW5nICpmaWxlID0gW3RlbXBvcmFyeURpcmVjdG9yeUZvckZp
bGUgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVOYW1lXTsKKworICAgIE5TVVJM
ICpmaWxlVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlXTsKKyAgICAKKyAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKKyAgICBbZmlsZURhdGEgd3JpdGVUb1VSTDpmaWxlVVJMIG9wdGlv
bnM6TlNEYXRhV3JpdGluZ0F0b21pYyBlcnJvcjomZXJyb3JdOworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFbV0tTaGFyZVNo
ZWV0IHNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOmZpbGVdKQorICAgICAgICBy
ZXR1cm4gbmlsOworI2VuZGlmCisgICAgcmV0dXJuIGZpbGVVUkw7Cit9CisKIEBlbmQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JN
KEFQUExFVFYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzE0NDhhMjY1ZDM0ZjYxYTk2MTNiMmE0NDYzMDUzMzVjNDVlMGY2
My4uMTRiYTJlNzBiOTkyMDFlZjc0NTEzMjNhNWNiN2VlOTBiN2JkYjk3NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA1LTA2ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCB0byBu
byBsb25nZXIgdXNlIHVybCBvZiBpbWFnZS4KKworICAgICAgICAqIGZhc3Qvd2ViLXNoYXJlL3No
YXJlLXdpdGgtZmlsZXMuaHRtbDoKKwogMjAyMC0wNC0yNCAgVG9tb2tpIEltYWkgIDxUb21va2ku
SW1haUBzb255LmNvbT4KIAogICAgICAgICBbT3BlblNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBB
UElzIGZvciBITUFDCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3NTUzYjZlODJk
MzVmZWZiYjZjN2FhOWU4N2EyMjJjYmM1ZDlkZGNkLi5jMGYzZTE4YTkzMjJjYTA4MzRkZGQ3ZGJj
NGM3MGQxZWVmMmMyOGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wNS0wNiAgTmlrb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJlIHYyIGZvciBmaWxlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4
cGVjdGF0aW9ucyBmb3IgbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS5odHRwcy1leHBlY3RlZC50
eHQ6CisKIDIwMjAtMDQtMjQgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBJbXBvcnQgZmV0Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZS9mZXRjaC5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKaW5kZXggODU2
ZWQyNDQxODg3MTg4ZGI2NDk4ZDNkYjE3MDgwNzE0OTBmNWM4Ni4uOWI4OTBkNGMxYjEzNDdkMDlj
YjYxY2EyNjI0MjMyZDM1MGMwNjk5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93ZWIt
c2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNo
YXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbApAQCAtMiw2ICsyLDcgQEAKIAogPGh0bWw+CiA8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT01LCB3aWR0aD1kZXZpY2Ut
d2lkdGgiPgorCiA8aGVhZD4KIAogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KQEAgLTE2LDEwICsxNywxMiBAQAogCiAgICAgICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB0ZXh0RmlsZSA9IG5l
dyBGaWxlKFsnaGVsbG8nXSwgJ2hlbGxvLnR4dCcsIHt0eXBlOid0ZXh0L3BsYWluJ30pOworCisg
ICAgICAgICAgICB2YXIgYmxvYiA9IHRoaXMucmVzcG9uc2U7CisgICAgICAgICAgICBjb25zdCB0
ZXh0RmlsZSA9IG5ldyBGaWxlKFsnVGhpcyBpcyBhIHRleHQgZmlsZSddLCAnVGV4dEZpbGUudHh0
Jywge3R5cGU6J3RleHQvaHRtbCd9KTsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKLSAgICAgICAg
ICAgICAgICBuYXZpZ2F0b3Iuc2hhcmUoe3RleHQ6ICJzYWRmIiwgZmlsZXM6IFt0ZXh0RmlsZV19
KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoIlBBU1M6IFNo
YXJlIHNoZWV0IGludm9rZWQuIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iuc2hhcmUoe3RleHQ6
ICJUaGlzIGlzIGEgdGV4dCBmaWxlIiwgZmlsZXM6IFt0ZXh0RmlsZV19KS50aGVuKChyZXN1bHQp
ID0+IHsKKyAgICAgICAgICAgICAgICB3cml0ZSgiUEFTUzogU2hhcmUgc2hlZXQgaW52b2tlZC4i
KTsKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAg
ICAgICAgICAgfSk7ICAgIAogICAgICAgICAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398827</attachid>
            <date>2020-05-07 19:18:09 -0700</date>
            <delta_ts>2020-05-08 12:03:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200507221807.patch</filename>
            <type>text/plain</type>
            <size>32942</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3YmIyNTc5OTlmYWFl
NmVkYmFiMjFlM2QxNmM5YWVhM2VmYzJmNS4uNWZkNGExYzRiZWQxZTUzNzkwMGI0YTQ4YzU0OGYx
MDhkYjNlYzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA1LTA2ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0yNCAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIAogICAgICAgICBbT3Bl
blNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBBUElzIGZvciBITUFDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NTgx
MDdjYjliOGY4NTE0NGJiNmI0MDZiZjc1MTliY2FiNjhmYzcuLjhjZDk4NWE4NTY2YTdlYzM5ZGY0
YWVhYmJkNDNhMWVhNmZiMDg2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDUt
MDYgIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBv
YmplY3RzIG92ZXIgSVBDIGFuZAorICAgICAgICBzaGFyaW5nIG9mIGZpbGVzIHRvIHNoYXJlIHNo
ZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUubW06IEFkZGVkLgorICAgICAgICAo
K1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aF0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ10pOgor
ICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSByZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hh
cmluZ10pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBzZXRRdWFyYW50aW5lSW5m
b3JtYXRpb25Gb3JGaWxlUGF0aDpdKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUg
YXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6XSk6Cisg
ICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGNyZWF0ZUZpbGVuYW1lOl0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpkYXRhOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW06CisgICAgICAgICgt
W1dLU2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6aW5SZWN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6
XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDQtMjQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9t
YXRpb246IHRpbWVvdXQgdW5kZXJuZWF0aCBBdXRvbWF0aW9uLmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uIGluIFNlbGVuaXVtIHRlc3QgZnJhbWVfc3dpdGNoaW5nX3Rlc3RzLnB5Ojp0ZXN0U2hv
dWxkTm90QmVBYmxlVG9Eb0FueXRoaW5nVGhlRnJhbWVJc0RlbGV0ZWRGcm9tVW5kZXJVc1tTYWZh
cmldCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBmMDhkZjg3MzU5NGY3OGYwNDkwM2M3ZWRm
OGRjNGIzYzY3Y2ZjNDE1Li41MmUyMzMzNjExOGE3YzBiNjUxZDAzY2M1ZmUwNjVkOTc4YWJkMzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTU0Nyw2ICs1NDcsMTAgQEAKICNkZWZpbmUg
RU5BQkxFX0RBVEFfREVURUNUSU9OIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0ZJ
TEVfU0hBUkUpCisjZGVmaW5lIEVOQUJMRV9GSUxFX1NIQVJFIDEKKyNlbmRpZgorCiAvKgogICog
RW5hYmxlIHRoaXMgdG8gcHV0IGVhY2ggSXNvSGVhcCBhbmQgb3RoZXIgYWxsb2NhdGlvbiBjYXRl
Z29yaWVzIGludG8gdGhlaXIgb3duIG1hbGxvYyBoZWFwcywgc28gdGhhdCB0b29scyBsaWtlIHZt
bWFwIGNhbiBzaG93IGhvdyBiaWcgZWFjaCBoZWFwIGlzLgogICogVHVybiBCRU5BQkxFX01BTExP
Q19IRUFQX0JSRUFLRE9XTiBvbiBpbiBibWFsbG9jIHRvZ2V0aGVyIHdoZW4gdXNpbmcgdGhpcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNmYxNTRmMTM5YzA0ZDU4YjQ4Njk5OTc5N2NhZGUzZjA3MzY4OTg3
OS4uNDgyYzM3NzJmN2Q4MDE5MTRkZmZkOWY2YmExNzNjYTM3ODZjZGRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE2ODQsNiArMTY4NCw3IEBAIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAKIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCiBwYWdlL1NldHRp
bmdzQmFzZS5jcHAKK3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAogcGFnZS9Tb2NrZXRQcm92aWRl
ci5jcHAKIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCiBwYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNTExMjU2Yzg5YTNlNTZhNjdmNTczMzhkZTNjNDQ4NTNlYTA3M2E2OC4uZWE0MDUy
NzIyYmM3MmFhM2ZlNDQzMjU0Yzg5MDY1YmUxN2Q1MGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE3MCw2ICs2MTcwLDgg
QEAKIAkJMUEyQTY4MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3Jlc3NUcmFja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkFBQzU2MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMkFBQzU3MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTJDNjY3MTI0MkFGRUY3MDAzMDU1
RUMgLyogU2hhcmVEYXRhUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlRGF0YVJl
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMkM2NjczMjQyQUZFRjgw
MDMwNTVFQyAvKiBTaGFyZURhdGFSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVEYXRhUmVh
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTU4MENDNTUyMTMwMDRB
MjA2MiAvKiBTUUxWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJFNkU3ODBDQzU1NkQ1MDA0
QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxpdGVBdXRob3JpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEzNTg2REQxNTI2NEM0NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxvdy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExMDEsNiArMjExMDMs
OCBAQAogCQkJCTdDNkVGRUVBMUY5NDZBMkUwMEZGQUQ0MSAvKiBTZXR0aW5nc0RlZmF1bHRWYWx1
ZXMuaCAqLywKIAkJCQkxREM1NTQwMDIxMUJBOEM4MDA0Qjc4MEUgLyogU2hhcmVEYXRhLmggKi8s
CiAJCQkJMURDNTUzRkYyMTFCQTg0MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8sCisJCQkJ
MUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5jcHAgKi8sCisJCQkJ
MUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5oICovLAogCQkJCTVD
Njg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRlci5jcHAgKi8sCiAJCQkJNUM3
Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8sCiAJCQkJNjI2Q0RF
MEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFlNTljMzE5MTRhY2Mz
NjFlMjc0Li5hNmEzMmQ4OTE4NTI2Mjc4YmQ5NGJiMDcxOGFiODgyMDVjMjMzYWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlRGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlRGF0YVJlYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1
YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzExNCwxMyBA
QCBib29sIE5hdmlnYXRvcjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051bGwoKSAm
JiBkYXRhLnVybC5pc051bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYg
KCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHko
KSkgeworI2lmIEVOQUJMRShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQgTmF2aWdh
dG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFyZURh
dGEmIGRhdGEsIFJlCiAgICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93KCk7CiAg
ICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRlIHdlIHNo
b3VsZCBjb25zdW1lIHVzZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkgc3RyaWN0
ZXIgaGVyZS4KLSAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0
aXZhdGlvbigpKSB7CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVu
dEFjdGl2YXRpb24oKSB8fCBtX2hhc1BlbmRpbmdTaGFyZSkgewogICAgICAgICBwcm9taXNlLT5y
ZWplY3QoTm90QWxsb3dlZEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0Nywx
MCArMTU0LDM5IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAgICAgU2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCBzaGFyZURhdGEgPSB7CiAgICAgICAgIGRhdGEsCiAgICAgICAgIHVybCwKKyAgICAg
ICAgeyB9LAogICAgIH07CisjaWYgRU5BQkxFKEZJTEVfU0hBUkUpCisgICAgaWYgKCFkYXRhLmZp
bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9sb2FkZXIpCisgICAgICAgICAgICBtX2xv
YWRlci0+Y2FuY2VsKCk7CisgICAgICAgIAorICAgICAgICBtX2xvYWRlciA9IFNoYXJlRGF0YVJl
YWRlcjo6Y3JlYXRlKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKEV4Y2VwdGlv
bk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiByZWFkRGF0YSkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBzaG93U2hhcmVEYXRhKHJlYWREYXRhLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAg
fSk7CisgICAgICAgIG1fbG9hZGVyLT5zdGFydChmcmFtZSgpLT5kb2N1bWVudCgpLCBXVEZNb3Zl
KHNoYXJlRGF0YSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgdGhpcy0+
c2hvd1NoYXJlRGF0YShzaGFyZURhdGEsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIE5h
dmlnYXRvcjo6c2hvd1NoYXJlRGF0YShFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Jj4gcmVhZERhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAo
cmVhZERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlYWRE
YXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAg
ICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGZyYW1lLT5wYWdlKCktPmNocm9t
ZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9oYXNQZW5kaW5nU2hhcmUgPSB0cnVlOworICAg
IGF1dG8gc2hhcmVEYXRhID0gcmVhZERhdGEucmV0dXJuVmFsdWUoKTsKKyAgICAKKyAgICBmcmFt
ZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgdGhpc10gKGJvb2wgY29tcGxldGVkKSB7CisgICAgICAgIG1faGFz
UGVuZGluZ1NoYXJlID0gZmFsc2U7CiAgICAgICAgIGlmIChjb21wbGV0ZWQpIHsKICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4YTg4NjQ3ZjgyZGQu
LjIyNTM5ZjIwNDZkODZhN2U0NzU2NzM3NTIxYTZhMWFjZmY0MzJlNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVy
dHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTU1pbWVUeXBlQXJy
YXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7CitjbGFzcyBTaGFy
ZURhdGFSZWFkZXI7CiAKIGNsYXNzIE5hdmlnYXRvciBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0b3JC
YXNlLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1
YmxpYyBTdXBwbGVtZW50YWJsZTxOYXZpZ2F0b3I+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKE5hdmlnYXRvcik7CkBAIC02MywxMiArNjUsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6CisgICAgdm9pZCBzaG93U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmPiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgZXhwbGljaXQgTmF2aWdh
dG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01XaW5kb3cmKTsKIAorICAgIG11dGFibGUg
UmVmUHRyPFNoYXJlRGF0YVJlYWRlcj4gbV9sb2FkZXI7CisgICAgbXV0YWJsZSBib29sIG1faGFz
UGVuZGluZ1NoYXJlIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJh
eT4gbV9wbHVnaW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWlt
ZVR5cGVzOwogICAgIG11dGFibGUgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIG11dGFibGUgU3Ry
aW5nIG1fcGxhdGZvcm07CiB9OwotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA1YzM5
MDdjMTA3NTgwNDlkODg3YzA0NjMxZGI0ZjljMDNmZjFhZjc5Li5mZWU2Yjk5ZTNmYTVlMDQ4ZTZi
MThhMDQ5YjQyZGE2NGFjYmYzMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzUsMTAgKzM2LDE2IEBAIHN0cnVjdCBTaGFyZURhdGEgewogICAgIFN0cmluZyB1cmw7
CiAgICAgVmVjdG9yPFJlZlB0cjxGaWxlPj4gZmlsZXM7CiB9OworCitzdHJ1Y3QgUmF3RmlsZSB7
CisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRh
OworfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKICAgICBTaGFyZURh
dGEgc2hhcmVEYXRhOwogICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIFZlY3RvcjxSYXdGaWxl
PiBmaWxlczsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWNiNDY1OWRhYzI3MDhhZmY5MzUwMmUwYTlmM2IyODdjMjlmNzFmMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cApAQCAtMCwwICsxLDg4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBt
ZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZURhdGFSZWFkZXIu
aCIKKworI2luY2x1ZGUgIkJsb2JMb2FkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlRGF0
YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7CisgICAg
Cit9CisKK1NoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCit7CisgICAgY2FuY2Vs
KCk7Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQs
IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmJiBzaGFyZURhdGEpCit7CisgICAgbV9maWxlc1JlYWRT
b0ZhciA9IDA7CisgICAgbV9zaGFyZURhdGEgPSBXVEZNb3ZlKHNoYXJlRGF0YSk7CisgICAgaW50
IGNvdW50ID0gMDsKKyAgICBtX3BlbmRpbmdGaWxlTG9hZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGJs
b2IgOiBtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMpIHsKKyAgICAgICAgbV9wZW5kaW5nRmls
ZUxvYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KGRvY3VtZW50
LCAqYmxvYiwgW3RoaXMsIGNvdW50LCBmaWxlTmFtZSA9IGJsb2ItPm5hbWUoKV0geworICAgICAg
ICAgICAgdGhpcy0+ZGlkRmluaXNoTG9hZGluZyhjb3VudCwgZmlsZU5hbWUpOworICAgICAgICB9
KSk7CisgICAgICAgIGNvdW50Kys7CisgICAgfQorfQorCit2b2lkIFNoYXJlRGF0YVJlYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQor
eworICAgIGlmIChtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+ZXJyb3JDb2RlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlv
bkhhbmRsZXIpKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgQWJv
cnRFcnJvciwgIkFib3J0IGR1ZSB0byBlcnJvciB3aGlsZSByZWFkaW5nIGZpbGVzLiJfcyB9KTsK
KyAgICAgICAgY2FuY2VsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXV0
byBhcnJheUJ1ZmZlciA9IG1fcGVuZGluZ0ZpbGVMb2Fkc1tsb2FkSW5kZXhdLT5yZXN1bHQoKTsK
KyAgICAKKyAgICBSYXdGaWxlIGZpbGU7CisgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwor
ICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsK
KyAgICBtX2ZpbGVzUmVhZFNvRmFyKys7CisgICAgCisgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIg
PT0gc3RhdGljX2Nhc3Q8aW50PihtX3BlbmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgeworICAgICAg
ICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xlYXIoKTsKKyAgICAgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobV9zaGFyZURhdGEpOworICAgIH0KK30KKwordm9pZCBTaGFyZURhdGFS
ZWFkZXI6OmNhbmNlbCgpCit7CisgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7Cit9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODFhOTY0OTI3
Zjk3ZmJmY2QxYWZmZGZjOTk2ZWJhNWU5YmRiMDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiU2hhcmVEYXRhLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgQmxvYkxvYWRl
cjsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xh
c3MgU2hhcmVEYXRhUmVhZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVEYXRhUmVhZGVyPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZURhdGFSZWFkZXI+IGNyZWF0ZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVEYXRhUmVhZGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7IH0KKyAgICB+U2hhcmVEYXRhUmVhZGVyKCk7
CisgICAgdm9pZCBzdGFydChEb2N1bWVudCosIFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmJik7Cisg
ICAgdm9pZCBjYW5jZWwoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTaGFyZURhdGFSZWFk
ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMJj4pPiYmKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoaW50LCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hh
cmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBTaGFyZURh
dGFXaXRoUGFyc2VkVVJMIG1fc2hhcmVEYXRhOworICAgIGludCBtX2ZpbGVzUmVhZFNvRmFyOwor
ICAgIFZlY3RvcjxVbmlxdWVSZWY8QmxvYkxvYWRlcj4+IG1fcGVuZGluZ0ZpbGVMb2FkczsKK307
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50
aW5lU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5o
CmluZGV4IDk0MDQ3NDQzNWY4ZGQzZDVlODM1Mjc3YjY2ZDMyZDhmZjMxYmIyYzIuLjBiZjEwM2Q0
YTllYmQ5ZmRmY2M5MWMwM2I2OTNlZDNhODNlNzM2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApAQCAtMzQsNiArMzQsNyBAQAogI2Vsc2UK
IAogZW51bSBxdG5fZmxhZ3MgeworICAgIFFUTl9GTEFHX0RPV05MT0FEID0gMHgwMDAxLAogICAg
IFFUTl9GTEFHX1NBTkRCT1ggPSAweDAwMDIsCiB9OwogCkBAIC00MywxMCArNDQsMTUgQEAgZW51
bSBxdG5fZmxhZ3MgewogI2RlZmluZSBxdG5fcHJvY19pbml0IF9xdG5fcHJvY19pbml0CiAjZGVm
aW5lIHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmIF9xdG5fcHJvY19pbml0X3dpdGhfc2VsZgogI2Rl
ZmluZSBxdG5fcHJvY19zZXRfZmxhZ3MgX3F0bl9wcm9jX3NldF9mbGFncwotCisjZGVmaW5lIHF0
bl9maWxlX2FsbG9jIF9xdG5fZmlsZV9hbGxvYworI2RlZmluZSBxdG5fZmlsZV9pbml0X3dpdGhf
cGF0aCBfcXRuX2ZpbGVfaW5pdF93aXRoX3BhdGgKKyNkZWZpbmUgcXRuX2ZpbGVfZnJlZSBfcXRu
X2ZpbGVfZnJlZQorI2RlZmluZSBxdG5fZmlsZV9hcHBseV90b19wYXRoIF9xdG5fZmlsZV9hcHBs
eV90b19wYXRoCisjZGVmaW5lIHF0bl9maWxlX3NldF9mbGFncyBfcXRuX2ZpbGVfc2V0X2ZsYWdz
CiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgX3F0bl9wcm9jICpxdG5fcHJvY190OwordHlwZWRl
ZiBzdHJ1Y3QgX3F0bl9maWxlICpxdG5fZmlsZV90OwogCiBXVEZfRVhURVJOX0NfQkVHSU4KIApA
QCAtNTYsNiArNjIsMTEgQEAgaW50IHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmKHF0bl9wcm9jX3Qp
OwogaW50IHF0bl9wcm9jX3NldF9mbGFncyhxdG5fcHJvY190LCB1aW50MzJfdCBmbGFncyk7CiBx
dG5fcHJvY190IHF0bl9wcm9jX2FsbG9jKCk7CiB2b2lkIHF0bl9wcm9jX2ZyZWUocXRuX3Byb2Nf
dCk7CitxdG5fZmlsZV90IHF0bl9maWxlX2FsbG9jKHZvaWQpOwordm9pZCBxdG5fZmlsZV9mcmVl
KHF0bl9maWxlX3QgcWYpOworaW50IHF0bl9maWxlX3NldF9mbGFncyhxdG5fZmlsZV90IHFmLCB1
aW50MzJfdCBmbGFncyk7CitpbnQgcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aChxdG5fZmlsZV90IHFm
LCBjb25zdCBjaGFyICpwYXRoKTsKK2ludCBxdG5fZmlsZV9pbml0X3dpdGhfcGF0aChxdG5fZmls
ZV90IHFmLCBjb25zdCBjaGFyICpwYXRoKTsKIAogV1RGX0VYVEVSTl9DX0VORAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5MmJiMjA0
NmEyZjdiMzJiMjFiOWE5NWE3NWYzYThiYjJjMzNkOGVjLi4yZGQ4MjcwOTdmZmM4ZWQ5YjVhYmIw
NzJkZTc5MTU2MzBhOTk4NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRyYWNraW5nUmVnaW9ucy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
dGVyT3BlcmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CkBA
IC0yMDE5LDYgKzIwMjAsMjEgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZpbGVDaG9vc2VyU2V0dGlu
Z3M+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRmlsZUNob29zZXJTZXQKIAogICAgIHJldHVy
biB0cnVlOwogfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmF3RmlsZT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSYXdGaWxlJiBmaWxlKQoreworICAgIGVuY29kZXIgPDwgZmlsZS5m
aWxlTmFtZTsKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgZmlsZS5maWxlRGF0YS5n
ZXQoKSk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSYXdGaWxlPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFJhd0ZpbGUmIGZpbGUpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWxl
LmZpbGVOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGZpbGUuZmlsZURhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CiAgICAgCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlRGF0YSYgc2V0dGluZ3MpCiB7CkBA
IC0yMDQyLDYgKzIwNTgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZQogewogICAgIGVuY29k
ZXIgPDwgc2V0dGluZ3Muc2hhcmVEYXRhOwogICAgIGVuY29kZXIgPDwgc2V0dGluZ3MudXJsOwor
ICAgIGVuY29kZXIgPDwgc2V0dGluZ3MuZmlsZXM7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxT
aGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwmIHNldHRpbmdzKQpAQCAtMjA1MCw2ICsyMDY3LDggQEAgYm9vbCBBcmd1
bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgU2hhcmVEYXRhV2kKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2V0dGluZ3MudXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc2V0dGluZ3MuZmlsZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggNmJlY2JmNzBlMmFiMjRlYmY5MTZlNzBlOGEzOTNjYWUwZjI3ODQxMS4u
MWViNDAyMGU2ZGIxODE1Y2U3ZTZmZDQ5YWEwZjcxNWRmYzY0NDA5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xh
c3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERhdGFi
YXNlRGV0YWlsczsKIGNsYXNzIERyYWdEYXRhOworY2xhc3MgRmlsZTsKIGNsYXNzIEZpbHRlck9w
ZXJhdGlvbjsKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBGbG9hdFBvaW50OwpAQCAt
MTI1LDYgKzEyNiw3IEBAIHN0cnVjdCBFdmVudFRyYWNraW5nUmVnaW9uczsKIHN0cnVjdCBFeGNl
cHRpb25EZXRhaWxzOwogc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwogc3RydWN0IEZpbGVDaG9vc2Vy
U2V0dGluZ3M7CitzdHJ1Y3QgUmF3RmlsZTsKIHN0cnVjdCBTaGFyZURhdGE7CiBzdHJ1Y3QgU2hh
cmVEYXRhV2l0aFBhcnNlZFVSTDsKIHN0cnVjdCBMZW5ndGg7CkBAIC01NDksNiArNTUxLDExIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsZUNob29zZXJTZXR0
aW5ncz4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIH07CiAgICAgCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJhd0ZpbGU+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJhd0ZpbGUmKTsKKyAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpSYXdGaWxl
Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNoYXJl
RGF0YT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
U2hhcmVEYXRhJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViQ29yZTo6U2hhcmVEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2hhcmVTaGVldC5oCmluZGV4IDRhY2RiYjY5YTRiMmFiZTFhYzBmZTQ1YjM0ZWVk
MWM2YWFhNzFjYTEuLmMzNDBkYjY4ZWVmYTk5Y2Y0NzZjZWY1Yzg1ODEyZmIwYThmYTBlODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oCkBAIC00Miw3
ICs0Miw2IEBAIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMOwogLSAodm9pZClkaXNtaXNz
OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLU2hhcmVTaGVldERlbGVnYXRl
PiBkZWxlZ2F0ZTsKLQogQGVuZAogCiBAcHJvdG9jb2wgV0tTaGFyZVNoZWV0RGVsZWdhdGUgPE5T
T2JqZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFy
ZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1t
CmluZGV4IGIwMjQzM2MzMDNhNmY5MzlkYjQyYTdmYzQwNDllOWVhYzU0MWIwMDYuLjRkNWRlNjIw
NmQyOWQ5Mjk0YWRhMjAyYWU3NWYyM2M4MTZkZTU2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KQEAgLTI4LDEwICsyOCwxMyBAQAogCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVU
VikKIAorI2ltcG9ydCAiUXVhcmFudGluZVNQSS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVEYXRhLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDcsNiArNTAs
NyBAQCBAZW5kCiAjZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdLU2hhcmVTaGVldCB7CisgICAg
UmV0YWluUHRyPE5TVVJMPiBfdGVtcG9yYXJ5RmlsZVNoYXJlRGlyZWN0b3J5OwogICAgIFdlYWtP
YmpDUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgV2Vha09iakNQdHI8aWQgPFdLU2hhcmVT
aGVldERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKICAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+IF9jb21wbGV0aW9uSGFuZGxlcjsKQEAgLTEwNiwxMCArMTEwLDQ5IEBAIC0gKHZv
aWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFy
c2VkVVJMICYpZGF0YSBpblJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgaWYg
KGRhdGEuZmlsZXMuc2l6ZSgpKSB7CisgICAgICAgIF90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3Rv
cnkgPSBbV0tTaGFyZVNoZWV0IGNyZWF0ZVRlbXBvcmFyeVNoYXJpbmdEaXJlY3RvcnldOworICAg
ICAgICAKKyAgICAgICAgYXV0byBmaWxlV3JpdGVHcm91cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0
Y2hfZ3JvdXBfY3JlYXRlKCkpOworICAgICAgICBhdXRvIHF1ZXVlID0gYWRvcHRPU09iamVjdChk
aXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tTaGFyZVNoZWV0LlNoYXJl
YWJsZUZpbGVXcml0ZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKyAgICAgICAgCisgICAg
ICAgIF9fYmxvY2sgYm9vbCBzdWNjZXNzZnVsID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlu
dCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoYXV0byBmaWxlIDogZGF0YS5maWxlcykgeworICAg
ICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZmlsZVdyaXRlR3JvdXAuZ2V0KCksIHF1ZXVl
LmdldCgpLCBeeworICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzc2Z1bCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1dLU2hh
cmVTaGVldCB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlLmZpbGVOYW1lKSBkYXRhOmZpbGUu
ZmlsZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRlbXBvcmFyeURpcmVjdG9yeTpfdGVtcG9y
YXJ5RmlsZVNoYXJlRGlyZWN0b3J5LmdldCgpIHByZWZpeDpbW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6aW5kZXhdIHN0cmluZ1ZhbHVlXV07CisgICAgICAgICAgICAgICAgaWYgKCFmaWxlVVJMKSB7
CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbc2hhcmVE
YXRhQXJyYXkgYWRkT2JqZWN0OmZpbGVVUkxdOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBpbmRleCsrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkaXNwYXRjaF9ncm91cF9u
b3RpZnkoZmlsZVdyaXRlR3JvdXAuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgICAgICBpZiAoIXN1Y2Nlc3NmdWwpIHsKKyAgICAgICAgICAgICAgICBbc2VsZiBf
ZGlkQ29tcGxldGVXaXRoU3VjY2VzczpOT107CisgICAgICAgICAgICAgICAgW3NlbGYgZGlzbWlz
c107CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
W3NlbGYgcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJl
Y3Q6cmVjdF07CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IFtzZWxmIHByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5S
ZWN0OnJlY3RdOworfQorCistICh2b2lkKXByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJy
YXkgKilzaGFyaW5nSXRlbXMgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4pcmVjdAorewogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxl
YXNlZCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfc2hhcmluZ1NlcnZpY2VQaWNr
ZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBhbGxvY10gaW5pdFdpdGhJdGVt
czpzaGFyZURhdGFBcnJheS5nZXQoKV0pOworICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFk
b3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJp
bmdJdGVtc10pOwogICAgIF9zaGFyaW5nU2VydmljZVBpY2tlci5nZXQoKS5kZWxlZ2F0ZSA9IHNl
bGY7CiAgICAgCiAgICAgLy8gV0tTaGFyZVNoZWV0IGNhbiBiZSByZWxlYXNlZCB1bmRlciBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyIGRlbGVnYXRlIGNhbGxiYWNrcy4KQEAgLTEyNiw3ICsxNjksNyBA
QCAtICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCAmKWRhdGEgaW5SZQogICAgIH0KICAgICBbX3NoYXJpbmdTZXJ2aWNlUGlj
a2VyIHNob3dSZWxhdGl2ZVRvUmVjdDpwcmVzZW50YXRpb25SZWN0IG9mVmlldzp3ZWJWaWV3IHBy
ZWZlcnJlZEVkZ2U6TlNNaW5ZRWRnZV07CiAjZWxzZQotICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rpdml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aEFjdGl2aXR5SXRlbXM6c2hhcmVEYXRhQXJyYXkuZ2V0KCkgYXBwbGljYXRpb25BY3Rpdml0aWVz
Om5pbF0pOworICAgIF9zaGFyZVNoZWV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlBY3Rp
dml0eVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGl2aXR5SXRlbXM6c2hhcmluZ0l0
ZW1zIGFwcGxpY2F0aW9uQWN0aXZpdGllczpuaWxdKTsKICAgICBbX3NoYXJlU2hlZXRWaWV3Q29u
dHJvbGxlciBzZXRDb21wbGV0aW9uV2l0aEl0ZW1zSGFuZGxlcjpeKE5TU3RyaW5nICosIEJPT0wg
Y29tcGxldGVkLCBOU0FycmF5ICosIE5TRXJyb3IgKikgewogICAgICAgICBbc2VsZiBfZGlkQ29t
cGxldGVXaXRoU3VjY2Vzczpjb21wbGV0ZWRdOwogICAgICAgICBbc2VsZiBkaXNwYXRjaERpZERp
c21pc3NdOwpAQCAtMTgzLDYgKzIyNiwxMCBAQCAtICh2b2lkKV9kaWRDb21wbGV0ZVdpdGhTdWNj
ZXNzOihCT09MKXN1Y2Nlc3MKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShf
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpfdGVtcG9y
YXJ5RmlsZVNoYXJlRGlyZWN0b3J5LmdldCgpIGVycm9yOm5pbF07CisjZW5kaWYKKyAgICBfdGVt
cG9yYXJ5RmlsZVNoYXJlRGlyZWN0b3J5ID0gbnVsbHB0cjsKIH0KIAogLSAodm9pZClkaXNtaXNz
CkBAIC0yMTUsNiArMjYyLDg4IEBAIC0gKHZvaWQpZGlzcGF0Y2hEaWREaXNtaXNzCiAgICAgICAg
IFtfZGVsZWdhdGUgc2hhcmVTaGVldERpZERpc21pc3M6c2VsZl07CiB9CiAKKyNpZiBQTEFURk9S
TShNQUMpCisrIChCT09MKXNldFF1YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOihOU1VS
TCAqKWZpbGVVUkwKK3sKKyAgICBhdXRvIHF1YXJhbnRpbmVQcm9wZXJ0aWVzID0gQHsKKyAgICAg
ICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0xTUXVhcmFudGluZVR5cGVLZXk6IChfX2JyaWRnZSBO
U1N0cmluZyAqKWtMU1F1YXJhbnRpbmVUeXBlV2ViRG93bmxvYWQsCisgICAgICAgIChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRpbmVBZ2VudEJ1bmRsZUlkZW50aWZpZXJLZXk6IFdlYkNv
cmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpCisgICAgfTsKKworICAgIGlmICghW2Zp
bGVVUkwgc2V0UmVzb3VyY2VWYWx1ZTpxdWFyYW50aW5lUHJvcGVydGllcyBmb3JLZXk6TlNVUkxR
dWFyYW50aW5lUHJvcGVydGllc0tleSBlcnJvcjpuaWxdKQorICAgICAgICByZXR1cm4gTk87CisK
KyAgICAvLyBXaGV0aGVyIHRoZSBmaWxlIHdhcyBkb3dubG9hZGVkIGJ5IHNhbmRib3hlZCBXZWJQ
cm9jZXNzIG9yIG5vdCwgTFNTZXRJdGVtQXR0cmlidXRlIHJlc2V0cyB0aGUgZmxhZ3MgdG8gMCAo
YWR2aXNvcnkgUVROX0ZMQUdfRE9XTkxPQUQsCisgICAgLy8gd2hpY2ggY2FuIGJlIHRoZW4gcmVt
b3ZlZCBieSBXZWJQcm9jZXNzKS4gUmVwbGFjZSB0aGUgZmxhZ3Mgd2l0aCBzYW5kYm94IHF1YXJh
bnRpbmUgb25lcywgd2hpY2ggY2Fubm90IGJlIHJlbW92ZWQgYnkgc2FuZGJveGVkIHByb2Nlc3Nl
cy4KKyAgICByZXR1cm4gW1dLU2hhcmVTaGVldCBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93
bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDpmaWxlVVJMXTsKK30KKworKyAoQk9PTClhcHBseVF1YXJh
bnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0aDooTlNVUkwgKilmaWxlVVJM
Cit7CisgICAgcXRuX2ZpbGVfdCBmcSA9IHF0bl9maWxlX2FsbG9jKCk7CisgICAgaW50IHF1YXJh
bnRpbmVFcnJvciA9IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKGZxLCBmaWxlVVJMLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikgeworICAgICAgICBx
dG5fZmlsZV9mcmVlKGZxKTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAgIHF1YXJh
bnRpbmVFcnJvciA9IHF0bl9maWxlX3NldF9mbGFncyhmcSwgUVROX0ZMQUdfU0FOREJPWCB8IFFU
Tl9GTEFHX0RPV05MT0FEKTsKKyAgICBpZiAocXVhcmFudGluZUVycm9yKSB7CisgICAgICAgIHF0
bl9maWxlX2ZyZWUoZnEpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorCisgICAgcXVhcmFu
dGluZUVycm9yID0gcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aChmcSwgZmlsZVVSTC5maWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pOworCisgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisKKyAgICByZXR1cm4g
WUVTOworfQorI2VuZGlmCisKKysgKE5TVVJMICopY3JlYXRlVGVtcG9yYXJ5U2hhcmluZ0RpcmVj
dG9yeQoreworICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXS0ZpbGVTaGFyZSIpOworICAgIAorICAgIGlmICgh
W3RlbXBvcmFyeURpcmVjdG9yeSBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6dGVtcG9yYXJ5RGlyZWN0b3J5IGlzRGlyZWN0
b3J5OllFU107Cit9CisKKysgKE5TVVJMICopY3JlYXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZv
ckZpbGU6KE5TVVJMICopdGVtcG9yYXJ5RGlyZWN0b3J5IHByZWZpeDooTlNTdHJpbmcgKilwcmVm
aXgKK3sKKyAgICBOU1N0cmluZyAqcmFuZG9tRGlyZWN0b3J5ID0gW3ByZWZpeCBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzogY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpXTsKKyAgICBpZiAoIVty
YW5kb21EaXJlY3RvcnkgbGVuZ3RoXSB8fCAhdGVtcG9yYXJ5RGlyZWN0b3J5KQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIE5TVVJMICpkYXRhUGF0aCA9IFt0ZW1wb3JhcnlEaXJlY3RvcnkgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OiByYW5kb21EaXJlY3RvcnldOworICAgIAorICAgIGlm
ICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpk
YXRhUGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJy
b3I6bmlsXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gZGF0YVBhdGg7Cit9CisK
KysgKE5TVVJMICopd3JpdGVGaWxlVG9TaGFyZWFibGVVUkw6KE5TU3RyaW5nICopZmlsZU5hbWUg
ZGF0YTooTlNEYXRhICopZmlsZURhdGEgdGVtcG9yYXJ5RGlyZWN0b3J5OihOU1VSTCAqKXRlbXBv
cmFyeURpcmVjdG9yeSBwcmVmaXg6KE5TU3RyaW5nICopcHJlZml4Cit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKCF0ZW1wb3JhcnlEaXJlY3RvcnkgfHwgIVtmaWxl
TmFtZSBsZW5ndGhdIHx8ICFmaWxlRGF0YSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBOU1VSTCAqdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmlsZSA9IFtXS1NoYXJlU2hlZXQgY3JlYXRl
UmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6dGVtcG9yYXJ5RGlyZWN0b3J5IHByZWZpeDpw
cmVmaXhdOworICAgIGlmICghdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmlsZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFt0ZW1wb3JhcnlEaXJlY3RvcnlG
b3JGaWxlIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV07CisKKyAgICBpZiAo
IVtmaWxlRGF0YSB3cml0ZVRvVVJMOmZpbGVVUkwgb3B0aW9uczpOU0RhdGFXcml0aW5nQXRvbWlj
IGVycm9yOm5pbF0pCisgICAgICAgIHJldHVybiBuaWw7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGlmICghW1dLU2hhcmVTaGVldCBzZXRRdWFyYW50aW5lSW5mb3JtYXRpb25Gb3JGaWxlUGF0aDpm
aWxlVVJMXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIHJldHVybiBmaWxlVVJM
OworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdB
VENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMxNDQ4YTI2NWQzNGY2MWE5NjEz
YjJhNDQ2MzA1MzM1YzQ1ZTBmNjMuLjE0YmEyZTcwYjk5MjAxZWY3NDUxMzIzYTVjYjdlZTkwYjdi
ZGI5NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0wNiAgTmlrb3MgTW91Y2h0YXJp
cyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgd2ViLXNoYXJl
IHYyIGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW9kaWZpZWQgdG8gbm8gbG9uZ2VyIHVzZSB1cmwgb2YgaW1hZ2UuCisKKyAgICAgICAg
KiBmYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWw6CisKIDIwMjAtMDQtMjQgIFRv
bW9raSBJbWFpICA8VG9tb2tpLkltYWlAc29ueS5jb20+CiAKICAgICAgICAgW09wZW5TU0xdIElt
cGxlbWVudCBXZWJDcnlwdG8gQVBJcyBmb3IgSE1BQwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggNzU1M2I2ZTgyZDM1ZmVmYmI2YzdhYTllODdhMjIyY2JjNWQ5ZGRjZC4uYzBmM2Ux
OGE5MzIyY2EwODM0ZGRkN2RiYzRjNzBkMWVlZjJjMjhiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMDYgIE5pa29zIE1vdWNodGFyaXMg
IDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2
MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIG5ldyBiZWhhdmlvci4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0cHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hh
cmUuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA0LTI0ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgSW1wb3J0IGZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUv
ZmV0Y2guaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUt
d2l0aC1maWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1m
aWxlcy5odG1sCmluZGV4IDg1NmVkMjQ0MTg4NzE4OGRiNjQ5OGQzZGIxNzA4MDcxNDkwZjVjODYu
LjliODkwZDRjMWIxMzQ3ZDA5Y2I2MWNhMjYyNDIzMmQzNTBjMDY5OTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvd2ViLXNoYXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3dlYi1zaGFyZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKQEAgLTIsNiArMiw3
IEBACiAKIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9NSwgd2lkdGg9ZGV2aWNlLXdpZHRoIj4KKwogPGhlYWQ+CiAKICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CkBAIC0xNiwxMCArMTcsMTIg
QEAKIAogICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ2hlbGxvJ10sICdoZWxsby50eHQnLCB7dHlwZTon
dGV4dC9wbGFpbid9KTsKKworICAgICAgICAgICAgdmFyIGJsb2IgPSB0aGlzLnJlc3BvbnNlOwor
ICAgICAgICAgICAgY29uc3QgdGV4dEZpbGUgPSBuZXcgRmlsZShbJ1RoaXMgaXMgYSB0ZXh0IGZp
bGUnXSwgJ1RleHRGaWxlLnR4dCcsIHt0eXBlOid0ZXh0L2h0bWwnfSk7CiAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgbmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAic2FkZiIs
IGZpbGVzOiBbdGV4dEZpbGVdfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIHdyaXRlKCJQQVNTOiBTaGFyZSBzaGVldCBpbnZva2VkLiIpOworICAgICAgICAgICAgbmF2
aWdhdG9yLnNoYXJlKHt0ZXh0OiAiVGhpcyBpcyBhIHRleHQgZmlsZSIsIGZpbGVzOiBbdGV4dEZp
bGVdfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlBBU1M6IFNo
YXJlIHNoZWV0IGludm9rZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICAgICAgICAgIH0pOyAgICAKICAgICAgICAgICAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398880</attachid>
            <date>2020-05-08 12:03:28 -0700</date>
            <delta_ts>2020-05-08 13:46:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209265-20200508150327.patch</filename>
            <type>text/plain</type>
            <size>35332</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3YmIyNTc5OTlmYWFl
NmVkYmFiMjFlM2QxNmM5YWVhM2VmYzJmNS4uNWZkNGExYzRiZWQxZTUzNzkwMGI0YTQ4YzU0OGYx
MDhkYjNlYzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA1LTA2ICBOaWtv
cyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0cyBmb3IgbmV3IGJlaGF2aW9y
LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGZpbGVzIGluIHNoYXJl
L2NhblNoYXJlLAorICAgICAgICBhbmQgaW1wbGVtZW50ZWQgYXN5bmNocm9ub3VzIHJlYWRpbmcg
b2YgZGF0YSBmcm9tIGJsb2JzIG9uCisgICAgICAgIGRpc2sgaW50byBtZW1vcnkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpjYW5TaGFyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnNoYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6ZmluaXNoZWRMb2FkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAg
ICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0YUFzeW5jLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkU2hhcmVEYXRhQXN5bmM6OlJlYWRTaGFyZURhdGFBc3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkU2hhcmVEYXRhQXN5bmM6On5SZWFkU2hhcmVEYXRhQXN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZFNoYXJlRGF0YUFzeW5jOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZFNoYXJlRGF0YUFzeW5jOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkU2hhcmVEYXRhQXN5bmM6OmRpZEZhaWwpOgorICAgICAgICAqIHBhZ2UvUmVhZFNoYXJlRGF0
YUFzeW5jLmhwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKwogMjAyMC0w
NC0yNCAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIAogICAgICAgICBbT3Bl
blNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBBUElzIGZvciBITUFDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NTgx
MDdjYjliOGY4NTE0NGJiNmI0MDZiZjc1MTliY2FiNjhmYzcuLjhjZDk4NWE4NTY2YTdlYzM5ZGY0
YWVhYmJkNDNhMWVhNmZiMDg2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDUt
MDYgIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBv
YmplY3RzIG92ZXIgSVBDIGFuZAorICAgICAgICBzaGFyaW5nIG9mIGZpbGVzIHRvIHNoYXJlIHNo
ZWV0LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8VmVjdG9yPFJhd0ZpbGU+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxWZWN0b3I8UmF3RmlsZT4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU2hhcmVhYmxlRmlsZVdyaXRlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9TaGFyZWFibGVGaWxlV3JpdGUubW06IEFkZGVkLgorICAgICAgICAo
K1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRTaGFyaW5nRGlyZWN0b3J5UGF0aF0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBnZXRGaWxlRGlyZWN0b3J5Rm9yU2hhcmluZ10pOgor
ICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSByZW1vdmVGaWxlRGlyZWN0b3J5Rm9yU2hh
cmluZ10pOgorICAgICAgICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSBzZXRRdWFyYW50aW5lSW5m
b3JtYXRpb25Gb3JGaWxlUGF0aDpdKToKKyAgICAgICAgKCtbV0tTaGFyZWFibGVGaWxlV3JpdGUg
YXBwbHlRdWFyYW50aW5lU2FuZGJveEFuZERvd25sb2FkRmxhZ3NUb0ZpbGVBdFBhdGg6XSk6Cisg
ICAgICAgICgrW1dLU2hhcmVhYmxlRmlsZVdyaXRlIGNyZWF0ZUZpbGVuYW1lOl0pOgorICAgICAg
ICAoK1tXS1NoYXJlYWJsZUZpbGVXcml0ZSB3cml0ZUZpbGVUb1NoYXJlYWJsZVVSTDpkYXRhOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW06CisgICAgICAgICgt
W1dLU2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6aW5SZWN0OmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXS1NoYXJlU2hlZXQgX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6
XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDQtMjQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9t
YXRpb246IHRpbWVvdXQgdW5kZXJuZWF0aCBBdXRvbWF0aW9uLmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uIGluIFNlbGVuaXVtIHRlc3QgZnJhbWVfc3dpdGNoaW5nX3Rlc3RzLnB5Ojp0ZXN0U2hv
dWxkTm90QmVBYmxlVG9Eb0FueXRoaW5nVGhlRnJhbWVJc0RlbGV0ZWRGcm9tVW5kZXJVc1tTYWZh
cmldCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBmMDhkZjg3MzU5NGY3OGYwNDkwM2M3ZWRm
OGRjNGIzYzY3Y2ZjNDE1Li41MmUyMzMzNjExOGE3YzBiNjUxZDAzY2M1ZmUwNjVkOTc4YWJkMzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTU0Nyw2ICs1NDcsMTAgQEAKICNkZWZpbmUg
RU5BQkxFX0RBVEFfREVURUNUSU9OIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0ZJ
TEVfU0hBUkUpCisjZGVmaW5lIEVOQUJMRV9GSUxFX1NIQVJFIDEKKyNlbmRpZgorCiAvKgogICog
RW5hYmxlIHRoaXMgdG8gcHV0IGVhY2ggSXNvSGVhcCBhbmQgb3RoZXIgYWxsb2NhdGlvbiBjYXRl
Z29yaWVzIGludG8gdGhlaXIgb3duIG1hbGxvYyBoZWFwcywgc28gdGhhdCB0b29scyBsaWtlIHZt
bWFwIGNhbiBzaG93IGhvdyBiaWcgZWFjaCBoZWFwIGlzLgogICogVHVybiBCRU5BQkxFX01BTExP
Q19IRUFQX0JSRUFLRE9XTiBvbiBpbiBibWFsbG9jIHRvZ2V0aGVyIHdoZW4gdXNpbmcgdGhpcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNmYxNTRmMTM5YzA0ZDU4YjQ4Njk5OTc5N2NhZGUzZjA3MzY4OTg3
OS4uNDgyYzM3NzJmN2Q4MDE5MTRkZmZkOWY2YmExNzNjYTM3ODZjZGRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE2ODQsNiArMTY4NCw3IEBAIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAKIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCiBwYWdlL1NldHRp
bmdzQmFzZS5jcHAKK3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAogcGFnZS9Tb2NrZXRQcm92aWRl
ci5jcHAKIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCiBwYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNTExMjU2Yzg5YTNlNTZhNjdmNTczMzhkZTNjNDQ4NTNlYTA3M2E2OC4uZWE0MDUy
NzIyYmM3MmFhM2ZlNDQzMjU0Yzg5MDY1YmUxN2Q1MGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE3MCw2ICs2MTcwLDgg
QEAKIAkJMUEyQTY4MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3Jlc3NUcmFja2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkFBQzU2MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMkFBQzU3MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTJDNjY3MTI0MkFGRUY3MDAzMDU1
RUMgLyogU2hhcmVEYXRhUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlRGF0YVJl
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMkM2NjczMjQyQUZFRjgw
MDMwNTVFQyAvKiBTaGFyZURhdGFSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVEYXRhUmVh
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTU4MENDNTUyMTMwMDRB
MjA2MiAvKiBTUUxWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJFNkU3ODBDQzU1NkQ1MDA0
QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxpdGVBdXRob3JpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEzNTg2REQxNTI2NEM0NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxvdy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExMDEsNiArMjExMDMs
OCBAQAogCQkJCTdDNkVGRUVBMUY5NDZBMkUwMEZGQUQ0MSAvKiBTZXR0aW5nc0RlZmF1bHRWYWx1
ZXMuaCAqLywKIAkJCQkxREM1NTQwMDIxMUJBOEM4MDA0Qjc4MEUgLyogU2hhcmVEYXRhLmggKi8s
CiAJCQkJMURDNTUzRkYyMTFCQTg0MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8sCisJCQkJ
MUEyQzY2NzEyNDJBRkVGNzAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5jcHAgKi8sCisJCQkJ
MUEyQzY2NzMyNDJBRkVGODAwMzA1NUVDIC8qIFNoYXJlRGF0YVJlYWRlci5oICovLAogCQkJCTVD
Njg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRlci5jcHAgKi8sCiAJCQkJNUM3
Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8sCiAJCQkJNjI2Q0RF
MEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmNwcAppbmRleCBjYWNjMmExMzM2OTkyNmJmZDY5ZDFlNTljMzE5MTRhY2Mz
NjFlMjc0Li5hNmEzMmQ4OTE4NTI2Mjc4YmQ5NGJiMDcxOGFiODgyMDVjMjMzYWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlRGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlRGF0YVJlYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1
YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTEyLDggKzExNCwxMyBA
QCBib29sIE5hdmlnYXRvcjo6Y2FuU2hhcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGF0YS50aXRsZS5pc051bGwoKSAm
JiBkYXRhLnVybC5pc051bGwoKSAmJiBkYXRhLnRleHQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYg
KCFkYXRhLmZpbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmlzRW1wdHko
KSkgeworI2lmIEVOQUJMRShGSUxFX1NIQVJFKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM5LDcgKzE0Niw3IEBAIHZvaWQgTmF2aWdh
dG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTaGFyZURh
dGEmIGRhdGEsIFJlCiAgICAgCiAgICAgYXV0byogd2luZG93ID0gdGhpcy0+d2luZG93KCk7CiAg
ICAgLy8gTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluZGljYXRlIHdlIHNo
b3VsZCBjb25zdW1lIHVzZXIgYWN0aXZhdGlvbi4gV2UgYXJlIGludGVudGlvbmFsbHkgc3RyaWN0
ZXIgaGVyZS4KLSAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LT5jb25zdW1lVHJhbnNpZW50QWN0
aXZhdGlvbigpKSB7CisgICAgaWYgKCF3aW5kb3cgfHwgIXdpbmRvdy0+Y29uc3VtZVRyYW5zaWVu
dEFjdGl2YXRpb24oKSB8fCBtX2hhc1BlbmRpbmdTaGFyZSkgewogICAgICAgICBwcm9taXNlLT5y
ZWplY3QoTm90QWxsb3dlZEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0Nywx
MCArMTU0LDM5IEBAIHZvaWQgTmF2aWdhdG9yOjpzaGFyZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTaGFyZURhdGEmIGRhdGEsIFJlCiAgICAgU2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCBzaGFyZURhdGEgPSB7CiAgICAgICAgIGRhdGEsCiAgICAgICAgIHVybCwKKyAgICAg
ICAgeyB9LAogICAgIH07CisjaWYgRU5BQkxFKEZJTEVfU0hBUkUpCisgICAgaWYgKCFkYXRhLmZp
bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9sb2FkZXIpCisgICAgICAgICAgICBtX2xv
YWRlci0+Y2FuY2VsKCk7CisgICAgICAgIAorICAgICAgICBtX2xvYWRlciA9IFNoYXJlRGF0YVJl
YWRlcjo6Y3JlYXRlKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKEV4Y2VwdGlv
bk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPiByZWFkRGF0YSkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBzaG93U2hhcmVEYXRhKHJlYWREYXRhLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAg
fSk7CisgICAgICAgIG1fbG9hZGVyLT5zdGFydChmcmFtZSgpLT5kb2N1bWVudCgpLCBXVEZNb3Zl
KHNoYXJlRGF0YSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgdGhpcy0+
c2hvd1NoYXJlRGF0YShzaGFyZURhdGEsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIE5h
dmlnYXRvcjo6c2hvd1NoYXJlRGF0YShFeGNlcHRpb25PcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJM
Jj4gcmVhZERhdGEsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAo
cmVhZERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlYWRE
YXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAg
ICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGZyYW1lLT5wYWdlKCktPmNocm9t
ZSgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoYm9vbCBjb21wbGV0ZWQpIHsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+cGFnZSgpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9oYXNQZW5kaW5nU2hhcmUgPSB0cnVlOworICAg
IGF1dG8gc2hhcmVEYXRhID0gcmVhZERhdGEucmV0dXJuVmFsdWUoKTsKKyAgICAKKyAgICBmcmFt
ZS0+cGFnZSgpLT5jaHJvbWUoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgdGhpc10gKGJvb2wgY29tcGxldGVkKSB7CisgICAgICAgIG1faGFz
UGVuZGluZ1NoYXJlID0gZmFsc2U7CiAgICAgICAgIGlmIChjb21wbGV0ZWQpIHsKICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5oCmluZGV4IGVhYmYxNDdjMDljZDk0OTljMGViMGYzZWIyNjQ4YTg4NjQ3ZjgyZGQu
LjIyNTM5ZjIwNDZkODZhN2U0NzU2NzM3NTIxYTZhMWFjZmY0MzJlNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaApAQCAtMjIsMTUgKzIyLDE3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVy
dHkuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JCYXNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCisjaW5jbHVkZSAiU2hhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQmxvYjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIERPTU1pbWVUeXBlQXJy
YXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKLXN0cnVjdCBTaGFyZURhdGE7CitjbGFzcyBTaGFy
ZURhdGFSZWFkZXI7CiAKIGNsYXNzIE5hdmlnYXRvciBmaW5hbCA6IHB1YmxpYyBOYXZpZ2F0b3JC
YXNlLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1
YmxpYyBTdXBwbGVtZW50YWJsZTxOYXZpZ2F0b3I+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKE5hdmlnYXRvcik7CkBAIC02MywxMiArNjUsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6CisgICAgdm9pZCBzaG93U2hhcmVEYXRhKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmPiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgZXhwbGljaXQgTmF2aWdh
dG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBET01XaW5kb3cmKTsKIAorICAgIG11dGFibGUg
UmVmUHRyPFNoYXJlRGF0YVJlYWRlcj4gbV9sb2FkZXI7CisgICAgbXV0YWJsZSBib29sIG1faGFz
UGVuZGluZ1NoYXJlIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJh
eT4gbV9wbHVnaW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWlt
ZVR5cGVzOwogICAgIG11dGFibGUgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIG11dGFibGUgU3Ry
aW5nIG1fcGxhdGZvcm07CiB9OwotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA1YzM5
MDdjMTA3NTgwNDlkODg3YzA0NjMxZGI0ZjljMDNmZjFhZjc5Li5mZWU2Yjk5ZTNmYTVlMDQ4ZTZi
MThhMDQ5YjQyZGE2NGFjYmYzMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzUsMTAgKzM2LDE2IEBAIHN0cnVjdCBTaGFyZURhdGEgewogICAgIFN0cmluZyB1cmw7
CiAgICAgVmVjdG9yPFJlZlB0cjxGaWxlPj4gZmlsZXM7CiB9OworCitzdHJ1Y3QgUmF3RmlsZSB7
CisgICAgU3RyaW5nIGZpbGVOYW1lOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRh
OworfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKICAgICBTaGFyZURh
dGEgc2hhcmVEYXRhOwogICAgIE9wdGlvbmFsPFVSTD4gdXJsOworICAgIFZlY3RvcjxSYXdGaWxl
PiBmaWxlczsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjFlNWY5Zjk3NGNmZDg5OGQwNDQ4ODE3NWEzOTNmMDYyMTEyNjg0Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cApAQCAtMCwwICsxLDg4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBt
ZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZURhdGFSZWFkZXIu
aCIKKworI2luY2x1ZGUgIkJsb2JMb2FkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYXJlRGF0
YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7CisgICAg
Cit9CisKK1NoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCit7CisgICAgY2FuY2Vs
KCk7Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpzdGFydChEb2N1bWVudCogZG9jdW1lbnQs
IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmJiBzaGFyZURhdGEpCit7CisgICAgbV9maWxlc1JlYWRT
b0ZhciA9IDA7CisgICAgbV9zaGFyZURhdGEgPSBXVEZNb3ZlKHNoYXJlRGF0YSk7CisgICAgaW50
IGNvdW50ID0gMDsKKyAgICBtX3BlbmRpbmdGaWxlTG9hZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGJs
b2IgOiBtX3NoYXJlRGF0YS5zaGFyZURhdGEuZmlsZXMpIHsKKyAgICAgICAgbV9wZW5kaW5nRmls
ZUxvYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlUmVmPEJsb2JMb2FkZXI+KGRvY3VtZW50
LCAqYmxvYiwgW3RoaXMsIGNvdW50LCBmaWxlTmFtZSA9IGJsb2ItPm5hbWUoKV0geworICAgICAg
ICAgICAgdGhpcy0+ZGlkRmluaXNoTG9hZGluZyhjb3VudCwgZmlsZU5hbWUpOworICAgICAgICB9
KSk7CisgICAgICAgIGNvdW50Kys7CisgICAgfQorfQorCit2b2lkIFNoYXJlRGF0YVJlYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQor
eworICAgIGlmIChtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+ZXJyb3JDb2RlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29t
cGxldGlvbkhhbmRsZXIsIHsgfSkpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFeGNl
cHRpb24geyBBYm9ydEVycm9yLCAiQWJvcnQgZHVlIHRvIGVycm9yIHdoaWxlIHJlYWRpbmcgZmls
ZXMuIl9zIH0pOworICAgICAgICBjYW5jZWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0t
PnJlc3VsdCgpOworICAgIAorICAgIFJhd0ZpbGUgZmlsZTsKKyAgICBmaWxlLmZpbGVOYW1lID0g
ZmlsZU5hbWU7CisgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1v
dmUoZmlsZSkpOworICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKKyAgICAKKyAgICBpZiAobV9maWxl
c1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkp
KSB7CisgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOworICAgICAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwg
eyB9KSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fc2hhcmVEYXRhKTsKKyAgICB9
Cit9CisKK3ZvaWQgU2hhcmVEYXRhUmVhZGVyOjpjYW5jZWwoKQoreworICAgIG1fcGVuZGluZ0Zp
bGVMb2Fkcy5jbGVhcigpOworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGFSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDgxYTk2NDkyN2Y5N2ZiZmNkMWFmZmRmYzk5NmViYTVlOWJkYjA3ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlRGF0YS5oIgorCisjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QmxvYjsKK2NsYXNzIEJsb2JMb2FkZXI7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFNoYXJlRGF0YVJlYWRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNoYXJlRGF0YVJlYWRlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2hhcmVEYXRh
UmVhZGVyPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlRGF0YVJlYWRlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOyB9Cisg
ICAgflNoYXJlRGF0YVJlYWRlcigpOworICAgIHZvaWQgc3RhcnQoRG9jdW1lbnQqLCBTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJiYpOworICAgIHZvaWQgY2FuY2VsKCk7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgU2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGludCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+IG1fY29tcGxldGlv
bkhhbmRsZXI7CisgICAgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBtX3NoYXJlRGF0YTsKKyAgICBp
bnQgbV9maWxlc1JlYWRTb0ZhcjsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEJsb2JMb2FkZXI+PiBt
X3BlbmRpbmdGaWxlTG9hZHM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvbWFjL1F1YXJhbnRpbmVTUEkuaAppbmRleCA5NDA0NzQ0MzVmOGRkM2Q1ZTgzNTI3N2I2NmQz
MmQ4ZmYzMWJiMmMyLi4wYmYxMDNkNGE5ZWJkOWZkZmNjOTFjMDNiNjkzZWQzYTgzZTczNmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNlbHNlCiAKIGVudW0gcXRuX2ZsYWdzIHsKKyAgICBRVE5fRkxBR19E
T1dOTE9BRCA9IDB4MDAwMSwKICAgICBRVE5fRkxBR19TQU5EQk9YID0gMHgwMDAyLAogfTsKIApA
QCAtNDMsMTAgKzQ0LDE1IEBAIGVudW0gcXRuX2ZsYWdzIHsKICNkZWZpbmUgcXRuX3Byb2NfaW5p
dCBfcXRuX3Byb2NfaW5pdAogI2RlZmluZSBxdG5fcHJvY19pbml0X3dpdGhfc2VsZiBfcXRuX3By
b2NfaW5pdF93aXRoX3NlbGYKICNkZWZpbmUgcXRuX3Byb2Nfc2V0X2ZsYWdzIF9xdG5fcHJvY19z
ZXRfZmxhZ3MKLQorI2RlZmluZSBxdG5fZmlsZV9hbGxvYyBfcXRuX2ZpbGVfYWxsb2MKKyNkZWZp
bmUgcXRuX2ZpbGVfaW5pdF93aXRoX3BhdGggX3F0bl9maWxlX2luaXRfd2l0aF9wYXRoCisjZGVm
aW5lIHF0bl9maWxlX2ZyZWUgX3F0bl9maWxlX2ZyZWUKKyNkZWZpbmUgcXRuX2ZpbGVfYXBwbHlf
dG9fcGF0aCBfcXRuX2ZpbGVfYXBwbHlfdG9fcGF0aAorI2RlZmluZSBxdG5fZmlsZV9zZXRfZmxh
Z3MgX3F0bl9maWxlX3NldF9mbGFncwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IF9xdG5fcHJv
YyAqcXRuX3Byb2NfdDsKK3R5cGVkZWYgc3RydWN0IF9xdG5fZmlsZSAqcXRuX2ZpbGVfdDsKIAog
V1RGX0VYVEVSTl9DX0JFR0lOCiAKQEAgLTU2LDYgKzYyLDExIEBAIGludCBxdG5fcHJvY19pbml0
X3dpdGhfc2VsZihxdG5fcHJvY190KTsKIGludCBxdG5fcHJvY19zZXRfZmxhZ3MocXRuX3Byb2Nf
dCwgdWludDMyX3QgZmxhZ3MpOwogcXRuX3Byb2NfdCBxdG5fcHJvY19hbGxvYygpOwogdm9pZCBx
dG5fcHJvY19mcmVlKHF0bl9wcm9jX3QpOworcXRuX2ZpbGVfdCBxdG5fZmlsZV9hbGxvYyh2b2lk
KTsKK3ZvaWQgcXRuX2ZpbGVfZnJlZShxdG5fZmlsZV90IHFmKTsKK2ludCBxdG5fZmlsZV9zZXRf
ZmxhZ3MocXRuX2ZpbGVfdCBxZiwgdWludDMyX3QgZmxhZ3MpOworaW50IHF0bl9maWxlX2FwcGx5
X3RvX3BhdGgocXRuX2ZpbGVfdCBxZiwgY29uc3QgY2hhciAqcGF0aCk7CitpbnQgcXRuX2ZpbGVf
aW5pdF93aXRoX3BhdGgocXRuX2ZpbGVfdCBxZiwgY29uc3QgY2hhciAqcGF0aCk7CiAKIFdURl9F
WFRFUk5fQ19FTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggOTJiYjIwNDZhMmY3YjMyYjIxYjlhOTVhNzVmM2E4YmIyYzMzZDhlYy4u
MmRkODI3MDk3ZmZjOGVkOWI1YWJiMDcyZGU3OTE1NjMwYTk5ODVlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRU
cmFja2luZ1JlZ2lvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsdGVyT3BlcmF0aW9ucy5oPgpAQCAtMjAxOSw2ICsyMDIwLDIxIEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxGaWxlQ2hvb3NlclNldHRpbmdzPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZpbGVD
aG9vc2VyU2V0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKwordm9pZCBBcmd1bWVudENvZGVyPFJh
d0ZpbGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmF3RmlsZSYgZmlsZSkKK3sK
KyAgICBlbmNvZGVyIDw8IGZpbGUuZmlsZU5hbWU7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGZpbGUuZmlsZURhdGEuZ2V0KCkpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmF3
RmlsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSYXdGaWxlJiBmaWxlKQoreworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZmlsZS5maWxlTmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBmaWxlLmZpbGVEYXRhKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQogICAgIAogdm9pZCBBcmd1
bWVudENvZGVyPFNoYXJlRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFy
ZURhdGEmIHNldHRpbmdzKQogewpAQCAtMjA0Miw2ICsyMDU4LDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2hhcmUKIHsKICAgICBlbmNvZGVyIDw8IHNldHRpbmdzLnNoYXJlRGF0YTsKICAgICBlbmNv
ZGVyIDw8IHNldHRpbmdzLnVybDsKKyAgICBlbmNvZGVyIDw8IHNldHRpbmdzLmZpbGVzOwogfQog
CiBib29sIEFyZ3VtZW50Q29kZXI8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTD46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzZXR0aW5ncykKQEAgLTIwNTAs
NiArMjA2Nyw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTaGFyZURhdGFXaXRoUGFyc2VkVVJMPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNoYXJlRGF0YVdpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdzLnVybCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNldHRpbmdzLmZpbGVzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDZiZWNiZjcwZTJhYjI0ZWJmOTE2
ZTcwZThhMzkzY2FlMGYyNzg0MTEuLjFlYjQwMjBlNmRiMTgxNWNlN2U2ZmQ0OWFhMGY3MTVkZmM2
NDQwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFz
cyBDdXJzb3I7CiBjbGFzcyBEYXRhYmFzZURldGFpbHM7CiBjbGFzcyBEcmFnRGF0YTsKK2NsYXNz
IEZpbGU7CiBjbGFzcyBGaWx0ZXJPcGVyYXRpb247CiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwog
Y2xhc3MgRmxvYXRQb2ludDsKQEAgLTEyNSw2ICsxMjYsNyBAQCBzdHJ1Y3QgRXZlbnRUcmFja2lu
Z1JlZ2lvbnM7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGb250QXR0cmlidXRl
czsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOworc3RydWN0IFJhd0ZpbGU7CiBzdHJ1Y3Qg
U2hhcmVEYXRhOwogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiBzdHJ1Y3QgTGVuZ3Ro
OwpAQCAtNTQ5LDYgKzU1MSwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7
CiB9OwogICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSYXdG
aWxlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpS
YXdGaWxlJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6UmF3RmlsZSYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTaGFyZURhdGE+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YSYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlNoYXJlRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaAppbmRleCA0YWNkYmI2
OWE0YjJhYmUxYWMwZmU0NWIzNGVlZDFjNmFhYTcxY2ExLi5jMzQwZGI2OGVlZmE5OWNmNDc2Y2Vm
NWM4NTgxMmZiMGE4ZmEwZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1NoYXJlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
S1NoYXJlU2hlZXQuaApAQCAtNDIsNyArNDIsNiBAQCBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTDsKIC0gKHZvaWQpZGlzbWlzczsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlk
IDxXS1NoYXJlU2hlZXREZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0KIEBlbmQKIAogQHByb3RvY29sIFdL
U2hhcmVTaGVldERlbGVnYXRlIDxOU09iamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2hhcmVTaGVldC5tbQppbmRleCBiMDI0MzNjMzAzYTZmOTM5ZGI0MmE3ZmM0MDQ5
ZTllYWM1NDFiMDA2Li44MWFjY2FiYTFmZDEzYTYzMTk4NDI4ODk5NTNlZDA2MmU3YWVhYTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCkBAIC0y
OCwxMCArMjgsMTQgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0FUQ0hP
UykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKICNp
bXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NoYXJlRGF0YS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDcsNiArNTEsNyBAQCBAZW5kCiAj
ZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdLU2hhcmVTaGVldCB7CisgICAgUmV0YWluUHRyPE5T
VVJMPiBfdGVtcG9yYXJ5RmlsZVNoYXJlRGlyZWN0b3J5OwogICAgIFdlYWtPYmpDUHRyPFdLV2Vi
Vmlldz4gX3dlYlZpZXc7CiAgICAgV2Vha09iakNQdHI8aWQgPFdLU2hhcmVTaGVldERlbGVnYXRl
PiA+IF9kZWxlZ2F0ZTsKICAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IF9j
b21wbGV0aW9uSGFuZGxlcjsKQEAgLTEwNiwxMCArMTExLDQ5IEBAIC0gKHZvaWQpcHJlc2VudFdp
dGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0
YSBpblJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgaWYgKGRhdGEuZmlsZXMu
c2l6ZSgpKSB7CisgICAgICAgIF90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3RvcnkgPSBbV0tTaGFy
ZVNoZWV0IGNyZWF0ZVRlbXBvcmFyeVNoYXJpbmdEaXJlY3RvcnldOworICAgICAgICAKKyAgICAg
ICAgYXV0byBmaWxlV3JpdGVHcm91cCA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3Jl
YXRlKCkpOworICAgICAgICBhdXRvIHF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1
ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tTaGFyZVNoZWV0LlNoYXJlYWJsZUZpbGVXcml0
ZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKyAgICAgICAgCisgICAgICAgIF9fYmxvY2sg
Ym9vbCBzdWNjZXNzZnVsID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGludCBpbmRleCA9IDA7
CisgICAgICAgIGZvciAoYXV0byBmaWxlIDogZGF0YS5maWxlcykgeworICAgICAgICAgICAgZGlz
cGF0Y2hfZ3JvdXBfYXN5bmMoZmlsZVdyaXRlR3JvdXAuZ2V0KCksIHF1ZXVlLmdldCgpLCBeewor
ICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzc2Z1bCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW1dLU2hhcmVTaGVldCB3cml0
ZUZpbGVUb1NoYXJlYWJsZVVSTDpXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRp
emVTdWdnZXN0ZWRGaWxlbmFtZShmaWxlLmZpbGVOYW1lKSBkYXRhOmZpbGUuZmlsZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIHRlbXBvcmFyeURpcmVjdG9yeTpfdGVtcG9yYXJ5RmlsZVNoYXJl
RGlyZWN0b3J5LmdldCgpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWZpbGVVUkwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFtzaGFyZURhdGFBcnJh
eSBhZGRPYmplY3Q6ZmlsZVVSTF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGluZGV4
Kys7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRpc3BhdGNoX2dyb3VwX25vdGlmeShm
aWxlV3JpdGVHcm91cC5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAg
ICAgICAgIGlmICghc3VjY2Vzc2Z1bCkgeworICAgICAgICAgICAgICAgIFtzZWxmIF9kaWRDb21w
bGV0ZVdpdGhTdWNjZXNzOk5PXTsKKyAgICAgICAgICAgICAgICBbc2VsZiBkaXNtaXNzXTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbc2VsZiBw
cmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0
XTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgW3NlbGYg
cHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJlY3Q6cmVj
dF07Cit9CisKKy0gKHZvaWQpcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTooTlNBcnJheSAqKXNo
YXJpbmdJdGVtcyBpblJlY3Q6KFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0
Cit7CiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gX3dlYlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7
CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9zaGFyaW5nU2VydmljZVBpY2tlciA9IGFk
b3B0TlMoW1tOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOnNoYXJl
RGF0YUFycmF5LmdldCgpXSk7CisgICAgX3NoYXJpbmdTZXJ2aWNlUGlja2VyID0gYWRvcHROUyhb
W05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRoSXRlbXM6c2hhcmluZ0l0ZW1z
XSk7CiAgICAgX3NoYXJpbmdTZXJ2aWNlUGlja2VyLmdldCgpLmRlbGVnYXRlID0gc2VsZjsKICAg
ICAKICAgICAvLyBXS1NoYXJlU2hlZXQgY2FuIGJlIHJlbGVhc2VkIHVuZGVyIE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXIgZGVsZWdhdGUgY2FsbGJhY2tzLgpAQCAtMTI2LDcgKzE3MCw3IEBAIC0gKHZv
aWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFy
c2VkVVJMICYpZGF0YSBpblJlCiAgICAgfQogICAgIFtfc2hhcmluZ1NlcnZpY2VQaWNrZXIgc2hv
d1JlbGF0aXZlVG9SZWN0OnByZXNlbnRhdGlvblJlY3Qgb2ZWaWV3OndlYlZpZXcgcHJlZmVycmVk
RWRnZTpOU01pbllFZGdlXTsKICNlbHNlCi0gICAgX3NoYXJlU2hlZXRWaWV3Q29udHJvbGxlciA9
IGFkb3B0TlMoW1tVSUFjdGl2aXR5Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aXZp
dHlJdGVtczpzaGFyZURhdGFBcnJheS5nZXQoKSBhcHBsaWNhdGlvbkFjdGl2aXRpZXM6bmlsXSk7
CisgICAgX3NoYXJlU2hlZXRWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tVSUFjdGl2aXR5Vmll
d0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aXZpdHlJdGVtczpzaGFyaW5nSXRlbXMgYXBw
bGljYXRpb25BY3Rpdml0aWVzOm5pbF0pOwogICAgIFtfc2hhcmVTaGVldFZpZXdDb250cm9sbGVy
IHNldENvbXBsZXRpb25XaXRoSXRlbXNIYW5kbGVyOl4oTlNTdHJpbmcgKiwgQk9PTCBjb21wbGV0
ZWQsIE5TQXJyYXkgKiwgTlNFcnJvciAqKSB7CiAgICAgICAgIFtzZWxmIF9kaWRDb21wbGV0ZVdp
dGhTdWNjZXNzOmNvbXBsZXRlZF07CiAgICAgICAgIFtzZWxmIGRpc3BhdGNoRGlkRGlzbWlzc107
CkBAIC0xODMsNiArMjI3LDE4IEBAIC0gKHZvaWQpX2RpZENvbXBsZXRlV2l0aFN1Y2Nlc3M6KEJP
T0wpc3VjY2VzcwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKF9jb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICAKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAv
LyA8cmRhcjovL3Byb2JsZW0vNjMwMzAyODg+OiBkaWRTaGFyZUl0ZW1zIGNhbGxiYWNrIGZvciBO
U1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGUgY3VycmVudGx5IGlzIGNhbGxlZAorICAgICAgICAvLyBi
ZWZvcmUgdGhlIHRlbXBvcmFyeSBmaWxlcyBhcmUgY29waWVkLCBzbyB3ZSBjYW4ndCBkZWxldGUg
dGhlbSBoZXJlLiBVSUFjdGl2aXR5Vmlld0NvbnRyb2xsZXIgZG9lc24ndAorICAgICAgICAvLyBo
YXZlIHRoaXMgcHJvYmxlbSwgc28gd2UgY2FuIGRlbGV0ZSBpbW1lZGlhdGVseSBmb3IgaU9TLgor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOl90ZW1wb3JhcnlGaWxlU2hhcmVEaXJlY3RvcnkuZ2V0
KCkgZXJyb3I6bmlsXTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpfdGVtcG9yYXJ5RmlsZVNoYXJlRGly
ZWN0b3J5LmdldCgpIGVycm9yOm5pbF07CisKKyAgICBfdGVtcG9yYXJ5RmlsZVNoYXJlRGlyZWN0
b3J5ID0gbnVsbHB0cjsKIH0KIAogLSAodm9pZClkaXNtaXNzCkBAIC0yMTUsNiArMjcxLDg2IEBA
IC0gKHZvaWQpZGlzcGF0Y2hEaWREaXNtaXNzCiAgICAgICAgIFtfZGVsZWdhdGUgc2hhcmVTaGVl
dERpZERpc21pc3M6c2VsZl07CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCisrIChCT09MKXNldFF1
YXJhbnRpbmVJbmZvcm1hdGlvbkZvckZpbGVQYXRoOihOU1VSTCAqKWZpbGVVUkwKK3sKKyAgICBh
dXRvIHF1YXJhbnRpbmVQcm9wZXJ0aWVzID0gQHsKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0xTUXVhcmFudGluZVR5cGVLZXk6IChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJhbnRp
bmVUeXBlV2ViRG93bmxvYWQsCisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtMU1F1YXJh
bnRpbmVBZ2VudEJ1bmRsZUlkZW50aWZpZXJLZXk6IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcigpCisgICAgfTsKKworICAgIGlmICghW2ZpbGVVUkwgc2V0UmVzb3VyY2VWYWx1
ZTpxdWFyYW50aW5lUHJvcGVydGllcyBmb3JLZXk6TlNVUkxRdWFyYW50aW5lUHJvcGVydGllc0tl
eSBlcnJvcjpuaWxdKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICAvLyBXaGV0aGVyIHRoZSBm
aWxlIHdhcyBkb3dubG9hZGVkIGJ5IHNhbmRib3hlZCBXZWJQcm9jZXNzIG9yIG5vdCwgTFNTZXRJ
dGVtQXR0cmlidXRlIHJlc2V0cyB0aGUgZmxhZ3MgdG8gMCAoYWR2aXNvcnkgUVROX0ZMQUdfRE9X
TkxPQUQsCisgICAgLy8gd2hpY2ggY2FuIGJlIHRoZW4gcmVtb3ZlZCBieSBXZWJQcm9jZXNzKS4g
UmVwbGFjZSB0aGUgZmxhZ3Mgd2l0aCBzYW5kYm94IHF1YXJhbnRpbmUgb25lcywgd2hpY2ggY2Fu
bm90IGJlIHJlbW92ZWQgYnkgc2FuZGJveGVkIHByb2Nlc3Nlcy4KKyAgICByZXR1cm4gW1dLU2hh
cmVTaGVldCBhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxvYWRGbGFnc1RvRmlsZUF0UGF0
aDpmaWxlVVJMXTsKK30KKworKyAoQk9PTClhcHBseVF1YXJhbnRpbmVTYW5kYm94QW5kRG93bmxv
YWRGbGFnc1RvRmlsZUF0UGF0aDooTlNVUkwgKilmaWxlVVJMCit7CisgICAgcXRuX2ZpbGVfdCBm
cSA9IHF0bl9maWxlX2FsbG9jKCk7CisgICAgYXV0byBzY29wZUV4aXQgPSBXVEY6Om1ha2VTY29w
ZUV4aXQoWyZdIHsKKyAgICAgICAgcXRuX2ZpbGVfZnJlZShmcSk7CisgICAgfSk7CisgICAgCisg
ICAgaW50IHF1YXJhbnRpbmVFcnJvciA9IHF0bl9maWxlX2luaXRfd2l0aF9wYXRoKGZxLCBmaWxl
VVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CisgICAgaWYgKHF1YXJhbnRpbmVFcnJvcikK
KyAgICAgICAgcmV0dXJuIE5POworCisgICAgcXVhcmFudGluZUVycm9yID0gcXRuX2ZpbGVfc2V0
X2ZsYWdzKGZxLCBRVE5fRkxBR19TQU5EQk9YIHwgUVROX0ZMQUdfRE9XTkxPQUQpOworICAgIGlm
IChxdWFyYW50aW5lRXJyb3IpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHF1YXJhbnRpbmVF
cnJvciA9IHF0bl9maWxlX2FwcGx5X3RvX3BhdGgoZnEsIGZpbGVVUkwuZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKTsKKyAgICAKKyAgICByZXR1cm4gWUVTOworfQorI2VuZGlmCisKKysgKE5TVVJM
ICopY3JlYXRlVGVtcG9yYXJ5U2hhcmluZ0RpcmVjdG9yeQoreworICAgIE5TU3RyaW5nICp0ZW1w
b3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJX
S0ZpbGVTaGFyZSIpOworICAgIAorICAgIGlmICghW3RlbXBvcmFyeURpcmVjdG9yeSBsZW5ndGhd
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6dGVtcG9yYXJ5RGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU107Cit9CisKKysgKE5TVVJMICop
Y3JlYXRlUmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6KE5TVVJMICopdGVtcG9yYXJ5RGly
ZWN0b3J5Cit7CisgICAgTlNTdHJpbmcgKnJhbmRvbURpcmVjdG9yeSA9IGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKTsKKyAgICBpZiAoIVtyYW5kb21EaXJlY3RvcnkgbGVuZ3RoXSB8fCAhdGVt
cG9yYXJ5RGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TVVJMICpkYXRhUGF0
aCA9IFt0ZW1wb3JhcnlEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnJhbmRv
bURpcmVjdG9yeV07CisgICAgCisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmRhdGFQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rv
cmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiBkYXRhUGF0aDsKK30KKworKyAoTlNVUkwgKil3cml0ZUZpbGVUb1NoYXJlYWJs
ZVVSTDooTlNTdHJpbmcgKilmaWxlTmFtZSBkYXRhOihOU0RhdGEgKilmaWxlRGF0YSB0ZW1wb3Jh
cnlEaXJlY3Rvcnk6KE5TVVJMICopdGVtcG9yYXJ5RGlyZWN0b3J5Cit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisgICAgaWYgKCF0ZW1wb3JhcnlEaXJlY3RvcnkgfHwgIVtmaWxl
TmFtZSBsZW5ndGhdIHx8ICFmaWxlRGF0YSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBOU1VSTCAqdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmlsZSA9IFtXS1NoYXJlU2hlZXQgY3JlYXRl
UmFuZG9tU2hhcmluZ0RpcmVjdG9yeUZvckZpbGU6dGVtcG9yYXJ5RGlyZWN0b3J5XTsKKyAgICBp
ZiAoIXRlbXBvcmFyeURpcmVjdG9yeUZvckZpbGUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
CisgICAgTlNVUkwgKmZpbGVVUkwgPSBbdGVtcG9yYXJ5RGlyZWN0b3J5Rm9yRmlsZSBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZU5hbWVdOworCisgICAgaWYgKCFbZmlsZURhdGEgd3Jp
dGVUb1VSTDpmaWxlVVJMIG9wdGlvbnM6TlNEYXRhV3JpdGluZ0F0b21pYyBlcnJvcjpuaWxdKQor
ICAgICAgICByZXR1cm4gbmlsOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIVtXS1NoYXJl
U2hlZXQgc2V0UXVhcmFudGluZUluZm9ybWF0aW9uRm9yRmlsZVBhdGg6ZmlsZVVSTF0pCisgICAg
ICAgIHJldHVybiBuaWw7CisjZW5kaWYKKyAgICByZXR1cm4gZmlsZVVSTDsKK30KKwogQGVuZAog
CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExB
VEZPUk0oQVBQTEVUVikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTQ0OGEyNjVkMzRmNjFhOTYxM2IyYTQ0NjMwNTMzNWM0
NWUwZjYzLi4xNGJhMmU3MGI5OTIwMWVmNzQ1MTMyM2E1Y2I3ZWU5MGI3YmRiOTc2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDUtMDYgIE5pa29zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJp
c0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHdlYi1zaGFyZSB2MiBmb3IgZmlsZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTI2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmaWVk
IHRvIG5vIGxvbmdlciB1c2UgdXJsIG9mIGltYWdlLgorCisgICAgICAgICogZmFzdC93ZWItc2hh
cmUvc2hhcmUtd2l0aC1maWxlcy5odG1sOgorCiAyMDIwLTA0LTI0ICBUb21va2kgSW1haSAgPFRv
bW9raS5JbWFpQHNvbnkuY29tPgogCiAgICAgICAgIFtPcGVuU1NMXSBJbXBsZW1lbnQgV2ViQ3J5
cHRvIEFQSXMgZm9yIEhNQUMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDc1NTNi
NmU4MmQzNWZlZmJiNmM3YWE5ZTg3YTIyMmNiYzVkOWRkY2QuLjA4ZGI3Y2IwNDlkOTdjODFmOWIx
Njk5Y2U2NTcyZjNlYzdiYWJhM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIwLTA1LTA2ICBOaWtvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB3ZWItc2hhcmUgdjIgZm9yIGZpbGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkyNjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRl
c3QgZXhwZWN0YXRpb25zIGZvciBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBpb3Mtd2syL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLWZpbGVzLmh0
dHBzLWV4cGVjdGVkLnR4dCA6CisgICAgICAgICogbWFjLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQg
OgorCiAyMDIwLTA0LTI0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
SW1wb3J0IGZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUvZmV0Y2guaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC93ZWItc2hhcmUvc2hhcmUtd2l0aC1maWxlcy5odG1sCmluZGV4IDg1NmVk
MjQ0MTg4NzE4OGRiNjQ5OGQzZGIxNzA4MDcxNDkwZjVjODYuLjliODkwZDRjMWIxMzQ3ZDA5Y2I2
MWNhMjYyNDIzMmQzNTBjMDY5OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd2ViLXNo
YXJlL3NoYXJlLXdpdGgtZmlsZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dlYi1zaGFy
ZS9zaGFyZS13aXRoLWZpbGVzLmh0bWwKQEAgLTIsNiArMiw3IEBACiAKIDxodG1sPgogPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9NSwgd2lkdGg9ZGV2aWNlLXdp
ZHRoIj4KKwogPGhlYWQ+CiAKICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CkBAIC0xNiwxMCArMTcsMTIgQEAKIAogICAgICAgICBmdW5jdGlv
biBydW5UZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgdGV4dEZpbGUgPSBuZXcg
RmlsZShbJ2hlbGxvJ10sICdoZWxsby50eHQnLCB7dHlwZTondGV4dC9wbGFpbid9KTsKKworICAg
ICAgICAgICAgdmFyIGJsb2IgPSB0aGlzLnJlc3BvbnNlOworICAgICAgICAgICAgY29uc3QgdGV4
dEZpbGUgPSBuZXcgRmlsZShbJ1RoaXMgaXMgYSB0ZXh0IGZpbGUnXSwgJ1RleHRGaWxlLnR4dCcs
IHt0eXBlOid0ZXh0L2h0bWwnfSk7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgbmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAic2FkZiIsIGZpbGVzOiBbdGV4dEZpbGVdfSku
dGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCJQQVNTOiBTaGFy
ZSBzaGVldCBpbnZva2VkLiIpOworICAgICAgICAgICAgbmF2aWdhdG9yLnNoYXJlKHt0ZXh0OiAi
VGhpcyBpcyBhIHRleHQgZmlsZSIsIGZpbGVzOiBbdGV4dEZpbGVdfSkudGhlbigocmVzdWx0KSA9
PiB7CisgICAgICAgICAgICAgICAgd3JpdGUoIlBBU1M6IFNoYXJlIHNoZWV0IGludm9rZWQuIik7
CiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAg
ICAgICAgIH0pOyAgICAKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFy
ZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNo
YXJlLWZpbGVzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAyZDk5YzkyMDllMWE5MTBkNmNlN2Vh
NmFhOWVkZDQxZTc3NDU4ZWUwLi5mN2UxMDRjODQ1MThiMTIyMWRkMWQxNDc1NTUzZjM5MWNjYzcw
OWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLWZpbGVzLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViLXNoYXJlL2NhblNoYXJlLWZpbGVzLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtMSw4ICsxLDggQEAKIAogUEFTUyBjYW5TaGFyZSB3aXRoIHNpbmdsZSBmaWxlIAog
UEFTUyBjYW5TaGFyZSB3aXRoIGVtcHR5IGZpbGUgbGlzdCAKLUZBSUwgY2FuU2hhcmUgd2l0aCBz
aW5nbGUgZmlsZSBsaXN0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxz
ZQotRkFJTCBjYW5TaGFyZSB3aXRoIGZpbGUgbGlzdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKLUZBSUwgY2FuU2hhcmUgd2l0aCByZXBlYXRlZCBmaWxlIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQorUEFTUyBjYW5TaGFyZSB3aXRo
IHNpbmdsZSBmaWxlIGxpc3QgCitQQVNTIGNhblNoYXJlIHdpdGggZmlsZSBsaXN0IAorUEFTUyBj
YW5TaGFyZSB3aXRoIHJlcGVhdGVkIGZpbGUgCiBQQVNTIGNhblNoYXJlIHdpdGggZmlsZSBsaXN0
IGFuZCB1cmwgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItc2hhcmUvY2FuU2hhcmUtZmlsZXMuaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggMmQ5OWM5MjA5ZTFhOTEwZDZjZTdlYTZhYTllZGQ0MWU3NzQ1OGVlMC4u
ZjdlMTA0Yzg0NTE4YjEyMjFkZDFkMTQ3NTU1M2YzOTFjY2M3MDllNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
Yi1zaGFyZS9jYW5TaGFyZS1maWxlcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBA
CiAKIFBBU1MgY2FuU2hhcmUgd2l0aCBzaW5nbGUgZmlsZSAKIFBBU1MgY2FuU2hhcmUgd2l0aCBl
bXB0eSBmaWxlIGxpc3QgCi1GQUlMIGNhblNoYXJlIHdpdGggc2luZ2xlIGZpbGUgbGlzdCBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKLUZBSUwgY2FuU2hhcmUgd2l0
aCBmaWxlIGxpc3QgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCi1G
QUlMIGNhblNoYXJlIHdpdGggcmVwZWF0ZWQgZmlsZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKK1BBU1MgY2FuU2hhcmUgd2l0aCBzaW5nbGUgZmlsZSBsaXN0IAor
UEFTUyBjYW5TaGFyZSB3aXRoIGZpbGUgbGlzdCAKK1BBU1MgY2FuU2hhcmUgd2l0aCByZXBlYXRl
ZCBmaWxlIAogUEFTUyBjYW5TaGFyZSB3aXRoIGZpbGUgbGlzdCBhbmQgdXJsIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>