<?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>120230</bug_id>
          
          <creation_ts>2013-08-23 13:44:12 -0700</creation_ts>
          <short_desc>Fix issues found by the Clang Static Analyzer</short_desc>
          <delta_ts>2013-08-26 17:52:01 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mario</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>920423</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-08-23 13:44:12 -0700</bug_when>
    <thetext>Fix issues found by the Clang Static Analyzer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920425</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-08-23 13:46:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/14822738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920451</commentid>
    <comment_count>2</comment_count>
      <attachid>209512</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-08-23 14:33:08 -0700</bug_when>
    <thetext>Created attachment 209512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920487</commentid>
    <comment_count>3</comment_count>
      <attachid>209512</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-23 16:05:32 -0700</bug_when>
    <thetext>Comment on attachment 209512
Patch

Attachment 209512 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1546419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920526</commentid>
    <comment_count>4</comment_count>
      <attachid>209531</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-08-23 19:45:03 -0700</bug_when>
    <thetext>Created attachment 209531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920654</commentid>
    <comment_count>5</comment_count>
      <attachid>209531</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-24 15:10:37 -0700</bug_when>
    <thetext>Comment on attachment 209531
Patch

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

&gt; Source/JavaScriptCore/API/ObjCCallbackFunction.mm:610
&gt; +    [invocation retainArguments];

This is clearly right for the target, but what about other arguments? Is retainArguments OK for all of them?

&gt; Source/JavaScriptCore/API/ObjCCallbackFunction.mm:611
&gt; +    [invocation setTarget:[[target copy] autorelease]];

Why autorelease instead of plain old release? I suggest using a local variable and release instead.

&gt; Source/WTF/wtf/ObjcRuntimeExtras.h:32
&gt;  RetType wtfObjcMsgSend(id target, SEL selector, ArgTypes... args)

I’m surprised this is not marked inline. Same for wtCallIMP.

&gt; Source/WTF/wtf/ObjcRuntimeExtras.h:49
&gt; +inline id wtfHardAutorelease(CFTypeRef object)

The wtf prefix on this is super-ugly. Do we really need it? Lets just not prefix this.

&gt; Source/WTF/wtf/ObjcRuntimeExtras.h:54
&gt; +    if (object)
&gt; +        CFMakeCollectable(object);
&gt; +    [(id)object autorelease];
&gt; +    return (id)object;

We should wrap the call to CFMakeCollectable inside #ifndef OBJC_NO_GC.

Is this the correct implementation under ARC?

&gt; Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:698
&gt;      UInt8* urlBytes;
&gt;      UInt8 buffer[2048];
&gt; +    OwnArrayPtr&lt;UInt8&gt; bufferOnHeap;
&gt;      CFIndex numBytes = CFURLGetBytes((CFURLRef)URL, buffer, 2048);
&gt;      if (numBytes == -1) {
&gt;          numBytes = CFURLGetBytes((CFURLRef)URL, NULL, 0);
&gt; -        urlBytes = static_cast&lt;UInt8*&gt;(malloc(numBytes));
&gt; +        bufferOnHeap = adoptArrayPtr(new UInt8[numBytes]);
&gt; +        urlBytes = bufferOnHeap.get();
&gt;          CFURLGetBytes((CFURLRef)URL, urlBytes, numBytes);
&gt;      } else
&gt;          urlBytes = buffer;

We created the Vector class and its inline capacity specifically to avoid having to write things like this. It should be more like this:

    Vector&lt;UInt8, 2048&gt; buffer(2048);
    CFIndex numBytes = CFURLGetBytes((CFURLRef)URL, buffer.get(), 2048);
    if (numBytes == -1) {
        numBytes = CFURLGetBytes((CFURLRef)URL, NULL, 0);
        buffer.grow(numBytes);
        CFURLGetBytes((CFURLRef)URL, buffer.get(), numBytes);
    }
    UInt8* urlBytes = buffer.get();

&gt; Source/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm:168
&gt; -        _pluginLayer.get().backgroundColor = CGColorCreateGenericRGB(1, 0, 1, 1);
&gt; +        _pluginLayer.get().backgroundColor = (CGColorRef)wtfHardAutorelease(CGColorCreateGenericRGB(1, 0, 1, 1));

I don’t think we want autorelease here. I think we want plain old release. If you want to use RetainPtr, the way to write it is this:

    _pluginLayer.get().backgroundColor = adoptCF(CGColorCreateGenericRGB(1, 0, 1, 1)).get();

If not, then I suggest a local variable and an explicit call to CGColorRelease. CF doesn’t have autorelease, and we should not use HardAutorelease for a case like where we are not bridging to Objective-C.

Or we could stick this into a global and just fetch it the first time this function runs.

&gt; Source/WebKit/mac/WebView/WebView.mm:6341
&gt; -        WebCFAutorelease(self);
&gt; +        wtfHardAutorelease(self);

This seems wrong. Should just be:

    [self autorelease];

&gt; Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm:59
&gt; +    return (NSURL *)wtfHardAutorelease(WKURLCopyCFURL(kCFAllocatorDefault, wkURL.get()));

The cast to (NSURL *) is no longer required and should be omitted.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:211
&gt; +        return (NSString *)wtfHardAutorelease(WKStringCopyCFString(kCFAllocatorDefault, (WKStringRef)result.get()));

The cast to (NSString *) is no longer required and should be omitted.

&gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:33
&gt; +#import &lt;wtf/RetainPtr.h&gt;

Can we just compile with with ARC instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921192</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-08-26 15:20:04 -0700</bug_when>
    <thetext>(In reply to comment #5)

Thanks for the thorough review!

&gt; (From update of attachment 209531 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209531&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/ObjCCallbackFunction.mm:610
&gt; &gt; +    [invocation retainArguments];
&gt; 
&gt; This is clearly right for the target, but what about other arguments? Is retainArguments OK for all of them?

Yes, I think it&apos;s okay. Previously we weren&apos;t retaining the arguments, relying instead on invocation happening immediately after setting arguments. I think letting the NSInvocation retain and release the object arguments makes things more explicit.

&gt; &gt; Source/JavaScriptCore/API/ObjCCallbackFunction.mm:611
&gt; &gt; +    [invocation setTarget:[[target copy] autorelease]];
&gt; 
&gt; Why autorelease instead of plain old release? I suggest using a local variable and release instead.

No good reason. I&apos;ll implement your suggestion.

&gt; &gt; Source/WTF/wtf/ObjcRuntimeExtras.h:32
&gt; &gt;  RetType wtfObjcMsgSend(id target, SEL selector, ArgTypes... args)
&gt; 
&gt; I’m surprised this is not marked inline. Same for wtCallIMP.

I changed these to be inline.

&gt; &gt; Source/WTF/wtf/ObjcRuntimeExtras.h:49
&gt; &gt; +inline id wtfHardAutorelease(CFTypeRef object)
&gt; 
&gt; The wtf prefix on this is super-ugly. Do we really need it? Lets just not prefix this.

Sure, I&apos;ll remove it.

&gt; &gt; Source/WTF/wtf/ObjcRuntimeExtras.h:54
&gt; &gt; +    if (object)
&gt; &gt; +        CFMakeCollectable(object);
&gt; &gt; +    [(id)object autorelease];
&gt; &gt; +    return (id)object;
&gt; 
&gt; We should wrap the call to CFMakeCollectable inside #ifndef OBJC_NO_GC.

Ok.

&gt; Is this the correct implementation under ARC?

Good point. It isn&apos;t correct if the function&apos;s inlined into a ARC-enabled translation unit. I changed the function to this:

inline id HardAutorelease(CFTypeRef object)
{
#ifndef OBJC_NO_GC
    if (object)
        CFMakeCollectable(object);
#elif !__has_feature(objc_arc)
    [(id)object autorelease];
#endif
    return (id)object;
}

&gt; &gt; Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:698
&gt; &gt;      UInt8* urlBytes;
&gt; &gt;      UInt8 buffer[2048];
&gt; &gt; +    OwnArrayPtr&lt;UInt8&gt; bufferOnHeap;
&gt; &gt;      CFIndex numBytes = CFURLGetBytes((CFURLRef)URL, buffer, 2048);
&gt; &gt;      if (numBytes == -1) {
&gt; &gt;          numBytes = CFURLGetBytes((CFURLRef)URL, NULL, 0);
&gt; &gt; -        urlBytes = static_cast&lt;UInt8*&gt;(malloc(numBytes));
&gt; &gt; +        bufferOnHeap = adoptArrayPtr(new UInt8[numBytes]);
&gt; &gt; +        urlBytes = bufferOnHeap.get();
&gt; &gt;          CFURLGetBytes((CFURLRef)URL, urlBytes, numBytes);
&gt; &gt;      } else
&gt; &gt;          urlBytes = buffer;
&gt; 
&gt; We created the Vector class and its inline capacity specifically to avoid having to write things like this. It should be more like this:
&gt; 
&gt;     Vector&lt;UInt8, 2048&gt; buffer(2048);
&gt;     CFIndex numBytes = CFURLGetBytes((CFURLRef)URL, buffer.get(), 2048);
&gt;     if (numBytes == -1) {
&gt;         numBytes = CFURLGetBytes((CFURLRef)URL, NULL, 0);
&gt;         buffer.grow(numBytes);
&gt;         CFURLGetBytes((CFURLRef)URL, buffer.get(), numBytes);
&gt;     }
&gt;     UInt8* urlBytes = buffer.get();

Ok, I&apos;ll do this.

&gt; 
&gt; &gt; Source/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm:168
&gt; &gt; -        _pluginLayer.get().backgroundColor = CGColorCreateGenericRGB(1, 0, 1, 1);
&gt; &gt; +        _pluginLayer.get().backgroundColor = (CGColorRef)wtfHardAutorelease(CGColorCreateGenericRGB(1, 0, 1, 1));
&gt; 
&gt; I don’t think we want autorelease here. I think we want plain old release. If you want to use RetainPtr, the way to write it is this:
&gt; 
&gt;     _pluginLayer.get().backgroundColor = adoptCF(CGColorCreateGenericRGB(1, 0, 1, 1)).get();
&gt; 
&gt; If not, then I suggest a local variable and an explicit call to CGColorRelease. CF doesn’t have autorelease, and we should not use HardAutorelease for a case like where we are not bridging to Objective-C.
&gt; 
&gt; Or we could stick this into a global and just fetch it the first time this function runs.

I like using RetainPtr&lt;&gt;. I&apos;ll do that.

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:6341
&gt; &gt; -        WebCFAutorelease(self);
&gt; &gt; +        wtfHardAutorelease(self);
&gt; 
&gt; This seems wrong. Should just be:
&gt; 
&gt;     [self autorelease];

Done.

&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm:59
&gt; &gt; +    return (NSURL *)wtfHardAutorelease(WKURLCopyCFURL(kCFAllocatorDefault, wkURL.get()));
&gt; 
&gt; The cast to (NSURL *) is no longer required and should be omitted.

Done.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:211
&gt; &gt; +        return (NSString *)wtfHardAutorelease(WKStringCopyCFString(kCFAllocatorDefault, (WKStringRef)result.get()));
&gt; 
&gt; The cast to (NSString *) is no longer required and should be omitted.

Done.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:33
&gt; &gt; +#import &lt;wtf/RetainPtr.h&gt;
&gt; 
&gt; Can we just compile with with ARC instead?

I could compile this single test with ARC, although I think I&apos;d rather convert most/all the tests to ARC in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921202</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-08-26 15:39:55 -0700</bug_when>
    <thetext>Committed r154647: &lt;http://trac.webkit.org/changeset/154647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921261</commentid>
    <comment_count>8</comment_count>
      <attachid>209531</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-26 17:51:38 -0700</bug_when>
    <thetext>Comment on attachment 209531
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/ObjcRuntimeExtras.h:54
&gt;&gt;&gt; +    return (id)object;
&gt;&gt; 
&gt;&gt; We should wrap the call to CFMakeCollectable inside #ifndef OBJC_NO_GC.
&gt;&gt; 
&gt;&gt; Is this the correct implementation under ARC?
&gt; 
&gt; Ok.

The version of this you landed seems like it needs an UNUSED_PARAM in the non-GC, non-ARC case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921262</commentid>
    <comment_count>9</comment_count>
      <attachid>209531</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-26 17:52:01 -0700</bug_when>
    <thetext>Comment on attachment 209531
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/ObjcRuntimeExtras.h:54
&gt;&gt;&gt;&gt; +    return (id)object;
&gt;&gt;&gt; 
&gt;&gt;&gt; We should wrap the call to CFMakeCollectable inside #ifndef OBJC_NO_GC.
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this the correct implementation under ARC?
&gt;&gt; 
&gt;&gt; Ok.
&gt; 
&gt; The version of this you landed seems like it needs an UNUSED_PARAM in the non-GC, non-ARC case.

No, my mistake, it’s fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209512</attachid>
            <date>2013-08-23 14:33:08 -0700</date>
            <delta_ts>2013-08-23 19:44:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120230-20130823143310.patch</filename>
            <type>text/plain</type>
            <size>42707</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDc1NDk4ZTZhNDZlODU1MTQ5YjNiN2ZhNmJlNjBlNGQxYmU3NTBmLi5jNWYzODY2MjU4MThhOGRm
YWM3ZDI4OGQ0M2Y4MmU4MGU1OTcwNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxMy0wOC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IGlzc3VlcyBmb3VuZCBieSB0aGUgQ2xhbmcgU3RhdGljIEFuYWx5emVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1Zh
bHVlLm1tOgorICAgICAgICAodmFsdWVUb1N0cmluZyk6IERvbid0IGxlYWsgZXZlcnkgQ0ZTdHJp
bmdSZWYgd2hlbiBpbiBPYmplY3RpdmUtQyBHQy4KKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6fk9i
akNDYWxsYmFja0Z1bmN0aW9uSW1wbCk6IERvbid0CisgICAgICAgIHJlbGVhc2UgbV9pbnZvY2F0
aW9uJ3MgdGFyZ2V0IHNpbmNlIE5TSW52b2NhdGlvbiB3aWxsIGRvIGl0IGZvciB1cyBvbgorICAg
ICAgICBkZWFsbG9jLgorICAgICAgICAob2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JCbG9jayk6IFRl
bGwgTlNJbnZvY2F0aW9uIHRvIHJldGFpbiBpdHMgdGFyZ2V0CisgICAgICAgIGFuZCBhdXRvcmVs
ZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBjb3BpZWQgYmxvY2suCisgICAgICAgICogQVBJL3Rl
c3RzL21pbmlkb20uYzoKKyAgICAgICAgKGNyZWF0ZVN0cmluZ1dpdGhDb250ZW50c09mRmlsZSk6
IEZyZWUgYnVmZmVyIGJlZm9yZSByZXR1cm5pbmcuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkuYzoKKyAgICAgICAgKGNyZWF0ZVN0cmluZ1dpdGhDb250ZW50c09mRmlsZSk6IERpdHRvLgor
CiAyMDEzLTA4LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSlNPYmplY3QgYW5kIEpTQXJyYXkgY29kZSBzaG91bGRuJ3QgaGF2ZSB0byB0aXB0
b2UgYXJvdW5kIGdhcmJhZ2UgY29sbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2NmM3YTc2MTVlOGIyNzExZDNjM2Y1
ZWU4NjJjZGIyZGFlN2MxYTFjLi5iOTlkNjI2ZGY3ZTk2MjRkYzllYWNiMzJlZTlhNGU4ZGQwZThi
NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA4LTIzICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggaXNzdWVzIGZvdW5kIGJ5IHRoZSBDbGFuZyBTdGF0
aWMgQW5hbHl6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL09iamNSdW50aW1lRXh0cmFzLmg6CisgICAgICAgICh3dGZIYXJkQXV0b3JlbGVh
c2UpOiBBZGRlZCBhIGNhbm9uaWNhbCBpbXBsZW1lbnRhdGlvbiBvZiBIYXJkQXV0b3JlbGVhc2Uu
CisKIDIwMTMtMDgtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTQ0MTYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNjNDFhZWQ5ODBmODBkZjcwMjYwOTEzZTAxZWZlNDQzZjM1NzgwNS4uNzI4YTk4ZmE4MzFhNDJh
Y2Q4MmQxZDQwNDllZjBlY2I1ZmVmOWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisy
MDEzLTA4LTIzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
aXNzdWVzIGZvdW5kIGJ5IHRoZSBDbGFuZyBTdGF0aWMgQW5hbHl6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDIzMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBSZW1vdmVkIEZvdW5kYXRpb25FeHRyYXMuaC4KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbTogUmVtb3Zl
ZCBDRkF1dG9yZWxlYXNlSGVscGVyKCkuCisgICAgICAgIChBWFRleHRNYXJrZXJSYW5nZSk6IFVz
ZWQgd3RmSGFyZEF1dG9yZWxlYXNlKCkgaW5zdGVhZCBvZgorICAgICAgICBDRkF1dG9yZWxlYXNl
SGVscGVyKCkuCisgICAgICAgIChBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KTogRGl0dG8uCisgICAg
ICAgIChBWFRleHRNYXJrZXJSYW5nZUVuZCk6IERpdHRvLgorICAgICAgICAodGV4dE1hcmtlckZv
clZpc2libGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6IENh
bGxlZCBbc3VwZXIgaW5pdF0KKyAgICAgICAgZmlyc3Qgc28gdGhhdCB3ZSBkb24ndCBsYXRlciB1
c2UgaXZhcnMgZnJvbSB0aGUgd3Jvbmcgc2VsZi4KKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRl
ckRlbGVnYXRlIGluaXRXaXRoQ2FsbGJhY2s6XSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9Gb3VuZGF0aW9uRXh0cmFzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L0tVUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpvcGVyYXRvciBOU1VSTCAqKTog
VXNlZCB3dGZIYXJkQXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9mCisgICAgICAgIEhhcmRBdXRvcmVs
ZWFzZSgpLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXZWJDb3JlOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6IFVzZWQgd3RmSGFyZEF1dG9y
ZWxlYXNlKCkgaW5zdGVhZCBvZgorICAgICAgICBXZWJDb3JlQ0ZBdXRvcmVsZWFzZSgpLgorICAg
ICAgICAoV2ViQ29yZTo6VVJMV2l0aERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnVz
ZXJWaXNpYmxlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5n
Q29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IFN0b3JlZCB0aGUKKyAgICAgICAgaGVh
cC1hbGxvY2F0ZWQgYnVmZmVyIGluIGFuIE93bkFycmF5UHRyPD4gc28gdGhhdCB3ZSBkZWFsbG9j
YXRlIHRoZQorICAgICAgICBidWZmZXIgYXQgYWxsIHJldHVybiBzaXRlcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMuaDogVXNlZCB3dGZIYXJkQXV0b3JlbGVhc2Uo
KSBpbnN0ZWFkIG9mCisgICAgICAgIFdlYkNvcmVDRkF1dG9yZWxlYXNlKCkuCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5n
SW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKik6IFVzZWQgd3RmSGFyZEF1dG9yZWxlYXNlKCkKKyAg
ICAgICAgaW5zdGVhZCBvZiBIYXJkQXV0b3JlbGVhc2UoKS4KKwogMjAxMy0wOC0yMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBjb21wb3NpdGluZy9n
ZW9tZXRyeS9ib3VuZHMtaWdub3Jlcy1oaWRkZW4tZHluYW1pYy5odG1sIGhhcyBpbmNvcnJlY3Qg
aW5pdGlhbCByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0Yzk2OTI5MmMwOTc0ZGU1ZWE0
YjM4MGIzOGRkMjU2NjZlYTJmYjQ5Li4xZGM5Yjc4OTA0ZWQ3OWIxMzQwMjhhMTExNDdhOTZmNGY4
ZTAyOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTMtMDgtMjMgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBpc3N1ZXMgZm91bmQg
YnkgdGhlIENsYW5nIFN0YXRpYyBBbmFseXplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW06Cisg
ICAgICAgICgtW05TRmlsZU1hbmFnZXIgX3dlYmtpdF9zdGFydHVwVm9sdW1lTmFtZV0pOiBVc2Vk
IHd0ZkhhcmRBdXRvcmVsZWFzZSgpCisgICAgICAgIGluc3RlYWQgb2YgV2ViQ0ZBdXRvcmVsZWFz
ZSgpLgorICAgICAgICAqIE1pc2MvV2ViTlNPYmplY3RFeHRyYXMuaDogUmVtb3ZlZCBkZWZpbml0
aW9uIG9mIFdlYkNGQXV0b3JlbGVhc2UoKS4KKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFz
Lm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX1VSTFdpdGhMb3dlcmNhc2VkU2NoZW1lXSk6IFVz
ZWQgd3RmSGFyZEF1dG9yZWxlYXNlKCkKKyAgICAgICAgaW5zdGVhZCBvZiBXZWJDRkF1dG9yZWxl
YXNlKCkuCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1
Z2luTGF5ZXJdKTogU3RvcCBsZWFraW5nCisgICAgICAgIENHQ29sb3JzIChDQUxheWVyIHJldGFp
bnMgaXRzIGJhY2tncm91bmRDb2xvciBwcm9wZXJ0eSBkZXNwaXRlIHRoZQorICAgICAgICBwcm9w
ZXJ0eSBhdHRyaWJ1dGVzIGNsYWltaW5nIG90aGVyd2lzZSkuCisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlUGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKCtbV2ViQmFzZVBsdWdpblBhY2thZ2Ug
cHJlZmVycmVkTG9jYWxpemF0aW9uTmFtZV0pOiBVc2VkCisgICAgICAgIHd0ZkhhcmRBdXRvcmVs
ZWFzZSgpIGluc3RlYWQgb2YgV2ViQ0ZBdXRvcmVsZWFzZSgpLgorICAgICAgICAqIFdlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAgICAgICgtW1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgbGFzdE9yaWVudGF0aW9uXSk6IFN0b3AK
KyAgICAgICAgbGVha2luZyBXZWJEZXZpY2VPcmllbnRhdGlvbnMuCisgICAgICAgICogV2ViVmll
dy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRp
b24gY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVG9QREY6XSk6IFVzZWQKKyAgICAgICAgd3Rm
SGFyZEF1dG9yZWxlYXNlKCkgaW5zdGVhZCBvZiBXZWJDRkF1dG9yZWxlYXNlKCkuCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVs
Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViVmlldyBfcmVtb3ZlT2JqZWN0Rm9ySWRlbnRpZmll
cjpdKTogRGl0dG8uCisKIDIwMTMtMDgtMjAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBw
bGUuY29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwMjk+IERvY3VtZW50
OjptYXJrZXJzKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRkNjU1
MTQxNWQ4YjE1ZjI5OTVhMzMyYjBiODUwZjdlNzI2ZTk4OWQuLmY3MWI3MjM3ZjE4NzIwZmIyOTEw
OTRkMjA3NDQ1NmM4ZjkwMzYzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0w
OC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGlzc3Vl
cyBmb3VuZCBieSB0aGUgQ2xhbmcgU3RhdGljIEFuYWx5emVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKGF1dG9yZWxlYXNlZCk6IERvbid0IGxl
YWsgQ0ZVUkxzIHdoZW4gaW4gT2JqZWN0aXZlLUMgR0MuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOgorICAgICAgICAoLVtX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6CisgICAgICAgIERvbid0IGxlYWsgQ0ZTdHJpbmdzIHdoZW4gaW4gT2Jq
ZWN0aXZlLUMgR0MuCisKIDIwMTMtMDgtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAxODA+IEZpeCBpc3N1ZXMgd2l0
aCBPVEhFUl9MREZMQUdTIGluIHZhcmlvdXMgLnhjY29uZmlnIGZpbGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMDE0YmFhOGRhNTc0YWRlODY5MWZkZTc5OWFlYjhjZGVk
ZDgyNGM1Yy4uMjRkNmFjZjI0NmY5NDlhMTYyNDc3MjI5NDBlMjJlMWFmNmRjOTkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
SlNDSlNWYWx1ZS5oIgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
U2V0Lmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9UQ1NwaW5Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTc0NSw3ICs3NDYsNyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIE5TU3RyaW5nICpzdHJpbmdOUyA9IFso
TlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0
cmluZykgYXV0b3JlbGVhc2VdOworICAgIE5TU3RyaW5nICpzdHJpbmdOUyA9IHd0ZkhhcmRBdXRv
cmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0cmlu
ZykpOwogICAgIEpTU3RyaW5nUmVsZWFzZShqc3N0cmluZyk7CiAgICAgcmV0dXJuIHN0cmluZ05T
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0KaW5kZXggYjIzNTE1YjA1OGQ2ZDljMmIzZThkYmQyZjgzMTFiMzYzMDkwM2VjYS4uMDYz
NzM0YmY1YTEyNjdmYTRiODZhODBhODcwMTk0ZDIzOWRkZDBlZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC00MDcsOCArNDA3
LDYgQEAgcHVibGljOgogCiAgICAgfk9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbCgpCiAgICAgewot
ICAgICAgICBpZiAobV90eXBlICE9IENhbGxiYWNrSW5zdGFuY2VNZXRob2QpCi0gICAgICAgICAg
ICBbW21faW52b2NhdGlvbi5nZXQoKSB0YXJnZXRdIHJlbGVhc2VdOwogICAgICAgICBbbV9pbnN0
YW5jZUNsYXNzIHJlbGVhc2VdOwogICAgIH0KIApAQCAtNjA5LDcgKzYwNyw4IEBAIEpTT2JqZWN0
UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2soSlNDb250ZXh0ICpjb250ZXh0LCBpZCB0
YXJnZXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSA9IF9C
bG9ja19zaWduYXR1cmUodGFyZ2V0KTsKICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBb
TlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOltOU01ldGhvZFNpZ25h
dHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnNpZ25hdHVyZV1dOwotICAgIFtpbnZvY2F0aW9u
IHNldFRhcmdldDpbdGFyZ2V0IGNvcHldXTsKKyAgICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVu
dHNdOworICAgIFtpbnZvY2F0aW9uIHNldFRhcmdldDpbW3RhcmdldCBjb3B5XSBhdXRvcmVsZWFz
ZV1dOwogICAgIHJldHVybiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oY29udGV4
dCwgaW52b2NhdGlvbiwgQ2FsbGJhY2tCbG9jaywgbmlsLCBzaWduYXR1cmUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCmluZGV4IDg2MTRlNTFlOTc5N2Zk
NTNmY2QyNWI0YjhiYTlhY2UxNmI0N2NiYjEuLmY0Y2NmOTFlNGNlMTcyNmY0NTVlZTYzNjE1NGFm
MTEzZDE4ZjA2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
bWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CkBAIC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNoYXIqIGNyZWF0ZVN0cmluZ1dpdGhDb250ZW50
c09mRmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSkKICAgICBGSUxFKiBmID0gZm9wZW4oZmlsZU5h
bWUsICJyIik7CiAgICAgaWYgKCFmKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQg
bm90IG9wZW4gZmlsZTogJXNcbiIsIGZpbGVOYW1lKTsKKyAgICAgICAgZnJlZShidWZmZXIpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5jCmluZGV4IGJlMThiMmJmN2Q0MDc1YWI1MzRlMDgxMjYxYTM2OWZmMjRi
ZGQzYmQuLmE5ZTllNGRhYjQwMDJlMzQwNTVkM2ZhOTA2MzY1MDYzN2NiNTM0N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0xOTk2LDYgKzE5OTYsNyBA
QCBzdGF0aWMgY2hhciogY3JlYXRlU3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IGNoYXIq
IGZpbGVOYW1lKQogICAgIEZJTEUqIGYgPSBmb3BlbihmaWxlTmFtZSwgInIiKTsKICAgICBpZiAo
IWYpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiBmaWxlOiAlc1xu
IiwgZmlsZU5hbWUpOworICAgICAgICBmcmVlKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0cmFz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmpjUnVudGltZUV4dHJhcy5oCmluZGV4IGVjMDJlZDBjMGMz
MDJiMmYyNDVjN2U5NjZlYzk1YTFhZjg4OGNhMGMuLmFlMWE5YjQxZDU0MmIyMmM2ZjY4ODllY2Rk
ODAxNWI2YWYxNWRhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0
cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRyYXMuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSA8b2JqYy9tZXNzYWdlLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cwog
dGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSwgdHlwZW5hbWUuLi4gQXJnVHlwZXM+CiBSZXRUeXBl
IHd0Zk9iamNNc2dTZW5kKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmdUeXBlcy4uLiBhcmdz
KQogewpAQCAtMzgsNSArMzksMjAgQEAgUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRh
dGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZ1R5cGVzLi4uIGFyZ3MKIHsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmdUeXBlcy4uLik+
KGltcGxlbWVudGF0aW9uKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmdzLi4uKTsKIH0KKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCisjaWZkZWYgX19PQkpDX18KKy8vIFVzZSB3dGZIYXJkQXV0b3JlbGVh
c2UgdG8gcmV0dXJuIGFuIG9iamVjdCBtYWRlIGJ5IGEgQ29yZSBGb3VuZGF0aW9uCisvLyAiY3Jl
YXRlIiBvciAiY29weSIgZnVuY3Rpb24gYXMgYW4gYXV0b3JlbGVhc2VkIGFuZCBnYXJiYWdlIGNv
bGxlY3RlZAorLy8gb2JqZWN0LiBDRiBvYmplY3RzIG5lZWQgdG8gYmUgIm1hZGUgY29sbGVjdGFi
bGUiIGZvciBhdXRvcmVsZWFzZSB0byB3b3JrCisvLyBwcm9wZXJseSB1bmRlciBHQy4KK2lubGlu
ZSBpZCB3dGZIYXJkQXV0b3JlbGVhc2UoQ0ZUeXBlUmVmIG9iamVjdCkKK3sKKyAgICBpZiAob2Jq
ZWN0KQorICAgICAgICBDRk1ha2VDb2xsZWN0YWJsZShvYmplY3QpOworICAgIFsoaWQpb2JqZWN0
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gKGlkKW9iamVjdDsKK30KKyNlbmRpZiAvLyBfX09C
SkNfXwogCiAjZW5kaWYgLy8gV1RGX09iamNSdW50aW1lRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MmM4M2QyZjQ2
MjA3ZmY1NmIyN2NlMWZlZGM4OWE1OThlZTcwNjc1Li5iMmY1MzdkMzRmYWYyYWUzMTdjN2VmYTM4
MDIyNDA2NmFjMjVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODEwLDcgKzI4MTAsNiBAQAogCQk5MzVDNDc2ODA5QUM0
RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91
c2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM1QzQ3NjcwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUM0NzZCMDlBQzRE
NEYwMEE2QUFCNCAvKiBQbGF0Zm9ybVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUM0NzZBMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0
Zm9ybVdoZWVsRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk5MzVDNDc2RDA5QUM0RDYzMDBBNkFBQjQgLyogRm91bmRhdGlvbkV4dHJhcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NkMw
OUFDNEQ2MzAwQTZBQUI0IC8qIEZvdW5kYXRpb25FeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQg
LyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi87IH07
CiAJCTkzNUM0Nzc1MDlBQzREOEUwMEE2QUFCNCAvKiBHYXBSZWN0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NzQwOUFDNEQ4RDAwQTZBQUI0
IC8qIEdhcFJlY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM1RjQ1NDIwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RjQ1
NDAwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIuY3BwICovOyB9OwpAQCAt
OTE5Miw3ICs5MTkxLDYgQEAKIAkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3Njcw
OUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM1QzQ3NkEwOUFDNEQ0RjAwQTZBQUI0IC8qIFBsYXRmb3JtV2hlZWxFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVdoZWVsRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM1QzQ3NkMwOUFDNEQ2MzAwQTZBQUI0
IC8qIEZvdW5kYXRpb25FeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm91bmRhdGlvbkV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVDNDc2
RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBLZXlFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM1QzQ3NzQwOUFDNEQ4RDAwQTZBQUI0IC8qIEdhcFJlY3RzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhcFJlY3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUY0NTQwMEY3QzNCNUYwMEQ3QzFGQiAvKiBKU0xhenlFdmVudExpc3RlbmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MjcsNyArMTQ1MjUs
NiBAQAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFj
Lm1tICovLAogCQkJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1t
ICovLAotCQkJCTkzNUM0NzZDMDlBQzRENjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmgg
Ki8sCiAJCQkJQzUzOTJEMzMxMzI2QUQwMTAwMDQzRDM1IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLywK
IAkJCQlDNTM5MkQzNDEzMjZBRDAxMDAwNDNEMzUgLyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJ
CQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8sCkBAIC0yMTgw
NCw3ICsyMTgwMSw2IEBACiAJCQkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRh
U3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzczQTBBREJBNURFMDBBNDU1NEQg
LyogRm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg4NUI5MzExQjZGREE2MDAzMzgz
QkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTkzNUM0NzZEMDlBQzRE
NjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODUz
MTIzRDExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QjA3MEQzMTMwQTQwOUMwMEEzNzYzQyAvKiBGcmFtZUFjdGlvblNj
aGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDg0MDk3MTY2NWIwNGI0Mjg5YzVhNTkyNTQ1MWFlNzNhZmJjODA0ZTQuLjBl
ZTM5ZWQ1NWYxY2JmNDczZGY0MzQzNTI1NGZmYTE2MDRmNjFmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03Myw2ICs3Myw3IEBACiAjaW1wb3J0ICJXZWJD
b3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCAiaHRtbGVkaXRpbmcuaCIKKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBA
IC00MDMsMTQgKzQwNCw2IEBAIC0gKGlkKWF0dGFjaG1lbnRWaWV3CiAKICNwcmFnbWEgbWFyayBT
eXN0ZW1JbnRlcmZhY2Ugd3JhcHBlcnMKIAotc3RhdGljIGlubGluZSBpZCBDRkF1dG9yZWxlYXNl
SGVscGVyKENGVHlwZVJlZiBvYmopCi17Ci0gICAgaWYgKG9iaikKLSAgICAgICAgQ0ZNYWtlQ29s
bGVjdGFibGUob2JqKTsKLSAgICBbKGlkKW9iaiBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIChp
ZClvYmo7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgQk9PTCBBWE9iamVjdElzVGV4dE1hcmtlcihpZCBv
YmopCiB7CiAgICAgcmV0dXJuIG9iaiAhPSBuaWwgJiYgQ0ZHZXRUeXBlSUQob2JqKSA9PSB3a0dl
dEFYVGV4dE1hcmtlclR5cGVJRCgpOwpAQCAtNDI3LDIxICs0MjAsMjEgQEAgc3RhdGljIGlkIEFY
VGV4dE1hcmtlclJhbmdlKGlkIHN0YXJ0TWFya2VyLCBpZCBlbmRNYXJrZXIpCiAgICAgQVNTRVJU
KGVuZE1hcmtlciAhPSBuaWwpOwogICAgIEFTU0VSVChDRkdldFR5cGVJRChzdGFydE1hcmtlcikg
PT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKGVu
ZE1hcmtlcikgPT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIENGQXV0
b3JlbGVhc2VIZWxwZXIod2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZSgoQ0ZUeXBlUmVmKXN0YXJ0
TWFya2VyLCAoQ0ZUeXBlUmVmKWVuZE1hcmtlcikpOworICAgIHJldHVybiB3dGZIYXJkQXV0b3Jl
bGVhc2Uod2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZSgoQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyLCAo
Q0ZUeXBlUmVmKWVuZE1hcmtlcikpOwogfQogCiBzdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2VT
dGFydChpZCByYW5nZSkKIHsKICAgICBBU1NFUlQocmFuZ2UgIT0gbmlsKTsKICAgICBBU1NFUlQo
Q0ZHZXRUeXBlSUQocmFuZ2UpID09IHdrR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKSk7Ci0g
ICAgcmV0dXJuIENGQXV0b3JlbGVhc2VIZWxwZXIod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VTdGFy
dChyYW5nZSkpOworICAgIHJldHVybiB3dGZIYXJkQXV0b3JlbGVhc2Uod2tDb3B5QVhUZXh0TWFy
a2VyUmFuZ2VTdGFydChyYW5nZSkpOwogfQogCiBzdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2VF
bmQoaWQgcmFuZ2UpCiB7CiAgICAgQVNTRVJUKHJhbmdlICE9IG5pbCk7CiAgICAgQVNTRVJUKENG
R2V0VHlwZUlEKHJhbmdlKSA9PSB3a0dldEFYVGV4dE1hcmtlclJhbmdlVHlwZUlEKCkpOwotICAg
IHJldHVybiBDRkF1dG9yZWxlYXNlSGVscGVyKHdrQ29weUFYVGV4dE1hcmtlclJhbmdlRW5kKHJh
bmdlKSk7CisgICAgcmV0dXJuIHd0ZkhhcmRBdXRvcmVsZWFzZSh3a0NvcHlBWFRleHRNYXJrZXJS
YW5nZUVuZChyYW5nZSkpOwogfQogCiAjcHJhZ21hIG1hcmsgU2VhcmNoIGhlbHBlcnMKQEAgLTUy
Niw3ICs1MTksNyBAQCBzdGF0aWMgaWQgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihBWE9i
amVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aQogICAgIGlmICghdGV4dE1hcmtl
ckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICByZXR1cm4gQ0ZBdXRv
cmVsZWFzZUhlbHBlcih3a0NyZWF0ZUFYVGV4dE1hcmtlcigmdGV4dE1hcmtlckRhdGEsIHNpemVv
Zih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gd3RmSGFyZEF1dG9yZWxlYXNlKHdrQ3Jl
YXRlQVhUZXh0TWFya2VyKCZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkp
OwogfQogCiAtIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOihjb25zdCBWaXNpYmxl
UG9zaXRpb24gJil2aXNpYmxlUG9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNjE1MzQw
ZWVjMTE1MmMzMzY2NjM5YjQxZmNjNWI0ZTg1ZGU5ZTJjLi4xOWNkNjg2NjQxYWNhMWZkNTI3NmI1
OWYxMjkyOGFhNGI0M2E2ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE1NTQsOCAr
MTU1NCwxMSBAQCBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIKIAogLSAo
aWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyop
Y2FsbGJhY2sKIHsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgcmV0dXJu
IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkaXNjb25uZWN0
CkBAIC0xNjc4LDggKzE2ODEsMTEgQEAgQGltcGxlbWVudGF0aW9uIFdlYkNvcmVBVkZMb2FkZXJE
ZWxlZ2F0ZQogCiAtIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiljYWxsYmFjawogeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwogICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFj
azsKLSAgICByZXR1cm4gW3N1cGVyIGluaXRdOworICAgIHJldHVybiBzZWxmOwogfQogCiAtIChC
T09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRl
ciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9Gb3VuZGF0aW9uRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRm91bmRhdGlvbkV4dHJhcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzOWIxMmVhOWUwMTU2ZDg3NzkzYzJhNDc2MWYyMjQwNmZiZGZjMGYwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Gb3VuZGF0aW9uRXh0cmFzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaD4KLSNpbXBvcnQgPEZvdW5k
YXRpb24vTlNPYmplY3QuaD4KLQotLy8gVXNlIEhhcmRBdXRvcmVsZWFzZSB0byByZXR1cm4gYW4g
b2JqZWN0IG1hZGUgYnkgYSBDb3JlRm91bmRhdGlvbgotLy8gImNyZWF0ZSIgb3IgImNvcHkiIGZ1
bmN0aW9uIGFzIGFuIGF1dG9yZWxlYXNlZCBhbmQgZ2FyYmFnZSBjb2xsZWN0ZWQKLS8vIG9iamVj
dC4gQ0Ygb2JqZWN0cyBuZWVkIHRvIGJlICJtYWRlIGNvbGxlY3RhYmxlIiBmb3IgYXV0b3JlbGVh
c2UgdG8gd29yawotLy8gcHJvcGVybHkgdW5kZXIgR0MuCi0KLXN0YXRpYyBpbmxpbmUgaWQgSGFy
ZEF1dG9yZWxlYXNlKENGVHlwZVJlZiBvYmplY3QpCi17Ci0gICAgaWYgKG9iamVjdCkKLSAgICAg
ICAgQ0ZNYWtlQ29sbGVjdGFibGUob2JqZWN0KTsKLSAgICBbKGlkKW9iamVjdCBhdXRvcmVsZWFz
ZV07Ci0gICAgcmV0dXJuIChpZClvYmplY3Q7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9L
VVJMTWFjLm1tCmluZGV4IDA4NjllMTVjMDJjZTcwYmIwM2M5NWM2NmQ1NTNiY2Q2ZWZmZDg5NTUu
LjQ5MzlmNDk2N2E1MmNiZDA4YTkzZThlYWUxY2I0MmM2OWJhNjgxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJLVVJM
LmgiCiAKICNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFz
LmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNDksNyBAQCBLVVJM
OjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKIHsKICAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJl
ZSBicmlkZ2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2VydmUg
dGhlIG9yaWdpbmFsIHN0cmluZy4KICAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91
bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gSGFyZEF1dG9yZWxl
YXNlKGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gd3RmSGFyZEF1dG9yZWxl
YXNlKGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKIH0KIAogUmV0YWluUHRyPENGVVJMUmVmPiBL
VVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCBmODBlODg4N2MxOTA0NmI4N2NlZDVjMGQ2
ZDE2ODQ5NDc3ODk2YTlmLi43YzNhNDM3NzNiYTlmNGIyNDVlYThmODE1OWUwYjMwNzI5YmFhNmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0
cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRy
YXMubW0KQEAgLTMxLDYgKzMxLDggQEAKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQg
PHd0Zi9Pd25BcnJheVB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgpAQCAtMjQ3LDcgKzI0OSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmlu
ZywgTlNSYW5nZSByYW5nZSwgQk9PTCBlbmNvCiAgICAgCiAgICAgaWYgKGVuY29kZSAmJiBbc3Ry
aW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5n
ZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewogICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5n
ID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcg
PSBXZWJDb3JlQ0ZBdXRvcmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2Vu
dEVzY2FwZXMoTlVMTCwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAg
ICAgIHN1YnN0cmluZyA9IHd0ZkhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVw
bGFjaW5nUGVyY2VudEVzY2FwZXMoTlVMTCwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIo
IiIpKSk7CiAgICAgICAgIGlmIChzdWJzdHJpbmcpIHsKICAgICAgICAgICAgIHN0cmluZyA9IHN1
YnN0cmluZzsKICAgICAgICAgICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5n
dGhdKTsKQEAgLTU2Myw5ICs1NjUsOSBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKICAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCku
IEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTgg
c2VxdWVuY2VzLCB3aGljaAogICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQg
c3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywg
c28gd2UgZmFsbCBiYWNrCiAgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhv
c2UgY2FzZXMuCi0gICAgICAgIHJlc3VsdCA9IFdlYkNvcmVDRkF1dG9yZWxlYXNlKENGVVJMQ3Jl
YXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJlc3VsdCA9IHd0
ZkhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5
dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKENGVVJMUmVmKWJhc2VVUkwsIFlF
UykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFdlYkNvcmVD
RkF1dG9yZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChDRlVSTFJlZiliYXNlVVJMLCBZ
RVMpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHd0ZkhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogICAgICAgICAgICAg
ICAgIApAQCAtNjg1LDEwICs2ODcsMTIgQEAgc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29t
cG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXAKICAgICAK
ICAgICBVSW50OCogdXJsQnl0ZXM7CiAgICAgVUludDggYnVmZmVyWzIwNDhdOworICAgIE93bkFy
cmF5UHRyPFVJbnQ4PiBidWZmZXJPbkhlYXA7CiAgICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJM
R2V0Qnl0ZXMoKENGVVJMUmVmKVVSTCwgYnVmZmVyLCAyMDQ4KTsKICAgICBpZiAobnVtQnl0ZXMg
PT0gLTEpIHsKICAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChDRlVSTFJlZilVUkws
IE5VTEwsIDApOwotICAgICAgICB1cmxCeXRlcyA9IHN0YXRpY19jYXN0PFVJbnQ4Kj4obWFsbG9j
KG51bUJ5dGVzKSk7CisgICAgICAgIGJ1ZmZlck9uSGVhcCA9IGFkb3B0QXJyYXlQdHIobmV3IFVJ
bnQ4W251bUJ5dGVzXSk7CisgICAgICAgIHVybEJ5dGVzID0gYnVmZmVyT25IZWFwLmdldCgpOwog
ICAgICAgICBDRlVSTEdldEJ5dGVzKChDRlVSTFJlZilVUkwsIHVybEJ5dGVzLCBudW1CeXRlcyk7
CiAgICAgfSBlbHNlCiAgICAgICAgIHVybEJ5dGVzID0gYnVmZmVyOwpAQCAtNzAzLDkgKzcwNyw2
IEBAIHN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFy
YWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wCiAgICAgTlNVUkwgKnJlc3VsdCA9IChOU1VSTCAq
KUNGTWFrZUNvbGxlY3RhYmxlKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKE5VTEwsIHVybEJ5dGVzLCBu
dW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBOVUxMKSk7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJlc3VsdCA9IChOU1VSTCAqKUNGTWFrZUNvbGxlY3Rh
YmxlKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKE5VTEwsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIE5VTEwpKTsKLSAgICAgICAgICAg
IAotICAgIGlmICh1cmxCeXRlcyAhPSBidWZmZXIpCi0gICAgICAgIGZyZWUodXJsQnl0ZXMpOwog
ICAgICAgICAgICAgICAgIAogICAgIHJldHVybiByZXN1bHQgPyBbcmVzdWx0IGF1dG9yZWxlYXNl
XSA6IFVSTDsKIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBOU1N0cmluZyAqdXNlclZpc2libGVTdHJp
bmcoTlNVUkwgKlVSTCkKICAgICAKICAgICByZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LCAh
bmVlZHNIb3N0TmFtZURlY29kaW5nKTsKICAgICByZXN1bHQgPSBbcmVzdWx0IHByZWNvbXBvc2Vk
U3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwotICAgIHJldHVybiBXZWJDb3JlQ0ZBdXRvcmVs
ZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVm
KXJlc3VsdCkpOworICAgIHJldHVybiB3dGZIYXJkQXV0b3JlbGVhc2UoY3JlYXRlU3RyaW5nV2l0
aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChDRlN0cmluZ1JlZilyZXN1bHQpKTsKIH0KIAogQk9P
TCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICpzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5oCmluZGV4IGMwMzJjNGVlZGVlYzQwMTUy
NWZhNWI2YzgyODRjZmE2ODYzZDJlOWUuLmU5NGQxMDRiYjE5MTU1YjRjNmM2MTNmMTk2NTcwMTQz
Zjg0YzY5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
T2JqQ0V4dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2Jq
Q0V4dHJhcy5oCkBAIC0zMywxOCArMzMsNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotLy8g
VXNlIFdlYkNGQXV0b3JlbGVhc2UgdG8gcmV0dXJuIGFuIG9iamVjdCBtYWRlIGJ5IGEgQ29yZUZv
dW5kYXRpb24KLS8vICJjcmVhdGUiIG9yICJjb3B5IiBmdW5jdGlvbiBhcyBhbiBhdXRvcmVsZWFz
ZWQgYW5kIGdhcmJhZ2UgY29sbGVjdGVkCi0vLyBvYmplY3QuIENGIG9iamVjdHMgbmVlZCB0byBi
ZSAibWFkZSBjb2xsZWN0YWJsZSIgZm9yIGF1dG9yZWxlYXNlIHRvIHdvcmsKLS8vIHByb3Blcmx5
IHVuZGVyIEdDLgotc3RhdGljIGlubGluZSBpZCBXZWJDb3JlQ0ZBdXRvcmVsZWFzZShDRlR5cGVS
ZWYgb2JqKQotewotICAgIGlmIChvYmopCi0gICAgICAgIENGTWFrZUNvbGxlY3RhYmxlKG9iaik7
Ci0gICAgWyhpZClvYmogYXV0b3JlbGVhc2VdOwotICAgIHJldHVybiAoaWQpb2JqOwotfQotCiB2
b2lkIFdlYkNvcmVPYmpDRmluYWxpemVPbk1haW5UaHJlYWQoQ2xhc3MgY2xzKTsKIAogLy8gVGhl
ICdDbGFzcycgdGhhdCBzaG91bGQgYmUgcGFzc2VkIGluIGhlcmUgaXMgdGhlIGNsYXNzIG9mIHRo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1w
bE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMu
bW0KaW5kZXggMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2Mi4uYzIxMjZi
NDMyMzhhMDNjYTg4ZGJkZDAwOTM0YzUyNWRmYjA5OTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCkBAIC0xOCwxNyArMTgsMTcg
QEAKICAqCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaD4KKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgogCi0jaW5jbHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0
b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0
cmluZygpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHd0ZkhhcmRBdXRvcmVsZWFzZShjcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCA2YTBmYzlkM2NkMjU5OTliNDVlZTM3
NWMxZTEwODVlMzFlMTg1OTNiLi4wNTcxZjY3ZTMxNWMwZGI5MjdiMmQwNWUyODkwNjZhYjUxOWY4
MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJOU0ZpbGVNYW5h
Z2VyRXh0cmFzLmg+CiAKICNpbXBvcnQgIldlYktpdE5TU3RyaW5nRXh0cmFzLmgiCi0jaW1wb3J0
ICJXZWJOU09iamVjdEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKICNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
ICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFn
ZXIgKFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMpCkBAIC05OCw3ICs5OCw3IEBAIC0gKE5TU3RyaW5n
ICopX3dlYmtpdF9zdGFydHVwVm9sdW1lTmFtZQogICAgIFJldGFpblB0cjxEQURpc2tSZWY+IGRp
c2sgPSBhZG9wdENGKERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQYXRoKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHNlc3Npb24uZ2V0KCksIChDRlVSTFJlZilbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiLyJd
KSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGlza0Rlc2NyaXB0aW9uID0gYWRv
cHRDRihEQURpc2tDb3B5RGVzY3JpcHRpb24oZGlzay5nZXQoKSkpOwogICAgIFJldGFpblB0cjxO
U1N0cmluZz4gZGlza05hbWUgPSAoTlNTdHJpbmcgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaXNr
RGVzY3JpcHRpb24uZ2V0KCksIGtEQURpc2tEZXNjcmlwdGlvblZvbHVtZU5hbWVLZXkpOwotICAg
IHJldHVybiBXZWJDRkF1dG9yZWxlYXNlKGRpc2tOYW1lLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IHd0ZkhhcmRBdXRvcmVsZWFzZShkaXNrTmFtZS5sZWFrUmVmKCkpOwogfQogCiAvLyAtW05TRmls
ZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpdIHJldHVybnMgTk8gaWYgdGhlcmUgaXMgYSBicm9r
ZW4gc3ltbGluayBhdCB0aGUgcGF0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNPYmplY3RFeHRyYXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNPYmpl
Y3RFeHRyYXMuaAppbmRleCBiNzZlOTEzMjI1YTE5NjZjOTBiYjYyOTIwOGYyZTNkNGJlMDE4OTBj
Li4wY2IwMTBjNGUyNDMxOTBiOWIwYmU2ZjVmNTlkNjk1NzAzODJiNjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0cmFzLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5oCkBAIC0zMCwxOCArMzAsNiBAQAogI2lt
cG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMuaD4KIAotLy8gVXNl
IFdlYkNGQXV0b3JlbGVhc2UgdG8gcmV0dXJuIGFuIG9iamVjdCBtYWRlIGJ5IGEgQ29yZUZvdW5k
YXRpb24KLS8vICJjcmVhdGUiIG9yICJjb3B5IiBmdW5jdGlvbiBhcyBhbiBhdXRvcmVsZWFzZWQg
YW5kIGdhcmJhZ2UgY29sbGVjdGVkCi0vLyBvYmplY3QuIENGIG9iamVjdHMgbmVlZCB0byBiZSAi
bWFkZSBjb2xsZWN0YWJsZSIgZm9yIGF1dG9yZWxlYXNlIHRvIHdvcmsKLS8vIHByb3Blcmx5IHVu
ZGVyIEdDLgotc3RhdGljIGlubGluZSBpZCBXZWJDRkF1dG9yZWxlYXNlKENGVHlwZVJlZiBvYmop
Ci17Ci0gICAgaWYgKG9iaikKLSAgICAgICAgQ0ZNYWtlQ29sbGVjdGFibGUob2JqKTsKLSAgICBb
KGlkKW9iaiBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIChpZClvYmo7Ci19Ci0KIEBpbnRlcmZh
Y2UgTlNPYmplY3QgKFdlYk5TT2JqZWN0RXh0cmFzKQogKyAoaWQpX3dlYmtpdF9pbnZva2VPbk1h
aW5UaHJlYWQ7CiAtIChpZClfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4IGMyYzFjOWY4MTA4ZTY5YjdkNmY1Nzc0
YzgwYzQ3ODJiZTdmMDg3YzcuLjg2YjY4MDY2OGYyZGM1ODkxODdhOTZmNTZhMjAyMWFkNzYyYWYx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzIsNyAr
MzIsNiBAQAogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkxv
Y2FsaXphYmxlU3RyaW5ncy5oIgogI2ltcG9ydCAiV2ViTlNEYXRhRXh0cmFzLmgiCi0jaW1wb3J0
ICJXZWJOU09iamVjdEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LVVJM
Lmg+CkBAIC00MCw2ICszOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx1
bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIApAQCAtMjE0LDcg
KzIxNCw3IEBAIC0gKE5TVVJMICopX3dlYl9VUkxXaXRoTG93ZXJjYXNlZFNjaGVtZQogICAgIH0K
ICAgICAKICAgICBOU1VSTCAqcmVzdWx0ID0gY2hhbmdlZAotICAgICAgICA/IChOU1VSTCAqKVdl
YkNGQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhOVUxMLCBidWZm
ZXIsIGJ5dGVzRmlsbGVkLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG5pbCwgWUVTKSkKKyAgICAg
ICAgPyAoTlNVUkwgKil3dGZIYXJkQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyhOVUxMLCBidWZmZXIsIGJ5dGVzRmlsbGVkLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IG5pbCwgWUVTKSkKICAgICAgICAgOiAoTlNVUkwgKilzZWxmOwogCiAgICAgaWYgKGJ1ZmZlciAh
PSBzdGF0aWNfYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNTA1
YTM0NmVlZTk5NTFkN2E1ODQ4NjhhNGYwZWVlOWE0MjNiMjgyNS4uYmI2MThjYzJlZjkyZjM3MzM3
MzUwYzU3NzM0MDZmZDhlOTlkYzEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpA
QCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xNjQsNyArMTY1LDcgQEAgLSAodm9p
ZCljcmVhdGVQbHVnaW5MYXllcgogICAgICAgICBfcGx1Z2luTGF5ZXIuZ2V0KCkuYm91bmRzID0g
cmVhbFBsdWdpbkxheWVyLmdldCgpLmJvdW5kczsKICAgICAgICAgX3BsdWdpbkxheWVyLmdldCgp
Lmdlb21ldHJ5RmxpcHBlZCA9IFlFUzsKIAotICAgICAgICBfcGx1Z2luTGF5ZXIuZ2V0KCkuYmFj
a2dyb3VuZENvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMSwgMSk7CisgICAg
ICAgIF9wbHVnaW5MYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSAoQ0dDb2xvclJlZil3dGZI
YXJkQXV0b3JlbGVhc2UoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMSwgMSkpOwogCiAg
ICAgICAgIHJlYWxQbHVnaW5MYXllci5nZXQoKS5hdXRvcmVzaXppbmdNYXNrID0ga0NBTGF5ZXJX
aWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFibGU7CiAgICAgICAgIFtfcGx1Z2luTGF5
ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6cmVhbFBsdWdpbkxheWVyLmdldCgpXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4IGQ0NTJh
NGU4NDY5N2I0NmFhZTYxOTRiMzExYzBjYjQzMWM2MGJjY2EuLjJiZGRmZGU5ZDc0ZTBhNDE2NTBj
ZWYzMjZmMzZhYzVhMTEyZmFlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0
L1dlYk5TT2JqZWN0RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUGx1Z2luUGFja2FnZS5oPgogI2ltcG9ydCA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC05MCw3ICs5MCw3IEBAICsgKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopcGx1Z2lu
V2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0aAogCiArIChOU1N0cmluZyAqKXByZWZlcnJl
ZExvY2FsaXphdGlvbk5hbWUKIHsKLSAgICByZXR1cm4gV2ViQ0ZBdXRvcmVsZWFzZShXS0NvcHlD
RkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUoTlVMTCkpOworICAgIHJldHVybiB3dGZIYXJkQXV0
b3JlbGVhc2UoV0tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKE5VTEwpKTsKIH0KIAog
I2lmIENPTVBJTEVSKENMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggOGNlZWFk
MDA1YjYwODYwODVkYzY5M2Q2ZjM4YjEzNzVhNWM4NTAxMy4uZWExNmYzNTJjYjBhYzFhYWI0ZGFl
MGM5OTcwYjhkZTM5NjZiMGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC02Myw3
ICs2Myw3IEBAIC0gKHZvaWQpc3RvcFVwZGF0aW5nCiAKIC0gKFdlYkRldmljZU9yaWVudGF0aW9u
KilsYXN0T3JpZW50YXRpb24KIHsKLSAgICByZXR1cm4gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBh
bGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9jb3JlLT5sYXN0T3JpZW50YXRp
b24oKV07CisgICAgcmV0dXJuIFtbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0V2l0
aENvcmVEZXZpY2VPcmllbnRhdGlvbjptX2NvcmUtPmxhc3RPcmllbnRhdGlvbigpXSBhdXRvcmVs
ZWFzZV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUERGUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBE
RlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGEzNjg1MzM0OWE3MThlYzY3YjM0NzkxZjRhYTg1MWFj
N2MzMjM5YjIuLjg1M2Q5N2JlZjFjMGM0OTRhNmM1MTA2MmYxOTdiNjFiZWVlM2M2NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0ICJXZWJEYXRhU291cmNlUHJpdmF0ZS5oIgogI2lt
cG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYkpTUERGRG9jLmgiCi0jaW1wb3J0ICJXZWJO
U09iamVjdEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViUERGRG9jdW1lbnRFeHRyYXMuaCIKICNpbXBv
cnQgIldlYlBERlZpZXcuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Q0YuaD4KQEAgLTEwNyw3ICsxMDcsNyBAQCAtIChOU0RhdGEgKiljb252ZXJ0UG9zdFNjcmlwdERh
dGFTb3VyY2VUb1BERjooTlNEYXRhICopZGF0YQogICAgIENGUmVsZWFzZShwcm92aWRlcik7CiAg
ICAgQ0ZSZWxlYXNlKGNvbnN1bWVyKTsKIAotICAgIHJldHVybiBXZWJDRkF1dG9yZWxlYXNlKHJl
c3VsdCk7CisgICAgcmV0dXJuIHd0ZkhhcmRBdXRvcmVsZWFzZShyZXN1bHQpOwogfQogCiAtICh2
b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNv
dXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQ5YmJiMTVkNmQ4NzE4
NmRmYjcxYzUxMTYyMDQ3YTg2ZTI2YWRmZWEuLjhlNmUxNDVjODZmNTJlMDFjMDA0OTBlYzU5NDlj
MThjMmM2ZTgxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE5NSw2
ICsxOTUsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
VHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL09iamNS
dW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAj
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC01
OTAzLDcgKzU5MDQsNyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNh
Y2hlTW9kZWwKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19j
YWNoZU1vZGVsKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURp
cmVjdG9yeSA9IChOU1N0cmluZyAqKVdlYkNGQXV0b3JlbGVhc2UoV0tDb3B5Rm91bmRhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkpOworICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gKE5T
U3RyaW5nICopd3RmSGFyZEF1dG9yZWxlYXNlKFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9y
eSgpKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVE
aXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApAQCAtNjMzNyw3ICs2MzM4LDcgQEAgLSAo
dm9pZClfcmVtb3ZlT2JqZWN0Rm9ySWRlbnRpZmllcjoodW5zaWduZWQgbG9uZylpZGVudGlmaWVy
CiAgICAgLy8gYW5kIHdlIHNob3VsZCByZWxlYXNlIHRoZSB3ZWIgdmlldy4gQXV0b3JlbGVhc2Ug
cmF0aGVyIHRoYW4gcmVsZWFzZSBpbiBvcmRlciB0bwogICAgIC8vIGF2b2lkIHJlLWVudGVyaW5n
IHRoaXMgbWV0aG9kIGJlbmVhdGggLWRlYWxsb2Mgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyLiA8
cmRhcjovL3Byb2JsZW0vMTA1MjM3MjE+CiAgICAgaWYgKF9wcml2YXRlLT5pZGVudGlmaWVyTWFw
LmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ0ZBdXRvcmVsZWFzZShzZWxmKTsKKyAgICAgICAgd3Rm
SGFyZEF1dG9yZWxlYXNlKHNlbGYpOwogfQogCiAtICh2b2lkKV9yZXRyaWV2ZUtleWJvYXJkVUlN
b2RlRnJvbVByZWZlcmVuY2VzOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGY3MTIwYWYyZTA5MzkxOTE4OGNlYWYyMzBiZDYx
N2ZjZDgyZjkwNTYuLmFiMGYzNTYxMzM1MmNmMzdlZjdkOWQwOTQxODM0YmExNWQ4NDcwNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQg
IldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldlYkRhdGEuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgiCkBA
IC01NSw3ICs1Niw3IEBAIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcgKmF1dG9yZWxlYXNlZChXS1N0
cmluZ1JlZiBzdHJpbmcpCiBzdGF0aWMgaW5saW5lIE5TVVJMICphdXRvcmVsZWFzZWQoV0tVUkxS
ZWYgdXJsKQogewogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0sodXJs
KTsKLSAgICByZXR1cm4gWyhOU1VSTCAqKVdLVVJMQ29weUNGVVJMKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHdrVVJMLmdldCgpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIChOU1VSTCAqKXd0Zkhh
cmRBdXRvcmVsZWFzZShXS1VSTENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3a1VSTC5n
ZXQoKSkpOwogfQogCiBAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGEg
OiBOU09iamVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KaW5k
ZXggZTUyODdmZjAzZTA3YTkzODYyZGYxNjAxNzVjZjJkYWVmNWQ4MGQ1ZC4uZGZlYTRmMDhhMTRh
NzNiNzNkM2U4ZjliNDZjOWI1MTljMTc0MDg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5tbQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjA3
LDcgKzIwOCw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcg
KilhdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOihpZClwYXJhbWV0CiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgCiAgICAgaWYgKHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0gV0tTdHJpbmdH
ZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilXS1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoV0tTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSBhdXRv
cmVsZWFzZV07CisgICAgICAgIHJldHVybiAoTlNTdHJpbmcgKil3dGZIYXJkQXV0b3JlbGVhc2Uo
V0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKFdLU3RyaW5nUmVmKXJl
c3VsdC5nZXQoKSkpOwogICAgIGVsc2UgaWYgKHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkg
PT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1
bHQuZ2V0KCkpKV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmNDg4MmY4ZmVmM2JkZDhiYWIyMDI2NzEzMDlmMWZjMGI1YmY3Yzc4Li5lMDli
NzAxNmJiNTczM2EzN2UyOTZmMGRlZTFmMGFhNTlmMmFlMmRiIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDgt
MjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBpc3N1ZXMg
Zm91bmQgYnkgdGhlIENsYW5nIFN0YXRpYyBBbmFseXplcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkLm06CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBpbml0V2l0aE5h
bWU6XSk6IENhbGxlZCBbc3VwZXIgaW5pdF0gZmlyc3Qgc28gdGhhdCB3ZQorICAgICAgICBkb24n
dCBsYXRlciB1c2UgaXZhcnMgZnJvbSB0aGUgd3Jvbmcgc2VsZi4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKC1bQVBJVGVzdERlbGVnYXRl
IGluaXRXaXRoQ29tcGxldGlvbkNvbmRpdGlvbjpdKTogRGl0dG8uCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IERvbid0IGxlYWsgV0tQcm9jZXNzR3JvdXBzLAorICAg
ICAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwcywgYW5kIFdLVmlld3MuCisKIDIwMTMtMDgtMjIg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgTExWTSBi
aW5hcnkgZHJvcHMgYW5kIHNjcmlwdHMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gU1ZOCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJv
YXJkLm0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJk
Lm0KaW5kZXggMDRmYWZkODRjNDYzMDE0NWY1ZDNkNjRmMzA1YzY4ZTM0ZDY1ZjEyZC4uMjRkZGM5
Y2ZlZDk1MDNkZDA0Njk1NDA3YmJmZWE1NDNkYzAzMjQ5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubQpAQCAtOTEsNiArOTEs
OSBAQCArIChpZClhbGxvYwogCiAtIChpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQog
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gbmlsOwogICAgIHR5cGVzQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsK
ICAgICB0eXBlc1NldCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKICAgICBkYXRhQnlU
eXBlID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggMTM2N2UzMmZhMGYyZTFjNDBiNmJiNDNm
OTRhNzgzODg0MDE5ZTM1MS4uYzhmNmE4NTk4MGFhNDdiMmU1MTk0NzIwODYzZTM5OGIzNzlmNzk3
YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTg1NSw3
ICs4NTUsOSBAQCBAaW1wbGVtZW50YXRpb24gQVBJVGVzdERlbGVnYXRlCiAKIC0gKGlkKWluaXRX
aXRoQ29tcGxldGlvbkNvbmRpdGlvbjooYm9vbCopY29uZGl0aW9uCiB7Ci0gICAgW3N1cGVyIGlu
aXRdOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIEFTU0VSVChjb25kaXRpb24pOwogICAgIG1fY29uZGl0aW9uID0gY29u
ZGl0aW9uOwogICAgICptX2NvbmRpdGlvbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1t
CmluZGV4IDdlYjJkMzY0ZTQzZDU5NTVkOWJhNWQ1ZTAyZmVhNzA4YzRlZjY0OTIuLjM3MDFjZDRj
NzVmMTg0MDE5ZjMxMjE0NTY3MTEyOGVjMjBhY2ViMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3Qu
bW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCA8V2ViS2l0Mi9XZWJL
aXQyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5p
c2hlZCA9IGZhbHNlOwogCkBAIC00MCwxMyArNDEsMTMgQEAgVEVTVChXZWJLaXQyQ3VzdG9tUHJv
dG9jb2xzVGVzdCwgTWFpblJlc291cmNlKQogICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xh
c3M6W1Rlc3RQcm90b2NvbCBjbGFzc11dOwogICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1d
OwogCi0gICAgV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCA9IFtbV0tQcm9jZXNzR3JvdXAg
YWxsb2NdIGluaXRdOwotICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKmJyb3dzaW5nQ29udGV4
dEdyb3VwID0gW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZp
ZXI6QCJUZXN0SWRlbnRpZmllciJdOwotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3Vw
OnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07
Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIFJldGFp
blB0cjxXS1Byb2Nlc3NHcm91cD4gcHJvY2Vzc0dyb3VwID0gYWRvcHROUyhbW1dLUHJvY2Vzc0dy
b3VwIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0R3JvdXA+
IGJyb3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAg
YWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOworICAgIFJldGFp
blB0cjxXS1ZpZXc+IHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5n
ZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOwor
ICAgIHdrVmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9
IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1Rv
UnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAg
ICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XTsKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOi8vdGVz
dCIsIFtUZXN0UHJvdG9jb2wgc2NoZW1lXV1dXV07CisgICAgW3drVmlldy5nZXQoKS5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDov
L3Rlc3QiLCBbVGVzdFByb3RvY29sIHNjaGVtZV1dXV1dOwogCiAgICAgVXRpbDo6cnVuKCZ0ZXN0
RmluaXNoZWQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209531</attachid>
            <date>2013-08-23 19:45:03 -0700</date>
            <delta_ts>2013-08-26 17:52:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120230-20130823194502.patch</filename>
            <type>text/plain</type>
            <size>45730</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDc1NDk4ZTZhNDZlODU1MTQ5YjNiN2ZhNmJlNjBlNGQxYmU3NTBmLi5jNWYzODY2MjU4MThhOGRm
YWM3ZDI4OGQ0M2Y4MmU4MGU1OTcwNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxMy0wOC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IGlzc3VlcyBmb3VuZCBieSB0aGUgQ2xhbmcgU3RhdGljIEFuYWx5emVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1Zh
bHVlLm1tOgorICAgICAgICAodmFsdWVUb1N0cmluZyk6IERvbid0IGxlYWsgZXZlcnkgQ0ZTdHJp
bmdSZWYgd2hlbiBpbiBPYmplY3RpdmUtQyBHQy4KKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6fk9i
akNDYWxsYmFja0Z1bmN0aW9uSW1wbCk6IERvbid0CisgICAgICAgIHJlbGVhc2UgbV9pbnZvY2F0
aW9uJ3MgdGFyZ2V0IHNpbmNlIE5TSW52b2NhdGlvbiB3aWxsIGRvIGl0IGZvciB1cyBvbgorICAg
ICAgICBkZWFsbG9jLgorICAgICAgICAob2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JCbG9jayk6IFRl
bGwgTlNJbnZvY2F0aW9uIHRvIHJldGFpbiBpdHMgdGFyZ2V0CisgICAgICAgIGFuZCBhdXRvcmVs
ZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBjb3BpZWQgYmxvY2suCisgICAgICAgICogQVBJL3Rl
c3RzL21pbmlkb20uYzoKKyAgICAgICAgKGNyZWF0ZVN0cmluZ1dpdGhDb250ZW50c09mRmlsZSk6
IEZyZWUgYnVmZmVyIGJlZm9yZSByZXR1cm5pbmcuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkuYzoKKyAgICAgICAgKGNyZWF0ZVN0cmluZ1dpdGhDb250ZW50c09mRmlsZSk6IERpdHRvLgor
CiAyMDEzLTA4LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSlNPYmplY3QgYW5kIEpTQXJyYXkgY29kZSBzaG91bGRuJ3QgaGF2ZSB0byB0aXB0
b2UgYXJvdW5kIGdhcmJhZ2UgY29sbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2NmM3YTc2MTVlOGIyNzExZDNjM2Y1
ZWU4NjJjZGIyZGFlN2MxYTFjLi5iOTlkNjI2ZGY3ZTk2MjRkYzllYWNiMzJlZTlhNGU4ZGQwZThi
NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA4LTIzICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggaXNzdWVzIGZvdW5kIGJ5IHRoZSBDbGFuZyBTdGF0
aWMgQW5hbHl6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL09iamNSdW50aW1lRXh0cmFzLmg6CisgICAgICAgICh3dGZIYXJkQXV0b3JlbGVh
c2UpOiBBZGRlZCBhIGNhbm9uaWNhbCBpbXBsZW1lbnRhdGlvbiBvZiBIYXJkQXV0b3JlbGVhc2Uu
CisKIDIwMTMtMDgtMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTQ0MTYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNjNDFhZWQ5ODBmODBkZjcwMjYwOTEzZTAxZWZlNDQzZjM1NzgwNS4uNzI4YTk4ZmE4MzFhNDJh
Y2Q4MmQxZDQwNDllZjBlY2I1ZmVmOWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisy
MDEzLTA4LTIzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
aXNzdWVzIGZvdW5kIGJ5IHRoZSBDbGFuZyBTdGF0aWMgQW5hbHl6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDIzMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBSZW1vdmVkIEZvdW5kYXRpb25FeHRyYXMuaC4KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbTogUmVtb3Zl
ZCBDRkF1dG9yZWxlYXNlSGVscGVyKCkuCisgICAgICAgIChBWFRleHRNYXJrZXJSYW5nZSk6IFVz
ZWQgd3RmSGFyZEF1dG9yZWxlYXNlKCkgaW5zdGVhZCBvZgorICAgICAgICBDRkF1dG9yZWxlYXNl
SGVscGVyKCkuCisgICAgICAgIChBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KTogRGl0dG8uCisgICAg
ICAgIChBWFRleHRNYXJrZXJSYW5nZUVuZCk6IERpdHRvLgorICAgICAgICAodGV4dE1hcmtlckZv
clZpc2libGVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgICgtW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGluaXRXaXRoQ2FsbGJhY2s6XSk6IENh
bGxlZCBbc3VwZXIgaW5pdF0KKyAgICAgICAgZmlyc3Qgc28gdGhhdCB3ZSBkb24ndCBsYXRlciB1
c2UgaXZhcnMgZnJvbSB0aGUgd3Jvbmcgc2VsZi4KKyAgICAgICAgKC1bV2ViQ29yZUFWRkxvYWRl
ckRlbGVnYXRlIGluaXRXaXRoQ2FsbGJhY2s6XSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9Gb3VuZGF0aW9uRXh0cmFzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L0tVUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpvcGVyYXRvciBOU1VSTCAqKTog
VXNlZCB3dGZIYXJkQXV0b3JlbGVhc2UoKSBpbnN0ZWFkIG9mCisgICAgICAgIEhhcmRBdXRvcmVs
ZWFzZSgpLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXZWJDb3JlOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6IFVzZWQgd3RmSGFyZEF1dG9y
ZWxlYXNlKCkgaW5zdGVhZCBvZgorICAgICAgICBXZWJDb3JlQ0ZBdXRvcmVsZWFzZSgpLgorICAg
ICAgICAoV2ViQ29yZTo6VVJMV2l0aERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnVz
ZXJWaXNpYmxlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5n
Q29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IFN0b3JlZCB0aGUKKyAgICAgICAgaGVh
cC1hbGxvY2F0ZWQgYnVmZmVyIGluIGFuIE93bkFycmF5UHRyPD4gc28gdGhhdCB3ZSBkZWFsbG9j
YXRlIHRoZQorICAgICAgICBidWZmZXIgYXQgYWxsIHJldHVybiBzaXRlcy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMuaDogVXNlZCB3dGZIYXJkQXV0b3JlbGVhc2Uo
KSBpbnN0ZWFkIG9mCisgICAgICAgIFdlYkNvcmVDRkF1dG9yZWxlYXNlKCkuCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5n
SW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKik6IFVzZWQgd3RmSGFyZEF1dG9yZWxlYXNlKCkKKyAg
ICAgICAgaW5zdGVhZCBvZiBIYXJkQXV0b3JlbGVhc2UoKS4KKwogMjAxMy0wOC0yMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBjb21wb3NpdGluZy9n
ZW9tZXRyeS9ib3VuZHMtaWdub3Jlcy1oaWRkZW4tZHluYW1pYy5odG1sIGhhcyBpbmNvcnJlY3Qg
aW5pdGlhbCByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0Yzk2OTI5MmMwOTc0ZGU1ZWE0
YjM4MGIzOGRkMjU2NjZlYTJmYjQ5Li4xZGM5Yjc4OTA0ZWQ3OWIxMzQwMjhhMTExNDdhOTZmNGY4
ZTAyOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTMtMDgtMjMgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBpc3N1ZXMgZm91bmQg
YnkgdGhlIENsYW5nIFN0YXRpYyBBbmFseXplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW06Cisg
ICAgICAgICgtW05TRmlsZU1hbmFnZXIgX3dlYmtpdF9zdGFydHVwVm9sdW1lTmFtZV0pOiBVc2Vk
IHd0ZkhhcmRBdXRvcmVsZWFzZSgpCisgICAgICAgIGluc3RlYWQgb2YgV2ViQ0ZBdXRvcmVsZWFz
ZSgpLgorICAgICAgICAqIE1pc2MvV2ViTlNPYmplY3RFeHRyYXMuaDogUmVtb3ZlZCBkZWZpbml0
aW9uIG9mIFdlYkNGQXV0b3JlbGVhc2UoKS4KKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFz
Lm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX1VSTFdpdGhMb3dlcmNhc2VkU2NoZW1lXSk6IFVz
ZWQgd3RmSGFyZEF1dG9yZWxlYXNlKCkKKyAgICAgICAgaW5zdGVhZCBvZiBXZWJDRkF1dG9yZWxl
YXNlKCkuCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1
Z2luTGF5ZXJdKTogU3RvcCBsZWFraW5nCisgICAgICAgIENHQ29sb3JzIChDQUxheWVyIHJldGFp
bnMgaXRzIGJhY2tncm91bmRDb2xvciBwcm9wZXJ0eSBkZXNwaXRlIHRoZQorICAgICAgICBwcm9w
ZXJ0eSBhdHRyaWJ1dGVzIGNsYWltaW5nIG90aGVyd2lzZSkuCisgICAgICAgICogUGx1Z2lucy9X
ZWJCYXNlUGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKCtbV2ViQmFzZVBsdWdpblBhY2thZ2Ug
cHJlZmVycmVkTG9jYWxpemF0aW9uTmFtZV0pOiBVc2VkCisgICAgICAgIHd0ZkhhcmRBdXRvcmVs
ZWFzZSgpIGluc3RlYWQgb2YgV2ViQ0ZBdXRvcmVsZWFzZSgpLgorICAgICAgICAqIFdlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAgICAgICgtW1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwgbGFzdE9yaWVudGF0aW9uXSk6IFN0b3AK
KyAgICAgICAgbGVha2luZyBXZWJEZXZpY2VPcmllbnRhdGlvbnMuCisgICAgICAgICogV2ViVmll
dy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50YXRp
b24gY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVG9QREY6XSk6IFVzZWQKKyAgICAgICAgd3Rm
SGFyZEF1dG9yZWxlYXNlKCkgaW5zdGVhZCBvZiBXZWJDRkF1dG9yZWxlYXNlKCkuCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVs
Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViVmlldyBfcmVtb3ZlT2JqZWN0Rm9ySWRlbnRpZmll
cjpdKTogRGl0dG8uCisKIDIwMTMtMDgtMjAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBw
bGUuY29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAwMjk+IERvY3VtZW50
OjptYXJrZXJzKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRkNjU1
MTQxNWQ4YjE1ZjI5OTVhMzMyYjBiODUwZjdlNzI2ZTk4OWQuLmY3MWI3MjM3ZjE4NzIwZmIyOTEw
OTRkMjA3NDQ1NmM4ZjkwMzYzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0w
OC0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGlzc3Vl
cyBmb3VuZCBieSB0aGUgQ2xhbmcgU3RhdGljIEFuYWx5emVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKGF1dG9yZWxlYXNlZCk6IERvbid0IGxl
YWsgQ0ZVUkxzIHdoZW4gaW4gT2JqZWN0aXZlLUMgR0MuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOgorICAgICAgICAoLVtX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6CisgICAgICAgIERvbid0IGxlYWsgQ0ZTdHJpbmdzIHdoZW4gaW4gT2Jq
ZWN0aXZlLUMgR0MuCisKIDIwMTMtMDgtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjAxODA+IEZpeCBpc3N1ZXMgd2l0
aCBPVEhFUl9MREZMQUdTIGluIHZhcmlvdXMgLnhjY29uZmlnIGZpbGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMDE0YmFhOGRhNTc0YWRlODY5MWZkZTc5OWFlYjhjZGVk
ZDgyNGM1Yy4uMjRkNmFjZjI0NmY5NDlhMTYyNDc3MjI5NDBlMjJlMWFmNmRjOTkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
SlNDSlNWYWx1ZS5oIgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
U2V0Lmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9UQ1NwaW5Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTc0NSw3ICs3NDYsNyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIE5TU3RyaW5nICpzdHJpbmdOUyA9IFso
TlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0
cmluZykgYXV0b3JlbGVhc2VdOworICAgIE5TU3RyaW5nICpzdHJpbmdOUyA9IHd0ZkhhcmRBdXRv
cmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0cmlu
ZykpOwogICAgIEpTU3RyaW5nUmVsZWFzZShqc3N0cmluZyk7CiAgICAgcmV0dXJuIHN0cmluZ05T
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0KaW5kZXggYjIzNTE1YjA1OGQ2ZDljMmIzZThkYmQyZjgzMTFiMzYzMDkwM2VjYS4uMDYz
NzM0YmY1YTEyNjdmYTRiODZhODBhODcwMTk0ZDIzOWRkZDBlZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC00MDcsOCArNDA3
LDYgQEAgcHVibGljOgogCiAgICAgfk9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbCgpCiAgICAgewot
ICAgICAgICBpZiAobV90eXBlICE9IENhbGxiYWNrSW5zdGFuY2VNZXRob2QpCi0gICAgICAgICAg
ICBbW21faW52b2NhdGlvbi5nZXQoKSB0YXJnZXRdIHJlbGVhc2VdOwogICAgICAgICBbbV9pbnN0
YW5jZUNsYXNzIHJlbGVhc2VdOwogICAgIH0KIApAQCAtNjA5LDcgKzYwNyw4IEBAIEpTT2JqZWN0
UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2soSlNDb250ZXh0ICpjb250ZXh0LCBpZCB0
YXJnZXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSA9IF9C
bG9ja19zaWduYXR1cmUodGFyZ2V0KTsKICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBb
TlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOltOU01ldGhvZFNpZ25h
dHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnNpZ25hdHVyZV1dOwotICAgIFtpbnZvY2F0aW9u
IHNldFRhcmdldDpbdGFyZ2V0IGNvcHldXTsKKyAgICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVu
dHNdOworICAgIFtpbnZvY2F0aW9uIHNldFRhcmdldDpbW3RhcmdldCBjb3B5XSBhdXRvcmVsZWFz
ZV1dOwogICAgIHJldHVybiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oY29udGV4
dCwgaW52b2NhdGlvbiwgQ2FsbGJhY2tCbG9jaywgbmlsLCBzaWduYXR1cmUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCmluZGV4IDg2MTRlNTFlOTc5N2Zk
NTNmY2QyNWI0YjhiYTlhY2UxNmI0N2NiYjEuLmY0Y2NmOTFlNGNlMTcyNmY0NTVlZTYzNjE1NGFm
MTEzZDE4ZjA2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
bWluaWRvbS5jCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
CkBAIC0xMDUsNiArMTA1LDcgQEAgc3RhdGljIGNoYXIqIGNyZWF0ZVN0cmluZ1dpdGhDb250ZW50
c09mRmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSkKICAgICBGSUxFKiBmID0gZm9wZW4oZmlsZU5h
bWUsICJyIik7CiAgICAgaWYgKCFmKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQg
bm90IG9wZW4gZmlsZTogJXNcbiIsIGZpbGVOYW1lKTsKKyAgICAgICAgZnJlZShidWZmZXIpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5jCmluZGV4IGJlMThiMmJmN2Q0MDc1YWI1MzRlMDgxMjYxYTM2OWZmMjRi
ZGQzYmQuLmE5ZTllNGRhYjQwMDJlMzQwNTVkM2ZhOTA2MzY1MDYzN2NiNTM0N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCkBAIC0xOTk2LDYgKzE5OTYsNyBA
QCBzdGF0aWMgY2hhciogY3JlYXRlU3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IGNoYXIq
IGZpbGVOYW1lKQogICAgIEZJTEUqIGYgPSBmb3BlbihmaWxlTmFtZSwgInIiKTsKICAgICBpZiAo
IWYpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiBmaWxlOiAlc1xu
IiwgZmlsZU5hbWUpOworICAgICAgICBmcmVlKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0cmFz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmpjUnVudGltZUV4dHJhcy5oCmluZGV4IGVjMDJlZDBjMGMz
MDJiMmYyNDVjN2U5NjZlYzk1YTFhZjg4OGNhMGMuLmFlMWE5YjQxZDU0MmIyMmM2ZjY4ODllY2Rk
ODAxNWI2YWYxNWRhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0
cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRyYXMuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSA8b2JqYy9tZXNzYWdlLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cwog
dGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlwZSwgdHlwZW5hbWUuLi4gQXJnVHlwZXM+CiBSZXRUeXBl
IHd0Zk9iamNNc2dTZW5kKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmdUeXBlcy4uLiBhcmdz
KQogewpAQCAtMzgsNSArMzksMjAgQEAgUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBpbXBsZW1lbnRh
dGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZ1R5cGVzLi4uIGFyZ3MKIHsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXRUeXBlICgqKShpZCwgU0VMLCBBcmdUeXBlcy4uLik+
KGltcGxlbWVudGF0aW9uKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmdzLi4uKTsKIH0KKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCisjaWZkZWYgX19PQkpDX18KKy8vIFVzZSB3dGZIYXJkQXV0b3JlbGVh
c2UgdG8gcmV0dXJuIGFuIG9iamVjdCBtYWRlIGJ5IGEgQ29yZSBGb3VuZGF0aW9uCisvLyAiY3Jl
YXRlIiBvciAiY29weSIgZnVuY3Rpb24gYXMgYW4gYXV0b3JlbGVhc2VkIGFuZCBnYXJiYWdlIGNv
bGxlY3RlZAorLy8gb2JqZWN0LiBDRiBvYmplY3RzIG5lZWQgdG8gYmUgIm1hZGUgY29sbGVjdGFi
bGUiIGZvciBhdXRvcmVsZWFzZSB0byB3b3JrCisvLyBwcm9wZXJseSB1bmRlciBHQy4KK2lubGlu
ZSBpZCB3dGZIYXJkQXV0b3JlbGVhc2UoQ0ZUeXBlUmVmIG9iamVjdCkKK3sKKyAgICBpZiAob2Jq
ZWN0KQorICAgICAgICBDRk1ha2VDb2xsZWN0YWJsZShvYmplY3QpOworICAgIFsoaWQpb2JqZWN0
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gKGlkKW9iamVjdDsKK30KKyNlbmRpZiAvLyBfX09C
SkNfXwogCiAjZW5kaWYgLy8gV1RGX09iamNSdW50aW1lRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MmM4M2QyZjQ2
MjA3ZmY1NmIyN2NlMWZlZGM4OWE1OThlZTcwNjc1Li5iMmY1MzdkMzRmYWYyYWUzMTdjN2VmYTM4
MDIyNDA2NmFjMjVlZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODEwLDcgKzI4MTAsNiBAQAogCQk5MzVDNDc2ODA5QUM0
RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91
c2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM1QzQ3NjcwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUM0NzZCMDlBQzRE
NEYwMEE2QUFCNCAvKiBQbGF0Zm9ybVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUM0NzZBMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0
Zm9ybVdoZWVsRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk5MzVDNDc2RDA5QUM0RDYzMDBBNkFBQjQgLyogRm91bmRhdGlvbkV4dHJhcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NkMw
OUFDNEQ2MzAwQTZBQUI0IC8qIEZvdW5kYXRpb25FeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQg
LyogS2V5RXZlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi87IH07
CiAJCTkzNUM0Nzc1MDlBQzREOEUwMEE2QUFCNCAvKiBHYXBSZWN0cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1QzQ3NzQwOUFDNEQ4RDAwQTZBQUI0
IC8qIEdhcFJlY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTM1RjQ1NDIwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RjQ1
NDAwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50TGlzdGVuZXIuY3BwICovOyB9OwpAQCAt
OTE5Miw3ICs5MTkxLDYgQEAKIAkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3Njcw
OUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1vdXNlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM1QzQ3NkEwOUFDNEQ0RjAwQTZBQUI0IC8qIFBsYXRmb3JtV2hlZWxFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVdoZWVsRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM1QzQ3NkMwOUFDNEQ2MzAwQTZBQUI0
IC8qIEZvdW5kYXRpb25FeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm91bmRhdGlvbkV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVDNDc2
RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBLZXlFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM1QzQ3NzQwOUFDNEQ4RDAwQTZBQUI0IC8qIEdhcFJlY3RzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhcFJlY3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUY0NTQwMEY3QzNCNUYwMEQ3QzFGQiAvKiBKU0xhenlFdmVudExpc3RlbmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTGF6eUV2ZW50TGlz
dGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MjcsNyArMTQ1MjUs
NiBAQAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJw
b3NpbmcuaCAqLywKIAkJCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFj
Lm1tICovLAogCQkJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1t
ICovLAotCQkJCTkzNUM0NzZDMDlBQzRENjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmgg
Ki8sCiAJCQkJQzUzOTJEMzMxMzI2QUQwMTAwMDQzRDM1IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLywK
IAkJCQlDNTM5MkQzNDEzMjZBRDAxMDAwNDNEMzUgLyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJ
CQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8sCkBAIC0yMTgw
NCw3ICsyMTgwMSw2IEBACiAJCQkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRh
U3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzczQTBBREJBNURFMDBBNDU1NEQg
LyogRm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg4NUI5MzExQjZGREE2MDAzMzgz
QkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTkzNUM0NzZEMDlBQzRE
NjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODUz
MTIzRDExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QjA3MEQzMTMwQTQwOUMwMEEzNzYzQyAvKiBGcmFtZUFjdGlvblNj
aGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDg0MDk3MTY2NWIwNGI0Mjg5YzVhNTkyNTQ1MWFlNzNhZmJjODA0ZTQuLjBl
ZTM5ZWQ1NWYxY2JmNDczZGY0MzQzNTI1NGZmYTE2MDRmNjFmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03Myw2ICs3Myw3IEBACiAjaW1wb3J0ICJXZWJD
b3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCAiaHRtbGVkaXRpbmcuaCIKKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBA
IC00MDMsMTQgKzQwNCw2IEBAIC0gKGlkKWF0dGFjaG1lbnRWaWV3CiAKICNwcmFnbWEgbWFyayBT
eXN0ZW1JbnRlcmZhY2Ugd3JhcHBlcnMKIAotc3RhdGljIGlubGluZSBpZCBDRkF1dG9yZWxlYXNl
SGVscGVyKENGVHlwZVJlZiBvYmopCi17Ci0gICAgaWYgKG9iaikKLSAgICAgICAgQ0ZNYWtlQ29s
bGVjdGFibGUob2JqKTsKLSAgICBbKGlkKW9iaiBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIChp
ZClvYmo7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgQk9PTCBBWE9iamVjdElzVGV4dE1hcmtlcihpZCBv
YmopCiB7CiAgICAgcmV0dXJuIG9iaiAhPSBuaWwgJiYgQ0ZHZXRUeXBlSUQob2JqKSA9PSB3a0dl
dEFYVGV4dE1hcmtlclR5cGVJRCgpOwpAQCAtNDI3LDIxICs0MjAsMjEgQEAgc3RhdGljIGlkIEFY
VGV4dE1hcmtlclJhbmdlKGlkIHN0YXJ0TWFya2VyLCBpZCBlbmRNYXJrZXIpCiAgICAgQVNTRVJU
KGVuZE1hcmtlciAhPSBuaWwpOwogICAgIEFTU0VSVChDRkdldFR5cGVJRChzdGFydE1hcmtlcikg
PT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKGVu
ZE1hcmtlcikgPT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIENGQXV0
b3JlbGVhc2VIZWxwZXIod2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZSgoQ0ZUeXBlUmVmKXN0YXJ0
TWFya2VyLCAoQ0ZUeXBlUmVmKWVuZE1hcmtlcikpOworICAgIHJldHVybiB3dGZIYXJkQXV0b3Jl
bGVhc2Uod2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZSgoQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyLCAo
Q0ZUeXBlUmVmKWVuZE1hcmtlcikpOwogfQogCiBzdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2VT
dGFydChpZCByYW5nZSkKIHsKICAgICBBU1NFUlQocmFuZ2UgIT0gbmlsKTsKICAgICBBU1NFUlQo
Q0ZHZXRUeXBlSUQocmFuZ2UpID09IHdrR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKSk7Ci0g
ICAgcmV0dXJuIENGQXV0b3JlbGVhc2VIZWxwZXIod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VTdGFy
dChyYW5nZSkpOworICAgIHJldHVybiB3dGZIYXJkQXV0b3JlbGVhc2Uod2tDb3B5QVhUZXh0TWFy
a2VyUmFuZ2VTdGFydChyYW5nZSkpOwogfQogCiBzdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2VF
bmQoaWQgcmFuZ2UpCiB7CiAgICAgQVNTRVJUKHJhbmdlICE9IG5pbCk7CiAgICAgQVNTRVJUKENG
R2V0VHlwZUlEKHJhbmdlKSA9PSB3a0dldEFYVGV4dE1hcmtlclJhbmdlVHlwZUlEKCkpOwotICAg
IHJldHVybiBDRkF1dG9yZWxlYXNlSGVscGVyKHdrQ29weUFYVGV4dE1hcmtlclJhbmdlRW5kKHJh
bmdlKSk7CisgICAgcmV0dXJuIHd0ZkhhcmRBdXRvcmVsZWFzZSh3a0NvcHlBWFRleHRNYXJrZXJS
YW5nZUVuZChyYW5nZSkpOwogfQogCiAjcHJhZ21hIG1hcmsgU2VhcmNoIGhlbHBlcnMKQEAgLTUy
Niw3ICs1MTksNyBAQCBzdGF0aWMgaWQgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihBWE9i
amVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aQogICAgIGlmICghdGV4dE1hcmtl
ckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICByZXR1cm4gQ0ZBdXRv
cmVsZWFzZUhlbHBlcih3a0NyZWF0ZUFYVGV4dE1hcmtlcigmdGV4dE1hcmtlckRhdGEsIHNpemVv
Zih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gd3RmSGFyZEF1dG9yZWxlYXNlKHdrQ3Jl
YXRlQVhUZXh0TWFya2VyKCZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkp
OwogfQogCiAtIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOihjb25zdCBWaXNpYmxl
UG9zaXRpb24gJil2aXNpYmxlUG9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNjE1MzQw
ZWVjMTE1MmMzMzY2NjM5YjQxZmNjNWI0ZTg1ZGU5ZTJjLi4xOWNkNjg2NjQxYWNhMWZkNTI3NmI1
OWYxMjkyOGFhNGI0M2E2ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE1NTQsOCAr
MTU1NCwxMSBAQCBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIKIAogLSAo
aWQpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyop
Y2FsbGJhY2sKIHsKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgcmV0dXJu
IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkaXNjb25uZWN0
CkBAIC0xNjc4LDggKzE2ODEsMTEgQEAgQGltcGxlbWVudGF0aW9uIFdlYkNvcmVBVkZMb2FkZXJE
ZWxlZ2F0ZQogCiAtIChpZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiljYWxsYmFjawogeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwogICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFj
azsKLSAgICByZXR1cm4gW3N1cGVyIGluaXRdOworICAgIHJldHVybiBzZWxmOwogfQogCiAtIChC
T09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRl
ciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9Gb3VuZGF0aW9uRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRm91bmRhdGlvbkV4dHJhcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzOWIxMmVhOWUwMTU2ZDg3NzkzYzJhNDc2MWYyMjQwNmZiZGZjMGYwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Gb3VuZGF0aW9uRXh0cmFzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaD4KLSNpbXBvcnQgPEZvdW5k
YXRpb24vTlNPYmplY3QuaD4KLQotLy8gVXNlIEhhcmRBdXRvcmVsZWFzZSB0byByZXR1cm4gYW4g
b2JqZWN0IG1hZGUgYnkgYSBDb3JlRm91bmRhdGlvbgotLy8gImNyZWF0ZSIgb3IgImNvcHkiIGZ1
bmN0aW9uIGFzIGFuIGF1dG9yZWxlYXNlZCBhbmQgZ2FyYmFnZSBjb2xsZWN0ZWQKLS8vIG9iamVj
dC4gQ0Ygb2JqZWN0cyBuZWVkIHRvIGJlICJtYWRlIGNvbGxlY3RhYmxlIiBmb3IgYXV0b3JlbGVh
c2UgdG8gd29yawotLy8gcHJvcGVybHkgdW5kZXIgR0MuCi0KLXN0YXRpYyBpbmxpbmUgaWQgSGFy
ZEF1dG9yZWxlYXNlKENGVHlwZVJlZiBvYmplY3QpCi17Ci0gICAgaWYgKG9iamVjdCkKLSAgICAg
ICAgQ0ZNYWtlQ29sbGVjdGFibGUob2JqZWN0KTsKLSAgICBbKGlkKW9iamVjdCBhdXRvcmVsZWFz
ZV07Ci0gICAgcmV0dXJuIChpZClvYmplY3Q7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9L
VVJMTWFjLm1tCmluZGV4IDA4NjllMTVjMDJjZTcwYmIwM2M5NWM2NmQ1NTNiY2Q2ZWZmZDg5NTUu
LjQ5MzlmNDk2N2E1MmNiZDA4YTkzZThlYWUxY2I0MmM2OWJhNjgxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJLVVJM
LmgiCiAKICNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFz
LmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNDksNyBAQCBLVVJM
OjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKIHsKICAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJl
ZSBicmlkZ2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2VydmUg
dGhlIG9yaWdpbmFsIHN0cmluZy4KICAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91
bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gSGFyZEF1dG9yZWxl
YXNlKGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gd3RmSGFyZEF1dG9yZWxl
YXNlKGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKIH0KIAogUmV0YWluUHRyPENGVVJMUmVmPiBL
VVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCBmODBlODg4N2MxOTA0NmI4N2NlZDVjMGQ2
ZDE2ODQ5NDc3ODk2YTlmLi43YzNhNDM3NzNiYTlmNGIyNDVlYThmODE1OWUwYjMwNzI5YmFhNmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0
cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRy
YXMubW0KQEAgLTMxLDYgKzMxLDggQEAKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQg
PHd0Zi9Pd25BcnJheVB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgpAQCAtMjQ3LDcgKzI0OSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmlu
ZywgTlNSYW5nZSByYW5nZSwgQk9PTCBlbmNvCiAgICAgCiAgICAgaWYgKGVuY29kZSAmJiBbc3Ry
aW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5n
ZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewogICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5n
ID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcg
PSBXZWJDb3JlQ0ZBdXRvcmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2Vu
dEVzY2FwZXMoTlVMTCwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAg
ICAgIHN1YnN0cmluZyA9IHd0ZkhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVw
bGFjaW5nUGVyY2VudEVzY2FwZXMoTlVMTCwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIo
IiIpKSk7CiAgICAgICAgIGlmIChzdWJzdHJpbmcpIHsKICAgICAgICAgICAgIHN0cmluZyA9IHN1
YnN0cmluZzsKICAgICAgICAgICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5n
dGhdKTsKQEAgLTU2Myw5ICs1NjUsOSBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKICAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCku
IEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTgg
c2VxdWVuY2VzLCB3aGljaAogICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQg
c3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywg
c28gd2UgZmFsbCBiYWNrCiAgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhv
c2UgY2FzZXMuCi0gICAgICAgIHJlc3VsdCA9IFdlYkNvcmVDRkF1dG9yZWxlYXNlKENGVVJMQ3Jl
YXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJlc3VsdCA9IHd0
ZkhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5
dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKENGVVJMUmVmKWJhc2VVUkwsIFlF
UykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IFdlYkNvcmVD
RkF1dG9yZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChDRlVSTFJlZiliYXNlVVJMLCBZ
RVMpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHd0ZkhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogICAgICAgICAgICAg
ICAgIApAQCAtNjg1LDEwICs2ODcsMTIgQEAgc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29t
cG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXAKICAgICAK
ICAgICBVSW50OCogdXJsQnl0ZXM7CiAgICAgVUludDggYnVmZmVyWzIwNDhdOworICAgIE93bkFy
cmF5UHRyPFVJbnQ4PiBidWZmZXJPbkhlYXA7CiAgICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJM
R2V0Qnl0ZXMoKENGVVJMUmVmKVVSTCwgYnVmZmVyLCAyMDQ4KTsKICAgICBpZiAobnVtQnl0ZXMg
PT0gLTEpIHsKICAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChDRlVSTFJlZilVUkws
IE5VTEwsIDApOwotICAgICAgICB1cmxCeXRlcyA9IHN0YXRpY19jYXN0PFVJbnQ4Kj4obWFsbG9j
KG51bUJ5dGVzKSk7CisgICAgICAgIGJ1ZmZlck9uSGVhcCA9IGFkb3B0QXJyYXlQdHIobmV3IFVJ
bnQ4W251bUJ5dGVzXSk7CisgICAgICAgIHVybEJ5dGVzID0gYnVmZmVyT25IZWFwLmdldCgpOwog
ICAgICAgICBDRlVSTEdldEJ5dGVzKChDRlVSTFJlZilVUkwsIHVybEJ5dGVzLCBudW1CeXRlcyk7
CiAgICAgfSBlbHNlCiAgICAgICAgIHVybEJ5dGVzID0gYnVmZmVyOwpAQCAtNzAzLDkgKzcwNyw2
IEBAIHN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFy
YWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wCiAgICAgTlNVUkwgKnJlc3VsdCA9IChOU1VSTCAq
KUNGTWFrZUNvbGxlY3RhYmxlKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKE5VTEwsIHVybEJ5dGVzLCBu
dW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBOVUxMKSk7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJlc3VsdCA9IChOU1VSTCAqKUNGTWFrZUNvbGxlY3Rh
YmxlKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKE5VTEwsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIE5VTEwpKTsKLSAgICAgICAgICAg
IAotICAgIGlmICh1cmxCeXRlcyAhPSBidWZmZXIpCi0gICAgICAgIGZyZWUodXJsQnl0ZXMpOwog
ICAgICAgICAgICAgICAgIAogICAgIHJldHVybiByZXN1bHQgPyBbcmVzdWx0IGF1dG9yZWxlYXNl
XSA6IFVSTDsKIH0KQEAgLTg0MSw3ICs4NDIsNyBAQCBOU1N0cmluZyAqdXNlclZpc2libGVTdHJp
bmcoTlNVUkwgKlVSTCkKICAgICAKICAgICByZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LCAh
bmVlZHNIb3N0TmFtZURlY29kaW5nKTsKICAgICByZXN1bHQgPSBbcmVzdWx0IHByZWNvbXBvc2Vk
U3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwotICAgIHJldHVybiBXZWJDb3JlQ0ZBdXRvcmVs
ZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVm
KXJlc3VsdCkpOworICAgIHJldHVybiB3dGZIYXJkQXV0b3JlbGVhc2UoY3JlYXRlU3RyaW5nV2l0
aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChDRlN0cmluZ1JlZilyZXN1bHQpKTsKIH0KIAogQk9P
TCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICpzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5oCmluZGV4IGMwMzJjNGVlZGVlYzQwMTUy
NWZhNWI2YzgyODRjZmE2ODYzZDJlOWUuLmU5NGQxMDRiYjE5MTU1YjRjNmM2MTNmMTk2NTcwMTQz
Zjg0YzY5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
T2JqQ0V4dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2Jq
Q0V4dHJhcy5oCkBAIC0zMywxOCArMzMsNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotLy8g
VXNlIFdlYkNGQXV0b3JlbGVhc2UgdG8gcmV0dXJuIGFuIG9iamVjdCBtYWRlIGJ5IGEgQ29yZUZv
dW5kYXRpb24KLS8vICJjcmVhdGUiIG9yICJjb3B5IiBmdW5jdGlvbiBhcyBhbiBhdXRvcmVsZWFz
ZWQgYW5kIGdhcmJhZ2UgY29sbGVjdGVkCi0vLyBvYmplY3QuIENGIG9iamVjdHMgbmVlZCB0byBi
ZSAibWFkZSBjb2xsZWN0YWJsZSIgZm9yIGF1dG9yZWxlYXNlIHRvIHdvcmsKLS8vIHByb3Blcmx5
IHVuZGVyIEdDLgotc3RhdGljIGlubGluZSBpZCBXZWJDb3JlQ0ZBdXRvcmVsZWFzZShDRlR5cGVS
ZWYgb2JqKQotewotICAgIGlmIChvYmopCi0gICAgICAgIENGTWFrZUNvbGxlY3RhYmxlKG9iaik7
Ci0gICAgWyhpZClvYmogYXV0b3JlbGVhc2VdOwotICAgIHJldHVybiAoaWQpb2JqOwotfQotCiB2
b2lkIFdlYkNvcmVPYmpDRmluYWxpemVPbk1haW5UaHJlYWQoQ2xhc3MgY2xzKTsKIAogLy8gVGhl
ICdDbGFzcycgdGhhdCBzaG91bGQgYmUgcGFzc2VkIGluIGhlcmUgaXMgdGhlIGNsYXNzIG9mIHRo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1w
bE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMu
bW0KaW5kZXggMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2Mi4uYzIxMjZi
NDMyMzhhMDNjYTg4ZGJkZDAwOTM0YzUyNWRmYjA5OTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCkBAIC0xOCwxNyArMTgsMTcg
QEAKICAqCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaD4KKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgogCi0jaW5jbHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0
b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0
cmluZygpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHd0ZkhhcmRBdXRvcmVsZWFzZShjcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCA2YTBmYzlkM2NkMjU5OTliNDVlZTM3
NWMxZTEwODVlMzFlMTg1OTNiLi4wNTcxZjY3ZTMxNWMwZGI5MjdiMmQwNWUyODkwNjZhYjUxOWY4
MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJOU0ZpbGVNYW5h
Z2VyRXh0cmFzLmg+CiAKICNpbXBvcnQgIldlYktpdE5TU3RyaW5nRXh0cmFzLmgiCi0jaW1wb3J0
ICJXZWJOU09iamVjdEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKICNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
ICNpbXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9uIE5TRmlsZU1hbmFn
ZXIgKFdlYk5TRmlsZU1hbmFnZXJFeHRyYXMpCkBAIC05OCw3ICs5OCw3IEBAIC0gKE5TU3RyaW5n
ICopX3dlYmtpdF9zdGFydHVwVm9sdW1lTmFtZQogICAgIFJldGFpblB0cjxEQURpc2tSZWY+IGRp
c2sgPSBhZG9wdENGKERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQYXRoKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHNlc3Npb24uZ2V0KCksIChDRlVSTFJlZilbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiLyJd
KSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGlza0Rlc2NyaXB0aW9uID0gYWRv
cHRDRihEQURpc2tDb3B5RGVzY3JpcHRpb24oZGlzay5nZXQoKSkpOwogICAgIFJldGFpblB0cjxO
U1N0cmluZz4gZGlza05hbWUgPSAoTlNTdHJpbmcgKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaXNr
RGVzY3JpcHRpb24uZ2V0KCksIGtEQURpc2tEZXNjcmlwdGlvblZvbHVtZU5hbWVLZXkpOwotICAg
IHJldHVybiBXZWJDRkF1dG9yZWxlYXNlKGRpc2tOYW1lLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IHd0ZkhhcmRBdXRvcmVsZWFzZShkaXNrTmFtZS5sZWFrUmVmKCkpOwogfQogCiAvLyAtW05TRmls
ZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpdIHJldHVybnMgTk8gaWYgdGhlcmUgaXMgYSBicm9r
ZW4gc3ltbGluayBhdCB0aGUgcGF0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNPYmplY3RFeHRyYXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNPYmpl
Y3RFeHRyYXMuaAppbmRleCBiNzZlOTEzMjI1YTE5NjZjOTBiYjYyOTIwOGYyZTNkNGJlMDE4OTBj
Li4wY2IwMTBjNGUyNDMxOTBiOWIwYmU2ZjVmNTlkNjk1NzAzODJiNjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0cmFzLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5oCkBAIC0zMCwxOCArMzAsNiBAQAogI2lt
cG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMuaD4KIAotLy8gVXNl
IFdlYkNGQXV0b3JlbGVhc2UgdG8gcmV0dXJuIGFuIG9iamVjdCBtYWRlIGJ5IGEgQ29yZUZvdW5k
YXRpb24KLS8vICJjcmVhdGUiIG9yICJjb3B5IiBmdW5jdGlvbiBhcyBhbiBhdXRvcmVsZWFzZWQg
YW5kIGdhcmJhZ2UgY29sbGVjdGVkCi0vLyBvYmplY3QuIENGIG9iamVjdHMgbmVlZCB0byBiZSAi
bWFkZSBjb2xsZWN0YWJsZSIgZm9yIGF1dG9yZWxlYXNlIHRvIHdvcmsKLS8vIHByb3Blcmx5IHVu
ZGVyIEdDLgotc3RhdGljIGlubGluZSBpZCBXZWJDRkF1dG9yZWxlYXNlKENGVHlwZVJlZiBvYmop
Ci17Ci0gICAgaWYgKG9iaikKLSAgICAgICAgQ0ZNYWtlQ29sbGVjdGFibGUob2JqKTsKLSAgICBb
KGlkKW9iaiBhdXRvcmVsZWFzZV07Ci0gICAgcmV0dXJuIChpZClvYmo7Ci19Ci0KIEBpbnRlcmZh
Y2UgTlNPYmplY3QgKFdlYk5TT2JqZWN0RXh0cmFzKQogKyAoaWQpX3dlYmtpdF9pbnZva2VPbk1h
aW5UaHJlYWQ7CiAtIChpZClfd2Via2l0X2ludm9rZU9uTWFpblRocmVhZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4IGMyYzFjOWY4MTA4ZTY5YjdkNmY1Nzc0
YzgwYzQ3ODJiZTdmMDg3YzcuLjg2YjY4MDY2OGYyZGM1ODkxODdhOTZmNTZhMjAyMWFkNzYyYWYx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzIsNyAr
MzIsNiBAQAogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYkxv
Y2FsaXphYmxlU3RyaW5ncy5oIgogI2ltcG9ydCAiV2ViTlNEYXRhRXh0cmFzLmgiCi0jaW1wb3J0
ICJXZWJOU09iamVjdEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LVVJM
Lmg+CkBAIC00MCw2ICszOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx1
bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIApAQCAtMjE0LDcg
KzIxNCw3IEBAIC0gKE5TVVJMICopX3dlYl9VUkxXaXRoTG93ZXJjYXNlZFNjaGVtZQogICAgIH0K
ICAgICAKICAgICBOU1VSTCAqcmVzdWx0ID0gY2hhbmdlZAotICAgICAgICA/IChOU1VSTCAqKVdl
YkNGQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhOVUxMLCBidWZm
ZXIsIGJ5dGVzRmlsbGVkLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG5pbCwgWUVTKSkKKyAgICAg
ICAgPyAoTlNVUkwgKil3dGZIYXJkQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyhOVUxMLCBidWZmZXIsIGJ5dGVzRmlsbGVkLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IG5pbCwgWUVTKSkKICAgICAgICAgOiAoTlNVUkwgKilzZWxmOwogCiAgICAgaWYgKGJ1ZmZlciAh
PSBzdGF0aWNfYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggNTA1
YTM0NmVlZTk5NTFkN2E1ODQ4NjhhNGYwZWVlOWE0MjNiMjgyNS4uYmI2MThjYzJlZjkyZjM3MzM3
MzUwYzU3NzM0MDZmZDhlOTlkYzEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpA
QCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xNjQsNyArMTY1LDcgQEAgLSAodm9p
ZCljcmVhdGVQbHVnaW5MYXllcgogICAgICAgICBfcGx1Z2luTGF5ZXIuZ2V0KCkuYm91bmRzID0g
cmVhbFBsdWdpbkxheWVyLmdldCgpLmJvdW5kczsKICAgICAgICAgX3BsdWdpbkxheWVyLmdldCgp
Lmdlb21ldHJ5RmxpcHBlZCA9IFlFUzsKIAotICAgICAgICBfcGx1Z2luTGF5ZXIuZ2V0KCkuYmFj
a2dyb3VuZENvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMSwgMSk7CisgICAg
ICAgIF9wbHVnaW5MYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSAoQ0dDb2xvclJlZil3dGZI
YXJkQXV0b3JlbGVhc2UoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMSwgMSkpOwogCiAg
ICAgICAgIHJlYWxQbHVnaW5MYXllci5nZXQoKS5hdXRvcmVzaXppbmdNYXNrID0ga0NBTGF5ZXJX
aWR0aFNpemFibGUgfCBrQ0FMYXllckhlaWdodFNpemFibGU7CiAgICAgICAgIFtfcGx1Z2luTGF5
ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6cmVhbFBsdWdpbkxheWVyLmdldCgpXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4IGQ0NTJh
NGU4NDY5N2I0NmFhZTYxOTRiMzExYzBjYjQzMWM2MGJjY2EuLjJiZGRmZGU5ZDc0ZTBhNDE2NTBj
ZWYzMjZmMzZhYzVhMTEyZmFlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0
L1dlYk5TT2JqZWN0RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUGx1Z2luUGFja2FnZS5oPgogI2ltcG9ydCA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC05MCw3ICs5MCw3IEBAICsgKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopcGx1Z2lu
V2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0aAogCiArIChOU1N0cmluZyAqKXByZWZlcnJl
ZExvY2FsaXphdGlvbk5hbWUKIHsKLSAgICByZXR1cm4gV2ViQ0ZBdXRvcmVsZWFzZShXS0NvcHlD
RkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUoTlVMTCkpOworICAgIHJldHVybiB3dGZIYXJkQXV0
b3JlbGVhc2UoV0tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKE5VTEwpKTsKIH0KIAog
I2lmIENPTVBJTEVSKENMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggOGNlZWFk
MDA1YjYwODYwODVkYzY5M2Q2ZjM4YjEzNzVhNWM4NTAxMy4uZWExNmYzNTJjYjBhYzFhYWI0ZGFl
MGM5OTcwYjhkZTM5NjZiMGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC02Myw3
ICs2Myw3IEBAIC0gKHZvaWQpc3RvcFVwZGF0aW5nCiAKIC0gKFdlYkRldmljZU9yaWVudGF0aW9u
KilsYXN0T3JpZW50YXRpb24KIHsKLSAgICByZXR1cm4gW1tXZWJEZXZpY2VPcmllbnRhdGlvbiBh
bGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246bV9jb3JlLT5sYXN0T3JpZW50YXRp
b24oKV07CisgICAgcmV0dXJuIFtbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0V2l0
aENvcmVEZXZpY2VPcmllbnRhdGlvbjptX2NvcmUtPmxhc3RPcmllbnRhdGlvbigpXSBhdXRvcmVs
ZWFzZV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUERGUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBE
RlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGEzNjg1MzM0OWE3MThlYzY3YjM0NzkxZjRhYTg1MWFj
N2MzMjM5YjIuLjg1M2Q5N2JlZjFjMGM0OTRhNmM1MTA2MmYxOTdiNjFiZWVlM2M2NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0ICJXZWJEYXRhU291cmNlUHJpdmF0ZS5oIgogI2lt
cG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYkpTUERGRG9jLmgiCi0jaW1wb3J0ICJXZWJO
U09iamVjdEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViUERGRG9jdW1lbnRFeHRyYXMuaCIKICNpbXBv
cnQgIldlYlBERlZpZXcuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Q0YuaD4KQEAgLTEwNyw3ICsxMDcsNyBAQCAtIChOU0RhdGEgKiljb252ZXJ0UG9zdFNjcmlwdERh
dGFTb3VyY2VUb1BERjooTlNEYXRhICopZGF0YQogICAgIENGUmVsZWFzZShwcm92aWRlcik7CiAg
ICAgQ0ZSZWxlYXNlKGNvbnN1bWVyKTsKIAotICAgIHJldHVybiBXZWJDRkF1dG9yZWxlYXNlKHJl
c3VsdCk7CisgICAgcmV0dXJuIHd0ZkhhcmRBdXRvcmVsZWFzZShyZXN1bHQpOwogfQogCiAtICh2
b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNv
dXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQ5YmJiMTVkNmQ4NzE4
NmRmYjcxYzUxMTYyMDQ3YTg2ZTI2YWRmZWEuLjhlNmUxNDVjODZmNTJlMDFjMDA0OTBlYzU5NDlj
MThjMmM2ZTgxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE5NSw2
ICsxOTUsNyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9IYXNo
VHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL09iamNS
dW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAj
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC01
OTAzLDcgKzU5MDQsNyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNh
Y2hlTW9kZWwKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19j
YWNoZU1vZGVsKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURp
cmVjdG9yeSA9IChOU1N0cmluZyAqKVdlYkNGQXV0b3JlbGVhc2UoV0tDb3B5Rm91bmRhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkpOworICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gKE5T
U3RyaW5nICopd3RmSGFyZEF1dG9yZWxlYXNlKFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9y
eSgpKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVE
aXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApAQCAtNjMzNyw3ICs2MzM4LDcgQEAgLSAo
dm9pZClfcmVtb3ZlT2JqZWN0Rm9ySWRlbnRpZmllcjoodW5zaWduZWQgbG9uZylpZGVudGlmaWVy
CiAgICAgLy8gYW5kIHdlIHNob3VsZCByZWxlYXNlIHRoZSB3ZWIgdmlldy4gQXV0b3JlbGVhc2Ug
cmF0aGVyIHRoYW4gcmVsZWFzZSBpbiBvcmRlciB0bwogICAgIC8vIGF2b2lkIHJlLWVudGVyaW5n
IHRoaXMgbWV0aG9kIGJlbmVhdGggLWRlYWxsb2Mgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyLiA8
cmRhcjovL3Byb2JsZW0vMTA1MjM3MjE+CiAgICAgaWYgKF9wcml2YXRlLT5pZGVudGlmaWVyTWFw
LmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ0ZBdXRvcmVsZWFzZShzZWxmKTsKKyAgICAgICAgd3Rm
SGFyZEF1dG9yZWxlYXNlKHNlbGYpOwogfQogCiAtICh2b2lkKV9yZXRyaWV2ZUtleWJvYXJkVUlN
b2RlRnJvbVByZWZlcmVuY2VzOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggNmUyNzZl
YjQ5M2FmZGUyZjczZWNjODMzYTkzMmYxN2NmNjMyYzc1Ni4uMTNhOWQ2MzVlYTJhZDdhZmI0MTEy
ZDllNWZiYTI0NmQxODQ0ZjFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0yNiwxNiArMjYsMTYgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvRm91bmRh
dGlvbkV4dHJhcy5oPgogI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW1wb3J0ICJXS1N0
cmluZ0NGLmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogTlNTdHJpbmcqIG5z
U3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIHN0cmluZy5pbXBsKCkgPyBIYXJkQXV0b3JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmco
MCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKSA6IEAiIjsKKyAgICByZXR1cm4gc3RyaW5nLmltcGwo
KSA/IHd0ZkhhcmRBdXRvcmVsZWFzZShXS1N0cmluZ0NvcHlDRlN0cmluZygwLCB0b0FQSShzdHJp
bmcuaW1wbCgpKSkpIDogQCIiOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDM1Yjk5ZWUwNmZlODc5NmJlMGJl
MWQ1OTYzMTRiNGEzYmU5M2IwYWUuLmY4MGVmN2RkNWFhZWEzYjAyNjg1NWNjMjQ2NTFiOTNlOGU3
YjgyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcElt
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRm91bmRhdGlvbkV4dHJhcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCmluZGV4IGY3MTIwYWYyZTA5MzkxOTE4OGNlYWYyMzBiZDYxN2ZjZDgyZjkwNTYuLmFiMGYz
NTYxMzM1MmNmMzdlZjdkOWQwOTQxODM0YmExNWQ4NDcwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW0KQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNp
bXBvcnQgIldlYkRhdGEuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCA8d3Rm
L09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBv
cnQgIldLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgiCkBAIC01NSw3ICs1Niw3IEBAIHN0
YXRpYyBpbmxpbmUgTlNTdHJpbmcgKmF1dG9yZWxlYXNlZChXS1N0cmluZ1JlZiBzdHJpbmcpCiBz
dGF0aWMgaW5saW5lIE5TVVJMICphdXRvcmVsZWFzZWQoV0tVUkxSZWYgdXJsKQogewogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0sodXJsKTsKLSAgICByZXR1cm4gWyhO
U1VSTCAqKVdLVVJMQ29weUNGVVJMKGtDRkFsbG9jYXRvckRlZmF1bHQsIHdrVVJMLmdldCgpKSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIChOU1VSTCAqKXd0ZkhhcmRBdXRvcmVsZWFzZShXS1VS
TENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3a1VSTC5nZXQoKSkpOwogfQogCiBAaW50
ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGEgOiBOU09iamVjdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KaW5kZXggZTUyODdmZjAzZTA3YTkz
ODYyZGYxNjAxNzVjZjJkYWVmNWQ4MGQ1ZC4uZGZlYTRmMDhhMTRhNzNiNzNkM2U4ZjliNDZjOWI1
MTljMTc0MDg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQpA
QCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjA3LDcgKzIwOCw3IEBAIC0gKGlk
KWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOihpZClwYXJhbWV0CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgaWYgKHRv
SW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAg
ICAgcmV0dXJuIFsoTlNTdHJpbmcgKilXS1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoV0tTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJldHVybiAoTlNTdHJpbmcgKil3dGZIYXJkQXV0b3JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKFdLU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOwogICAg
IGVsc2UgaWYgKHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0gV0tCb29sZWFuR2V0VHlw
ZUlEKCkpCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6V0tCb29sZWFu
R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQuZ2V0KCkpKV07CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNDg4MmY4
ZmVmM2JkZDhiYWIyMDI2NzEzMDlmMWZjMGI1YmY3Yzc4Li5lMDliNzAxNmJiNTczM2EzN2UyOTZm
MGRlZTFmMGFhNTlmMmFlMmRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDgtMjMgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBpc3N1ZXMgZm91bmQgYnkgdGhlIENsYW5n
IFN0YXRpYyBBbmFseXplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm06
CisgICAgICAgICgtW0xvY2FsUGFzdGVib2FyZCBpbml0V2l0aE5hbWU6XSk6IENhbGxlZCBbc3Vw
ZXIgaW5pdF0gZmlyc3Qgc28gdGhhdCB3ZQorICAgICAgICBkb24ndCBsYXRlciB1c2UgaXZhcnMg
ZnJvbSB0aGUgd3Jvbmcgc2VsZi4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbToKKyAgICAgICAgKC1bQVBJVGVzdERlbGVnYXRlIGluaXRXaXRoQ29tcGxldGlv
bkNvbmRpdGlvbjpdKTogRGl0dG8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6IERvbid0IGxlYWsgV0tQcm9jZXNzR3JvdXBzLAorICAgICAgICBXS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwcywgYW5kIFdLVmlld3MuCisKIDIwMTMtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgTExWTSBiaW5hcnkgZHJvcHMgYW5kIHNj
cmlwdHMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gU1ZOCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMmZhMDdhMmNkZDI3NzkzYWQyMDUyNjljMDM2
MDRmNmY1ZWViYmM5ZC4uYWU3NTBhZWYxOGM1MzBiYWNhODUwNjU2YmNiNmYzYzMzOWI2NmEzZiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtNjAsNyAr
NjAsNiBAQAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0hlYXBTdGF0aXN0aWNzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9PcHRpb25zLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvdW5kYXRpb25FeHRyYXMuaD4KICNp
bXBvcnQgPFdlYktpdC9ET01FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9u
cy5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTVJhbmdlLmg+CkBAIC0xMTk2LDExICsxMTk1LDExIEBA
IHZvaWQgZHVtcCgpCiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24v
cGRmIjsKICAgICAgICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcERPTUFzV2ViQXJjaGl2
ZSgpKSB7CiAgICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUg
RE9NRG9jdW1lbnRdIHdlYkFyY2hpdmVdOwotICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gSGFy
ZEF1dG9yZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRhUmVm
KVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSB3dGZIYXJk
QXV0b3JlbGVhc2UoY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChDRkRhdGFSZWYp
W3dlYkFyY2hpdmUgZGF0YV0pKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5k
dW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFy
Y2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAg
IHJlc3VsdFN0cmluZyA9IEhhcmRBdXRvcmVsZWFzZShjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJj
aGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAgICAgICAgICAgcmVz
dWx0U3RyaW5nID0gd3RmSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNo
aXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CiAgICAgICAgICAgICByZXN1
bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVy
bmFsUmVwcmVzZW50YXRpb25Gb3JQcmludGluZzpnVGVzdFJ1bm5lci0+aXNQcmludGluZygpXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQubSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9h
cmQubQppbmRleCAwNGZhZmQ4NGM0NjMwMTQ1ZjVkM2Q2NGYzMDVjNjhlMzRkNjVmMTJkLi4yNGRk
YzljZmVkOTUwM2RkMDQ2OTU0MDdiYmZlYTU0M2RjMDMyNDllIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tCkBAIC05MSw2ICs5
MSw5IEBAICsgKGlkKWFsbG9jCiAKIC0gKGlkKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
CiB7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgdHlwZXNBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
OwogICAgIHR5cGVzU2V0ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOwogICAgIGRhdGFC
eVR5cGUgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCAxMzY3ZTMyZmEwZjJlMWM0MGI2YmI0
M2Y5NGE3ODM4ODQwMTllMzUxLi5jOGY2YTg1OTgwYWE0N2IyZTUxOTQ3MjA4NjNlMzk4YjM3OWY3
OTdiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtODU1
LDcgKzg1NSw5IEBAIEBpbXBsZW1lbnRhdGlvbiBBUElUZXN0RGVsZWdhdGUKIAogLSAoaWQpaW5p
dFdpdGhDb21wbGV0aW9uQ29uZGl0aW9uOihib29sKiljb25kaXRpb24KIHsKLSAgICBbc3VwZXIg
aW5pdF07CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAg
IHJldHVybiBuaWw7CiAgICAgQVNTRVJUKGNvbmRpdGlvbik7CiAgICAgbV9jb25kaXRpb24gPSBj
b25kaXRpb247CiAgICAgKm1fY29uZGl0aW9uID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3Qu
bW0KaW5kZXggN2ViMmQzNjRlNDNkNTk1NWQ5YmE1ZDVlMDJmZWE3MDhjNGVmNjQ5Mi4uMzcwMWNk
NGM3NWYxODQwMTlmMzEyMTQ1NjcxMTI4ZWMyMGFjZWIxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVz
dC5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiVGVzdEJyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0IDxXZWJLaXQyL1dl
YktpdDIuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgdGVzdEZp
bmlzaGVkID0gZmFsc2U7CiAKQEAgLTQwLDEzICs0MSwxMyBAQCBURVNUKFdlYktpdDJDdXN0b21Q
cm90b2NvbHNUZXN0LCBNYWluUmVzb3VyY2UpCiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJD
bGFzczpbVGVzdFByb3RvY29sIGNsYXNzXV07CiAgICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1l
XV07CiAKLSAgICBXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwID0gW1tXS1Byb2Nlc3NHcm91
cCBhbGxvY10gaW5pdF07Ci0gICAgV0tCcm93c2luZ0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250
ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRp
ZmllcjpAIlRlc3RJZGVudGlmaWVyIl07Ci0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3Jv
dXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3Vw
XTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBb
W1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1
bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgUmV0
YWluUHRyPFdLUHJvY2Vzc0dyb3VwPiBwcm9jZXNzR3JvdXAgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
R3JvdXAgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRHcm91
cD4gYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRHcm91
cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElkZW50aWZpZXIiXSk7CisgICAgUmV0
YWluUHRyPFdLVmlldz4gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3Vw
LmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7
CisgICAgd2tWaWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2Nr
VG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAg
ICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwogICAgIH1dOwotICAgIFt3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6Ly90
ZXN0IiwgW1Rlc3RQcm90b2NvbCBzY2hlbWVdXV1dXTsKKyAgICBbd2tWaWV3LmdldCgpLmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
Oi8vdGVzdCIsIFtUZXN0UHJvdG9jb2wgc2NoZW1lXV1dXV07CiAKICAgICBVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7CiB9Cg==
</data>
<flag name="review"
          id="231560"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>